@leafer/interface 1.0.0-rc.21 → 1.0.0-rc.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer/interface",
3
- "version": "1.0.0-rc.21",
3
+ "version": "1.0.0-rc.23",
4
4
  "description": "@leafer/interface",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -69,7 +69,6 @@ export interface ILeaferAttrData {
69
69
  unlockLayout(): void
70
70
  lockLayout(): void
71
71
 
72
- forceFullRender(): void
73
72
  forceRender(bounds?: IBoundsData): void
74
73
  updateCursor(cursor?: ICursorType): void
75
74
  resize(size: IScreenSizeData): void
package/src/data/IData.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { IPointData } from '../math/IMath'
2
+
1
3
  export type INumber = number // number | string will convert to number
2
4
  export type IBoolean = boolean // boolean | string will convert to boolean
3
5
  export type IString = string // string | other will convert to string
@@ -24,6 +26,10 @@ export interface IStringMap {
24
26
  [name: string]: string
25
27
  }
26
28
 
29
+ export interface IPointDataMap {
30
+ [name: string]: IPointData
31
+ }
32
+
27
33
  export interface IDataTypeHandle {
28
34
  (target: any): void
29
35
  }
@@ -4,8 +4,8 @@ import { IEventer } from '../event/IEventer'
4
4
  import { ILeaferCanvas, IHitCanvas } from '../canvas/ILeaferCanvas'
5
5
  import { IRenderOptions } from '../renderer/IRenderer'
6
6
 
7
- import { IObject, INumber, IBoolean, IValue, IString, IPathString } from '../data/IData'
8
- import { IMatrixWithBoundsData, IMatrix, IPointData, IBoundsData, IRadiusPointData, ILayoutAttr, ILayoutBoundsData, IMatrixData, IMatrixWithBoundsScaleData, IMatrixWithScaleData } from '../math/IMath'
7
+ import { IObject, INumber, IBoolean, IValue, IString, IPathString, IFourNumber } from '../data/IData'
8
+ import { IMatrixWithBoundsData, IMatrix, IPointData, IBoundsData, IRadiusPointData, ILayoutAttr, ILayoutBoundsData, IMatrixData, IMatrixWithBoundsScaleData, IMatrixWithScaleData, IAutoBoxData, IUnitPointData } from '../math/IMath'
9
9
  import { IFunction } from '../function/IFunction'
10
10
 
11
11
  import { ILeafDataProxy } from './module/ILeafDataProxy'
@@ -41,9 +41,9 @@ export interface ILeafAttrData {
41
41
  locked: IBoolean
42
42
  zIndex: INumber
43
43
 
44
- mask: IBoolean
44
+ mask: IMaskType
45
45
  maskType: IMaskType
46
- eraser: IBoolean
46
+ eraser: IEraserType
47
47
 
48
48
  // layout data
49
49
  x: INumber
@@ -57,20 +57,43 @@ export interface ILeafAttrData {
57
57
  skewY: INumber
58
58
 
59
59
  scale: INumber | IPointData // helper
60
- around: IAround
60
+
61
+ offsetX: INumber
62
+ offsetY: INumber
63
+ scrollX: INumber
64
+ scrollY: INumber
65
+
66
+ origin: IAlign | IUnitPointData
67
+ around: IAlign | IUnitPointData
61
68
 
62
69
  lazy: IBoolean
63
70
  pixelRatio: INumber
64
71
 
65
- draggable: IBoolean
66
-
67
72
  path: IPathCommandData | IPathString
68
73
  windingRule: IWindingRule
69
74
  closed: boolean
70
75
 
76
+ // auto layout
77
+ flow: IFlowType
78
+ padding: IFourNumber
79
+ gap: IGap | IPointGap
80
+ align: IFlowAlign | IFlowAxisAlign
81
+ wrap: IWrap
82
+ itemBox: IFlowBoxType
83
+
84
+ inFlow: IBoolean
85
+ autoWidth: IAutoSize
86
+ autoHeight: IAutoSize
87
+ autoBox: IAutoBoxData | IConstraint
88
+
89
+ widthRange: IRangeSize
90
+ heightRange: IRangeSize
91
+
92
+ // interactive
93
+ draggable: IBoolean | IAxis
94
+ dragBounds?: IBoundsData | 'parent'
95
+
71
96
  editable: IBoolean
72
- editSize: IEditSize
73
- editorStyle: IObject
74
97
 
75
98
  hittable: IBoolean
76
99
  hitFill: IHitType
@@ -90,6 +113,48 @@ export interface ILeafAttrData {
90
113
  disabledStyle: ILeafInputData
91
114
  }
92
115
 
116
+
117
+ export type IAxis = 'x' | 'y'
118
+
119
+ export type IAxisReverse = 'x-reverse' | 'y-reverse'
120
+
121
+ export type IFlowType = boolean | IAxis | IAxisReverse
122
+
123
+ export type IFlowBoxType = 'box' | 'stroke'
124
+
125
+ export type IGap = INumber | 'auto' | 'fit'
126
+
127
+ export interface IPointGap { x?: IGap, y?: IGap }
128
+
129
+ export type IAxisAlign = 'from' | 'center' | 'to'
130
+
131
+ export interface IFlowAxisAlign { content?: IFlowAlign, rowX?: IAxisAlign, rowY?: IAxisAlign }
132
+
133
+ export type IWrap = boolean | 'reverse'
134
+
135
+ export type IAutoSize = IBoolean | INumber | IPercentData
136
+
137
+ export interface IRangeSize {
138
+ min?: number
139
+ max?: number
140
+ }
141
+
142
+ export interface IUnitData {
143
+ type: 'percent' | 'px'
144
+ value: number
145
+ }
146
+
147
+ export interface IPercentData extends IUnitData {
148
+ type: 'percent'
149
+ }
150
+
151
+ export interface IConstraint {
152
+ x: IConstraintType
153
+ y: IConstraintType
154
+ }
155
+
156
+ export type IConstraintType = 'from' | 'center' | 'to' | 'from-to' | 'scale'
157
+
93
158
  export type IHitType =
94
159
  | 'path'
95
160
  | 'pixel'
@@ -97,10 +162,16 @@ export type IHitType =
97
162
  | 'none'
98
163
 
99
164
  export type IMaskType =
165
+ | boolean
100
166
  | 'path'
101
167
  | 'pixel'
102
168
  | 'clipping'
103
169
 
170
+ export type IEraserType =
171
+ | boolean
172
+ | 'path'
173
+ | 'pixel'
174
+
104
175
  export type IBlendMode =
105
176
  | 'pass-through'
106
177
  | 'normal'
@@ -137,17 +208,32 @@ export interface IImageCursor {
137
208
  rotation?: number
138
209
  }
139
210
 
140
- export type IAround =
141
- | 'topLeft'
211
+ export type IDirection =
212
+ | 'top-left'
142
213
  | 'top'
143
- | 'topRight'
214
+ | 'top-right'
144
215
  | 'right'
145
- | 'bottomRight'
216
+ | 'bottom-right'
146
217
  | 'bottom'
147
- | 'bottomLeft'
218
+ | 'bottom-left'
148
219
  | 'left'
149
220
  | 'center'
150
- | IPointData
221
+
222
+ export type IAlign = IDirection
223
+
224
+ export type IBaseLineAlign =
225
+ | 'baseline-left'
226
+ | 'baseline-center'
227
+ | 'baseline-right'
228
+
229
+ export type IFlowAlign =
230
+ | IAlign
231
+ | IBaseLineAlign
232
+
233
+
234
+ export type IAround =
235
+ | IAlign
236
+ | IUnitPointData
151
237
 
152
238
  export type ICursorType =
153
239
  | IImageCursor
@@ -212,9 +298,9 @@ export interface ILeafInputData {
212
298
  locked?: IBoolean
213
299
  zIndex?: INumber
214
300
 
215
- mask?: IBoolean
301
+ mask?: IMaskType
216
302
  maskType?: IMaskType
217
- eraser?: IBoolean
303
+ eraser?: IEraserType
218
304
 
219
305
  // layout data
220
306
  x?: INumber
@@ -228,20 +314,43 @@ export interface ILeafInputData {
228
314
  skewY?: INumber
229
315
 
230
316
  scale?: INumber | IPointData // helper
231
- around?: IAround
317
+
318
+ offsetX?: INumber
319
+ offsetY?: INumber
320
+ scrollX?: INumber
321
+ scrollY?: INumber
322
+
323
+ origin?: IAlign | IUnitPointData
324
+ around?: IAlign | IUnitPointData
232
325
 
233
326
  lazy?: IBoolean
234
327
  pixelRatio?: INumber
235
328
 
236
- draggable?: IBoolean
237
-
238
329
  path?: IPathCommandData | IPathString
239
330
  windingRule?: IWindingRule
240
331
  closed?: boolean
241
332
 
333
+ // auto layout
334
+ flow?: IFlowType
335
+ padding?: IFourNumber
336
+ gap?: IGap | IPointGap
337
+ align?: IFlowAlign | IFlowAxisAlign
338
+ wrap?: IWrap
339
+ itemBox?: IFlowBoxType
340
+
341
+ inFlow?: IBoolean
342
+ autoWidth?: IAutoSize
343
+ autoHeight?: IAutoSize
344
+ autoBox?: IAutoBoxData | IConstraint
345
+
346
+ widthRange?: IRangeSize
347
+ heightRange?: IRangeSize
348
+
349
+ // interactive
350
+ draggable?: IBoolean | IAxis
351
+ dragBounds?: IBoundsData | 'parent'
352
+
242
353
  editable?: IBoolean
243
- editSize?: IEditSize
244
- editorStyle?: IObject
245
354
 
246
355
  hittable?: IBoolean
247
356
  hitFill?: IHitType
@@ -279,9 +388,9 @@ export interface ILeafComputedData {
279
388
  locked?: boolean
280
389
  zIndex?: number
281
390
 
282
- mask?: boolean
391
+ mask?: boolean | IMaskType
283
392
  maskType?: IMaskType
284
- eraser?: boolean
393
+ eraser?: IEraserType
285
394
 
286
395
  // layout data
287
396
  x?: number
@@ -294,7 +403,13 @@ export interface ILeafComputedData {
294
403
  skewX?: number
295
404
  skewY?: number
296
405
 
297
- around?: IAround
406
+ offsetX?: number
407
+ offsetY?: number
408
+ scrollX?: number
409
+ scrollY?: number
410
+
411
+ origin?: IAlign | IUnitPointData
412
+ around?: IAlign | IUnitPointData
298
413
 
299
414
  lazy?: boolean
300
415
  pixelRatio?: number
@@ -303,11 +418,27 @@ export interface ILeafComputedData {
303
418
  windingRule?: IWindingRule
304
419
  closed?: boolean
305
420
 
306
- draggable?: boolean
421
+ // auto layout
422
+ flow?: IFlowType
423
+ padding?: IFourNumber
424
+ gap?: IGap | IPointGap
425
+ align?: IFlowAlign | IFlowAxisAlign
426
+ wrap?: IWrap
427
+ itemBox?: IFlowBoxType
428
+
429
+ inFlow?: boolean
430
+ autoWidth?: IAutoSize
431
+ autoHeight?: IAutoSize
432
+ autoBox?: IAutoBoxData | IConstraint
433
+
434
+ widthRange?: IRangeSize
435
+ heightRange?: IRangeSize
436
+
437
+ // interactive
438
+ draggable?: boolean | IAxis
439
+ dragBounds?: IBoundsData | 'parent'
307
440
 
308
441
  editable?: boolean
309
- editSize?: IEditSize
310
- editorStyle?: IObject
311
442
 
312
443
  hittable?: boolean
313
444
  hitFill?: IHitType
@@ -365,6 +496,8 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
365
496
  proxyData?: ILeafInputData
366
497
  __proxyData?: ILeafInputData
367
498
 
499
+ syncEventer?: ILeaf // 同步触发一样事件的元素
500
+
368
501
  __layout: ILeafLayout
369
502
 
370
503
  __world: IMatrixWithBoundsScaleData
@@ -399,6 +532,11 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
399
532
  __hasEraser?: boolean
400
533
  __hitCanvas?: IHitCanvas
401
534
 
535
+ __flowBounds?: IBoundsData // localBoxBounds or localStrokeBounds
536
+ __widthGrow?: number
537
+ __heightGrow?: number
538
+ __hasGrow?: boolean
539
+
402
540
  readonly __onlyHitMask: boolean
403
541
  readonly __ignoreHitWorld: boolean
404
542
 
@@ -434,7 +572,9 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
434
572
 
435
573
  // find
436
574
  find(condition: number | string | IFindMethod, options?: any): ILeaf[]
575
+ findTag(tag: string | string[]): ILeaf[]
437
576
  findOne(condition: number | string | IFindMethod, options?: any): ILeaf
577
+ findId(id: number | string): ILeaf
438
578
 
439
579
  focus(value?: boolean): void
440
580
  forceUpdate(attrName?: string): void
@@ -453,11 +593,13 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
453
593
  __updateLocalStrokeBounds(): void
454
594
  __updateLocalRenderBounds(): void
455
595
 
596
+ __updateContentBounds(): void
456
597
  __updateBoxBounds(): void
457
598
  __updateStrokeBounds(): void
458
599
  __updateRenderBounds(): void
459
600
 
460
601
  __updateAutoLayout(): void
602
+ __updateFlowLayout(): void
461
603
  __updateNaturalSize(): void
462
604
 
463
605
  __updateStrokeSpread(): number
@@ -469,6 +611,7 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
469
611
  __updateEraser(value?: boolean): void
470
612
  __updateMask(value?: boolean): void
471
613
  __renderMask(canvas: ILeaferCanvas, options: IRenderOptions): void
614
+ __renderEraser(canvas: ILeaferCanvas, options: IRenderOptions): void
472
615
 
473
616
  // convert
474
617
  __getNowWorld(options: IRenderOptions): IMatrixWithBoundsScaleData // when render use other matrix
@@ -500,13 +643,13 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
500
643
  setTransform(transform?: IMatrixData, resize?: boolean): void
501
644
  transform(transform?: IMatrixData, resize?: boolean): void
502
645
 
503
- move(x: number, y?: number): void
646
+ move(x: number | IPointData, y?: number): void
504
647
  scaleOf(origin: IPointData, scaleX: number, scaleY?: number, resize?: boolean): void
505
648
  rotateOf(origin: IPointData, rotation: number): void
506
649
  skewOf(origin: IPointData, skewX: number, skewY?: number, resize?: boolean): void
507
650
 
508
651
  transformWorld(worldTransform?: IMatrixData, resize?: boolean): void
509
- moveWorld(x: number, y?: number): void
652
+ moveWorld(x: number | IPointData, y?: number): void
510
653
  scaleOfWorld(worldOrigin: IPointData, scaleX: number, scaleY?: number, resize?: boolean): void
511
654
  rotateOfWorld(worldOrigin: IPointData, rotation: number): void
512
655
  skewOfWorld(worldOrigin: IPointData, skewX: number, skewY?: number, resize?: boolean): void
@@ -15,6 +15,7 @@ export interface ILeafBounds {
15
15
  __updateRenderBounds?(): void
16
16
 
17
17
  __updateAutoLayout?(): void
18
+ __updateFlowLayout?(): void
18
19
  __updateNaturalSize?(): void
19
20
 
20
21
  __updateStrokeSpread?(): number
@@ -8,7 +8,7 @@ export type ILeafEventerModule = ILeafEventer & ThisType<ILeaf>
8
8
 
9
9
  export interface ILeafEventer {
10
10
  on?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void
11
- off?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void
11
+ off?(type?: string | string[], listener?: IEventListener, options?: IEventListenerOptions | boolean): void
12
12
  on_?(type: string | string[], listener: IEventListener, bind?: IObject, options?: IEventListenerOptions | boolean): IEventListenerId
13
13
  off_?(id: IEventListenerId | IEventListenerId[]): void
14
14
  once?(type: string | string[], listener: IEventListener, capture?: boolean): void
@@ -1,3 +1,4 @@
1
+ import { IObject } from '../data/IData'
1
2
  import { IPointData } from '../math/IMath'
2
3
 
3
4
  export interface IFunction {
@@ -8,6 +9,14 @@ export interface INumberFunction {
8
9
  (...arg: any): number
9
10
  }
10
11
 
12
+ export interface IStringFunction {
13
+ (...arg: any): string
14
+ }
15
+
16
+ export interface IObjectFunction {
17
+ (...arg: any): IObject
18
+ }
19
+
11
20
  export interface IPointDataFunction {
12
21
  (...arg: any): IPointData
13
22
  }
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { IAppBase } from './app/IApp'
2
2
  export { ILeaferBase, ILeaferAttrData, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILeaferConfig, ICreator, IUICreator, IZoomType } from './app/ILeafer'
3
- export { ILeaf, ILeafAttrData, ILeafComputedData, ILeafInputData, ICachedLeaf, IHitType, IMaskType, IBlendMode, IEditSize, IImageCursor, ICursorType, IStateStyleType, IAround, ILeafAttrDescriptor, ILeafAttrDescriptorFn } from './display/ILeaf'
3
+ export { ILeaf, ILeafAttrData, ILeafComputedData, ILeafInputData, ICachedLeaf, IFlowType, IFlowBoxType, IAlign, IAxisAlign, IFlowAlign, IFlowAxisAlign, IAxis, IGap, IPointGap, IAxisReverse, IBaseLineAlign, IWrap, IAutoSize, IRangeSize, IPercentData, IUnitData, IConstraint, IConstraintType, IHitType, IMaskType, IEraserType, IBlendMode, IEditSize, IImageCursor, ICursorType, IStateStyleType, IDirection, IAround, ILeafAttrDescriptor, ILeafAttrDescriptorFn } from './display/ILeaf'
4
4
  export { IBranch } from './display/IBranch'
5
5
  export { IZoomView } from './display/IView'
6
6
 
@@ -19,7 +19,7 @@ export { IBranchRender, IBranchRenderModule } from './display/module/IBranchRend
19
19
  export { IRenderer, IRendererConfig, IRenderOptions } from './renderer/IRenderer'
20
20
  export { IWatcher, IWatchEventData, IWatcherConfig } from './watcher/IWatcher'
21
21
  export { ILayouter, ILayoutChangedData, ILayoutBlockData, ILayouterConfig, IPartLayoutConfig } from './layouter/ILayouter'
22
- export { ISelector, ISelectorConfig, ISelectorProxy, IFindMethod, IPickResult, IPickOptions, IAnswer } from './selector/ISelector'
22
+ export { ISelector, ISelectorConfig, ISelectorProxy, IFindCondition, IFindMethod, IPickResult, IPickOptions, IPickBottom, IAnswer } from './selector/ISelector'
23
23
 
24
24
  export { ICanvasManager } from './canvas/ICanvasManager'
25
25
  export { IHitCanvasManager } from './canvas/IHitCanvasManager'
@@ -50,7 +50,7 @@ export { ICursorTypeMap, ICursorRotate, ICursorRotateMap } from './interaction/I
50
50
  export { IInteraction, IInteractionCanvas, IInteractionConfig, IWheelConfig, IPointerConfig } from './interaction/IInteraction'
51
51
 
52
52
 
53
- export { INumber, IBoolean, IString, IValue, IFourNumber, IPathString, ITimer, IObject, INumberMap, IStringMap, IBooleanMap, IDataTypeHandle } from './data/IData'
53
+ export { INumber, IBoolean, IString, IValue, IFourNumber, IPathString, ITimer, IObject, INumberMap, IStringMap, IBooleanMap, IPointDataMap, IDataTypeHandle } from './data/IData'
54
54
  export { ILeafList, ILeafArrayMap, ILeafMap, ILeafLevelList, ILeafListItemCallback } from './data/IList'
55
- export { IPoint, IPointData, IRadiusPointData, ISize, ISizeData, IScreenSizeData, IBounds, IBoundsData, IBoundsDataFn, IOffsetBoundsData, ITwoPointBoundsData, IAutoBounds, IAutoBoundsData, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithScaleData, IMatrixWithOptionScaleData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IScaleRotationData, IScaleData, ISkewData, ILayoutBoundsData, ILayoutData, ILayoutAttr } from './math/IMath'
56
- export { IFunction, IAttrDecorator } from './function/IFunction'
55
+ export { IPoint, IPointData, IUnitPointData, IScrollPointData, IRadiusPointData, ISize, ISizeData, IScreenSizeData, IBounds, IBoundsData, IBoundsDataFn, IOffsetBoundsData, ITwoPointBoundsData, IAutoBounds, IAutoBoxData, IAutoBoundsData, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithScaleData, IMatrixWithOptionScaleData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IScaleRotationData, IScaleData, ISkewData, ILayoutBoundsData, ILayoutData, ILayoutAttr } from './math/IMath'
56
+ export { IFunction, IStringFunction, INumberFunction, IObjectFunction, IPointDataFunction, IAttrDecorator } from './function/IFunction'
@@ -3,7 +3,7 @@ import { IPointerEvent, IMoveEvent, IZoomEvent, IRotateEvent, IUIEvent, IKeyEven
3
3
  import { ILeaf, ICursorType } from '../display/ILeaf'
4
4
  import { ILeafList } from '../data/IList'
5
5
  import { IPointData } from '../math/IMath'
6
- import { ISelector, IPickOptions } from '../selector/ISelector'
6
+ import { ISelector, IPickOptions, IPickBottom } from '../selector/ISelector'
7
7
  import { IBounds } from '../math/IMath'
8
8
  import { IControl } from '../control/IControl'
9
9
  import { IKeepTouchData } from '../event/IEvent'
@@ -26,6 +26,8 @@ export interface IInteraction extends IControl {
26
26
  cursor: ICursorType | ICursorType[]
27
27
  readonly hitRadius: number
28
28
 
29
+ bottomList?: IPickBottom[] // 底部可拾取的虚拟元素
30
+
29
31
  shrinkCanvasBounds: IBounds
30
32
 
31
33
  downData: IPointerEvent
@@ -2,7 +2,7 @@ import { IBoundsData, IMatrixData, ILayoutBoundsData, IPointData } from '../math
2
2
  import { ILeaf } from '../display/ILeaf'
3
3
 
4
4
  export type ILocationType = 'world' | 'page' | 'local' | 'inner'
5
- export type IBoundsType = 'content' | 'box' | 'stroke' | 'margin' | 'render'
5
+ export type IBoundsType = 'content' | 'box' | 'stroke' | 'render'
6
6
 
7
7
  export interface ILeafLayout {
8
8
 
@@ -12,19 +12,24 @@ export interface ILeafLayout {
12
12
 
13
13
  // inner
14
14
 
15
+ contentBounds: IBoundsData // | content |
15
16
  boxBounds: IBoundsData // | content + padding |
16
17
  strokeBounds: IBoundsData // | boxBounds + border |
17
18
  renderBounds: IBoundsData // | strokeBounds + shadow |
18
19
 
19
- // auto layout
20
- marginBounds: IBoundsData // | strokeBounds + margin |
21
- contentBounds: IBoundsData // | content |
22
-
23
20
  // local
24
21
 
25
- //localBoxBounds: IBoundsData = leaf.__local
26
- localStrokeBounds?: IBoundsData
27
- localRenderBounds?: IBoundsData
22
+ localContentBounds: IBoundsData
23
+ // localBoxBounds: IBoundsData // use leaf.__localBoxBounds
24
+ localStrokeBounds: IBoundsData
25
+ localRenderBounds: IBoundsData
26
+
27
+ // world
28
+
29
+ worldContentBounds: IBoundsData
30
+ worldBoxBounds: IBoundsData
31
+ worldStrokeBounds: IBoundsData
32
+ // worldRenderBounds: IBoundsData // use leaf.__world
28
33
 
29
34
  // state
30
35
  resized: boolean
@@ -84,8 +89,10 @@ export interface ILeafLayout {
84
89
  getLayoutPoints(type?: IBoundsType, relative?: ILocationType | ILeaf): IPointData[]
85
90
 
86
91
  // 独立 / 引用 boxBounds
92
+ shrinkContent(): void
87
93
  spreadStroke(): void
88
94
  spreadRender(): void
95
+ shrinkContentCancel(): void
89
96
  spreadStrokeCancel(): void
90
97
  spreadRenderCancel(): void
91
98
 
package/src/math/IMath.ts CHANGED
@@ -5,6 +5,17 @@ export interface IPointData {
5
5
  y: number
6
6
  }
7
7
 
8
+ export interface IUnitPointData {
9
+ type?: 'percent' | 'px'
10
+ x: number
11
+ y: number
12
+ }
13
+
14
+ export interface IScrollPointData {
15
+ scrollX: number
16
+ scrollY: number
17
+ }
18
+
8
19
  export interface IPoint extends IPointData {
9
20
  set(x?: number | IPointData, y?: number): IPoint
10
21
  get(): IPointData
@@ -70,7 +81,7 @@ export interface IBounds extends IBoundsData, ITwoPointBoundsData {
70
81
  toInnerOf(matrix: IMatrixData, to?: IBoundsData): IBounds
71
82
  getFitMatrix(put: IBoundsData, baseScale?: number): IMatrix
72
83
 
73
- spread(fourNumber: IFourNumber, spreadY?: number): IBounds
84
+ spread(fourNumber: IFourNumber): IBounds
74
85
  shrink(fourNumber: IFourNumber): IBounds
75
86
  ceil(): IBounds
76
87
  unsign(): IBounds
@@ -106,13 +117,15 @@ export interface ITwoPointBoundsData {
106
117
  maxY: number
107
118
  }
108
119
 
109
-
110
- export interface IAutoBoundsData {
120
+ export interface IAutoBoxData {
111
121
  top?: number
112
122
  right?: number
113
123
  bottom?: number
114
124
  left?: number
125
+ }
126
+
115
127
 
128
+ export interface IAutoBoundsData extends IAutoBoxData {
116
129
  width?: number
117
130
  height?: number
118
131
  }
@@ -15,16 +15,28 @@ export interface IPickOptions {
15
15
  through?: boolean
16
16
  target?: IBranch
17
17
  findList?: ILeaf[]
18
+ bottomList?: IPickBottom[] // 底部可拾取的虚拟元素
18
19
  exclude?: ILeafList
19
20
  ignoreHittable?: boolean
20
21
  }
21
22
 
23
+ export interface IPickBottom {
24
+ target: ILeaf
25
+ proxy?: ILeaf
26
+ }
27
+
22
28
  export interface ISelectorConfig {
23
29
 
24
30
  }
25
31
 
26
32
  export type IAnswer = 0 | 1 | 2 | 3
27
33
 
34
+ export interface IFindCondition {
35
+ id?: number | string,
36
+ className?: string,
37
+ tag?: string | string[]
38
+ }
39
+
28
40
  export interface IFindMethod {
29
41
  (leaf: ILeaf, options?: any): IAnswer
30
42
  }
package/types/index.d.ts CHANGED
@@ -1,99 +1,18 @@
1
1
  import { ILeaferCanvas as ILeaferCanvas$1, IScreenSizeData as IScreenSizeData$1 } from '@leafer/interface';
2
2
 
3
- type INumber = number;
4
- type IBoolean = boolean;
5
- type IString = string;
6
- type IValue = INumber | IBoolean | IString | IObject;
7
- type ITimer = any;
8
- type IPathString = string;
9
- type IFourNumber = number | number[];
10
- interface IObject {
11
- [name: string]: any;
12
- }
13
- interface IBooleanMap {
14
- [name: string]: boolean;
15
- }
16
- interface INumberMap {
17
- [name: string]: number;
18
- }
19
- interface IStringMap {
20
- [name: string]: string;
21
- }
22
- interface IDataTypeHandle {
23
- (target: any): void;
24
- }
25
-
26
- interface ILeafMap {
27
- [name: string]: ILeaf;
28
- }
29
- interface ILeafArrayMap {
30
- [name: string]: ILeaf[];
31
- }
32
- type ILeafListItemCallback = (item: ILeaf, index?: number) => void;
33
- interface ILeafList {
34
- list: ILeaf[];
35
- keys: INumberMap;
36
- readonly length: number;
37
- has(leaf: ILeaf): boolean;
38
- indexAt(index: number): ILeaf;
39
- indexOf(leaf: ILeaf): number;
40
- add(leaf: ILeaf): void;
41
- addAt(leaf: ILeaf, index: number): void;
42
- addList(list: ILeaf[]): void;
43
- remove(leaf: ILeaf): void;
44
- forEach(itemCallback: ILeafListItemCallback): void;
45
- sort(reverse?: boolean): void;
46
- clone(): ILeafList;
47
- update(): void;
48
- reset(): void;
49
- destroy(): void;
50
- }
51
- interface ILeafLevelList {
52
- levelMap: ILeafArrayMap;
53
- keys: INumberMap;
54
- levels: number[];
55
- readonly length: number;
56
- has(leaf: ILeaf): boolean;
57
- without(leaf: ILeaf): boolean;
58
- sort(reverse?: boolean): void;
59
- addList(list: ILeaf[]): void;
60
- add(leaf: ILeaf): void;
61
- forEach(itemCallback: ILeafListItemCallback): void;
62
- reset(): void;
63
- destroy(): void;
64
- }
65
-
66
- interface IControl {
67
- start(): void;
68
- stop(): void;
69
- destroy(): void;
70
- }
71
-
72
- interface IWatchEventData {
73
- updatedList: ILeafList;
74
- }
75
- interface IWatcherConfig {
76
- }
77
- interface IWatcher extends IControl {
78
- target: ILeaf;
79
- totalTimes: number;
80
- disabled: boolean;
81
- running: boolean;
82
- changed: boolean;
83
- hasVisible: boolean;
84
- hasAdd: boolean;
85
- hasRemove: boolean;
86
- readonly childrenChanged: boolean;
87
- config: IWatcherConfig;
88
- updatedList: ILeafList;
89
- disable(): void;
90
- update(): void;
91
- }
92
-
93
3
  interface IPointData {
94
4
  x: number;
95
5
  y: number;
96
6
  }
7
+ interface IUnitPointData {
8
+ type?: 'percent' | 'px';
9
+ x: number;
10
+ y: number;
11
+ }
12
+ interface IScrollPointData {
13
+ scrollX: number;
14
+ scrollY: number;
15
+ }
97
16
  interface IPoint extends IPointData {
98
17
  set(x?: number | IPointData, y?: number): IPoint;
99
18
  get(): IPointData;
@@ -145,7 +64,7 @@ interface IBounds extends IBoundsData, ITwoPointBoundsData {
145
64
  toOuterOf(matrix: IMatrixData, to?: IBoundsData): IBounds;
146
65
  toInnerOf(matrix: IMatrixData, to?: IBoundsData): IBounds;
147
66
  getFitMatrix(put: IBoundsData, baseScale?: number): IMatrix;
148
- spread(fourNumber: IFourNumber, spreadY?: number): IBounds;
67
+ spread(fourNumber: IFourNumber): IBounds;
149
68
  shrink(fourNumber: IFourNumber): IBounds;
150
69
  ceil(): IBounds;
151
70
  unsign(): IBounds;
@@ -174,11 +93,13 @@ interface ITwoPointBoundsData {
174
93
  maxX: number;
175
94
  maxY: number;
176
95
  }
177
- interface IAutoBoundsData {
96
+ interface IAutoBoxData {
178
97
  top?: number;
179
98
  right?: number;
180
99
  bottom?: number;
181
100
  left?: number;
101
+ }
102
+ interface IAutoBoundsData extends IAutoBoxData {
182
103
  width?: number;
183
104
  height?: number;
184
105
  }
@@ -254,6 +175,99 @@ interface IMatrixWithBoundsScaleData extends IMatrixData, IBoundsData, IScaleDat
254
175
  interface IMatrixWithLayoutData extends IMatrixData, ILayoutBoundsData {
255
176
  }
256
177
 
178
+ type INumber = number;
179
+ type IBoolean = boolean;
180
+ type IString = string;
181
+ type IValue = INumber | IBoolean | IString | IObject;
182
+ type ITimer = any;
183
+ type IPathString = string;
184
+ type IFourNumber = number | number[];
185
+ interface IObject {
186
+ [name: string]: any;
187
+ }
188
+ interface IBooleanMap {
189
+ [name: string]: boolean;
190
+ }
191
+ interface INumberMap {
192
+ [name: string]: number;
193
+ }
194
+ interface IStringMap {
195
+ [name: string]: string;
196
+ }
197
+ interface IPointDataMap {
198
+ [name: string]: IPointData;
199
+ }
200
+ interface IDataTypeHandle {
201
+ (target: any): void;
202
+ }
203
+
204
+ interface ILeafMap {
205
+ [name: string]: ILeaf;
206
+ }
207
+ interface ILeafArrayMap {
208
+ [name: string]: ILeaf[];
209
+ }
210
+ type ILeafListItemCallback = (item: ILeaf, index?: number) => void;
211
+ interface ILeafList {
212
+ list: ILeaf[];
213
+ keys: INumberMap;
214
+ readonly length: number;
215
+ has(leaf: ILeaf): boolean;
216
+ indexAt(index: number): ILeaf;
217
+ indexOf(leaf: ILeaf): number;
218
+ add(leaf: ILeaf): void;
219
+ addAt(leaf: ILeaf, index: number): void;
220
+ addList(list: ILeaf[]): void;
221
+ remove(leaf: ILeaf): void;
222
+ forEach(itemCallback: ILeafListItemCallback): void;
223
+ sort(reverse?: boolean): void;
224
+ clone(): ILeafList;
225
+ update(): void;
226
+ reset(): void;
227
+ destroy(): void;
228
+ }
229
+ interface ILeafLevelList {
230
+ levelMap: ILeafArrayMap;
231
+ keys: INumberMap;
232
+ levels: number[];
233
+ readonly length: number;
234
+ has(leaf: ILeaf): boolean;
235
+ without(leaf: ILeaf): boolean;
236
+ sort(reverse?: boolean): void;
237
+ addList(list: ILeaf[]): void;
238
+ add(leaf: ILeaf): void;
239
+ forEach(itemCallback: ILeafListItemCallback): void;
240
+ reset(): void;
241
+ destroy(): void;
242
+ }
243
+
244
+ interface IControl {
245
+ start(): void;
246
+ stop(): void;
247
+ destroy(): void;
248
+ }
249
+
250
+ interface IWatchEventData {
251
+ updatedList: ILeafList;
252
+ }
253
+ interface IWatcherConfig {
254
+ }
255
+ interface IWatcher extends IControl {
256
+ target: ILeaf;
257
+ totalTimes: number;
258
+ disabled: boolean;
259
+ running: boolean;
260
+ changed: boolean;
261
+ hasVisible: boolean;
262
+ hasAdd: boolean;
263
+ hasRemove: boolean;
264
+ readonly childrenChanged: boolean;
265
+ config: IWatcherConfig;
266
+ updatedList: ILeafList;
267
+ disable(): void;
268
+ update(): void;
269
+ }
270
+
257
271
  interface ILayoutChangedData {
258
272
  matrixList: ILeaf[];
259
273
  boundsList: ILeaf[];
@@ -365,7 +379,7 @@ interface IKeepTouchData {
365
379
  type ILeafEventerModule = ILeafEventer & ThisType<ILeaf>;
366
380
  interface ILeafEventer {
367
381
  on?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
368
- off?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
382
+ off?(type?: string | string[], listener?: IEventListener, options?: IEventListenerOptions | boolean): void;
369
383
  on_?(type: string | string[], listener: IEventListener, bind?: IObject, options?: IEventListenerOptions | boolean): IEventListenerId;
370
384
  off_?(id: IEventListenerId | IEventListenerId[]): void;
371
385
  once?(type: string | string[], listener: IEventListener, capture?: boolean): void;
@@ -380,6 +394,12 @@ interface IFunction {
380
394
  interface INumberFunction {
381
395
  (...arg: any): number;
382
396
  }
397
+ interface IStringFunction {
398
+ (...arg: any): string;
399
+ }
400
+ interface IObjectFunction {
401
+ (...arg: any): IObject;
402
+ }
383
403
  interface IPointDataFunction {
384
404
  (...arg: any): IPointData;
385
405
  }
@@ -777,17 +797,20 @@ type IExportImageType = 'jpg' | 'png' | 'webp';
777
797
  type IExportFileType = IExportImageType | 'svg' | 'pdf' | 'json';
778
798
 
779
799
  type ILocationType = 'world' | 'page' | 'local' | 'inner';
780
- type IBoundsType = 'content' | 'box' | 'stroke' | 'margin' | 'render';
800
+ type IBoundsType = 'content' | 'box' | 'stroke' | 'render';
781
801
  interface ILeafLayout {
782
802
  leaf: ILeaf;
783
803
  proxyZoom: boolean;
804
+ contentBounds: IBoundsData;
784
805
  boxBounds: IBoundsData;
785
806
  strokeBounds: IBoundsData;
786
807
  renderBounds: IBoundsData;
787
- marginBounds: IBoundsData;
788
- contentBounds: IBoundsData;
789
- localStrokeBounds?: IBoundsData;
790
- localRenderBounds?: IBoundsData;
808
+ localContentBounds: IBoundsData;
809
+ localStrokeBounds: IBoundsData;
810
+ localRenderBounds: IBoundsData;
811
+ worldContentBounds: IBoundsData;
812
+ worldBoxBounds: IBoundsData;
813
+ worldStrokeBounds: IBoundsData;
791
814
  resized: boolean;
792
815
  waitAutoLayout: boolean;
793
816
  matrixChanged: boolean;
@@ -825,8 +848,10 @@ interface ILeafLayout {
825
848
  getBounds(type?: IBoundsType, relative?: ILocationType | ILeaf): IBoundsData;
826
849
  getLayoutBounds(type?: IBoundsType, relative?: ILocationType | ILeaf, unscale?: boolean): ILayoutBoundsData;
827
850
  getLayoutPoints(type?: IBoundsType, relative?: ILocationType | ILeaf): IPointData[];
851
+ shrinkContent(): void;
828
852
  spreadStroke(): void;
829
853
  spreadRender(): void;
854
+ shrinkContentCancel(): void;
830
855
  spreadStrokeCancel(): void;
831
856
  spreadRenderCancel(): void;
832
857
  boxChange(): void;
@@ -1075,6 +1100,7 @@ interface ILeafBounds {
1075
1100
  __updateStrokeBounds?(): void;
1076
1101
  __updateRenderBounds?(): void;
1077
1102
  __updateAutoLayout?(): void;
1103
+ __updateFlowLayout?(): void;
1078
1104
  __updateNaturalSize?(): void;
1079
1105
  __updateStrokeSpread?(): number;
1080
1106
  __updateRenderSpread?(): number;
@@ -1146,12 +1172,22 @@ interface IPickOptions {
1146
1172
  through?: boolean;
1147
1173
  target?: IBranch;
1148
1174
  findList?: ILeaf[];
1175
+ bottomList?: IPickBottom[];
1149
1176
  exclude?: ILeafList;
1150
1177
  ignoreHittable?: boolean;
1151
1178
  }
1179
+ interface IPickBottom {
1180
+ target: ILeaf;
1181
+ proxy?: ILeaf;
1182
+ }
1152
1183
  interface ISelectorConfig {
1153
1184
  }
1154
1185
  type IAnswer = 0 | 1 | 2 | 3;
1186
+ interface IFindCondition {
1187
+ id?: number | string;
1188
+ className?: string;
1189
+ tag?: string | string[];
1190
+ }
1155
1191
  interface IFindMethod {
1156
1192
  (leaf: ILeaf, options?: any): IAnswer;
1157
1193
  }
@@ -1188,9 +1224,9 @@ interface ILeafAttrData {
1188
1224
  disabled: IBoolean;
1189
1225
  locked: IBoolean;
1190
1226
  zIndex: INumber;
1191
- mask: IBoolean;
1227
+ mask: IMaskType;
1192
1228
  maskType: IMaskType;
1193
- eraser: IBoolean;
1229
+ eraser: IEraserType;
1194
1230
  x: INumber;
1195
1231
  y: INumber;
1196
1232
  width: INumber;
@@ -1201,16 +1237,32 @@ interface ILeafAttrData {
1201
1237
  skewX: INumber;
1202
1238
  skewY: INumber;
1203
1239
  scale: INumber | IPointData;
1204
- around: IAround;
1240
+ offsetX: INumber;
1241
+ offsetY: INumber;
1242
+ scrollX: INumber;
1243
+ scrollY: INumber;
1244
+ origin: IAlign | IUnitPointData;
1245
+ around: IAlign | IUnitPointData;
1205
1246
  lazy: IBoolean;
1206
1247
  pixelRatio: INumber;
1207
- draggable: IBoolean;
1208
1248
  path: IPathCommandData | IPathString;
1209
1249
  windingRule: IWindingRule;
1210
1250
  closed: boolean;
1251
+ flow: IFlowType;
1252
+ padding: IFourNumber;
1253
+ gap: IGap | IPointGap;
1254
+ align: IFlowAlign | IFlowAxisAlign;
1255
+ wrap: IWrap;
1256
+ itemBox: IFlowBoxType;
1257
+ inFlow: IBoolean;
1258
+ autoWidth: IAutoSize;
1259
+ autoHeight: IAutoSize;
1260
+ autoBox: IAutoBoxData | IConstraint;
1261
+ widthRange: IRangeSize;
1262
+ heightRange: IRangeSize;
1263
+ draggable: IBoolean | IAxis;
1264
+ dragBounds?: IBoundsData | 'parent';
1211
1265
  editable: IBoolean;
1212
- editSize: IEditSize;
1213
- editorStyle: IObject;
1214
1266
  hittable: IBoolean;
1215
1267
  hitFill: IHitType;
1216
1268
  hitStroke: IHitType;
@@ -1226,8 +1278,42 @@ interface ILeafAttrData {
1226
1278
  selectedStyle: ILeafInputData;
1227
1279
  disabledStyle: ILeafInputData;
1228
1280
  }
1281
+ type IAxis = 'x' | 'y';
1282
+ type IAxisReverse = 'x-reverse' | 'y-reverse';
1283
+ type IFlowType = boolean | IAxis | IAxisReverse;
1284
+ type IFlowBoxType = 'box' | 'stroke';
1285
+ type IGap = INumber | 'auto' | 'fit';
1286
+ interface IPointGap {
1287
+ x?: IGap;
1288
+ y?: IGap;
1289
+ }
1290
+ type IAxisAlign = 'from' | 'center' | 'to';
1291
+ interface IFlowAxisAlign {
1292
+ content?: IFlowAlign;
1293
+ rowX?: IAxisAlign;
1294
+ rowY?: IAxisAlign;
1295
+ }
1296
+ type IWrap = boolean | 'reverse';
1297
+ type IAutoSize = IBoolean | INumber | IPercentData;
1298
+ interface IRangeSize {
1299
+ min?: number;
1300
+ max?: number;
1301
+ }
1302
+ interface IUnitData {
1303
+ type: 'percent' | 'px';
1304
+ value: number;
1305
+ }
1306
+ interface IPercentData extends IUnitData {
1307
+ type: 'percent';
1308
+ }
1309
+ interface IConstraint {
1310
+ x: IConstraintType;
1311
+ y: IConstraintType;
1312
+ }
1313
+ type IConstraintType = 'from' | 'center' | 'to' | 'from-to' | 'scale';
1229
1314
  type IHitType = 'path' | 'pixel' | 'all' | 'none';
1230
- type IMaskType = 'path' | 'pixel' | 'clipping';
1315
+ type IMaskType = boolean | 'path' | 'pixel' | 'clipping';
1316
+ type IEraserType = boolean | 'path' | 'pixel';
1231
1317
  type IBlendMode = 'pass-through' | 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity' | 'source-over' | 'source-in' | 'source-out' | 'source-atop' | 'destination-over' | 'destination-in' | 'destination-out' | 'destination-atop' | 'xor';
1232
1318
  type IEditSize = 'size' | 'scale';
1233
1319
  interface IImageCursor {
@@ -1236,7 +1322,11 @@ interface IImageCursor {
1236
1322
  y?: number;
1237
1323
  rotation?: number;
1238
1324
  }
1239
- type IAround = 'topLeft' | 'top' | 'topRight' | 'right' | 'bottomRight' | 'bottom' | 'bottomLeft' | 'left' | 'center' | IPointData;
1325
+ type IDirection = 'top-left' | 'top' | 'top-right' | 'right' | 'bottom-right' | 'bottom' | 'bottom-left' | 'left' | 'center';
1326
+ type IAlign = IDirection;
1327
+ type IBaseLineAlign = 'baseline-left' | 'baseline-center' | 'baseline-right';
1328
+ type IFlowAlign = IAlign | IBaseLineAlign;
1329
+ type IAround = IAlign | IUnitPointData;
1240
1330
  type ICursorType = IImageCursor | '' | 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'grab' | 'grabbing' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ew-resize' | 'ns-resize' | 'nesw-resize' | 'nwse-resize' | 'col-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out';
1241
1331
  type IStateStyleType = 'hoverStyle' | 'pressStyle' | 'focusStyle' | 'selectedStyle' | 'disabledStyle';
1242
1332
  interface ILeafInputData {
@@ -1251,9 +1341,9 @@ interface ILeafInputData {
1251
1341
  disabled?: IBoolean;
1252
1342
  locked?: IBoolean;
1253
1343
  zIndex?: INumber;
1254
- mask?: IBoolean;
1344
+ mask?: IMaskType;
1255
1345
  maskType?: IMaskType;
1256
- eraser?: IBoolean;
1346
+ eraser?: IEraserType;
1257
1347
  x?: INumber;
1258
1348
  y?: INumber;
1259
1349
  width?: INumber;
@@ -1264,16 +1354,32 @@ interface ILeafInputData {
1264
1354
  skewX?: INumber;
1265
1355
  skewY?: INumber;
1266
1356
  scale?: INumber | IPointData;
1267
- around?: IAround;
1357
+ offsetX?: INumber;
1358
+ offsetY?: INumber;
1359
+ scrollX?: INumber;
1360
+ scrollY?: INumber;
1361
+ origin?: IAlign | IUnitPointData;
1362
+ around?: IAlign | IUnitPointData;
1268
1363
  lazy?: IBoolean;
1269
1364
  pixelRatio?: INumber;
1270
- draggable?: IBoolean;
1271
1365
  path?: IPathCommandData | IPathString;
1272
1366
  windingRule?: IWindingRule;
1273
1367
  closed?: boolean;
1368
+ flow?: IFlowType;
1369
+ padding?: IFourNumber;
1370
+ gap?: IGap | IPointGap;
1371
+ align?: IFlowAlign | IFlowAxisAlign;
1372
+ wrap?: IWrap;
1373
+ itemBox?: IFlowBoxType;
1374
+ inFlow?: IBoolean;
1375
+ autoWidth?: IAutoSize;
1376
+ autoHeight?: IAutoSize;
1377
+ autoBox?: IAutoBoxData | IConstraint;
1378
+ widthRange?: IRangeSize;
1379
+ heightRange?: IRangeSize;
1380
+ draggable?: IBoolean | IAxis;
1381
+ dragBounds?: IBoundsData | 'parent';
1274
1382
  editable?: IBoolean;
1275
- editSize?: IEditSize;
1276
- editorStyle?: IObject;
1277
1383
  hittable?: IBoolean;
1278
1384
  hitFill?: IHitType;
1279
1385
  hitStroke?: IHitType;
@@ -1302,9 +1408,9 @@ interface ILeafComputedData {
1302
1408
  disabled?: boolean;
1303
1409
  locked?: boolean;
1304
1410
  zIndex?: number;
1305
- mask?: boolean;
1411
+ mask?: boolean | IMaskType;
1306
1412
  maskType?: IMaskType;
1307
- eraser?: boolean;
1413
+ eraser?: IEraserType;
1308
1414
  x?: number;
1309
1415
  y?: number;
1310
1416
  width?: number;
@@ -1314,16 +1420,32 @@ interface ILeafComputedData {
1314
1420
  rotation?: number;
1315
1421
  skewX?: number;
1316
1422
  skewY?: number;
1317
- around?: IAround;
1423
+ offsetX?: number;
1424
+ offsetY?: number;
1425
+ scrollX?: number;
1426
+ scrollY?: number;
1427
+ origin?: IAlign | IUnitPointData;
1428
+ around?: IAlign | IUnitPointData;
1318
1429
  lazy?: boolean;
1319
1430
  pixelRatio?: number;
1320
1431
  path?: IPathCommandData;
1321
1432
  windingRule?: IWindingRule;
1322
1433
  closed?: boolean;
1323
- draggable?: boolean;
1434
+ flow?: IFlowType;
1435
+ padding?: IFourNumber;
1436
+ gap?: IGap | IPointGap;
1437
+ align?: IFlowAlign | IFlowAxisAlign;
1438
+ wrap?: IWrap;
1439
+ itemBox?: IFlowBoxType;
1440
+ inFlow?: boolean;
1441
+ autoWidth?: IAutoSize;
1442
+ autoHeight?: IAutoSize;
1443
+ autoBox?: IAutoBoxData | IConstraint;
1444
+ widthRange?: IRangeSize;
1445
+ heightRange?: IRangeSize;
1446
+ draggable?: boolean | IAxis;
1447
+ dragBounds?: IBoundsData | 'parent';
1324
1448
  editable?: boolean;
1325
- editSize?: IEditSize;
1326
- editorStyle?: IObject;
1327
1449
  hittable?: boolean;
1328
1450
  hitFill?: IHitType;
1329
1451
  hitStroke?: IHitType;
@@ -1367,6 +1489,7 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1367
1489
  __: ILeafData;
1368
1490
  proxyData?: ILeafInputData;
1369
1491
  __proxyData?: ILeafInputData;
1492
+ syncEventer?: ILeaf;
1370
1493
  __layout: ILeafLayout;
1371
1494
  __world: IMatrixWithBoundsScaleData;
1372
1495
  __local?: IMatrixWithBoundsData;
@@ -1390,6 +1513,10 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1390
1513
  __hasMask?: boolean;
1391
1514
  __hasEraser?: boolean;
1392
1515
  __hitCanvas?: IHitCanvas;
1516
+ __flowBounds?: IBoundsData;
1517
+ __widthGrow?: number;
1518
+ __heightGrow?: number;
1519
+ __hasGrow?: boolean;
1393
1520
  readonly __onlyHitMask: boolean;
1394
1521
  readonly __ignoreHitWorld: boolean;
1395
1522
  readonly pathInputed: boolean;
@@ -1414,7 +1541,9 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1414
1541
  setProxyAttr(name: string, newValue: IValue): void;
1415
1542
  getProxyAttr(name: string): IValue;
1416
1543
  find(condition: number | string | IFindMethod, options?: any): ILeaf[];
1544
+ findTag(tag: string | string[]): ILeaf[];
1417
1545
  findOne(condition: number | string | IFindMethod, options?: any): ILeaf;
1546
+ findId(id: number | string): ILeaf;
1418
1547
  focus(value?: boolean): void;
1419
1548
  forceUpdate(attrName?: string): void;
1420
1549
  updateLayout(): void;
@@ -1425,10 +1554,12 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1425
1554
  __updateLocalBoxBounds(): void;
1426
1555
  __updateLocalStrokeBounds(): void;
1427
1556
  __updateLocalRenderBounds(): void;
1557
+ __updateContentBounds(): void;
1428
1558
  __updateBoxBounds(): void;
1429
1559
  __updateStrokeBounds(): void;
1430
1560
  __updateRenderBounds(): void;
1431
1561
  __updateAutoLayout(): void;
1562
+ __updateFlowLayout(): void;
1432
1563
  __updateNaturalSize(): void;
1433
1564
  __updateStrokeSpread(): number;
1434
1565
  __updateRenderSpread(): number;
@@ -1436,6 +1567,7 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1436
1567
  __updateEraser(value?: boolean): void;
1437
1568
  __updateMask(value?: boolean): void;
1438
1569
  __renderMask(canvas: ILeaferCanvas, options: IRenderOptions): void;
1570
+ __renderEraser(canvas: ILeaferCanvas, options: IRenderOptions): void;
1439
1571
  __getNowWorld(options: IRenderOptions): IMatrixWithBoundsScaleData;
1440
1572
  getWorld(attrName: ILayoutAttr): number;
1441
1573
  getTransform(relative?: ILocationType | ILeaf): IMatrixData;
@@ -1456,12 +1588,12 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1456
1588
  getWorldPointByPage(page: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1457
1589
  setTransform(transform?: IMatrixData, resize?: boolean): void;
1458
1590
  transform(transform?: IMatrixData, resize?: boolean): void;
1459
- move(x: number, y?: number): void;
1591
+ move(x: number | IPointData, y?: number): void;
1460
1592
  scaleOf(origin: IPointData, scaleX: number, scaleY?: number, resize?: boolean): void;
1461
1593
  rotateOf(origin: IPointData, rotation: number): void;
1462
1594
  skewOf(origin: IPointData, skewX: number, skewY?: number, resize?: boolean): void;
1463
1595
  transformWorld(worldTransform?: IMatrixData, resize?: boolean): void;
1464
- moveWorld(x: number, y?: number): void;
1596
+ moveWorld(x: number | IPointData, y?: number): void;
1465
1597
  scaleOfWorld(worldOrigin: IPointData, scaleX: number, scaleY?: number, resize?: boolean): void;
1466
1598
  rotateOfWorld(worldOrigin: IPointData, rotation: number): void;
1467
1599
  skewOfWorld(worldOrigin: IPointData, skewX: number, skewY?: number, resize?: boolean): void;
@@ -1614,6 +1746,7 @@ interface IInteraction extends IControl {
1614
1746
  config: IInteractionConfig;
1615
1747
  cursor: ICursorType | ICursorType[];
1616
1748
  readonly hitRadius: number;
1749
+ bottomList?: IPickBottom[];
1617
1750
  shrinkCanvasBounds: IBounds;
1618
1751
  downData: IPointerEvent;
1619
1752
  hoverData: IPointerEvent;
@@ -1748,7 +1881,6 @@ interface ILeaferAttrData {
1748
1881
  stop(): void;
1749
1882
  unlockLayout(): void;
1750
1883
  lockLayout(): void;
1751
- forceFullRender(): void;
1752
1884
  forceRender(bounds?: IBoundsData): void;
1753
1885
  updateCursor(cursor?: ICursorType): void;
1754
1886
  resize(size: IScreenSizeData): void;
@@ -1963,4 +2095,4 @@ interface ICursorRotateMap {
1963
2095
  [name: string]: ICursorRotate;
1964
2096
  }
1965
2097
 
1966
- export type { ACommandData, ArcCommandData, ArcToCommandData, CCommandData, CanvasPathCommand, EllipseCommandData, HCommandData, IAnimateEvent, IAnswer, IAppBase, IAround, IAttrDecorator, IAutoBounds, IAutoBoundsData, IBlendMode, IBlob, IBlobFunction, IBoolean, IBooleanMap, IBounds, IBoundsData, IBoundsDataFn, IBoundsType, IBranch, IBranchRender, IBranchRenderModule, ICachedLeaf, ICanvasAttr, ICanvasCacheOptions, ICanvasContext2D, ICanvasContext2DSettings, ICanvasManager, ICanvasPattern, ICanvasStrokeOptions, ICanvasType, IChildEvent, IControl, ICreator, ICursorRotate, ICursorRotateMap, ICursorType, ICursorTypeMap, IDataProcessor, IDataTypeHandle, IDragEvent, IDropEvent, IEditSize, IEvent, IEventListener, IEventListenerId, IEventListenerItem, IEventListenerMap, IEventListenerOptions, IEventTarget, IEventer, IExportFileType, IExportImageType, IExportOnCanvasFunction, IExportOptions, IExportResult, IExportResultFunction, IFindMethod, IFourNumber, IFunction, IHitCanvas, IHitCanvasConfig, IHitCanvasManager, IHitType, IImageCursor, IImageEvent, IImageManager, IInteraction, IInteractionCanvas, IInteractionConfig, IKeepTouchData, IKeyEvent, ILayoutAttr, ILayoutBlockData, ILayoutBoundsData, ILayoutChangedData, ILayoutData, ILayoutEvent, ILayouter, ILayouterConfig, ILeaf, ILeafArrayMap, ILeafAttrData, ILeafAttrDescriptor, ILeafAttrDescriptorFn, ILeafBounds, ILeafBoundsModule, ILeafComputedData, ILeafData, ILeafDataOptions, ILeafDataProxy, ILeafDataProxyModule, ILeafEventer, ILeafEventerModule, ILeafHit, ILeafHitModule, ILeafInputData, ILeafLayout, ILeafLevelList, ILeafList, ILeafListItemCallback, ILeafMap, ILeafMatrix, ILeafMatrixModule, ILeafRender, ILeafRenderModule, ILeaferAttrData, ILeaferBase, ILeaferCanvas, ILeaferCanvasConfig, ILeaferCanvasView, ILeaferConfig, ILeaferEvent, ILeaferImage, ILeaferImageCacheCanvas, ILeaferImageConfig, ILeaferImageOnError, ILeaferImageOnLoaded, ILeaferImagePatternPaint, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILocationType, IMaskType, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IMatrixWithOptionScaleData, IMatrixWithScaleData, IMiniapp, IMiniappSelect, IMiniappSizeView, IMoveEvent, IMultiTouchData, INumber, INumberMap, IObject, IOffsetBoundsData, IPartLayoutConfig, IPath2D, IPathCommandData, IPathCreator, IPathDrawer, IPathString, IPickOptions, IPickResult, IPlatform, IPlugin, IPoint, IPointData, IPointerConfig, IPointerEvent, IPropertyEvent, IRadiusPointData, IRenderEvent, IRenderOptions, IRenderer, IRendererConfig, IResizeEvent, IResizeEventListener, IRotateEvent, IScaleData, IScaleRotationData, IScreenSizeData, ISelector, ISelectorConfig, ISelectorProxy, ISize, ISizeData, ISkewData, ISkiaCanvas, ISkiaCanvasExportConfig, ISkiaNAPICanvas, IStateStyleType, IString, IStringMap, ISwipeEvent, ITaskItem, ITaskOptions, ITaskProcessor, ITaskProcessorConfig, ITextMetrics, ITimer, ITwoPointBoundsData, IUICreator, IUIEvent, IUpdateEvent, IValue, IWatchEvent, IWatchEventData, IWatcher, IWatcherConfig, IWheelConfig, IWindingRule, IZoomEvent, IZoomType, IZoomView, InnerId, LCommandData, MCommandData, PointerType, QCommandData, RectCommandData, RoundRectCommandData, SCommandData, TCommandData, VCommandData, ZCommandData };
2098
+ export type { ACommandData, ArcCommandData, ArcToCommandData, CCommandData, CanvasPathCommand, EllipseCommandData, HCommandData, IAlign, IAnimateEvent, IAnswer, IAppBase, IAround, IAttrDecorator, IAutoBounds, IAutoBoundsData, IAutoBoxData, IAutoSize, IAxis, IAxisAlign, IAxisReverse, IBaseLineAlign, IBlendMode, IBlob, IBlobFunction, IBoolean, IBooleanMap, IBounds, IBoundsData, IBoundsDataFn, IBoundsType, IBranch, IBranchRender, IBranchRenderModule, ICachedLeaf, ICanvasAttr, ICanvasCacheOptions, ICanvasContext2D, ICanvasContext2DSettings, ICanvasManager, ICanvasPattern, ICanvasStrokeOptions, ICanvasType, IChildEvent, IConstraint, IConstraintType, IControl, ICreator, ICursorRotate, ICursorRotateMap, ICursorType, ICursorTypeMap, IDataProcessor, IDataTypeHandle, IDirection, IDragEvent, IDropEvent, IEditSize, IEraserType, IEvent, IEventListener, IEventListenerId, IEventListenerItem, IEventListenerMap, IEventListenerOptions, IEventTarget, IEventer, IExportFileType, IExportImageType, IExportOnCanvasFunction, IExportOptions, IExportResult, IExportResultFunction, IFindCondition, IFindMethod, IFlowAlign, IFlowAxisAlign, IFlowBoxType, IFlowType, IFourNumber, IFunction, IGap, IHitCanvas, IHitCanvasConfig, IHitCanvasManager, IHitType, IImageCursor, IImageEvent, IImageManager, IInteraction, IInteractionCanvas, IInteractionConfig, IKeepTouchData, IKeyEvent, ILayoutAttr, ILayoutBlockData, ILayoutBoundsData, ILayoutChangedData, ILayoutData, ILayoutEvent, ILayouter, ILayouterConfig, ILeaf, ILeafArrayMap, ILeafAttrData, ILeafAttrDescriptor, ILeafAttrDescriptorFn, ILeafBounds, ILeafBoundsModule, ILeafComputedData, ILeafData, ILeafDataOptions, ILeafDataProxy, ILeafDataProxyModule, ILeafEventer, ILeafEventerModule, ILeafHit, ILeafHitModule, ILeafInputData, ILeafLayout, ILeafLevelList, ILeafList, ILeafListItemCallback, ILeafMap, ILeafMatrix, ILeafMatrixModule, ILeafRender, ILeafRenderModule, ILeaferAttrData, ILeaferBase, ILeaferCanvas, ILeaferCanvasConfig, ILeaferCanvasView, ILeaferConfig, ILeaferEvent, ILeaferImage, ILeaferImageCacheCanvas, ILeaferImageConfig, ILeaferImageOnError, ILeaferImageOnLoaded, ILeaferImagePatternPaint, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILocationType, IMaskType, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IMatrixWithOptionScaleData, IMatrixWithScaleData, IMiniapp, IMiniappSelect, IMiniappSizeView, IMoveEvent, IMultiTouchData, INumber, INumberFunction, INumberMap, IObject, IObjectFunction, IOffsetBoundsData, IPartLayoutConfig, IPath2D, IPathCommandData, IPathCreator, IPathDrawer, IPathString, IPercentData, IPickBottom, IPickOptions, IPickResult, IPlatform, IPlugin, IPoint, IPointData, IPointDataFunction, IPointDataMap, IPointGap, IPointerConfig, IPointerEvent, IPropertyEvent, IRadiusPointData, IRangeSize, IRenderEvent, IRenderOptions, IRenderer, IRendererConfig, IResizeEvent, IResizeEventListener, IRotateEvent, IScaleData, IScaleRotationData, IScreenSizeData, IScrollPointData, ISelector, ISelectorConfig, ISelectorProxy, ISize, ISizeData, ISkewData, ISkiaCanvas, ISkiaCanvasExportConfig, ISkiaNAPICanvas, IStateStyleType, IString, IStringFunction, IStringMap, ISwipeEvent, ITaskItem, ITaskOptions, ITaskProcessor, ITaskProcessorConfig, ITextMetrics, ITimer, ITwoPointBoundsData, IUICreator, IUIEvent, IUnitData, IUnitPointData, IUpdateEvent, IValue, IWatchEvent, IWatchEventData, IWatcher, IWatcherConfig, IWheelConfig, IWindingRule, IWrap, IZoomEvent, IZoomType, IZoomView, InnerId, LCommandData, MCommandData, PointerType, QCommandData, RectCommandData, RoundRectCommandData, SCommandData, TCommandData, VCommandData, ZCommandData };