@@ -163,25 +163,35 @@ const layoutFields = [
163163 'HorizontalAnchorTarget' ,
164164 'VerticalAnchorOrigin' ,
165165 'VerticalAnchorTarget' ,
166+ 'AnchorOrigin' ,
167+ 'AnchorTarget' ,
166168 'AnchorDeltaX' ,
167169 'AnchorDeltaY' ,
168170] ;
169171
170172const getHorizontalAnchorValue = ( anchorName : string ) => {
171- return anchorName === 'Left'
173+ const horizontalAnchorName = ( anchorName . includes ( '-' )
174+ ? anchorName . split ( '-' ) [ 1 ]
175+ : anchorName
176+ ) . toLowerCase ( ) ;
177+ return horizontalAnchorName === 'left'
172178 ? 0
173- : anchorName === 'Right '
179+ : horizontalAnchorName === 'right '
174180 ? 1
175- : anchorName === 'Center '
181+ : horizontalAnchorName === 'center '
176182 ? 0.5
177183 : null ;
178184} ;
179185const getVerticalAnchorValue = ( anchorName : string ) => {
180- return anchorName === 'Top'
186+ const verticalAnchorName = ( anchorName . includes ( '-' )
187+ ? anchorName . split ( '-' ) [ 0 ]
188+ : anchorName
189+ ) . toLowerCase ( ) ;
190+ return verticalAnchorName === 'top'
181191 ? 0
182- : anchorName === 'Bottom '
192+ : verticalAnchorName === 'bottom '
183193 ? 1
184- : anchorName === 'Center '
194+ : verticalAnchorName === 'center '
185195 ? 0.5
186196 : null ;
187197} ;
@@ -214,10 +224,12 @@ const getLayouts = (
214224 const layoutField = layoutFields . find ( field => name . includes ( field ) ) ;
215225
216226 let targetObjectName = '' ;
217- let anchorTarget : ?number = null ;
227+ let horizontalAnchorTarget : ?number = null ;
228+ let verticalAnchorTarget : ?number = null ;
218229 if (
219230 layoutField === 'HorizontalAnchorOrigin' ||
220- layoutField === 'VerticalAnchorOrigin'
231+ layoutField === 'VerticalAnchorOrigin' ||
232+ layoutField === 'AnchorOrigin'
221233 ) {
222234 const targetPropertyName = name . replace ( 'AnchorOrigin' , 'AnchorTarget' ) ;
223235 const targetProperty = properties . get ( targetPropertyName ) ;
@@ -230,12 +242,19 @@ const getLayouts = (
230242 . getValue ( ) ;
231243 const anchorTargetValueNumber =
232244 Number . parseFloat ( anchorTargetStringValue ) || 0 ;
233- if ( layoutField === 'HorizontalAnchorOrigin' ) {
234- anchorTarget =
245+ if (
246+ layoutField === 'HorizontalAnchorOrigin' ||
247+ layoutField === 'AnchorOrigin'
248+ ) {
249+ horizontalAnchorTarget =
235250 getHorizontalAnchorValue ( anchorTargetStringValue ) ||
236251 anchorTargetValueNumber ;
237- } else {
238- anchorTarget =
252+ }
253+ if (
254+ layoutField === 'VerticalAnchorOrigin' ||
255+ layoutField === 'AnchorOrigin'
256+ ) {
257+ verticalAnchorTarget =
239258 getVerticalAnchorValue ( anchorTargetStringValue ) ||
240259 anchorTargetValueNumber ;
241260 }
@@ -264,34 +283,43 @@ const getLayouts = (
264283 layout . verticalLayout . minSideAbsoluteMargin = propertyValueNumber ;
265284 } else if ( layoutField === 'BottomPadding ') {
266285 layout . verticalLayout . maxSideAbsoluteMargin = propertyValueNumber ;
267- } else if ( layoutField === 'HorizontalAnchorOrigin' ) {
268- const anchorOrigin =
269- getHorizontalAnchorValue ( propertyValueString ) || propertyValueNumber ;
270- if ( anchorOrigin !== null ) {
271- layout . horizontalLayout . anchorOrigin = anchorOrigin ;
272- }
273- if ( anchorTarget !== null ) {
274- layout . horizontalLayout . anchorTarget = anchorTarget ;
275- }
276- layout . horizontalLayout . anchorTargetObject = targetObjectName ;
277- } else if ( layoutField === 'VerticalAnchorOrigin' ) {
278- const anchorOrigin =
279- getVerticalAnchorValue ( propertyValueString ) || propertyValueNumber ;
280- if ( anchorOrigin !== null ) {
281- layout . verticalLayout . anchorOrigin = anchorOrigin ;
282- }
283- if ( anchorTarget !== null ) {
284- layout . verticalLayout . anchorTarget = anchorTarget ;
285- }
286- layout . verticalLayout . anchorTargetObject = targetObjectName ;
287286 } else if ( layoutField === 'AnchorDeltaX' ) {
288287 layout . horizontalLayout . anchorDelta = propertyValueNumber ;
289288 } else if ( layoutField === 'AnchorDeltaY' ) {
290289 layout . verticalLayout . anchorDelta = propertyValueNumber ;
290+ } else {
291+ if (
292+ layoutField === 'HorizontalAnchorOrigin' ||
293+ layoutField === 'AnchorOrigin'
294+ ) {
295+ const anchorOrigin =
296+ getHorizontalAnchorValue ( propertyValueString ) ||
297+ propertyValueNumber ;
298+ if ( anchorOrigin !== null ) {
299+ layout . horizontalLayout . anchorOrigin = anchorOrigin ;
300+ }
301+ if ( horizontalAnchorTarget !== null ) {
302+ layout . horizontalLayout . anchorTarget = horizontalAnchorTarget ;
303+ }
304+ layout . horizontalLayout . anchorTargetObject = targetObjectName ;
305+ }
306+ if (
307+ layoutField === 'VerticalAnchorOrigin' ||
308+ layoutField === 'AnchorOrigin'
309+ ) {
310+ const anchorOrigin =
311+ getVerticalAnchorValue ( propertyValueString ) || propertyValueNumber ;
312+ if ( anchorOrigin !== null ) {
313+ layout . verticalLayout . anchorOrigin = anchorOrigin ;
314+ }
315+ if ( verticalAnchorTarget !== null ) {
316+ layout . verticalLayout . anchorTarget = verticalAnchorTarget ;
317+ }
318+ layout . verticalLayout . anchorTargetObject = targetObjectName ;
319+ }
291320 }
292321 }
293322 }
294-
295323 return layouts ;
296324} ;
297325
@@ -471,7 +499,8 @@ export default class RenderedCustomObjectInstance extends RenderedInstance {
471499 const anchorOrigin = childLayout . horizontalLayout . anchorOrigin || 0 ;
472500 const anchorTarget = childLayout . horizontalLayout . anchorTarget || 0 ;
473501 // TODO Use anchorTargetObject instead of defaulting on the background
474- childInstance . x = childLayout . horizontalLayout . anchorDelta || 0 +
502+ childInstance . x =
503+ ( childLayout . horizontalLayout . anchorDelta || 0 ) +
475504 anchorTarget * width -
476505 anchorOrigin * renderedInstance . getDefaultWidth ( ) ;
477506 }
@@ -482,7 +511,8 @@ export default class RenderedCustomObjectInstance extends RenderedInstance {
482511 const anchorOrigin = childLayout . verticalLayout . anchorOrigin || 0 ;
483512 const anchorTarget = childLayout . verticalLayout . anchorTarget || 0 ;
484513 // TODO Use anchorTargetObject instead of defaulting on the background
485- childInstance . y = childLayout . verticalLayout . anchorDelta || 0 +
514+ childInstance . y =
515+ ( childLayout . verticalLayout . anchorDelta || 0 ) +
486516 anchorTarget * height -
487517 anchorOrigin * renderedInstance . getDefaultHeight ( ) ;
488518 }
0 commit comments