@leafer/interface 1.0.0-beta.8 → 1.0.0-rc.1

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.
@@ -0,0 +1,1672 @@
1
+ import { IFunction as IFunction$1, IObject as IObject$1, IEvent as IEvent$1, ILeaferCanvas as ILeaferCanvas$1, IScreenSizeData as IScreenSizeData$1 } from '@leafer/interface';
2
+
3
+ type __Number = number;
4
+ type __Boolean = boolean;
5
+ type __String = string;
6
+ type __Object = IObject;
7
+ type __Value = __Number | __Boolean | __String | __Object;
8
+ type ITimer = any;
9
+ type IPathString = string;
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
+ unshift(leaf: ILeaf): void;
41
+ pushList(list: ILeaf[]): void;
42
+ push(leaf: ILeaf): void;
43
+ sort(reverse?: boolean): void;
44
+ remove(leaf: ILeaf): void;
45
+ forEach(itemCallback: ILeafListItemCallback): void;
46
+ clone(): ILeafList;
47
+ reset(): void;
48
+ destroy(): void;
49
+ }
50
+ interface ILeafLevelList {
51
+ levelMap: ILeafArrayMap;
52
+ keys: INumberMap;
53
+ levels: number[];
54
+ readonly length: number;
55
+ has(leaf: ILeaf): boolean;
56
+ without(leaf: ILeaf): boolean;
57
+ sort(reverse?: boolean): void;
58
+ pushList(list: ILeaf[]): void;
59
+ push(leaf: ILeaf): void;
60
+ forEach(itemCallback: ILeafListItemCallback): void;
61
+ reset(): void;
62
+ destroy(): void;
63
+ }
64
+
65
+ interface IControl {
66
+ start(): void;
67
+ stop(): void;
68
+ destroy(): void;
69
+ }
70
+
71
+ interface IWatchEventData {
72
+ updatedList: ILeafList;
73
+ }
74
+ interface IWatcherConfig {
75
+ }
76
+ interface IWatcher extends IControl {
77
+ target: ILeaf;
78
+ totalTimes: number;
79
+ disabled: boolean;
80
+ running: boolean;
81
+ changed: boolean;
82
+ hasVisible: boolean;
83
+ hasAdd: boolean;
84
+ hasRemove: boolean;
85
+ readonly childrenChanged: boolean;
86
+ config: IWatcherConfig;
87
+ updatedList: ILeafList;
88
+ disable(): void;
89
+ update(): void;
90
+ }
91
+
92
+ interface IPointData {
93
+ x: number;
94
+ y: number;
95
+ }
96
+ interface IPoint extends IPointData {
97
+ set(x?: number, y?: number): void;
98
+ copy(point: IPointData): IPoint;
99
+ clone(): IPoint;
100
+ rotate(angle: number, center?: IPointData): IPoint;
101
+ toInnerOf(matrix: IMatrixData, to?: IPointData): IPoint;
102
+ toOuterOf(matrix: IMatrixData, to?: IPointData): IPoint;
103
+ getCenter(to: IPointData): IPointData;
104
+ getDistance(to: IPointData): number;
105
+ getAngle(to: IPointData): number;
106
+ getAtan2(to: IPointData): number;
107
+ reset(): void;
108
+ }
109
+ interface IRadiusPointData extends IPointData {
110
+ radiusX: number;
111
+ radiusY: number;
112
+ }
113
+ interface ISizeData {
114
+ width: number;
115
+ height: number;
116
+ }
117
+ interface ISize extends ISizeData {
118
+ }
119
+ interface IScreenSizeData extends ISizeData {
120
+ pixelRatio?: number;
121
+ }
122
+ interface IBoundsData extends IPointData, ISizeData {
123
+ }
124
+ interface IOffsetBoundsData extends IBoundsData {
125
+ offsetX: number;
126
+ offsetY: number;
127
+ }
128
+ interface IBoundsDataHandle {
129
+ (target: any): IBoundsData;
130
+ }
131
+ interface IBounds extends IBoundsData {
132
+ set(x?: number, y?: number, width?: number, height?: number): void;
133
+ copy(bounds: IBoundsData): IBounds;
134
+ clone(): IBounds;
135
+ scale(scaleX: number, scaleY?: number): IBounds;
136
+ toOuterOf(matrix: IMatrixData, to?: IBoundsData): IBounds;
137
+ getFitMatrix(put: IBoundsData): IMatrix;
138
+ spread(size: number): IBounds;
139
+ ceil(): IBounds;
140
+ unsign(): IBounds;
141
+ add(bounds: IBoundsData): IBounds;
142
+ addList(boundsList: IBounds[]): IBounds;
143
+ setByList(boundsList: IBounds[], addMode?: boolean): IBounds;
144
+ addListWithHandle(list: IObject[], boundsDataHandle: IBoundsDataHandle): IBounds;
145
+ setByListWithHandle(list: IObject[], boundsDataHandle: IBoundsDataHandle, addMode: boolean): IBounds;
146
+ setByPoints(points: IPointData[]): IBounds;
147
+ hitPoint(point: IPointData, pointMatrix?: IMatrixData): boolean;
148
+ hitRadiusPoint(point: IRadiusPointData, pointMatrix?: IMatrixWithLayoutData): boolean;
149
+ hit(bounds: IBoundsData, boundsMatrix?: IMatrixData): boolean;
150
+ includes(bounds: IBoundsData, boundsMatrix?: IMatrixData): boolean;
151
+ intersect(bounds: IBoundsData, boundsMatrix?: IMatrixData): IBounds;
152
+ getIntersect(bounds: IBoundsData, boundsMatrix?: IMatrixData): IBounds;
153
+ isSame(bounds: IBoundsData): boolean;
154
+ isEmpty(): boolean;
155
+ reset(): void;
156
+ }
157
+ interface ITwoPointBoundsData {
158
+ minX: number;
159
+ minY: number;
160
+ maxX: number;
161
+ maxY: number;
162
+ }
163
+ interface ITwoPointBounds extends ITwoPointBoundsData {
164
+ addPoint(x: number, y: number): void;
165
+ addBounds(x: number, y: number, width: number, height: number): void;
166
+ add(pointBounds: ITwoPointBoundsData): void;
167
+ }
168
+ interface IAutoBoundsData {
169
+ top?: number;
170
+ right?: number;
171
+ bottom?: number;
172
+ left?: number;
173
+ width?: number;
174
+ height?: number;
175
+ }
176
+ interface IAutoBounds extends IAutoBoundsData {
177
+ set(top?: number, right?: number, bottom?: number, left?: number, width?: number, height?: number): void;
178
+ copy(auto: IAutoBoundsData): void;
179
+ getBoundsFrom(parent: ISizeData): IBounds;
180
+ }
181
+ interface IMatrixData {
182
+ a: number;
183
+ b: number;
184
+ c: number;
185
+ d: number;
186
+ e: number;
187
+ f: number;
188
+ }
189
+ interface IMatrixDecompositionData {
190
+ x: number;
191
+ y: number;
192
+ scaleX: number;
193
+ scaleY: number;
194
+ rotation: number;
195
+ skewX: number;
196
+ skewY: number;
197
+ }
198
+ type IMatrixDecompositionAttr = 'x' | 'y' | 'scaleX' | 'scaleY' | 'rotation' | 'skewX' | 'skewY';
199
+ interface IMatrix extends IMatrixData {
200
+ set(a: number, b: number, c: number, d: number, e: number, f: number): void;
201
+ copy(matrix: IMatrixData): IMatrix;
202
+ clone(): IMatrix;
203
+ translate(x: number, y: number): IMatrix;
204
+ translateInner(x: number, y: number): IMatrix;
205
+ scale(x: number, y?: number): IMatrix;
206
+ scaleOfOuter(origin: IPointData, x: number, y?: number): IMatrix;
207
+ scaleOfInner(origin: IPointData, x: number, y?: number): IMatrix;
208
+ rotate(angle: number): IMatrix;
209
+ rotateOfOuter(origin: IPointData, angle: number): IMatrix;
210
+ rotateOfInner(origin: IPointData, angle: number): IMatrix;
211
+ skew(x: number, y?: number): IMatrix;
212
+ skewOfOuter(origin: IPointData, x: number, y?: number): IMatrix;
213
+ skewOfInner(origin: IPointData, x: number, y?: number): IMatrix;
214
+ multiply(matrix: IMatrixData): IMatrix;
215
+ divide(matrix: IMatrixData): IMatrix;
216
+ preMultiply(matrix: IMatrixData): IMatrix;
217
+ invert(): IMatrix;
218
+ toOuterPoint(inner: IPointData, to?: IPointData, distance?: boolean): void;
219
+ toInnerPoint(outer: IPointData, to?: IPointData, distance?: boolean): void;
220
+ decompose(): IMatrixDecompositionData;
221
+ reset(): void;
222
+ }
223
+ interface IMatrixWithBoundsData extends IMatrixData, IBoundsData {
224
+ }
225
+ interface IMatrixWithLayoutData extends IMatrixData, IMatrixDecompositionData, IBoundsData {
226
+ }
227
+
228
+ interface ILayoutChangedData {
229
+ matrixList: ILeaf[];
230
+ boundsList: ILeaf[];
231
+ surfaceList: ILeaf[];
232
+ }
233
+ interface ILayoutBlockData {
234
+ updatedList: ILeafList;
235
+ updatedBounds: IBounds;
236
+ beforeBounds: IBounds;
237
+ afterBounds: IBounds;
238
+ setBefore?(): void;
239
+ setAfter?(): void;
240
+ merge?(data: ILayoutBlockData): void;
241
+ destroy(): void;
242
+ }
243
+ interface IPartLayoutConfig {
244
+ maxBlocks?: number;
245
+ maxTimes?: number;
246
+ }
247
+ interface ILayouterConfig {
248
+ partLayout?: IPartLayoutConfig;
249
+ }
250
+ interface ILayouter extends IControl {
251
+ target: ILeaf;
252
+ layoutedBlocks: ILayoutBlockData[];
253
+ totalTimes: number;
254
+ times: number;
255
+ disabled: boolean;
256
+ running: boolean;
257
+ layouting: boolean;
258
+ waitAgain: boolean;
259
+ config: ILayouterConfig;
260
+ disable(): void;
261
+ layout(): void;
262
+ layoutAgain(): void;
263
+ layoutOnce(): void;
264
+ partLayout(): void;
265
+ fullLayout(): void;
266
+ createBlock(data: ILeafList | ILeaf[]): ILayoutBlockData;
267
+ getBlocks(list: ILeafList): ILayoutBlockData[];
268
+ addBlocks(current: ILayoutBlockData[]): void;
269
+ }
270
+
271
+ interface IEvent {
272
+ type?: string;
273
+ target?: IEventTarget;
274
+ current?: IEventTarget;
275
+ bubbles?: boolean;
276
+ phase?: number;
277
+ isStopDefault?: boolean;
278
+ isStop?: boolean;
279
+ isStopNow?: boolean;
280
+ stopDefault?(): void;
281
+ stopNow?(): void;
282
+ stop?(): void;
283
+ }
284
+ interface IEventTarget extends IEventer {
285
+ }
286
+ interface ILeaferEvent {
287
+ }
288
+ interface IRenderEvent {
289
+ }
290
+ interface IAnimateEvent {
291
+ }
292
+ interface IChildEvent extends IEvent {
293
+ parent?: ILeaf;
294
+ child?: ILeaf;
295
+ }
296
+ interface IResizeEvent extends IEvent {
297
+ readonly width: number;
298
+ readonly height: number;
299
+ readonly pixelRatio: number;
300
+ readonly bigger: boolean;
301
+ readonly smaller: boolean;
302
+ readonly samePixelRatio: boolean;
303
+ readonly old: IScreenSizeData;
304
+ }
305
+ interface IResizeEventListener {
306
+ (event: IResizeEvent): void;
307
+ }
308
+ interface IUpdateEvent extends IEvent {
309
+ }
310
+ interface IPropertyEvent extends IEvent {
311
+ readonly attrName: string;
312
+ readonly oldValue: unknown;
313
+ readonly newValue: unknown;
314
+ }
315
+ interface ILayoutEvent extends IEvent {
316
+ readonly data: ILayoutBlockData[];
317
+ readonly times: number;
318
+ }
319
+ interface IWatchEvent extends IEvent {
320
+ readonly data: IWatchEventData;
321
+ }
322
+ interface ITransformEventData {
323
+ x: number;
324
+ y: number;
325
+ scaleX: number;
326
+ scaleY: number;
327
+ rotation: number;
328
+ readonly zooming: boolean;
329
+ readonly moving: boolean;
330
+ readonly rotating: boolean;
331
+ readonly changing: boolean;
332
+ }
333
+ interface ITransformEvent extends IEvent, ITransformEventData {
334
+ readonly x: number;
335
+ readonly y: number;
336
+ readonly scaleX: number;
337
+ readonly scaleY: number;
338
+ readonly rotation: number;
339
+ }
340
+ type TransformMode = 'move' | 'zoom' | 'rotate';
341
+ interface IMultiTouchData {
342
+ move: IPointData;
343
+ scale: number;
344
+ angle: number;
345
+ center: IPointData;
346
+ }
347
+ interface IKeepTouchData {
348
+ from: IPointData;
349
+ to: IPointData;
350
+ }
351
+
352
+ type ILeafEventerModule = ILeafEventer & ThisType<ILeaf>;
353
+ interface ILeafEventer {
354
+ on?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
355
+ off?(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
356
+ on_?(type: string | string[], listener: IEventListener, bind?: IObject, options?: IEventListenerOptions | boolean): IEventListenerId;
357
+ off_?(id: IEventListenerId | IEventListenerId[]): void;
358
+ once?(type: string | string[], listener: IEventListener, capture?: boolean): void;
359
+ emit?(type: string, event?: IEvent | IObject, capture?: boolean): void;
360
+ emitEvent?(event?: IEvent, capture?: boolean): void;
361
+ hasEvent?(type: string, capture?: boolean): boolean;
362
+ }
363
+
364
+ type IEventListener = IFunction$1;
365
+ interface IEventListenerOptions {
366
+ capture?: boolean;
367
+ once?: boolean;
368
+ }
369
+ interface IEventListenerItem extends IEventListenerOptions {
370
+ listener: IEventListener;
371
+ }
372
+ interface IEventListenerMap {
373
+ [name: string]: IEventListenerItem[];
374
+ }
375
+ interface IEventListenerId {
376
+ type: string | string[];
377
+ listener: IEventListener;
378
+ options?: IEventListenerOptions | boolean;
379
+ }
380
+ type InnerId = number;
381
+ interface IEventer extends ILeafEventer {
382
+ readonly innerId: InnerId;
383
+ __captureMap?: IEventListenerMap;
384
+ __bubbleMap?: IEventListenerMap;
385
+ on(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
386
+ off(type: string | string[], listener: IEventListener, options?: IEventListenerOptions | boolean): void;
387
+ on_(type: string | string[], listener: IEventListener, bind?: IObject$1, options?: IEventListenerOptions | boolean): IEventListenerId;
388
+ off_(id: IEventListenerId | IEventListenerId[]): void;
389
+ once(type: string | string[], listener: IEventListener): void;
390
+ emit(type: string, event?: IEvent$1 | IObject$1, capture?: boolean): void;
391
+ emitEvent(event?: IEvent$1, capture?: boolean): void;
392
+ hasEvent(type: string, capture?: boolean): boolean;
393
+ destroy(): void;
394
+ }
395
+
396
+ type GlobalCompositeOperation = 'color' | 'color-burn' | 'color-dodge' | 'copy' | 'darken' | 'destination-atop' | 'destination-in' | 'destination-out' | 'destination-over' | 'difference' | 'exclusion' | 'hard-light' | 'hue' | 'lighten' | 'lighter' | 'luminosity' | 'multiply' | 'overlay' | 'saturation' | 'screen' | 'soft-light' | 'source-atop' | 'source-in' | 'source-out' | 'source-over' | 'xor';
397
+ type CanvasDirection = 'inherit' | 'ltr' | 'rtl';
398
+ type IWindingRule = 'evenodd' | 'nonzero';
399
+ type CanvasLineCap = 'butt' | 'round' | 'square';
400
+ type CanvasLineJoin = 'bevel' | 'miter' | 'round';
401
+ type CanvasTextAlign = 'center' | 'end' | 'left' | 'right' | 'start';
402
+ type CanvasTextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top';
403
+ interface IPath2D extends CanvasPath {
404
+ addPath(path: IPath2D, transform?: DOMMatrix2DInit): void;
405
+ }
406
+ interface CanvasCompositing {
407
+ globalAlpha: number;
408
+ globalCompositeOperation: GlobalCompositeOperation;
409
+ }
410
+ type CanvasImageSource$1 = any;
411
+ interface CanvasDrawImage {
412
+ drawImage(image: CanvasImageSource$1, dx: number, dy: number): void;
413
+ drawImage(image: CanvasImageSource$1, dx: number, dy: number, dw: number, dh: number): void;
414
+ drawImage(image: CanvasImageSource$1, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
415
+ }
416
+ interface CanvasDrawPath {
417
+ beginPath(): void;
418
+ clip(fillRule?: IWindingRule): void;
419
+ clip(path: IPath2D, fillRule?: IWindingRule): void;
420
+ fill(fillRule?: IWindingRule): void;
421
+ fill(path: IPath2D, fillRule?: IWindingRule): void;
422
+ isPointInPath(x: number, y: number, fillRule?: IWindingRule): boolean;
423
+ isPointInPath(path: IPath2D, x: number, y: number, fillRule?: IWindingRule): boolean;
424
+ isPointInStroke(x: number, y: number): boolean;
425
+ isPointInStroke(path: IPath2D, x: number, y: number): boolean;
426
+ stroke(): void;
427
+ stroke(path: IPath2D): void;
428
+ }
429
+ interface CanvasFillStrokeStyles {
430
+ fillStyle: string | CanvasGradient | CanvasPattern;
431
+ strokeStyle: string | CanvasGradient | CanvasPattern;
432
+ createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;
433
+ createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
434
+ createPattern(image: CanvasImageSource$1, repetition: string | null): CanvasPattern | null;
435
+ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
436
+ }
437
+ interface CanvasFilters {
438
+ filter: string;
439
+ }
440
+ interface CanvasGradient {
441
+ addColorStop(offset: number, color: string): void;
442
+ }
443
+ interface ImageDataSettings {
444
+ colorSpace?: PredefinedColorSpace;
445
+ }
446
+ interface CanvasImageData {
447
+ createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;
448
+ createImageData(imagedata: ImageData): ImageData;
449
+ getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;
450
+ putImageData(imagedata: ImageData, dx: number, dy: number): void;
451
+ putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;
452
+ }
453
+ interface CanvasImageSmoothing {
454
+ imageSmoothingEnabled: boolean;
455
+ imageSmoothingQuality: ImageSmoothingQuality;
456
+ }
457
+ interface CanvasPath {
458
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
459
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
460
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
461
+ closePath(): void;
462
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
463
+ lineTo(x: number, y: number): void;
464
+ moveTo(x: number, y: number): void;
465
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
466
+ rect(x: number, y: number, w: number, h: number): void;
467
+ roundRect(x: number, y: number, width: number, height: number, radius?: number | number[]): void;
468
+ }
469
+ interface CanvasPathDrawingStyles {
470
+ lineCap: CanvasLineCap;
471
+ lineDashOffset: number;
472
+ lineJoin: CanvasLineJoin;
473
+ lineWidth: number;
474
+ miterLimit: number;
475
+ getLineDash(): number[];
476
+ setLineDash(segments: number[]): void;
477
+ }
478
+ interface CanvasPattern {
479
+ setTransform(transform?: DOMMatrix2DInit): void;
480
+ }
481
+ interface CanvasRect {
482
+ clearRect(x: number, y: number, w: number, h: number): void;
483
+ fillRect(x: number, y: number, w: number, h: number): void;
484
+ strokeRect(x: number, y: number, w: number, h: number): void;
485
+ }
486
+ type PredefinedColorSpace = 'display-p3' | 'srgb';
487
+ interface CanvasRenderingContext2DSettings {
488
+ alpha?: boolean;
489
+ colorSpace?: PredefinedColorSpace;
490
+ desynchronized?: boolean;
491
+ willReadFrequently?: boolean;
492
+ }
493
+ interface ICanvasContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {
494
+ readonly canvas: HTMLCanvasElement;
495
+ getContextAttributes(): CanvasRenderingContext2DSettings;
496
+ }
497
+ interface CanvasShadowStyles {
498
+ shadowBlur: number;
499
+ shadowColor: string;
500
+ shadowOffsetX: number;
501
+ shadowOffsetY: number;
502
+ }
503
+ interface CanvasState {
504
+ restore(): void;
505
+ save(): void;
506
+ }
507
+ interface CanvasUserInterface {
508
+ drawFocusIfNeeded(element: any): void;
509
+ drawFocusIfNeeded(path: IPath2D, element: any): void;
510
+ }
511
+ interface ITextMetrics {
512
+ readonly actualBoundingBoxAscent: number;
513
+ readonly actualBoundingBoxDescent: number;
514
+ readonly actualBoundingBoxLeft: number;
515
+ readonly actualBoundingBoxRight: number;
516
+ readonly fontBoundingBoxAscent: number;
517
+ readonly fontBoundingBoxDescent: number;
518
+ readonly width: number;
519
+ }
520
+ interface CanvasText {
521
+ fillText(text: string, x: number, y: number, maxWidth?: number): void;
522
+ measureText(text: string): ITextMetrics;
523
+ strokeText(text: string, x: number, y: number, maxWidth?: number): void;
524
+ }
525
+ interface CanvasTextDrawingStyles {
526
+ direction: CanvasDirection;
527
+ font: string;
528
+ textAlign: CanvasTextAlign;
529
+ textBaseline: CanvasTextBaseline;
530
+ }
531
+ interface CanvasTransform {
532
+ getTransform(): DOMMatrix;
533
+ resetTransform(): void;
534
+ rotate(angle: number): void;
535
+ scale(x: number, y: number): void;
536
+ setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
537
+ setTransform(transform?: DOMMatrix2DInit): void;
538
+ transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
539
+ translate(x: number, y: number): void;
540
+ }
541
+ interface DOMMatrix2DInit {
542
+ a?: number;
543
+ b?: number;
544
+ c?: number;
545
+ d?: number;
546
+ e?: number;
547
+ f?: number;
548
+ m11?: number;
549
+ m12?: number;
550
+ m21?: number;
551
+ m22?: number;
552
+ m41?: number;
553
+ m42?: number;
554
+ }
555
+ interface DOMMatrixInit extends DOMMatrix2DInit {
556
+ is2D?: boolean;
557
+ m13?: number;
558
+ m14?: number;
559
+ m23?: number;
560
+ m24?: number;
561
+ m31?: number;
562
+ m32?: number;
563
+ m33?: number;
564
+ m34?: number;
565
+ m43?: number;
566
+ m44?: number;
567
+ }
568
+ interface DOMMatrixReadOnly {
569
+ readonly a: number;
570
+ readonly b: number;
571
+ readonly c: number;
572
+ readonly d: number;
573
+ readonly e: number;
574
+ readonly f: number;
575
+ readonly is2D: boolean;
576
+ readonly isIdentity: boolean;
577
+ readonly m11: number;
578
+ readonly m12: number;
579
+ readonly m13: number;
580
+ readonly m14: number;
581
+ readonly m21: number;
582
+ readonly m22: number;
583
+ readonly m23: number;
584
+ readonly m24: number;
585
+ readonly m31: number;
586
+ readonly m32: number;
587
+ readonly m33: number;
588
+ readonly m34: number;
589
+ readonly m41: number;
590
+ readonly m42: number;
591
+ readonly m43: number;
592
+ readonly m44: number;
593
+ flipX(): DOMMatrix;
594
+ flipY(): DOMMatrix;
595
+ inverse(): DOMMatrix;
596
+ multiply(other?: DOMMatrixInit): DOMMatrix;
597
+ rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
598
+ rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
599
+ rotateFromVector(x?: number, y?: number): DOMMatrix;
600
+ scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
601
+ scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
602
+ scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;
603
+ skewX(sx?: number): DOMMatrix;
604
+ skewY(sy?: number): DOMMatrix;
605
+ toFloat32Array(): Float32Array;
606
+ toFloat64Array(): Float64Array;
607
+ toJSON(): any;
608
+ transformPoint(point?: DOMPointInit): DOMPoint;
609
+ translate(tx?: number, ty?: number, tz?: number): DOMMatrix;
610
+ toString(): string;
611
+ }
612
+ declare var DOMMatrixReadOnly: {
613
+ prototype: DOMMatrixReadOnly;
614
+ new (init?: string | number[]): DOMMatrixReadOnly;
615
+ fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;
616
+ fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;
617
+ fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;
618
+ toString(): string;
619
+ };
620
+ interface DOMMatrix extends DOMMatrixReadOnly {
621
+ a: number;
622
+ b: number;
623
+ c: number;
624
+ d: number;
625
+ e: number;
626
+ f: number;
627
+ m11: number;
628
+ m12: number;
629
+ m13: number;
630
+ m14: number;
631
+ m21: number;
632
+ m22: number;
633
+ m23: number;
634
+ m24: number;
635
+ m31: number;
636
+ m32: number;
637
+ m33: number;
638
+ m34: number;
639
+ m41: number;
640
+ m42: number;
641
+ m43: number;
642
+ m44: number;
643
+ invertSelf(): DOMMatrix;
644
+ multiplySelf(other?: DOMMatrixInit): DOMMatrix;
645
+ preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;
646
+ rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;
647
+ rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;
648
+ rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;
649
+ scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
650
+ scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;
651
+ setMatrixValue(transformList: string): DOMMatrix;
652
+ skewXSelf(sx?: number): DOMMatrix;
653
+ skewYSelf(sy?: number): DOMMatrix;
654
+ translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;
655
+ }
656
+ declare var DOMMatrix: {
657
+ prototype: DOMMatrix;
658
+ new (init?: string | number[]): DOMMatrix;
659
+ fromFloat32Array(array32: Float32Array): DOMMatrix;
660
+ fromFloat64Array(array64: Float64Array): DOMMatrix;
661
+ fromMatrix(other?: DOMMatrixInit): DOMMatrix;
662
+ };
663
+
664
+ type Command = number;
665
+ type x = number;
666
+ type y = number;
667
+ type x1 = number;
668
+ type y1 = number;
669
+ type x2 = number;
670
+ type y2 = number;
671
+ type radiusX = number;
672
+ type radiusY = number;
673
+ type xAxisRotation = number;
674
+ type largeArcFlag = number;
675
+ type sweepFlag = number;
676
+ type MCommandData = [Command, x, y];
677
+ type HCommandData = [Command, x];
678
+ type VCommandData = [Command, y];
679
+ type LCommandData = MCommandData;
680
+ type CCommandData = [Command, x1, y1, x2, y2, x, y];
681
+ type SCommandData = [Command, x2, y2, x, y];
682
+ type QCommandData = [Command, x1, y1, x, y];
683
+ type TCommandData = [Command, x, y];
684
+ type ZCommandData = [Command];
685
+ type ACommandData = [Command, radiusX, radiusY, xAxisRotation, largeArcFlag, sweepFlag, x, y];
686
+ type width = number;
687
+ type height = number;
688
+ type rotation = number;
689
+ type startAngle = number;
690
+ type endAngle = number;
691
+ type anticlockwise = boolean;
692
+ type cornerRadius = number | number[];
693
+ type radius = number;
694
+ type RectCommandData = [Command, x, y, width, height];
695
+ type RoundRectCommandData = [Command, x, y, width, height, cornerRadius];
696
+ type EllipseCommandData = [Command, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise];
697
+ type ArcCommandData = [Command, x, y, radius, startAngle, endAngle, anticlockwise];
698
+ type ArcToCommandData = [Command, x1, y1, x2, y2, radius];
699
+ type CanvasPathCommand = 1 | 2 | 5 | 7 | 11;
700
+ type IPathCommandData = number[];
701
+
702
+ interface IPathDrawer {
703
+ beginPath?(): void;
704
+ moveTo(x: number, y: number): void;
705
+ lineTo(x: number, y: number): void;
706
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
707
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
708
+ closePath(): void;
709
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
710
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
711
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
712
+ rect(x: number, y: number, width: number, height: number): void;
713
+ roundRect(x: number, y: number, width: number, height: number, radius?: number | number[]): void;
714
+ }
715
+ interface IPathCreator {
716
+ path: IPathCommandData;
717
+ beginPath(): IPathCreator;
718
+ moveTo(x: number, y: number): IPathCreator;
719
+ lineTo(x: number, y: number): IPathCreator;
720
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): IPathCreator;
721
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): IPathCreator;
722
+ closePath(): IPathCreator;
723
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): IPathCreator;
724
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): IPathCreator;
725
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): IPathCreator;
726
+ rect(x: number, y: number, width: number, height: number): IPathCreator;
727
+ roundRect(x: number, y: number, width: number, height: number, radius?: number | number[]): IPathCreator;
728
+ drawEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation?: number, startAngle?: number, endAngle?: number, anticlockwise?: boolean): IPathCreator;
729
+ drawArc(x: number, y: number, radius: number, startAngle?: number, endAngle?: number, anticlockwise?: boolean): IPathCreator;
730
+ drawPoints(points: number[], curve?: boolean | number, close?: boolean): IPathCreator;
731
+ }
732
+
733
+ interface ICanvasManager {
734
+ add(canvas: ILeaferCanvas$1): void;
735
+ get(size: IScreenSizeData$1): ILeaferCanvas$1;
736
+ recycle(old: ILeaferCanvas$1): void;
737
+ clearRecycled(): void;
738
+ clear(): void;
739
+ destroy(): void;
740
+ }
741
+
742
+ interface ILeaferCanvasConfig extends IAutoBoundsData {
743
+ view?: string | IObject;
744
+ fill?: string;
745
+ pixelRatio?: number;
746
+ smooth?: boolean;
747
+ hittable?: boolean;
748
+ webgl?: boolean;
749
+ }
750
+ type IHitCanvasConfig = ILeaferCanvasConfig;
751
+ interface ICanvasStrokeOptions {
752
+ strokeWidth?: number;
753
+ strokeAlign?: string;
754
+ strokeCap?: string;
755
+ strokeJoin?: string;
756
+ dashPattern?: number[];
757
+ dashOffset?: number;
758
+ miterLimit?: number;
759
+ }
760
+ interface ICanvasAttr extends ICanvasStrokeOptions, IObject {
761
+ smooth: boolean;
762
+ smoothLevel: string;
763
+ opacity: number;
764
+ blendMode: string;
765
+ fillStyle: string | object;
766
+ strokeStyle: string | object;
767
+ strokeWidth: number;
768
+ shadowBlur: number;
769
+ shadowColor: string;
770
+ shadowOffsetX: number;
771
+ shadowOffsetY: number;
772
+ filter: string;
773
+ font: string;
774
+ fontKerning: string;
775
+ fontStretch: string;
776
+ fontVariantCaps: string;
777
+ textAlign: string;
778
+ textBaseline: string;
779
+ textRendering: string;
780
+ wordSpacing: string;
781
+ letterSpacing: string;
782
+ direction: string;
783
+ }
784
+ interface ICanvasMethod {
785
+ save(): void;
786
+ restore(): void;
787
+ fill(path?: IPath2D | IWindingRule, rule?: IWindingRule): void;
788
+ stroke(path?: IPath2D): void;
789
+ clip(path?: IPath2D | IWindingRule, rule?: IWindingRule): void;
790
+ fillRect(x: number, y: number, width: number, height: number): void;
791
+ strokeRect(x: number, y: number, width: number, height: number): void;
792
+ clearRect(x: number, y: number, width: number, height: number): void;
793
+ transform(a: number | IMatrixData, b?: number, c?: number, d?: number, e?: number, f?: number): void;
794
+ translate(x: number, y: number): void;
795
+ scale(x: number, y: number): void;
796
+ rotate(angle: number): void;
797
+ drawImage(image: CanvasImageSource, dx: number, dy: number): void;
798
+ drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;
799
+ drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
800
+ setTransform(a: number | IMatrixData, b?: number, c?: number, d?: number, e?: number, f?: number): void;
801
+ getTransform(): IMatrixData;
802
+ resetTransform(): void;
803
+ createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;
804
+ createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
805
+ createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;
806
+ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
807
+ fillText(text: string, x: number, y: number, maxWidth?: number): void;
808
+ measureText(text: string): ITextMetrics;
809
+ strokeText(text: string, x: number, y: number, maxWidth?: number): void;
810
+ saveBlendMode(blendMode?: string): void;
811
+ restoreBlendMode(): void;
812
+ hitFill(point: IPointData, fillRule?: string): boolean;
813
+ hitStroke(point: IPointData, strokeWidth?: number): boolean;
814
+ setStroke(strokeStyle: string | object, strokeWidth: number, options?: ICanvasStrokeOptions): void;
815
+ setStrokeOptions(options: ICanvasStrokeOptions): void;
816
+ setWorld(matrix: IMatrixData, parentMatrix?: IMatrixData): void;
817
+ useWorldTransform(worldTransform?: IMatrixData): void;
818
+ setWorldShadow(x: number, y: number, blur: number, color?: string): void;
819
+ setWorldBlur(blur: number): void;
820
+ copyWorld(canvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData, blendMode?: string): void;
821
+ copyWorldByReset(canvas: ILeaferCanvas, from?: IBoundsData, to?: IBoundsData, blendMode?: string): void;
822
+ copyWorldToInner(canvas: ILeaferCanvas, fromWorld: IMatrixWithBoundsData, toInnerBounds: IBoundsData, blendMode?: string): void;
823
+ useMask(maskCanvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData): void;
824
+ useEraser(eraserCanvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData): void;
825
+ fillWorld(bounds: IBoundsData, color: string | object, blendMode?: string): void;
826
+ strokeWorld(bounds: IBoundsData, color: string | object, blendMode?: string): void;
827
+ clipWorld(bounds: IBoundsData, ceilPixel?: boolean): void;
828
+ clearWorld(bounds: IBoundsData, ceilPixel?: boolean): void;
829
+ clear(): void;
830
+ }
831
+ interface ILeaferCanvas extends ICanvasAttr, ICanvasMethod, IPathDrawer {
832
+ readonly innerId: InnerId;
833
+ name: string;
834
+ manager: ICanvasManager;
835
+ width: number;
836
+ height: number;
837
+ pixelRatio: number;
838
+ readonly pixelWidth: number;
839
+ readonly pixelHeight: number;
840
+ readonly allowBackgroundColor?: boolean;
841
+ backgroundColor?: string;
842
+ hittable?: boolean;
843
+ bounds: IBounds;
844
+ clientBounds: IBoundsData;
845
+ config: ILeaferCanvasConfig;
846
+ autoLayout: boolean;
847
+ view: any;
848
+ parentView: any;
849
+ unreal?: boolean;
850
+ context: ICanvasContext2D;
851
+ recycled?: boolean;
852
+ worldTransform: IMatrixData;
853
+ init(): void;
854
+ toBlob(type?: string, quality?: number): Promise<IBlob>;
855
+ toDataURL(type?: string, quality?: number): string | Promise<string>;
856
+ saveAs(filename: string, quality?: number): Promise<boolean>;
857
+ startAutoLayout(autoBounds: IAutoBounds, listener: IResizeEventListener): void;
858
+ stopAutoLayout(): void;
859
+ resize(size: IScreenSizeData): void;
860
+ updateViewSize(): void;
861
+ updateClientBounds(): void;
862
+ setCursor(cursor: ICursorType | ICursorType[]): void;
863
+ isSameSize(options: ILeaferCanvasConfig): boolean;
864
+ getSameCanvas(useSameWorldTransform?: boolean): ILeaferCanvas;
865
+ getBiggerCanvas(addWidth: number, addHeight: number): ILeaferCanvas;
866
+ recycle(): void;
867
+ updateRender(): void;
868
+ unrealCanvas(): void;
869
+ destroy(): void;
870
+ }
871
+ interface IHitCanvas extends ILeaferCanvas {
872
+ }
873
+ interface IBlobFunction {
874
+ (blob: IBlob | null): void;
875
+ }
876
+ type IBlob = any;
877
+
878
+ interface IFunction {
879
+ (...arg: any): any;
880
+ }
881
+ interface INumberFunction {
882
+ (...arg: any): number;
883
+ }
884
+ interface IPointDataFunction {
885
+ (...arg: any): IPointData;
886
+ }
887
+
888
+ interface IRenderOptions {
889
+ bounds?: IBounds;
890
+ hideBounds?: IBounds;
891
+ matrix?: IMatrix;
892
+ inCamera?: boolean;
893
+ }
894
+ interface IRendererConfig {
895
+ usePartRender?: boolean;
896
+ maxFPS?: number;
897
+ fill?: string;
898
+ }
899
+ interface IRenderer extends IControl {
900
+ target: ILeaf;
901
+ canvas: ILeaferCanvas;
902
+ updateBlocks: IBounds[];
903
+ FPS: number;
904
+ totalTimes: number;
905
+ times: number;
906
+ running: boolean;
907
+ rendering: boolean;
908
+ waitAgain: boolean;
909
+ changed: boolean;
910
+ config: IRendererConfig;
911
+ update(): void;
912
+ requestLayout(): void;
913
+ render(callback?: IFunction): void;
914
+ renderAgain(): void;
915
+ renderOnce(callback?: IFunction): void;
916
+ partRender(): void;
917
+ clipRender(bounds: IBounds): void;
918
+ fullRender(): void;
919
+ renderHitView(options: IRenderOptions): void;
920
+ renderBoundsView(options: IRenderOptions): void;
921
+ addBlock(block: IBounds): void;
922
+ mergeBlocks(): void;
923
+ }
924
+
925
+ type ILeafDataProxyModule = ILeafDataProxy & ThisType<ILeaf>;
926
+ interface ILeafDataProxy {
927
+ __setAttr?(name: string, newValue: __Value): void;
928
+ __getAttr?(name: string): __Value;
929
+ }
930
+
931
+ type ILeafMatrixModule = ILeafMatrix & ThisType<ILeaf>;
932
+ interface ILeafMatrix {
933
+ __updateWorldMatrix?(): void;
934
+ __updateLocalMatrix?(): void;
935
+ }
936
+
937
+ type ILeafBoundsModule = ILeafBounds & ThisType<ILeaf>;
938
+ interface ILeafBounds {
939
+ __updateWorldBounds?(): void;
940
+ __updateLocalBoxBounds?(): void;
941
+ __updateLocalStrokeBounds?(): void;
942
+ __updateLocalRenderBounds?(): void;
943
+ __updateBoxBounds?(): void;
944
+ __updateStrokeBounds?(): void;
945
+ __updateRenderBounds?(): void;
946
+ __updateNaturalSize?(): void;
947
+ __updateStrokeSpread?(): number;
948
+ __updateRenderSpread?(): number;
949
+ __onUpdateSize?(): void;
950
+ }
951
+
952
+ type ILayoutLocationType = 'world' | 'local' | 'inner';
953
+ type ILayoutBoundsType = 'content' | 'box' | 'stroke' | 'margin' | 'render';
954
+ interface ILeafLayout {
955
+ leaf: ILeaf;
956
+ useZoomProxy: boolean;
957
+ boxBounds: IBoundsData;
958
+ strokeBounds: IBoundsData;
959
+ renderBounds: IBoundsData;
960
+ marginBounds: IBoundsData;
961
+ contentBounds: IBoundsData;
962
+ localStrokeBounds: IBoundsData;
963
+ localRenderBounds: IBoundsData;
964
+ matrixChanged: boolean;
965
+ positionChanged: boolean;
966
+ originChanged?: boolean;
967
+ scaleChanged: boolean;
968
+ rotationChanged: boolean;
969
+ boundsChanged: boolean;
970
+ boxChanged: boolean;
971
+ strokeChanged: boolean;
972
+ renderChanged: boolean;
973
+ localBoxChanged: boolean;
974
+ surfaceChanged: boolean;
975
+ opacityChanged: boolean;
976
+ hitCanvasChanged: boolean;
977
+ childrenSortChanged?: boolean;
978
+ affectScaleOrRotation: boolean;
979
+ affectRotation: boolean;
980
+ affectChildrenSort?: boolean;
981
+ strokeSpread: number;
982
+ renderSpread: number;
983
+ strokeBoxSpread: number;
984
+ renderShapeSpread: number;
985
+ checkUpdate(force?: boolean): void;
986
+ getTransform(locationType: ILayoutLocationType): IMatrixData;
987
+ getBounds(type: ILayoutBoundsType, locationType: ILayoutLocationType): IBoundsData;
988
+ spreadStroke(): void;
989
+ spreadRender(): void;
990
+ spreadStrokeCancel(): void;
991
+ spreadRenderCancel(): void;
992
+ boxChange(): void;
993
+ localBoxChange(): void;
994
+ strokeChange(): void;
995
+ renderChange(): void;
996
+ positionChange(): void;
997
+ scaleChange(): void;
998
+ rotationChange(): void;
999
+ surfaceChange(): void;
1000
+ opacityChange(): void;
1001
+ childrenSortChange(): void;
1002
+ destroy(): void;
1003
+ }
1004
+
1005
+ type ILeafHitModule = ILeafHit & ThisType<ILeaf>;
1006
+ interface ILeafHit {
1007
+ __hitWorld?(point: IRadiusPointData): boolean;
1008
+ __hit?(local: IRadiusPointData): boolean;
1009
+ __drawHitPath?(canvas: ILeaferCanvas): void;
1010
+ __updateHitCanvas?(): void;
1011
+ }
1012
+
1013
+ type ILeafRenderModule = ILeafRender & ThisType<ILeaf>;
1014
+ interface ILeafRender {
1015
+ __render?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1016
+ __draw?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1017
+ __drawFast?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1018
+ __renderShape?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1019
+ __updateWorldOpacity?(): void;
1020
+ __updateChange?(): void;
1021
+ }
1022
+
1023
+ type ILeafMaskModule = ILeafMask & ThisType<ILeaf>;
1024
+ interface ILeafMask {
1025
+ __updateEraser?(value?: boolean): void;
1026
+ __updateMask?(value?: boolean): void;
1027
+ __renderMask?(canvas: ILeaferCanvas, content: ILeaferCanvas, mask: ILeaferCanvas): void;
1028
+ __removeMask?(child?: ILeaf): void;
1029
+ }
1030
+
1031
+ interface IDataProcessor extends IObject {
1032
+ __leaf: ILeaf;
1033
+ __input: IObject;
1034
+ __middle: IObject;
1035
+ __single: boolean;
1036
+ __checkSingle(): void;
1037
+ __get(name: string): any;
1038
+ __setInput(name: string, value: any): void;
1039
+ __getInput(name: string): any;
1040
+ __removeInput(name: string): void;
1041
+ __getInputData(): IObject;
1042
+ __setMiddle(name: string, value: any): void;
1043
+ __getMiddle(name: string): any;
1044
+ destroy(): void;
1045
+ }
1046
+ interface ILeafData extends IDataProcessor, ILeafComputedData {
1047
+ }
1048
+
1049
+ interface ICachedLeaf {
1050
+ canvas: ILeaferCanvas;
1051
+ matrix?: IMatrix;
1052
+ bounds: IBoundsData;
1053
+ }
1054
+ interface ILeafAttrData {
1055
+ id: __String;
1056
+ name: __String;
1057
+ className: __String;
1058
+ blendMode: IBlendMode;
1059
+ opacity: __Number;
1060
+ visible: __Boolean;
1061
+ isMask: __Boolean;
1062
+ isEraser: __Boolean;
1063
+ zIndex: __Number;
1064
+ x: __Number;
1065
+ y: __Number;
1066
+ width: __Number;
1067
+ height: __Number;
1068
+ scaleX: __Number;
1069
+ scaleY: __Number;
1070
+ rotation: __Number;
1071
+ skewX: __Number;
1072
+ skewY: __Number;
1073
+ scale: __Number | IPointData;
1074
+ around: 'center' | IPointData;
1075
+ draggable: __Boolean;
1076
+ hittable: __Boolean;
1077
+ hitFill: IHitType;
1078
+ hitStroke: IHitType;
1079
+ hitChildren: __Boolean;
1080
+ hitSelf: __Boolean;
1081
+ hitRadius: __Number;
1082
+ cursor: ICursorType | ICursorType[];
1083
+ }
1084
+ type IHitType = 'path' | 'pixel' | 'all' | 'none';
1085
+ 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';
1086
+ type IResizeType = 'size' | 'scale';
1087
+ interface IImageCursor {
1088
+ url: string;
1089
+ x?: number;
1090
+ y?: number;
1091
+ }
1092
+ type IAround = 'center' | IPointData;
1093
+ 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';
1094
+ interface ICursorTypeMap {
1095
+ [name: string]: ICursorType | ICursorType[];
1096
+ }
1097
+ interface ILeafInputData extends IObject {
1098
+ tag?: string;
1099
+ id?: __String;
1100
+ name?: __String;
1101
+ className?: __String;
1102
+ blendMode?: IBlendMode;
1103
+ opacity?: __Number;
1104
+ visible?: __Boolean;
1105
+ isMask?: __Boolean;
1106
+ isEraser?: __Boolean;
1107
+ zIndex?: __Number;
1108
+ x?: __Number;
1109
+ y?: __Number;
1110
+ width?: __Number;
1111
+ height?: __Number;
1112
+ scaleX?: __Number;
1113
+ scaleY?: __Number;
1114
+ rotation?: __Number;
1115
+ skewX?: __Number;
1116
+ skewY?: __Number;
1117
+ scale?: __Number | IPointData;
1118
+ around?: IAround;
1119
+ draggable?: __Boolean;
1120
+ hittable?: __Boolean;
1121
+ hitFill?: IHitType;
1122
+ hitStroke?: IHitType;
1123
+ hitChildren?: __Boolean;
1124
+ hitSelf?: __Boolean;
1125
+ hitRadius?: __Number;
1126
+ cursor?: ICursorType | ICursorType[];
1127
+ children?: ILeafInputData[];
1128
+ }
1129
+ interface ILeafComputedData {
1130
+ id?: string;
1131
+ name?: string;
1132
+ className?: string;
1133
+ blendMode?: IBlendMode;
1134
+ opacity?: number;
1135
+ visible?: boolean;
1136
+ isMask?: boolean;
1137
+ isEraser?: boolean;
1138
+ zIndex?: number;
1139
+ x?: number;
1140
+ y?: number;
1141
+ width?: number;
1142
+ height?: number;
1143
+ scaleX?: number;
1144
+ scaleY?: number;
1145
+ rotation?: number;
1146
+ skewX?: number;
1147
+ skewY?: number;
1148
+ around?: IAround;
1149
+ draggable?: boolean;
1150
+ hittable?: boolean;
1151
+ hitFill?: IHitType;
1152
+ hitStroke?: IHitType;
1153
+ hitChildren?: boolean;
1154
+ hitSelf?: boolean;
1155
+ hitRadius?: number;
1156
+ cursor?: ICursorType | ICursorType[];
1157
+ __childBranchNumber?: number;
1158
+ __complex?: boolean;
1159
+ __naturalWidth?: number;
1160
+ __naturalHeight?: number;
1161
+ }
1162
+ interface ILeaf extends ILeafMask, ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDataProxy, ILeafInputData, IEventer {
1163
+ tag: string;
1164
+ readonly __tag: string;
1165
+ readonly innerName: string;
1166
+ readonly __DataProcessor: IObject;
1167
+ readonly __LayoutProcessor: IObject;
1168
+ leafer?: ILeafer;
1169
+ parent?: ILeaf;
1170
+ readonly isApp?: boolean;
1171
+ isLeafer?: boolean;
1172
+ isBranch?: boolean;
1173
+ isBranchLeaf?: boolean;
1174
+ __: ILeafData;
1175
+ __layout: ILeafLayout;
1176
+ __world: IMatrixWithLayoutData;
1177
+ __local: IMatrixWithBoundsData;
1178
+ __worldOpacity: number;
1179
+ readonly worldTransform: IMatrixWithLayoutData;
1180
+ readonly localTransform: IMatrixWithBoundsData;
1181
+ readonly boxBounds: IBoundsData;
1182
+ readonly worldBoxBounds: IBoundsData;
1183
+ readonly worldStrokeBounds: IBoundsData;
1184
+ readonly worldRenderBounds: IBoundsData;
1185
+ readonly worldOpacity: number;
1186
+ __renderTime?: number;
1187
+ __level: number;
1188
+ __tempNumber?: number;
1189
+ readonly resizeable: boolean;
1190
+ readonly __hasMirror: boolean;
1191
+ __hasMask?: boolean;
1192
+ __hasEraser?: boolean;
1193
+ __hitCanvas?: IHitCanvas;
1194
+ readonly __onlyHitMask: boolean;
1195
+ readonly __ignoreHitWorld: boolean;
1196
+ __parentWait?: IFunction[];
1197
+ __leaferWait?: IFunction[];
1198
+ destroyed: boolean;
1199
+ waitParent(item: IFunction): void;
1200
+ waitLeafer(item: IFunction): void;
1201
+ nextRender(item: IFunction): void;
1202
+ __bindLeafer(leafer: ILeafer | null): void;
1203
+ set(data: IObject): void;
1204
+ toJSON(): IObject;
1205
+ toString(): string;
1206
+ __setAttr(attrName: string, newValue: __Value): void;
1207
+ __getAttr(attrName: string): __Value;
1208
+ forceUpdate(attrName?: string): void;
1209
+ __updateWorldMatrix(): void;
1210
+ __updateLocalMatrix(): void;
1211
+ __updateWorldBounds(): void;
1212
+ __updateLocalBoxBounds(): void;
1213
+ __updateLocalStrokeBounds(): void;
1214
+ __updateLocalRenderBounds(): void;
1215
+ __updateBoxBounds(): void;
1216
+ __updateStrokeBounds(): void;
1217
+ __updateRenderBounds(): void;
1218
+ __updateNaturalSize(): void;
1219
+ __updateStrokeSpread(): number;
1220
+ __updateRenderSpread(): number;
1221
+ __onUpdateSize(): void;
1222
+ __updateEraser(value?: boolean): void;
1223
+ __updateMask(value?: boolean): void;
1224
+ __renderMask(canvas: ILeaferCanvas, content: ILeaferCanvas, mask: ILeaferCanvas): void;
1225
+ __removeMask(child?: ILeaf): void;
1226
+ getWorld(attrName: IMatrixDecompositionAttr): number;
1227
+ getBounds(type: ILayoutBoundsType, locationType?: ILayoutLocationType): IBoundsData;
1228
+ worldToLocal(world: IPointData, to?: IPointData, distance?: boolean, relative?: ILeaf): void;
1229
+ localToWorld(local: IPointData, to?: IPointData, distance?: boolean, relative?: ILeaf): void;
1230
+ worldToInner(world: IPointData, to?: IPointData, distance?: boolean, relative?: ILeaf): void;
1231
+ innerToWorld(inner: IPointData, to?: IPointData, distance?: boolean, relative?: ILeaf): void;
1232
+ getInnerPoint(world: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1233
+ getInnerPointByLocal(local: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1234
+ getLocalPoint(world: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1235
+ getLocalPointByInner(inner: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1236
+ getWorldPoint(inner: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1237
+ getWorldPointByLocal(local: IPointData, relative?: ILeaf, distance?: boolean, change?: boolean): IPointData;
1238
+ move(x: number, y?: number): void;
1239
+ scaleOf(origin: IPointData, x: number, y?: number): void;
1240
+ rotateOf(origin: IPointData, rotation: number): void;
1241
+ skewOf(origin: IPointData, x: number, y: number): void;
1242
+ __hitWorld(point: IRadiusPointData): boolean;
1243
+ __hit(local: IRadiusPointData): boolean;
1244
+ __drawHitPath(canvas: ILeaferCanvas): void;
1245
+ __updateHitCanvas(): void;
1246
+ __render(canvas: ILeaferCanvas, options: IRenderOptions): void;
1247
+ __drawFast(canvas: ILeaferCanvas, options: IRenderOptions): void;
1248
+ __draw(canvas: ILeaferCanvas, options: IRenderOptions): void;
1249
+ __renderShape(canvas: ILeaferCanvas, options: IRenderOptions): void;
1250
+ __updateWorldOpacity(): void;
1251
+ __updateChange(): void;
1252
+ __drawPath(canvas: ILeaferCanvas): void;
1253
+ __drawRenderPath(canvas: ILeaferCanvas): void;
1254
+ __updatePath(): void;
1255
+ __updateRenderPath(): void;
1256
+ children?: ILeaf[];
1257
+ __updateSortChildren(): void;
1258
+ add(child: ILeaf, index?: number): void;
1259
+ remove(child?: ILeaf, destroy?: boolean): void;
1260
+ }
1261
+
1262
+ interface ISelectPathResult {
1263
+ leaf: ILeaf;
1264
+ path: ILeafList;
1265
+ throughPath?: ILeafList;
1266
+ }
1267
+ interface ISelectPathOptions {
1268
+ name?: string;
1269
+ through?: boolean;
1270
+ exclude?: ILeafList;
1271
+ ignoreHittable?: boolean;
1272
+ }
1273
+ interface ISelectorConfig {
1274
+ }
1275
+ interface ISelector {
1276
+ target: ILeaf;
1277
+ config: ISelectorConfig;
1278
+ getByPoint(hitPoint: IPointData, hitRadius: number, options?: ISelectPathOptions): ISelectPathResult;
1279
+ find(name: number | string, branch?: ILeaf): ILeaf | ILeaf[];
1280
+ getByInnerId(name: number, branch?: ILeaf): ILeaf;
1281
+ getById(name: string, branch?: ILeaf): ILeaf;
1282
+ getByClassName(name: string, branch?: ILeaf): ILeaf[];
1283
+ getByTagName(name: string, branch?: ILeaf): ILeaf[];
1284
+ destroy(): void;
1285
+ }
1286
+
1287
+ type IExportImageType = 'jpg' | 'png' | 'webp';
1288
+ type IExportFileType = IExportImageType | 'svg' | 'pdf' | 'json';
1289
+
1290
+ interface ILeaferImageConfig {
1291
+ url: string;
1292
+ thumb?: string;
1293
+ format?: IExportFileType;
1294
+ }
1295
+ interface ILeaferImageOnLoaded {
1296
+ (image?: ILeaferImage): any;
1297
+ }
1298
+ interface ILeaferImageOnError {
1299
+ (error?: string | IObject, image?: ILeaferImage): any;
1300
+ }
1301
+ interface ILeaferImage {
1302
+ readonly innerId: InnerId;
1303
+ readonly url: string;
1304
+ view: unknown;
1305
+ width: number;
1306
+ height: number;
1307
+ isSVG: boolean;
1308
+ readonly completed: boolean;
1309
+ ready: boolean;
1310
+ error: IObject;
1311
+ loading: boolean;
1312
+ use: number;
1313
+ config: ILeaferImageConfig;
1314
+ load(onSuccess?: ILeaferImageOnLoaded, onError?: ILeaferImageOnError): number;
1315
+ unload(index: number, stopEvent?: boolean): void;
1316
+ getCanvas(width: number, height: number, opacity?: number, _filters?: IObject): unknown;
1317
+ destroy(): void;
1318
+ }
1319
+
1320
+ interface IUIEvent extends IEvent {
1321
+ x: number;
1322
+ y: number;
1323
+ altKey?: boolean;
1324
+ ctrlKey?: boolean;
1325
+ shiftKey?: boolean;
1326
+ metaKey?: boolean;
1327
+ readonly spaceKey?: boolean;
1328
+ readonly left?: boolean;
1329
+ readonly right?: boolean;
1330
+ readonly middle?: boolean;
1331
+ buttons?: number;
1332
+ path?: ILeafList;
1333
+ throughPath?: ILeafList;
1334
+ origin?: IObject;
1335
+ getInner?(target?: ILeaf): IPointData;
1336
+ getLocal?(target?: ILeaf): IPointData;
1337
+ }
1338
+ interface IPointerEvent extends IUIEvent {
1339
+ width?: number;
1340
+ height?: number;
1341
+ pointerType?: PointerType;
1342
+ pressure?: number;
1343
+ tangentialPressure?: number;
1344
+ tiltX?: number;
1345
+ tiltY?: number;
1346
+ twist?: number;
1347
+ }
1348
+ type PointerType = 'mouse' | 'pen' | 'touch';
1349
+ interface IDragEvent extends IPointerEvent {
1350
+ moveX: number;
1351
+ moveY: number;
1352
+ totalX?: number;
1353
+ totalY?: number;
1354
+ getInnerMove?(target?: ILeaf): IPointData;
1355
+ getLocalMove?(target?: ILeaf): IPointData;
1356
+ getInnerTotal?(target?: ILeaf): IPointData;
1357
+ getLocalTotal?(target?: ILeaf): IPointData;
1358
+ }
1359
+ interface IDropEvent extends IPointerEvent {
1360
+ list: ILeafList;
1361
+ data?: IObject;
1362
+ }
1363
+ interface IRotateEvent extends IUIEvent {
1364
+ rotation: number;
1365
+ }
1366
+ interface IZoomEvent extends IUIEvent {
1367
+ scale: number;
1368
+ }
1369
+ interface IMoveEvent extends IDragEvent {
1370
+ }
1371
+ interface ISwipeEvent extends IDragEvent {
1372
+ }
1373
+ interface IKeyEvent extends IUIEvent {
1374
+ code?: string;
1375
+ key?: string;
1376
+ }
1377
+ interface IImageEvent extends IEvent {
1378
+ image?: ILeaferImage;
1379
+ attrName?: string;
1380
+ attrValue?: IObject;
1381
+ error?: string | IObject;
1382
+ }
1383
+
1384
+ interface IInteraction extends IControl {
1385
+ target: ILeaf;
1386
+ canvas: IInteractionCanvas;
1387
+ selector: ISelector;
1388
+ running: boolean;
1389
+ readonly dragging: boolean;
1390
+ readonly moveMode: boolean;
1391
+ config: IInteractionConfig;
1392
+ cursor: ICursorType | ICursorType[];
1393
+ readonly hitRadius: number;
1394
+ shrinkCanvasBounds: IBounds;
1395
+ downData: IPointerEvent;
1396
+ hoverData: IPointerEvent;
1397
+ downTime: number;
1398
+ receive(event: any): void;
1399
+ pointerDown(data?: IPointerEvent, defaultPath?: boolean): void;
1400
+ pointerMove(data?: IPointerEvent): void;
1401
+ pointerMoveReal(data: IPointerEvent): void;
1402
+ pointerUp(data?: IPointerEvent): void;
1403
+ pointerCancel(): void;
1404
+ multiTouch(data: IUIEvent, list: IKeepTouchData[]): void;
1405
+ move(data: IMoveEvent): void;
1406
+ zoom(data: IZoomEvent): void;
1407
+ rotate(data: IRotateEvent): void;
1408
+ keyDown(data: IKeyEvent): void;
1409
+ keyUp(data: IKeyEvent): void;
1410
+ findPath(data: IPointerEvent, options?: ISelectPathOptions): ILeafList;
1411
+ updateDownData(data?: IPointerEvent): void;
1412
+ updateHoverData(data: IPointerEvent): void;
1413
+ updateCursor(hoverData?: IPointerEvent): void;
1414
+ emit(type: string, data: IUIEvent, path?: ILeafList, excludePath?: ILeafList): void;
1415
+ }
1416
+ interface IInteractionCanvas extends ILeaferCanvas {
1417
+ }
1418
+ interface IInteractionConfig {
1419
+ wheel?: IWheelConfig;
1420
+ pointer?: IPointerConfig;
1421
+ zoom?: IZoomConfig;
1422
+ move?: IMoveConfig;
1423
+ eventer?: IObject;
1424
+ }
1425
+ interface IZoomConfig {
1426
+ min?: number;
1427
+ max?: number;
1428
+ }
1429
+ interface IMoveConfig {
1430
+ holdSpaceKey?: boolean;
1431
+ dragEmpty?: boolean;
1432
+ dragOut?: boolean;
1433
+ autoDistance?: number;
1434
+ }
1435
+ interface IWheelConfig {
1436
+ zoomMode?: boolean;
1437
+ zoomSpeed?: number;
1438
+ moveSpeed?: number;
1439
+ rotateSpeed?: number;
1440
+ delta?: IPointData;
1441
+ getScale?: INumberFunction;
1442
+ getMove?: IPointDataFunction;
1443
+ preventDefault?: boolean;
1444
+ }
1445
+ interface IPointerConfig {
1446
+ hitRadius?: number;
1447
+ through?: boolean;
1448
+ tapMore?: boolean;
1449
+ tapTime?: number;
1450
+ longPressTime?: number;
1451
+ transformTime?: number;
1452
+ dragHover?: boolean;
1453
+ dragDistance?: number;
1454
+ swipeDistance?: number;
1455
+ ignoreMove?: boolean;
1456
+ preventDefault?: boolean;
1457
+ }
1458
+
1459
+ interface IHitCanvasManager extends ICanvasManager {
1460
+ getPathType(leaf: ILeaf): IHitCanvas;
1461
+ getImageType(leaf: ILeaf, size: IScreenSizeData): IHitCanvas;
1462
+ }
1463
+
1464
+ interface IBranch extends ILeaf {
1465
+ children: ILeaf[];
1466
+ __renderBranch?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1467
+ addMany(...children: ILeaf[]): void;
1468
+ removeAll(destroy?: boolean): void;
1469
+ }
1470
+
1471
+ interface IZoomView extends IBranch {
1472
+ zoomLayer?: ILeaf;
1473
+ moveLayer?: ILeaf;
1474
+ transformData?: ITransformEventData;
1475
+ setZoomLayer(zoomLayer: ILeaf, moveLayer?: ILeaf): void;
1476
+ }
1477
+
1478
+ type ILeaferType = 'draw' | 'design' | 'board' | 'document' | 'user';
1479
+ interface ILeaferConfig extends IRendererConfig, ILeaferCanvasConfig, IInteractionConfig, ILayouterConfig {
1480
+ start?: boolean;
1481
+ type?: ILeaferType;
1482
+ realCanvas?: boolean;
1483
+ }
1484
+ interface ILeafer extends IZoomView, IControl {
1485
+ readonly isApp: boolean;
1486
+ readonly app: ILeafer;
1487
+ parent?: IApp;
1488
+ running: boolean;
1489
+ created: boolean;
1490
+ ready: boolean;
1491
+ viewReady: boolean;
1492
+ viewCompleted: boolean;
1493
+ pixelRatio: number;
1494
+ view: unknown;
1495
+ canvas: ILeaferCanvas;
1496
+ renderer: IRenderer;
1497
+ watcher: IWatcher;
1498
+ layouter: ILayouter;
1499
+ selector?: ISelector;
1500
+ interaction?: IInteraction;
1501
+ canvasManager: ICanvasManager;
1502
+ hitCanvasManager?: IHitCanvasManager;
1503
+ autoLayout?: IAutoBounds;
1504
+ config: ILeaferConfig;
1505
+ __eventIds: IEventListenerId[];
1506
+ __nextRenderWait: IFunction[];
1507
+ init(userConfig?: ILeaferConfig, parentApp?: IApp): void;
1508
+ setZoomLayer(zoomLayer: ILeaf, moveLayer?: ILeaf): void;
1509
+ forceFullRender(): void;
1510
+ updateCursor(): void;
1511
+ resize(size: IScreenSizeData): void;
1512
+ waitReady(item: IFunction): void;
1513
+ waitViewReady(item: IFunction): void;
1514
+ waitViewCompleted(item: IFunction): void;
1515
+ }
1516
+ interface ILeaferTypeCreator {
1517
+ list: ILeaferTypeList;
1518
+ register(name: string, fn: ILeaferTypeFunction): void;
1519
+ run(name: string, leafer: ILeafer): void;
1520
+ }
1521
+ interface ILeaferTypeFunction {
1522
+ (leafer: ILeafer): void;
1523
+ }
1524
+ interface ILeaferTypeList {
1525
+ [key: string]: ILeaferTypeFunction;
1526
+ }
1527
+ interface ICreator {
1528
+ image?(options?: ILeaferImageConfig): ILeaferImage;
1529
+ canvas?(options?: ILeaferCanvasConfig, manager?: ICanvasManager): ILeaferCanvas;
1530
+ hitCanvas?(options?: IHitCanvasConfig, manager?: ICanvasManager): IHitCanvas;
1531
+ watcher?(target: ILeaf, options?: IWatcherConfig): IWatcher;
1532
+ layouter?(target: ILeaf, options?: ILayouterConfig): ILayouter;
1533
+ renderer?(target: ILeaf, canvas: ILeaferCanvas, options?: IRendererConfig): IRenderer;
1534
+ selector?(target: ILeaf, options?: ISelectorConfig): ISelector;
1535
+ interaction?(target: ILeaf, canvas: IInteractionCanvas, selector: ISelector, options?: IInteractionConfig): IInteraction;
1536
+ }
1537
+ interface IUICreator {
1538
+ register(UI: IObject): void;
1539
+ get(tag: string, data: IObject): IObject;
1540
+ }
1541
+
1542
+ interface IApp extends ILeafer {
1543
+ children: ILeafer[];
1544
+ realCanvas: boolean;
1545
+ }
1546
+
1547
+ type IBranchRenderModule = IBranchRender & ThisType<IBranch>;
1548
+ interface IBranchRender extends ILeafRender {
1549
+ __renderBranch?(canvas: ILeaferCanvas, options: IRenderOptions): void;
1550
+ }
1551
+
1552
+ interface ITaskProcessorConfig {
1553
+ onComplete?: IFunction;
1554
+ onTask?: IFunction;
1555
+ onError?: IFunction;
1556
+ parallel?: number;
1557
+ }
1558
+ interface ITaskProcessor {
1559
+ config: ITaskProcessorConfig;
1560
+ running: boolean;
1561
+ isComplete: boolean;
1562
+ percent: number;
1563
+ total: number;
1564
+ index: number;
1565
+ finishedIndex: number;
1566
+ remain: number;
1567
+ start(): void;
1568
+ pause(): void;
1569
+ resume(): void;
1570
+ skip(): void;
1571
+ stop(): void;
1572
+ add(taskCallback: IFunction, options?: ITaskOptions | number): ITaskItem;
1573
+ destroy(): void;
1574
+ }
1575
+ interface ITaskItem {
1576
+ parent: ITaskProcessor;
1577
+ parallel: boolean;
1578
+ isComplete: boolean;
1579
+ isCancel: boolean;
1580
+ time: number;
1581
+ run(): Promise<void>;
1582
+ complete(): void;
1583
+ cancel(): void;
1584
+ }
1585
+ interface ITaskOptions {
1586
+ start?: boolean;
1587
+ time?: number;
1588
+ parallel?: boolean;
1589
+ delay?: number;
1590
+ }
1591
+
1592
+ interface ILeaferImageMap {
1593
+ [name: string]: ILeaferImage;
1594
+ }
1595
+ interface IImageManager {
1596
+ map: ILeaferImageMap;
1597
+ recycledList: ILeaferImage[];
1598
+ tasker: ITaskProcessor;
1599
+ patternTasker: ITaskProcessor;
1600
+ readonly isComplete: boolean;
1601
+ get(config: ILeaferImageConfig): ILeaferImage;
1602
+ recycle(image: ILeaferImage): void;
1603
+ clearRecycled(): void;
1604
+ destroy(): void;
1605
+ }
1606
+
1607
+ interface IPlatform {
1608
+ name?: 'web' | 'node' | 'miniapp';
1609
+ os?: 'Mac' | 'Windows' | 'Linux';
1610
+ requestRender?(render: IFunction): void;
1611
+ canvas?: ILeaferCanvas;
1612
+ isWorker?: boolean;
1613
+ isMobile?: boolean;
1614
+ devicePixelRatio?: number;
1615
+ intWheelDeltaY?: boolean;
1616
+ conicGradientSupport?: boolean;
1617
+ conicGradientRotate90?: boolean;
1618
+ fullImageShadow?: boolean;
1619
+ syncDomFont?: boolean;
1620
+ layout?(target: ILeaf): void;
1621
+ realtimeLayout?: boolean;
1622
+ origin?: {
1623
+ createCanvas(width: number, height: number, format?: 'svg' | 'pdf'): any;
1624
+ canvasToDataURL(canvas: any, type?: IExportImageType, quality?: number): string | Promise<string>;
1625
+ canvasToBolb(canvas: any, type?: IExportFileType, quality?: number): Promise<any>;
1626
+ canvasSaveAs(canvas: any, filename: string, quality?: number): Promise<void>;
1627
+ loadImage(url: string): Promise<any>;
1628
+ noRepeat?: string;
1629
+ };
1630
+ miniapp?: IMiniapp;
1631
+ imageSuffix?: string;
1632
+ }
1633
+ interface IMiniappSelect extends IObject {
1634
+ }
1635
+ interface IMiniappSizeView extends ISizeData {
1636
+ view: any;
1637
+ }
1638
+ interface IMiniapp {
1639
+ select(name: string): IMiniappSelect;
1640
+ getBounds(select: IMiniappSelect): Promise<IBoundsData>;
1641
+ getSizeView(select: IMiniappSelect): Promise<IMiniappSizeView>;
1642
+ onWindowResize(fun: IFunction): void;
1643
+ offWindowResize(fun: IFunction): void;
1644
+ saveToAlbum(path: string): Promise<any>;
1645
+ }
1646
+
1647
+ interface IPlugin extends IObject {
1648
+ name?: string;
1649
+ importVersion: string;
1650
+ import: string[];
1651
+ run(LeaferUI: IObject, config: IObject): void;
1652
+ onLeafer?(leafer: ILeafer): void;
1653
+ }
1654
+
1655
+ type ICanvasType = 'skia' | 'canvas' | 'wx';
1656
+ interface ISkiaCanvas {
1657
+ toBuffer(format: IExportFileType, config: ISkiaCanvasExportConfig): Promise<any>;
1658
+ toBufferSync(format: IExportFileType, config: ISkiaCanvasExportConfig): any;
1659
+ toDataURL(format: IExportImageType, config: ISkiaCanvasExportConfig): Promise<string>;
1660
+ toDataURLSync(format: IExportImageType, config: ISkiaCanvasExportConfig): string;
1661
+ saveAs(filename: string, config: ISkiaCanvasExportConfig): Promise<void>;
1662
+ saveAsSync(filename: string, config: ISkiaCanvasExportConfig): void;
1663
+ }
1664
+ interface ISkiaCanvasExportConfig {
1665
+ page?: number;
1666
+ matte?: string;
1667
+ density?: number;
1668
+ quality?: number;
1669
+ outline?: boolean;
1670
+ }
1671
+
1672
+ export type { ACommandData, ArcCommandData, ArcToCommandData, CCommandData, CanvasPathCommand, EllipseCommandData, HCommandData, IAnimateEvent, IApp, IAround, IAutoBounds, IAutoBoundsData, IBlendMode, IBlob, IBlobFunction, IBooleanMap, IBounds, IBoundsData, IBoundsDataHandle, IBranch, IBranchRender, IBranchRenderModule, ICachedLeaf, ICanvasAttr, ICanvasContext2D, ICanvasManager, ICanvasStrokeOptions, ICanvasType, IChildEvent, IControl, ICreator, ICursorType, ICursorTypeMap, IDataProcessor, IDataTypeHandle, IDragEvent, IDropEvent, IEvent, IEventListener, IEventListenerId, IEventListenerItem, IEventListenerMap, IEventListenerOptions, IEventTarget, IEventer, IExportFileType, IExportImageType, IFunction, IHitCanvas, IHitCanvasConfig, IHitCanvasManager, IHitType, IImageEvent, IImageManager, IInteraction, IInteractionCanvas, IInteractionConfig, IKeepTouchData, IKeyEvent, ILayoutBlockData, ILayoutBoundsType, ILayoutChangedData, ILayoutEvent, ILayoutLocationType, ILayouter, ILayouterConfig, ILeaf, ILeafArrayMap, ILeafAttrData, ILeafBounds, ILeafBoundsModule, ILeafComputedData, ILeafData, ILeafDataProxy, ILeafDataProxyModule, ILeafEventer, ILeafEventerModule, ILeafHit, ILeafHitModule, ILeafInputData, ILeafLayout, ILeafLevelList, ILeafList, ILeafListItemCallback, ILeafMap, ILeafMask, ILeafMaskModule, ILeafMatrix, ILeafMatrixModule, ILeafRender, ILeafRenderModule, ILeafer, ILeaferCanvas, ILeaferCanvasConfig, ILeaferConfig, ILeaferEvent, ILeaferImage, ILeaferImageConfig, ILeaferImageOnError, ILeaferImageOnLoaded, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, IMatrix, IMatrixData, IMatrixDecompositionAttr, IMatrixDecompositionData, IMatrixWithBoundsData, IMatrixWithLayoutData, IMiniapp, IMiniappSelect, IMiniappSizeView, IMoveEvent, IMultiTouchData, INumberMap, IObject, IOffsetBoundsData, IPartLayoutConfig, IPath2D, IPathCommandData, IPathCreator, IPathDrawer, IPathString, IPlatform, IPlugin, IPoint, IPointData, IPointerConfig, IPointerEvent, IPropertyEvent, IRadiusPointData, IRenderEvent, IRenderOptions, IRenderer, IRendererConfig, IResizeEvent, IResizeEventListener, IResizeType, IRotateEvent, IScreenSizeData, ISelectPathOptions, ISelectPathResult, ISelector, ISelectorConfig, ISize, ISizeData, ISkiaCanvas, ISkiaCanvasExportConfig, IStringMap, ISwipeEvent, ITaskItem, ITaskOptions, ITaskProcessor, ITaskProcessorConfig, ITextMetrics, ITimer, ITransformEvent, ITransformEventData, ITwoPointBounds, ITwoPointBoundsData, IUICreator, IUIEvent, IUpdateEvent, IWatchEvent, IWatchEventData, IWatcher, IWatcherConfig, IWheelConfig, IWindingRule, IZoomEvent, IZoomView, InnerId, LCommandData, MCommandData, PointerType, QCommandData, RectCommandData, RoundRectCommandData, SCommandData, TCommandData, TransformMode, VCommandData, ZCommandData, __Boolean, __Number, __Object, __String, __Value };