@@ -14,10 +14,10 @@ export class Override extends WrappedObject {
1414 if ( ! this . __symbolInstance ) {
1515 return undefined
1616 }
17- this . __symbolInstance . sketchObject . ensureDetachHasUpdated ( )
17+ this . __symbolInstance . sketchObject . ensureDetachHasUpdated ( )
1818 return toArray (
1919 this . __symbolInstance . sketchObject . overrideContainer ( ) . flattenedChildren ( )
20- ) . find ( ( x ) => x . availableOverride ( ) . overridePoint ( ) . name ( ) . isEqual ( this . sketchObject . overridePoint ( ) . name ( ) ) )
20+ ) . find ( ( x ) => x . availableOverride ( ) . overridePoint ( ) . fullPath ( ) . isEqual ( this . sketchObject . overridePoint ( ) . fullPath ( ) ) )
2121 }
2222
2323 getFrame ( ) {
@@ -42,7 +42,7 @@ Override.define('path', {
4242
4343Override . define ( 'property' , {
4444 get ( ) {
45- return String ( this . _object . overridePoint ( ) . property ( ) )
45+ return String ( this . _object . overridePoint ( ) . attributeName ( ) )
4646 } ,
4747} )
4848
@@ -72,6 +72,14 @@ Override.define('value', {
7272 if ( this . property === 'image' ) {
7373 return ImageData . fromNative ( value )
7474 }
75+ if ( value !== null && value . isKindOfClass_ ( NSDictionary . class ( ) ) ) {
76+ // Map dictionary overrides into a javascript dictionary
77+ var map = { }
78+ Object . keys ( value ) . forEach ( ( name ) => {
79+ map [ name ] = value [ name ]
80+ } )
81+ return map
82+ }
7583 return String ( this . _object . currentValue ( ) )
7684 } ,
7785 set ( value ) {
@@ -91,17 +99,49 @@ Override.define('isDefault', {
9199
92100Override . define ( 'editable' , {
93101 get ( ) {
94- if ( typeof this . __editable !== 'undefined' ) {
95- return this . __editable
102+ var overrides
103+ var master
104+ if ( typeof this . __symbolMaster !== 'undefined' ) {
105+ master = this . __symbolMaster . sketchObject
106+ overrides = master . overridePoints
107+ } else if ( typeof this . __symbolInstance !== 'undefined' ) {
108+ var masterGetter = this . __symbolInstance . sketchObject . symbolMaster
109+ if ( masterGetter !== 'undefined' ) {
110+ master = masterGetter ( )
111+ }
112+ overrides = this . __symbolInstance . sketchObject . overridePoints
113+ }
114+
115+ if ( typeof overrides == 'undefined' ) {
116+ // Can't get the override points - maybe this is an immutable?
117+ return false
118+ }
119+ if ( typeof master == 'undefined' ) {
120+ throw new Error ( 'Unable to find the symbol source for this override' )
121+ }
122+
123+ var point
124+ overrides ( ) . forEach ( ( o ) => {
125+ if ( o . fullPath ( ) . isEqual ( this . _object . overridePoint ( ) . fullPath ( ) ) ) {
126+ point = o
127+ }
128+ } )
129+
130+ if ( typeof point == 'undefined' ) {
131+ return false
132+ }
133+
134+ if ( master . allowsOverrides ( ) && master . isOverridePointEditable ( point ) && point . isConfigurable ( ) ) {
135+ return true
136+ } else {
137+ return false
96138 }
97- return Boolean ( Number ( this . _object . isEditable ( ) ) )
98139 } ,
99140 set ( editable ) {
100141 // __symbolInstance is set when building the Override
101- if ( ! this . __symbolMaster ) {
142+ if ( typeof this . __symbolMaster == 'undefined' ) {
102143 throw new Error ( 'Can only set `editable` for a symbol master' )
103144 }
104- this . __editable = editable
105145 this . __symbolMaster . sketchObject . setOverridePoint_editable (
106146 this . _object . overridePoint ( ) ,
107147 editable
@@ -143,20 +183,20 @@ Override.define('selected', {
143183 return
144184 }
145185
146- var selectionItem = representation . selectionItem ( )
147- if ( ! selectionItem ) {
148- return
149- }
150-
151- var page = this . __symbolInstance . sketchObject . parentPage ( )
152- if ( ! page ) {
153- return
154- }
155-
156- if ( selected ) {
157- page . changeSelectionByAddingItems_extendExisting ( [ selectionItem ] , true )
158- } else {
159- page . changeSelectionByRemovingItems ( [ selectionItem ] )
160- }
186+ var selectionItem = representation . selectionItem ( )
187+ if ( ! selectionItem ) {
188+ return
189+ }
190+
191+ var page = this . __symbolInstance . sketchObject . parentPage ( )
192+ if ( ! page ) {
193+ return
194+ }
195+
196+ if ( selected ) {
197+ page . changeSelectionByAddingItems_extendExisting ( [ selectionItem ] , true )
198+ } else {
199+ page . changeSelectionByRemovingItems ( [ selectionItem ] )
200+ }
161201 } ,
162202} )
0 commit comments