@leafer-ui/draw 1.6.2 → 1.6.3
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/lib/draw.cjs +114 -73
- package/lib/draw.esm.js +115 -74
- package/lib/draw.esm.min.js +1 -1
- package/lib/draw.esm.min.js.map +1 -1
- package/lib/draw.min.cjs +1 -1
- package/lib/draw.min.cjs.map +1 -1
- package/package.json +6 -6
package/lib/draw.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineKey, decorateLeafAttr, attr, Plugin, PathConvert, Debug, LeafData, canvasSizeAttrs, UICreator, dataProcessor, dataType, surfaceType, opacityType, visibleType, sortType, maskType, eraserType, positionType, boundsType, scaleType, rotationType, autoLayoutType, naturalBoundsType, pathInputType, pathType, hitType, strokeType, cursorType, rewrite, Leaf, useModule, rewriteAble, MathHelper, pen, PathCorner, PathDrawer,
|
|
1
|
+
import { defineKey, decorateLeafAttr, attr, Plugin, PathConvert, DataHelper, Debug, LeafData, canvasSizeAttrs, UICreator, dataProcessor, dataType, surfaceType, opacityType, visibleType, sortType, maskType, eraserType, positionType, boundsType, scaleType, rotationType, autoLayoutType, naturalBoundsType, pathInputType, pathType, hitType, strokeType, cursorType, rewrite, Leaf, useModule, rewriteAble, MathHelper, pen, PathCorner, PathDrawer, registerUI, Branch, LeafList, Resource, getBoundsData, Creator, CanvasManager, WaitHelper, LeaferEvent, Bounds, ResizeEvent, AutoBounds, Run, LayoutEvent, RenderEvent, WatchEvent, ImageManager, BoundsHelper, affectRenderBoundsType, PathCommandDataHelper, Platform, PointHelper, PathBounds, affectStrokeBoundsType, getPointData, LeaferImage, ImageEvent, Matrix, PathCreator } from '@leafer/core';
|
|
2
2
|
export * from '@leafer/core';
|
|
3
3
|
|
|
4
4
|
/******************************************************************************
|
|
@@ -64,8 +64,32 @@ function zoomLayerType() {
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
function hasTransparent$1(color) {
|
|
68
|
+
if (!color || color.length === 7 || color.length === 4)
|
|
69
|
+
return false;
|
|
70
|
+
if (color === 'transparent')
|
|
71
|
+
return true;
|
|
72
|
+
const first = color[0];
|
|
73
|
+
if (first === '#') {
|
|
74
|
+
switch (color.length) {
|
|
75
|
+
case 5: return color[4] !== 'f' && color[4] !== 'F';
|
|
76
|
+
case 9: return (color[7] !== 'f' && color[7] !== 'F') || (color[8] !== 'f' && color[8] !== 'F');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (first === 'r' || first === 'h') {
|
|
80
|
+
if (color[3] === 'a') {
|
|
81
|
+
const i = color.lastIndexOf(',');
|
|
82
|
+
if (i > -1)
|
|
83
|
+
return parseFloat(color.slice(i + 1)) < 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
|
|
67
89
|
const TextConvert = {};
|
|
68
|
-
const ColorConvert = {
|
|
90
|
+
const ColorConvert = {
|
|
91
|
+
hasTransparent: hasTransparent$1
|
|
92
|
+
};
|
|
69
93
|
const UnitConvert = {
|
|
70
94
|
number(value, percentRefer) {
|
|
71
95
|
return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
|
|
@@ -91,6 +115,7 @@ const Transition = {
|
|
|
91
115
|
};
|
|
92
116
|
|
|
93
117
|
const { parse, objectToCanvasData } = PathConvert;
|
|
118
|
+
const { stintSet: stintSet$1 } = DataHelper, { hasTransparent } = ColorConvert;
|
|
94
119
|
const emptyPaint = {};
|
|
95
120
|
const debug$1 = Debug.get('UIData');
|
|
96
121
|
class UIData extends LeafData {
|
|
@@ -149,38 +174,22 @@ class UIData extends LeafData {
|
|
|
149
174
|
if (this.__naturalWidth)
|
|
150
175
|
this.__removeNaturalSize();
|
|
151
176
|
if (typeof value === 'string' || !value) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
PaintImage.recycleImage('fill', this);
|
|
155
|
-
this.__isFills = false;
|
|
156
|
-
this.__pixelFill && (this.__pixelFill = false);
|
|
157
|
-
}
|
|
177
|
+
stintSet$1(this, '__isTransparentFill', hasTransparent(value));
|
|
178
|
+
this.__isFills && this.__removePaint('fill', true);
|
|
158
179
|
this._fill = value;
|
|
159
180
|
}
|
|
160
181
|
else if (typeof value === 'object') {
|
|
161
|
-
this.
|
|
162
|
-
const layout = this.__leaf.__layout;
|
|
163
|
-
layout.boxChanged || layout.boxChange();
|
|
164
|
-
this.__isFills = true;
|
|
165
|
-
this._fill || (this._fill = emptyPaint);
|
|
182
|
+
this.__setPaint('fill', value);
|
|
166
183
|
}
|
|
167
184
|
}
|
|
168
185
|
setStroke(value) {
|
|
169
186
|
if (typeof value === 'string' || !value) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
PaintImage.recycleImage('stroke', this);
|
|
173
|
-
this.__isStrokes = false;
|
|
174
|
-
this.__pixelStroke && (this.__pixelStroke = false);
|
|
175
|
-
}
|
|
187
|
+
stintSet$1(this, '__isTransparentStroke', hasTransparent(value));
|
|
188
|
+
this.__isStrokes && this.__removePaint('stroke', true);
|
|
176
189
|
this._stroke = value;
|
|
177
190
|
}
|
|
178
191
|
else if (typeof value === 'object') {
|
|
179
|
-
this.
|
|
180
|
-
const layout = this.__leaf.__layout;
|
|
181
|
-
layout.boxChanged || layout.boxChange();
|
|
182
|
-
this.__isStrokes = true;
|
|
183
|
-
this._stroke || (this._stroke = emptyPaint);
|
|
192
|
+
this.__setPaint('stroke', value);
|
|
184
193
|
}
|
|
185
194
|
}
|
|
186
195
|
setPath(value) {
|
|
@@ -210,7 +219,34 @@ class UIData extends LeafData {
|
|
|
210
219
|
Paint.compute('fill', this.__leaf);
|
|
211
220
|
if (stroke)
|
|
212
221
|
Paint.compute('stroke', this.__leaf);
|
|
213
|
-
this.__needComputePaint =
|
|
222
|
+
this.__needComputePaint = undefined;
|
|
223
|
+
}
|
|
224
|
+
__setPaint(attrName, value) {
|
|
225
|
+
this.__setInput(attrName, value);
|
|
226
|
+
const layout = this.__leaf.__layout;
|
|
227
|
+
layout.boxChanged || layout.boxChange();
|
|
228
|
+
if (value instanceof Array && !value.length) {
|
|
229
|
+
this.__removePaint(attrName);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
if (attrName === 'fill')
|
|
233
|
+
this.__isFills = true, this._fill || (this._fill = emptyPaint);
|
|
234
|
+
else
|
|
235
|
+
this.__isStrokes = true, this._stroke || (this._stroke = emptyPaint);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
__removePaint(attrName, removeInput) {
|
|
239
|
+
if (removeInput)
|
|
240
|
+
this.__removeInput(attrName);
|
|
241
|
+
PaintImage.recycleImage(attrName, this);
|
|
242
|
+
if (attrName === 'fill') {
|
|
243
|
+
stintSet$1(this, '__isAlphaPixelFill', undefined);
|
|
244
|
+
this._fill = this.__isFills = undefined;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
stintSet$1(this, '__isAlphaPixelStroke', undefined);
|
|
248
|
+
this._stroke = this.__isStrokes = undefined;
|
|
249
|
+
}
|
|
214
250
|
}
|
|
215
251
|
}
|
|
216
252
|
function setArray(data, key, value) {
|
|
@@ -218,10 +254,10 @@ function setArray(data, key, value) {
|
|
|
218
254
|
if (value instanceof Array) {
|
|
219
255
|
if (value.some((item) => item.visible === false))
|
|
220
256
|
value = value.filter((item) => item.visible !== false);
|
|
221
|
-
value.length || (value =
|
|
257
|
+
value.length || (value = undefined);
|
|
222
258
|
}
|
|
223
259
|
else
|
|
224
|
-
value = value && value.visible !== false ? [value] :
|
|
260
|
+
value = value && value.visible !== false ? [value] : undefined;
|
|
225
261
|
data['_' + key] = value;
|
|
226
262
|
}
|
|
227
263
|
|
|
@@ -324,8 +360,6 @@ class ImageData extends RectData {
|
|
|
324
360
|
this._url = value;
|
|
325
361
|
}
|
|
326
362
|
__setImageFill(value) {
|
|
327
|
-
if (this.__leaf.image)
|
|
328
|
-
this.__leaf.image = null;
|
|
329
363
|
this.fill = value ? { type: 'image', mode: 'stretch', url: value } : undefined;
|
|
330
364
|
}
|
|
331
365
|
__getData() {
|
|
@@ -391,21 +425,19 @@ const UIBounds = {
|
|
|
391
425
|
}
|
|
392
426
|
};
|
|
393
427
|
|
|
428
|
+
const { stintSet } = DataHelper;
|
|
394
429
|
const UIRender = {
|
|
395
430
|
__updateChange() {
|
|
396
|
-
const data = this.__
|
|
431
|
+
const data = this.__;
|
|
397
432
|
if (data.__useEffect) {
|
|
398
|
-
const { shadow,
|
|
399
|
-
data.
|
|
433
|
+
const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter;
|
|
434
|
+
stintSet(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && !(shadow[0].box && data.__isTransparentFill) && fill && !(fill instanceof Array && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside')));
|
|
435
|
+
data.__useEffect = !!(shadow || otherEffect);
|
|
400
436
|
}
|
|
401
|
-
|
|
402
|
-
|
|
437
|
+
stintSet(this.__world, 'half', data.__hasHalf);
|
|
438
|
+
stintSet(data, '__fillAfterStroke', data.stroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill);
|
|
403
439
|
data.__checkSingle();
|
|
404
|
-
|
|
405
|
-
if (complex)
|
|
406
|
-
data.__complex = true;
|
|
407
|
-
else
|
|
408
|
-
data.__complex && (data.__complex = false);
|
|
440
|
+
stintSet(data, '__complex', data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect);
|
|
409
441
|
},
|
|
410
442
|
__drawFast(canvas, options) {
|
|
411
443
|
drawFast(this, canvas, options);
|
|
@@ -415,21 +447,23 @@ const UIRender = {
|
|
|
415
447
|
if (data.__complex) {
|
|
416
448
|
if (data.__needComputePaint)
|
|
417
449
|
data.__computePaint();
|
|
418
|
-
const { fill, stroke, __drawAfterFill } = data;
|
|
450
|
+
const { fill, stroke, __drawAfterFill, __fillAfterStroke, __isFastShadow } = data;
|
|
419
451
|
this.__drawRenderPath(canvas);
|
|
420
|
-
if (data.__useEffect) {
|
|
452
|
+
if (data.__useEffect && !__isFastShadow) {
|
|
421
453
|
const shape = Paint.shape(this, canvas, options);
|
|
422
454
|
this.__nowWorld = this.__getNowWorld(options);
|
|
423
455
|
const { shadow, innerShadow, filter } = data;
|
|
424
456
|
if (shadow)
|
|
425
457
|
Effect.shadow(this, canvas, shape);
|
|
458
|
+
if (__fillAfterStroke)
|
|
459
|
+
data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
|
|
426
460
|
if (fill)
|
|
427
461
|
data.__isFills ? Paint.fills(fill, this, canvas) : Paint.fill(fill, this, canvas);
|
|
428
462
|
if (__drawAfterFill)
|
|
429
463
|
this.__drawAfterFill(canvas, options);
|
|
430
464
|
if (innerShadow)
|
|
431
465
|
Effect.innerShadow(this, canvas, shape);
|
|
432
|
-
if (stroke)
|
|
466
|
+
if (stroke && !__fillAfterStroke)
|
|
433
467
|
data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
|
|
434
468
|
if (filter)
|
|
435
469
|
Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
|
|
@@ -438,21 +472,27 @@ const UIRender = {
|
|
|
438
472
|
shape.canvas.recycle();
|
|
439
473
|
}
|
|
440
474
|
else {
|
|
475
|
+
if (__fillAfterStroke)
|
|
476
|
+
data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
|
|
477
|
+
if (__isFastShadow) {
|
|
478
|
+
const shadow = data.shadow[0], { scaleX, scaleY } = this.__nowWorld;
|
|
479
|
+
canvas.save(), canvas.setWorldShadow(shadow.x * scaleX, shadow.y * scaleY, shadow.blur * scaleX, ColorConvert.string(shadow.color));
|
|
480
|
+
}
|
|
441
481
|
if (fill)
|
|
442
482
|
data.__isFills ? Paint.fills(fill, this, canvas) : Paint.fill(fill, this, canvas);
|
|
483
|
+
if (__isFastShadow)
|
|
484
|
+
canvas.restore();
|
|
443
485
|
if (__drawAfterFill)
|
|
444
486
|
this.__drawAfterFill(canvas, options);
|
|
445
|
-
if (stroke)
|
|
487
|
+
if (stroke && !__fillAfterStroke)
|
|
446
488
|
data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
|
|
447
489
|
}
|
|
448
490
|
}
|
|
449
491
|
else {
|
|
450
|
-
if (data.__pathInputed)
|
|
492
|
+
if (data.__pathInputed)
|
|
451
493
|
drawFast(this, canvas, options);
|
|
452
|
-
|
|
453
|
-
else {
|
|
494
|
+
else
|
|
454
495
|
this.__drawFast(canvas, options);
|
|
455
|
-
}
|
|
456
496
|
}
|
|
457
497
|
},
|
|
458
498
|
__renderShape(canvas, options, ignoreFill, ignoreStroke) {
|
|
@@ -461,11 +501,11 @@ const UIRender = {
|
|
|
461
501
|
const { fill, stroke } = this.__;
|
|
462
502
|
this.__drawRenderPath(canvas);
|
|
463
503
|
if (fill && !ignoreFill)
|
|
464
|
-
this.__.
|
|
504
|
+
this.__.__isAlphaPixelFill ? Paint.fills(fill, this, canvas) : Paint.fill('#000000', this, canvas);
|
|
465
505
|
if (this.__.__isCanvas)
|
|
466
506
|
this.__drawAfterFill(canvas, options);
|
|
467
507
|
if (stroke && !ignoreStroke)
|
|
468
|
-
this.__.
|
|
508
|
+
this.__.__isAlphaPixelStroke ? Paint.strokes(stroke, this, canvas) : Paint.stroke('#000000', this, canvas);
|
|
469
509
|
}
|
|
470
510
|
},
|
|
471
511
|
__drawAfterFill(canvas, options) {
|
|
@@ -480,13 +520,15 @@ const UIRender = {
|
|
|
480
520
|
}
|
|
481
521
|
};
|
|
482
522
|
function drawFast(ui, canvas, options) {
|
|
483
|
-
const { fill, stroke, __drawAfterFill } = ui.__;
|
|
523
|
+
const { fill, stroke, __drawAfterFill, __fillAfterStroke } = ui.__;
|
|
484
524
|
ui.__drawRenderPath(canvas);
|
|
525
|
+
if (__fillAfterStroke)
|
|
526
|
+
Paint.stroke(stroke, ui, canvas);
|
|
485
527
|
if (fill)
|
|
486
528
|
Paint.fill(fill, ui, canvas);
|
|
487
529
|
if (__drawAfterFill)
|
|
488
530
|
ui.__drawAfterFill(canvas, options);
|
|
489
|
-
if (stroke)
|
|
531
|
+
if (stroke && !__fillAfterStroke)
|
|
490
532
|
Paint.stroke(stroke, ui, canvas);
|
|
491
533
|
}
|
|
492
534
|
|
|
@@ -858,6 +900,9 @@ __decorate([
|
|
|
858
900
|
__decorate([
|
|
859
901
|
surfaceType()
|
|
860
902
|
], UI.prototype, "placeholderColor", void 0);
|
|
903
|
+
__decorate([
|
|
904
|
+
dataType(100)
|
|
905
|
+
], UI.prototype, "placeholderDelay", void 0);
|
|
861
906
|
__decorate([
|
|
862
907
|
dataType({})
|
|
863
908
|
], UI.prototype, "data", void 0);
|
|
@@ -1259,15 +1304,20 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
1259
1304
|
}
|
|
1260
1305
|
__listenEvents() {
|
|
1261
1306
|
const runId = Run.start('FirstCreate ' + this.innerName);
|
|
1262
|
-
this.once(
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1307
|
+
this.once([
|
|
1308
|
+
[LeaferEvent.START, () => Run.end(runId)],
|
|
1309
|
+
[LayoutEvent.START, this.updateLazyBounds, this],
|
|
1310
|
+
[RenderEvent.START, this.__onCreated, this],
|
|
1311
|
+
[RenderEvent.END, this.__onViewReady, this]
|
|
1312
|
+
]);
|
|
1313
|
+
this.__eventIds.push(this.on_([
|
|
1314
|
+
[WatchEvent.DATA, this.__onWatchData, this],
|
|
1315
|
+
[LayoutEvent.END, this.__onLayoutEnd, this],
|
|
1316
|
+
[RenderEvent.NEXT, this.__onNextRender, this]
|
|
1317
|
+
]));
|
|
1267
1318
|
}
|
|
1268
1319
|
__removeListenEvents() {
|
|
1269
1320
|
this.off_(this.__eventIds);
|
|
1270
|
-
this.__eventIds.length = 0;
|
|
1271
1321
|
}
|
|
1272
1322
|
destroy(sync) {
|
|
1273
1323
|
const doDestory = () => {
|
|
@@ -1375,13 +1425,13 @@ let Box = class Box extends Group {
|
|
|
1375
1425
|
super.__updateRenderBounds();
|
|
1376
1426
|
copy(childrenRenderBounds, renderBounds);
|
|
1377
1427
|
this.__updateRectRenderBounds();
|
|
1378
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds)
|
|
1428
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds);
|
|
1379
1429
|
if (isOverflow && this.__.overflow !== 'hide')
|
|
1380
1430
|
add(renderBounds, childrenRenderBounds);
|
|
1381
1431
|
}
|
|
1382
1432
|
else
|
|
1383
1433
|
this.__updateRectRenderBounds();
|
|
1384
|
-
|
|
1434
|
+
DataHelper.stintSet(this, 'isOverflow', isOverflow);
|
|
1385
1435
|
}
|
|
1386
1436
|
__updateRectRenderBounds() { }
|
|
1387
1437
|
__updateRectChange() { }
|
|
@@ -1685,18 +1735,10 @@ Star = __decorate([
|
|
|
1685
1735
|
|
|
1686
1736
|
let Image = class Image extends Rect {
|
|
1687
1737
|
get __tag() { return 'Image'; }
|
|
1688
|
-
get ready() {
|
|
1738
|
+
get ready() { const { image } = this; return image && image.ready; }
|
|
1739
|
+
get image() { const { fill } = this.__; return fill instanceof Array && fill[0].image; }
|
|
1689
1740
|
constructor(data) {
|
|
1690
1741
|
super(data);
|
|
1691
|
-
this.on_(ImageEvent.LOADED, this.__onLoaded, this);
|
|
1692
|
-
}
|
|
1693
|
-
__onLoaded(e) {
|
|
1694
|
-
if (e.attrName === 'fill' && e.attrValue.url === this.url)
|
|
1695
|
-
this.image = e.image;
|
|
1696
|
-
}
|
|
1697
|
-
destroy() {
|
|
1698
|
-
this.image = null;
|
|
1699
|
-
super.destroy();
|
|
1700
1742
|
}
|
|
1701
1743
|
};
|
|
1702
1744
|
__decorate([
|
|
@@ -1712,11 +1754,11 @@ const MyImage = Image;
|
|
|
1712
1754
|
|
|
1713
1755
|
let Canvas = class Canvas extends Rect {
|
|
1714
1756
|
get __tag() { return 'Canvas'; }
|
|
1757
|
+
get context() { return this.canvas.context; }
|
|
1715
1758
|
get ready() { return !this.url; }
|
|
1716
1759
|
constructor(data) {
|
|
1717
1760
|
super(data);
|
|
1718
1761
|
this.canvas = Creator.canvas(this.__);
|
|
1719
|
-
this.context = this.canvas.context;
|
|
1720
1762
|
if (data && data.url)
|
|
1721
1763
|
this.drawImage(data.url);
|
|
1722
1764
|
}
|
|
@@ -1760,7 +1802,7 @@ let Canvas = class Canvas extends Rect {
|
|
|
1760
1802
|
destroy() {
|
|
1761
1803
|
if (this.canvas) {
|
|
1762
1804
|
this.canvas.destroy();
|
|
1763
|
-
this.canvas =
|
|
1805
|
+
this.canvas = null;
|
|
1764
1806
|
}
|
|
1765
1807
|
super.destroy();
|
|
1766
1808
|
}
|
|
@@ -1836,12 +1878,11 @@ let Text = class Text extends UI {
|
|
|
1836
1878
|
super.__updateBoxBounds();
|
|
1837
1879
|
if (italic)
|
|
1838
1880
|
b.width += fontSize * 0.16;
|
|
1839
|
-
|
|
1840
|
-
if (isOverflow)
|
|
1881
|
+
DataHelper.stintSet(this, 'isOverflow', !includes(b, contentBounds));
|
|
1882
|
+
if (this.isOverflow)
|
|
1841
1883
|
setList(data.__textBoxBounds = {}, [b, contentBounds]), layout.renderChanged = true;
|
|
1842
1884
|
else
|
|
1843
1885
|
data.__textBoxBounds = b;
|
|
1844
|
-
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
1845
1886
|
}
|
|
1846
1887
|
__onUpdateSize() {
|
|
1847
1888
|
if (this.__box)
|
package/lib/draw.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineKey as t,decorateLeafAttr as e,attr as i,Plugin as s,PathConvert as o,Debug as r,LeafData as a,canvasSizeAttrs as n,UICreator as _,dataProcessor as h,dataType as d,surfaceType as p,opacityType as l,visibleType as u,sortType as c,maskType as y,eraserType as g,positionType as v,boundsType as f,scaleType as w,rotationType as x,autoLayoutType as m,naturalBoundsType as R,pathInputType as S,pathType as k,hitType as b,strokeType as B,cursorType as C,rewrite as A,Leaf as P,useModule as F,rewriteAble as I,MathHelper as E,pen as W,PathCorner as D,PathDrawer as L,DataHelper as z,registerUI as T,Branch as M,LeafList as O,Resource as N,getBoundsData as V,Creator as j,CanvasManager as H,WaitHelper as Y,LeaferEvent as U,Bounds as X,ResizeEvent as q,AutoBounds as G,Run as J,LayoutEvent as $,RenderEvent as K,WatchEvent as Q,ImageManager as Z,BoundsHelper as tt,affectRenderBoundsType as et,PathCommandDataHelper as it,Platform as st,PointHelper as ot,PathBounds as rt,affectStrokeBoundsType as at,getPointData as nt,ImageEvent as _t,LeaferImage as ht,Matrix as dt,PathCreator as pt}from"@leafer/core";export*from"@leafer/core";function lt(t,e,i,s){var o,r=arguments.length,a=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,s);else for(var n=t.length-1;n>=0;n--)(o=t[n])&&(a=(r<3?o(a):r>3?o(e,i,a):o(e,i))||a);return r>3&&a&&Object.defineProperty(e,i,a),a}function ut(t){return e(t,(t=>i({set(e){this.__setAttr(t,e),e&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function ct(t){return e(t,(t=>i({set(e){this.__setAttr(t,e),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function yt(){return(e,i)=>{const s="_"+i;t(e,i,{set(t){this.isLeafer&&(this[s]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[s]||this:this.leafer&&this.leafer.zoomLayer}})}}"function"==typeof SuppressedError&&SuppressedError;const gt={},vt={},ft={number:(t,e)=>"object"==typeof t?"percent"===t.type?t.value*e:t.value:t},wt={},xt={},mt={},Rt={},St={},kt={apply(){s.need("filter")}},bt={},Bt={setStyleName:()=>s.need("state"),set:()=>s.need("state")},Ct={list:{},register(t,e){Ct.list[t]=e},get:t=>Ct.list[t]},{parse:At,objectToCanvasData:Pt}=o,Ft={},It=r.get("UIData");class Et extends a{get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get __strokeWidth(){const{strokeWidth:t,strokeWidthFixed:e}=this;if(e){const e=this.__leaf;let{scaleX:i}=e.__nowWorld||e.__world;return i<0&&(i=-i),i>1?t/i:t}return t}get __hasStroke(){return this.stroke&&this.strokeWidth}get __hasHalf(){const t=this;return t.stroke&&"center"===t.strokeAlign&&t.strokeWidth%2||void 0}get __hasMultiPaint(){const t=this;return!!(t.__isFills&&t.fill.length>1||t.__isStrokes&&t.stroke.length>1||t.__useEffect)||t.fill&&this.__hasStroke}get __clipAfterFill(){const t=this;return t.cornerRadius||t.innerShadow||t.__pathInputed}get __hasSurface(){return this.fill||this.stroke}get __autoWidth(){return!this._width}get __autoHeight(){return!this._height}get __autoSide(){return!this._width||!this._height}get __autoSize(){return!this._width&&!this._height}setVisible(t){this._visible=t;const{leafer:e}=this.__leaf;e&&(e.watcher.hasVisible=!0)}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,It.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,It.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){if(this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t){if("object"==typeof t){this.__setInput("fill",t);const e=this.__leaf.__layout;e.boxChanged||e.boxChange(),this.__isFills=!0,this._fill||(this._fill=Ft)}}else this.__isFills&&(this.__removeInput("fill"),mt.recycleImage("fill",this),this.__isFills=!1,this.__pixelFill&&(this.__pixelFill=!1)),this._fill=t}setStroke(t){if("string"!=typeof t&&t){if("object"==typeof t){this.__setInput("stroke",t);const e=this.__leaf.__layout;e.boxChanged||e.boxChange(),this.__isStrokes=!0,this._stroke||(this._stroke=Ft)}}else this.__isStrokes&&(this.__removeInput("stroke"),mt.recycleImage("stroke",this),this.__isStrokes=!1,this.__pixelStroke&&(this.__pixelStroke=!1)),this._stroke=t}setPath(t){const e="string"==typeof t;e||t&&"object"==typeof t[0]?(this.__setInput("path",t),this._path=e?At(t):Pt(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){Wt(this,"shadow",t)}setInnerShadow(t){Wt(this,"innerShadow",t)}setFilter(t){Wt(this,"filter",t)}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&xt.compute("fill",this.__leaf),e&&xt.compute("stroke",this.__leaf),this.__needComputePaint=!1}}function Wt(t,e,i){t.__setInput(e,i),i instanceof Array?(i.some((t=>!1===t.visible))&&(i=i.filter((t=>!1!==t.visible))),i.length||(i=null)):i=i&&!1!==i.visible?[i]:null,t["_"+e]=i}class Dt extends Et{}class Lt extends Dt{get __boxStroke(){return!this.__pathInputed}get __drawAfterFill(){const t=this;return"hide"===t.overflow&&(t.__clipAfterFill||t.innerShadow)&&t.__leaf.children.length}get __clipAfterFill(){return this.__leaf.isOverflow||super.__clipAfterFill}}class zt extends Dt{__getInputData(t,e){const i=super.__getInputData(t,e);return n.forEach((t=>delete i[t])),i}}class Tt extends Lt{}class Mt extends Et{}class Ot extends Et{get __boxStroke(){return!this.__pathInputed}}class Nt extends Et{get __boxStroke(){return!this.__pathInputed}}class Vt extends Et{}class jt extends Et{}class Ht extends Et{get __pathInputed(){return 2}}class Yt extends Dt{}const Ut={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class Xt extends Et{get __useNaturalRatio(){return!1}setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),t=Ut[t]||400):this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t}setBoxStyle(t){let e=this.__leaf,i=e.__box;if(t){const{boxStyle:s}=this;if(i)for(let t in s)i[t]=void 0;else i=e.__box=_.get("Rect",0);const o=e.__layout,r=i.__layout;s||(i.parent=e,i.__world=e.__world,r.boxBounds=o.boxBounds),i.set(t),r.strokeChanged&&o.strokeChange(),r.renderChanged&&o.renderChange(),i.__updateChange()}else i&&(e.__box=i.parent=null,i.destroy());this._boxStyle=t}}class qt extends Ot{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.__leaf.image&&(this.__leaf.image=null),this.fill=t?{type:"image",mode:"stretch",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(t,e){const i=super.__getInputData(t,e);return delete i.fill,i}}class Gt extends Ot{get __isCanvas(){return!0}get __drawAfterFill(){return!0}__getInputData(t,e){const i=super.__getInputData(t,e);return i.url=this.__leaf.canvas.toDataURL("image/png"),i}}const Jt={__updateStrokeSpread(){let t=0,e=0;const i=this.__,{strokeAlign:s,strokeWidth:o}=i,r=this.__box;if((i.stroke||"all"===i.hitStroke)&&o&&"inside"!==s&&(e=t="center"===s?o/2:o,!i.__boxStroke)){const e=i.__isLinePath?0:10*t,s="none"===i.strokeCap?0:o;t+=Math.max(e,s)}return i.__useArrow&&(t+=5*o),r&&(t=Math.max(r.__layout.strokeSpread=r.__updateStrokeSpread(),t),e=r.__layout.strokeBoxSpread),this.__layout.strokeBoxSpread=e,t},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o,filter:r}=this.__;e&&e.forEach((e=>t=Math.max(t,Math.max(Math.abs(e.y),Math.abs(e.x))+(e.spread>0?e.spread:0)+1.5*e.blur))),s&&(t=Math.max(t,s)),r&&(t+=kt.getSpread(r));let a=t=Math.ceil(t);return i&&i.forEach((t=>a=Math.max(a,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur))),o&&(a=Math.max(a,o)),this.__layout.renderShapeSpread=a,t+=this.__layout.strokeSpread||0,this.__box?Math.max(this.__box.__updateRenderSpread(),t):t}},$t={__updateChange(){const t=this.__,e=this.__world;if(t.__useEffect){const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o,filter:r}=this.__;t.__useEffect=!!(e||i||s||o||r)}const i=t.__hasHalf;e.half!==i&&(e.half=i),t.__checkSingle();t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect?t.__complex=!0:t.__complex&&(t.__complex=!1)},__drawFast(t,e){Kt(this,t,e)},__draw(t,e,i){const s=this.__;if(s.__complex){s.__needComputePaint&&s.__computePaint();const{fill:o,stroke:r,__drawAfterFill:a}=s;if(this.__drawRenderPath(t),s.__useEffect){const n=xt.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:_,innerShadow:h,filter:d}=s;_&&St.shadow(this,t,n),o&&(s.__isFills?xt.fills(o,this,t):xt.fill(o,this,t)),a&&this.__drawAfterFill(t,e),h&&St.innerShadow(this,t,n),r&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t)),d&&kt.apply(d,this,this.__nowWorld,t,i,n),n.worldCanvas&&n.worldCanvas.recycle(),n.canvas.recycle()}else o&&(s.__isFills?xt.fills(o,this,t):xt.fill(o,this,t)),a&&this.__drawAfterFill(t,e),r&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t))}else s.__pathInputed?Kt(this,t,e):this.__drawFast(t,e)},__renderShape(t,e,i,s){if(this.__worldOpacity){t.setWorld(this.__nowWorld=this.__getNowWorld(e));const{fill:o,stroke:r}=this.__;this.__drawRenderPath(t),o&&!i&&(this.__.__pixelFill?xt.fills(o,this,t):xt.fill("#000000",this,t)),this.__.__isCanvas&&this.__drawAfterFill(t,e),r&&!s&&(this.__.__pixelStroke?xt.strokes(r,this,t):xt.stroke("#000000",this,t))}},__drawAfterFill(t,e){this.__.__clipAfterFill?(t.save(),this.windingRule?t.clip(this.windingRule):t.clip(),this.__drawContent(t,e),t.restore()):this.__drawContent(t,e)}};function Kt(t,e,i){const{fill:s,stroke:o,__drawAfterFill:r}=t.__;t.__drawRenderPath(e),s&&xt.fill(s,t,e),r&&t.__drawAfterFill(e,i),o&&xt.stroke(o,t,e)}const Qt={__drawFast(t,e){let{x:i,y:s,width:o,height:r}=this.__layout.boxBounds;const{fill:a,stroke:n,__drawAfterFill:_}=this.__;if(a&&(t.fillStyle=a,t.fillRect(i,s,o,r)),_&&this.__drawAfterFill(t,e),n){const{strokeAlign:a,__strokeWidth:_}=this.__;if(!_)return;t.setStroke(n,_,this.__);const h=_/2;switch(a){case"center":t.strokeRect(0,0,o,r);break;case"inside":o-=_,r-=_,o<0||r<0?(t.save(),this.__clip(t,e),t.strokeRect(i+h,s+h,o,r),t.restore()):t.strokeRect(i+h,s+h,o,r);break;case"outside":t.strokeRect(i-h,s-h,o+_,r+_)}}}};var Zt;let te=Zt=class extends P{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){E.assignScale(this,t)}get scale(){return this.__.scale}get pen(){const{path:t}=this.__;return W.set(this.path=t||[]),t||this.__drawPathByBox(W),W}constructor(t){super(t)}reset(t){}set(t,e){t&&(e?"temp"===e?(this.lockNormalStyle=!0,Object.assign(this,t),this.lockNormalStyle=!1):this.animate(t,e):Object.assign(this,t))}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){return s.need("find")}findTag(t){return this.find({tag:t})}findOne(t,e){return s.need("find")}findId(t){return this.findOne({id:t})}getPath(t,e){this.__layout.update();let i=e?this.__.__pathForRender:this.__.path;return i||(W.set(i=[]),this.__drawPathByBox(W)),t?o.toCanvasData(i,!0):i}getPathString(t,e,i){return o.stringify(this.getPath(t,e),i)}load(){this.__.__computePaint()}__onUpdateSize(){if(this.__.__input){const t=this.__;!t.lazy||this.__inLazyBounds||bt.running?t.__computePaint():t.__needComputePaint=!0}}__updateRenderPath(){if(this.__.path){const t=this.__;t.__pathForRender=t.cornerRadius?D.smooth(t.path,t.cornerRadius,t.cornerSmoothing):t.path,t.__useArrow&&wt.addArrows(this,!t.cornerRadius)}}__drawRenderPath(t){t.beginPath(),this.__drawPathByData(t,this.__.__pathForRender)}__drawPath(t){t.beginPath(),this.__drawPathByData(t,this.__.path)}__drawPathByData(t,e){e?L.drawPathByData(t,e):this.__drawPathByBox(t)}__drawPathByBox(t){const{x:e,y:i,width:s,height:o}=this.__layout.boxBounds;if(this.__.cornerRadius){const{cornerRadius:r}=this.__;t.roundRect(e,i,s,o,"number"==typeof r?[r]:r)}else t.rect(e,i,s,o)}drawImagePlaceholder(t,e){xt.fill(this.__.placeholderColor,this,t)}animate(t,e,i,o){return s.need("animate")}killAnimate(t,e){}export(t,e){return s.need("export")}syncExport(t,e){return s.need("export")}clone(t){const e=z.clone(this.toJSON());return t&&Object.assign(e,t),Zt.one(e)}static one(t,e,i,s,o){return _.get(t.tag||this.prototype.__tag,t,e,i,s,o)}static registerUI(){T()(this)}static registerData(t){h(t)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,this.__animate&&this.killAnimate(),super.destroy()}};lt([h(Et)],te.prototype,"__",void 0),lt([yt()],te.prototype,"zoomLayer",void 0),lt([d("")],te.prototype,"id",void 0),lt([d("")],te.prototype,"name",void 0),lt([d("")],te.prototype,"className",void 0),lt([p("pass-through")],te.prototype,"blendMode",void 0),lt([l(1)],te.prototype,"opacity",void 0),lt([u(!0)],te.prototype,"visible",void 0),lt([p(!1)],te.prototype,"locked",void 0),lt([p(!1)],te.prototype,"dim",void 0),lt([p(!1)],te.prototype,"dimskip",void 0),lt([c(0)],te.prototype,"zIndex",void 0),lt([y(!1)],te.prototype,"mask",void 0),lt([g(!1)],te.prototype,"eraser",void 0),lt([v(0,!0)],te.prototype,"x",void 0),lt([v(0,!0)],te.prototype,"y",void 0),lt([f(100,!0)],te.prototype,"width",void 0),lt([f(100,!0)],te.prototype,"height",void 0),lt([w(1,!0)],te.prototype,"scaleX",void 0),lt([w(1,!0)],te.prototype,"scaleY",void 0),lt([x(0,!0)],te.prototype,"rotation",void 0),lt([x(0,!0)],te.prototype,"skewX",void 0),lt([x(0,!0)],te.prototype,"skewY",void 0),lt([v(0,!0)],te.prototype,"offsetX",void 0),lt([v(0,!0)],te.prototype,"offsetY",void 0),lt([v(0,!0)],te.prototype,"scrollX",void 0),lt([v(0,!0)],te.prototype,"scrollY",void 0),lt([m()],te.prototype,"origin",void 0),lt([m()],te.prototype,"around",void 0),lt([d(!1)],te.prototype,"lazy",void 0),lt([R(1)],te.prototype,"pixelRatio",void 0),lt([S()],te.prototype,"path",void 0),lt([k()],te.prototype,"windingRule",void 0),lt([k(!0)],te.prototype,"closed",void 0),lt([f(0)],te.prototype,"padding",void 0),lt([f(!1)],te.prototype,"lockRatio",void 0),lt([f()],te.prototype,"widthRange",void 0),lt([f()],te.prototype,"heightRange",void 0),lt([d(!1)],te.prototype,"draggable",void 0),lt([d()],te.prototype,"dragBounds",void 0),lt([d(!1)],te.prototype,"editable",void 0),lt([b(!0)],te.prototype,"hittable",void 0),lt([b("path")],te.prototype,"hitFill",void 0),lt([B("path")],te.prototype,"hitStroke",void 0),lt([b(!1)],te.prototype,"hitBox",void 0),lt([b(!0)],te.prototype,"hitChildren",void 0),lt([b(!0)],te.prototype,"hitSelf",void 0),lt([b()],te.prototype,"hitRadius",void 0),lt([C("")],te.prototype,"cursor",void 0),lt([p()],te.prototype,"fill",void 0),lt([B()],te.prototype,"stroke",void 0),lt([B("inside")],te.prototype,"strokeAlign",void 0),lt([B(1)],te.prototype,"strokeWidth",void 0),lt([B(!1)],te.prototype,"strokeWidthFixed",void 0),lt([B("none")],te.prototype,"strokeCap",void 0),lt([B("miter")],te.prototype,"strokeJoin",void 0),lt([B()],te.prototype,"dashPattern",void 0),lt([B(0)],te.prototype,"dashOffset",void 0),lt([B(10)],te.prototype,"miterLimit",void 0),lt([k(0)],te.prototype,"cornerRadius",void 0),lt([k()],te.prototype,"cornerSmoothing",void 0),lt([ut()],te.prototype,"shadow",void 0),lt([ut()],te.prototype,"innerShadow",void 0),lt([ut()],te.prototype,"blur",void 0),lt([ut()],te.prototype,"backgroundBlur",void 0),lt([ut()],te.prototype,"grayscale",void 0),lt([ut()],te.prototype,"filter",void 0),lt([p()],te.prototype,"placeholderColor",void 0),lt([d({})],te.prototype,"data",void 0),lt([A(P.prototype.reset)],te.prototype,"reset",null),te=Zt=lt([F(Jt),F($t),I()],te);let ee=class extends te{get __tag(){return"Group"}get isBranch(){return!0}constructor(t){super(t)}reset(t){this.__setBranch(),super.reset(t)}__setBranch(){this.children||(this.children=[])}set(t,e){if(t)if(t.children){const{children:i}=t;delete t.children,this.children?this.clear():this.__setBranch(),super.set(t,e),i.forEach((t=>this.add(t))),t.children=i}else super.set(t,e)}toJSON(t){const e=super.toJSON(t);return e.children=this.children.map((e=>e.toJSON(t))),e}pick(t,e){}addAt(t,e){this.add(t,e)}addAfter(t,e){this.add(t,this.children.indexOf(e)+1)}addBefore(t,e){this.add(t,this.children.indexOf(e))}add(t,e){}addMany(...t){}remove(t,e){}removeAll(t){}clear(){}};var ie;lt([h(Dt)],ee.prototype,"__",void 0),lt([f(0)],ee.prototype,"width",void 0),lt([f(0)],ee.prototype,"height",void 0),ee=lt([F(M),T()],ee);const se=r.get("Leafer");let oe=ie=class extends ee{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&N.isComplete}get layoutLocked(){return!this.layouter.running}get FPS(){return this.renderer?this.renderer.FPS:60}get cursorPoint(){return this.interaction&&this.interaction.hoverData||{x:this.width/2,y:this.height/2}}get clientBounds(){return this.canvas&&this.canvas.getClientBounds(!0)||V()}constructor(t,e){super(e),this.config={start:!0,hittable:!0,smooth:!0,lazySpeard:100},this.leafs=0,this.__eventIds=[],this.__controllers=[],this.__readyWait=[],this.__viewReadyWait=[],this.__viewCompletedWait=[],this.__nextRenderWait=[],this.userConfig=t,t&&(t.view||t.width)&&this.init(t),ie.list.add(this)}init(t,e){if(this.canvas)return;let i;const{config:s}=this;this.__setLeafer(this),e&&(this.parentApp=e,this.__bindApp(e),i=e.running),t&&(this.parent=e,this.initType(t.type),this.parent=void 0,z.assign(s,t));const o=this.canvas=j.canvas(s);this.__controllers.push(this.renderer=j.renderer(this,o,s),this.watcher=j.watcher(this,s),this.layouter=j.layouter(this,s)),this.isApp&&this.__setApp(),this.__checkAutoLayout(s,e),this.view=o.view,e||(this.selector=j.selector(this),this.interaction=j.interaction(this,o,this.selector,s),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=j.hitCanvasManager()),this.canvasManager=new H,i=s.start),this.hittable=s.hittable,this.fill=s.fill,this.canvasManager.add(o),this.__listenEvents(),i&&(this.__startTimer=setTimeout(this.start.bind(this))),Y.run(this.__initWait),this.onInit()}onInit(){}initType(t){}set(t,e){this.waitInit((()=>{super.set(t,e)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.running=!0,this.ready?this.emitLeafer(U.RESTART):this.emitLeafer(U.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render())}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(U.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(t){const e=z.copyAttrs({},t,n);Object.keys(e).forEach((t=>this[t]=e[t]))}forceRender(t,e){const{renderer:i}=this;i&&(i.addBlock(t?new X(t):this.canvas.bounds),this.viewReady&&(e?i.render():i.update()))}requestRender(t=!1){this.renderer&&this.renderer.update(t)}updateCursor(t){const e=this.interaction;e&&(t?e.setCursor(t):e.updateCursor())}updateLazyBounds(){this.lazyBounds=this.canvas.bounds.clone().spread(this.config.lazySpeard)}__doResize(t){const{canvas:e}=this;if(!e||e.isSameSize(t))return;const i=z.copyAttrs({},this.canvas,n);e.resize(t),this.updateLazyBounds(),this.__onResize(new q(t,i))}__onResize(t){this.emitEvent(t),z.copyAttrs(this.__,t,n),setTimeout((()=>{this.canvasManager&&this.canvasManager.clearRecycled()}),0)}__setApp(){}__bindApp(t){this.selector=t.selector,this.interaction=t.interaction,this.canvasManager=t.canvasManager,this.hitCanvasManager=t.hitCanvasManager}__setLeafer(t){this.leafer=t,this.__level=1}__checkAutoLayout(t,e){e||(t.width&&t.height||(this.autoLayout=new G(t)),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(t,e){return this.canvas&&(n.includes(t)?this.__changeCanvasSize(t,e):"fill"===t?this.__changeFill(e):"hittable"===t?this.parent||(this.canvas.hittable=e):"zIndex"===t&&(this.canvas.zIndex=e,setTimeout((()=>this.parent&&this.parent.__updateSortChildren())))),super.__setAttr(t,e)}__getAttr(t){return this.canvas&&n.includes(t)?this.canvas[t]:super.__getAttr(t)}__changeCanvasSize(t,e){const i=z.copyAttrs({},this.canvas,n);i[t]=this.config[t]=e,e&&this.canvas.stopAutoLayout(),this.__doResize(i)}__changeFill(t){this.config.fill=t,this.canvas.allowBackgroundColor?this.canvas.backgroundColor=t:this.forceRender()}__onCreated(){this.created=!0}__onReady(){this.ready=!0,this.emitLeafer(U.BEFORE_READY),this.emitLeafer(U.READY),this.emitLeafer(U.AFTER_READY),Y.run(this.__readyWait)}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(U.VIEW_READY),Y.run(this.__viewReadyWait))}__onLayoutEnd(){const{grow:t,width:e,height:i}=this.config;if(t){let{width:s,height:o,pixelRatio:r}=this;const a="box"===t?this.worldBoxBounds:this.__world;e||(s=Math.max(1,a.x+a.width)),i||(o=Math.max(1,a.y+a.height)),this.__doResize({width:s,height:o,pixelRatio:r})}this.ready||this.__onReady()}__onNextRender(){if(this.viewReady){Y.run(this.__nextRenderWait);const{imageReady:t}=this;t&&!this.viewCompleted&&this.__checkViewCompleted(),t||(this.viewCompleted=!1,this.requestRender())}else this.requestRender()}__checkViewCompleted(t=!0){this.nextRender((()=>{this.imageReady&&(t&&this.emitLeafer(U.VIEW_COMPLETED),Y.run(this.__viewCompletedWait),this.viewCompleted=!0)}))}__onWatchData(){this.watcher.childrenChanged&&this.interaction&&this.nextRender((()=>this.interaction.updateCursor()))}waitInit(t,e){e&&(t=t.bind(e)),this.__initWait||(this.__initWait=[]),this.canvas?t():this.__initWait.push(t)}waitReady(t,e){e&&(t=t.bind(e)),this.ready?t():this.__readyWait.push(t)}waitViewReady(t,e){e&&(t=t.bind(e)),this.viewReady?t():this.__viewReadyWait.push(t)}waitViewCompleted(t,e){e&&(t=t.bind(e)),this.__viewCompletedWait.push(t),this.viewCompleted?this.__checkViewCompleted(!1):this.running||this.start()}nextRender(t,e,i){e&&(t=t.bind(e));const s=this.__nextRenderWait;if(i){for(let e=0;e<s.length;e++)if(s[e]===t){s.splice(e,1);break}}else s.push(t);this.requestRender()}zoom(t,e,i,o){return s.need("view")}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}getWorldPointByClient(t,e){return this.interaction&&this.interaction.getLocal(t,e)}getPagePointByClient(t,e){return this.getPagePoint(this.getWorldPointByClient(t,e))}getClientPointByWorld(t){const{x:e,y:i}=this.clientBounds;return{x:e+t.x,y:i+t.y}}updateClientBounds(){this.canvas&&this.canvas.updateClientBounds()}receiveEvent(t){}emitLeafer(t){this.emitEvent(new U(t,this))}__listenEvents(){const t=J.start("FirstCreate "+this.innerName);this.once(U.START,(()=>J.end(t))),this.once($.START,(()=>this.updateLazyBounds())),this.once(K.START,(()=>this.__onCreated())),this.once(K.END,(()=>this.__onViewReady())),this.__eventIds.push(this.on_(Q.DATA,this.__onWatchData,this),this.on_($.END,this.__onLayoutEnd,this),this.on_(K.NEXT,this.__onNextRender,this))}__removeListenEvents(){this.off_(this.__eventIds),this.__eventIds.length=0}destroy(t){const e=()=>{if(!this.destroyed){ie.list.remove(this);try{this.stop(),this.emitEvent(new U(U.END,this)),this.__removeListenEvents(),this.__controllers.forEach((t=>!(this.parent&&t===this.interaction)&&t.destroy())),this.__controllers.length=0,this.parent||(this.selector&&this.selector.destroy(),this.hitCanvasManager&&this.hitCanvasManager.destroy(),this.canvasManager.destroy()),this.canvas.destroy(),this.config.view=this.view=this.parentApp=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{Z.clearRecycled()}),100)}catch(t){se.error(t)}}};t?e():setTimeout(e)}};oe.list=new O,lt([h(zt)],oe.prototype,"__",void 0),lt([f()],oe.prototype,"pixelRatio",void 0),oe=ie=lt([T()],oe);let re=class extends te{get __tag(){return"Rect"}constructor(t){super(t)}};lt([h(Ot)],re.prototype,"__",void 0),re=lt([F(Qt),I(),T()],re);const{copy:ae,add:ne,includes:_e}=tt,he=re.prototype,de=ee.prototype,pe={};let le=class extends ee{get __tag(){return"Box"}get isBranchLeaf(){return!0}constructor(t){super(t),this.__layout.renderChanged||this.__layout.renderChange()}__updateStrokeSpread(){return 0}__updateRectRenderSpread(){return 0}__updateRenderSpread(){return this.__updateRectRenderSpread()||-1}__updateRectBoxBounds(){}__updateBoxBounds(t){const e=this.__;if(this.children.length&&!this.pathInputed)if(e.__autoSide){e.__hasSurface&&this.__extraUpdate(),super.__updateBoxBounds();const{boxBounds:t}=this.__layout;e.__autoSize||(e.__autoWidth?(t.width+=t.x,t.x=0,t.height=e.height,t.y=0):(t.height+=t.y,t.y=0,t.width=e.width,t.x=0)),this.__updateNaturalSize()}else this.__updateRectBoxBounds();else this.__updateRectBoxBounds()}__updateStrokeBounds(){}__updateRenderBounds(){let t;const{renderBounds:e}=this.__layout;this.children.length?(super.__updateRenderBounds(),ae(pe,e),this.__updateRectRenderBounds(),t=!_e(e,pe)||void 0,t&&"hide"!==this.__.overflow&&ne(e,pe)):this.__updateRectRenderBounds(),this.isOverflow!==t&&(this.isOverflow=t)}__updateRectRenderBounds(){}__updateRectChange(){}__updateChange(){super.__updateChange(),this.__updateRectChange()}__renderRect(t,e){}__renderGroup(t,e){}__render(t,e){this.__.__drawAfterFill?this.__renderRect(t,e):(this.__renderRect(t,e),this.children.length&&this.__renderGroup(t,e))}__drawContent(t,e){this.__renderGroup(t,e),this.__.__hasStroke&&(t.setWorld(this.__nowWorld),this.__drawRenderPath(t))}};lt([h(Lt)],le.prototype,"__",void 0),lt([f(100)],le.prototype,"width",void 0),lt([f(100)],le.prototype,"height",void 0),lt([d(!1)],le.prototype,"resizeChildren",void 0),lt([et("show")],le.prototype,"overflow",void 0),lt([A(he.__updateStrokeSpread)],le.prototype,"__updateStrokeSpread",null),lt([A(he.__updateRenderSpread)],le.prototype,"__updateRectRenderSpread",null),lt([A(he.__updateBoxBounds)],le.prototype,"__updateRectBoxBounds",null),lt([A(he.__updateStrokeBounds)],le.prototype,"__updateStrokeBounds",null),lt([A(he.__updateRenderBounds)],le.prototype,"__updateRectRenderBounds",null),lt([A(he.__updateChange)],le.prototype,"__updateRectChange",null),lt([A(he.__render)],le.prototype,"__renderRect",null),lt([A(de.__render)],le.prototype,"__renderGroup",null),le=lt([I(),T()],le);let ue=class extends le{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}};lt([h(Tt)],ue.prototype,"__",void 0),lt([p("#FFFFFF")],ue.prototype,"fill",void 0),lt([et("hide")],ue.prototype,"overflow",void 0),ue=lt([T()],ue);const{moveTo:ce,closePath:ye,ellipse:ge}=it;let ve=class extends te{get __tag(){return"Ellipse"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,innerRadius:i,startAngle:s,endAngle:o}=this.__,r=t/2,a=e/2,n=this.__.path=[];i?(s||o?(i<1&&ge(n,r,a,r*i,a*i,0,s,o,!1),ge(n,r,a,r,a,0,o,s,!0),i<1&&ye(n)):(i<1&&(ge(n,r,a,r*i,a*i),ce(n,t,a)),ge(n,r,a,r,a,0,360,0,!0)),st.ellipseToCurve&&(this.__.path=this.getPath(!0))):s||o?(ce(n,r,a),ge(n,r,a,r,a,0,s,o,!1),ye(n)):ge(n,r,a,r,a)}};lt([h(Nt)],ve.prototype,"__",void 0),lt([k(0)],ve.prototype,"innerRadius",void 0),lt([k(0)],ve.prototype,"startAngle",void 0),lt([k(0)],ve.prototype,"endAngle",void 0),ve=lt([T()],ve);const{moveTo:fe,lineTo:we,drawPoints:xe}=it,{rotate:me,getAngle:Re,getDistance:Se,defaultPoint:ke}=ot,{toBounds:be}=rt;let Be=class extends te{get __tag(){return"Line"}get toPoint(){const{width:t,rotation:e}=this.__,i=nt();return t&&(i.x=t),e&&me(i,e),i}set toPoint(t){this.width=Se(ke,t),this.rotation=Re(ke,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__,e=t.path=[];t.points?xe(e,t.points,!1,t.closed):(fe(e,0,0),we(e,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(xe(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&wt.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?be(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}};lt([h(Mt)],Be.prototype,"__",void 0),lt([at("center")],Be.prototype,"strokeAlign",void 0),lt([f(0)],Be.prototype,"height",void 0),lt([k()],Be.prototype,"points",void 0),lt([k(0)],Be.prototype,"curve",void 0),lt([k(!1)],Be.prototype,"closed",void 0),Be=lt([T()],Be);const{sin:Ce,cos:Ae,PI:Pe}=Math,{moveTo:Fe,lineTo:Ie,closePath:Ee,drawPoints:We}=it,De=Be.prototype;let Le=class extends te{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)We(t,this.__.points,!1,!0);else{const{width:e,height:i,sides:s}=this.__,o=e/2,r=i/2;Fe(t,o,0);for(let e=1;e<s;e++)Ie(t,o+o*Ce(2*e*Pe/s),r-r*Ae(2*e*Pe/s))}Ee(t)}__updateRenderPath(){}__updateBoxBounds(){}};lt([h(Vt)],Le.prototype,"__",void 0),lt([k(3)],Le.prototype,"sides",void 0),lt([k()],Le.prototype,"points",void 0),lt([k(0)],Le.prototype,"curve",void 0),lt([A(De.__updateRenderPath)],Le.prototype,"__updateRenderPath",null),lt([A(De.__updateBoxBounds)],Le.prototype,"__updateBoxBounds",null),Le=lt([I(),T()],Le);const{sin:ze,cos:Te,PI:Me}=Math,{moveTo:Oe,lineTo:Ne,closePath:Ve}=it;let je=class extends te{get __tag(){return"Star"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,corners:i,innerRadius:s}=this.__,o=t/2,r=e/2,a=this.__.path=[];Oe(a,o,0);for(let t=1;t<2*i;t++)Ne(a,o+(t%2==0?o:o*s)*ze(t*Me/i),r-(t%2==0?r:r*s)*Te(t*Me/i));Ve(a)}};lt([h(jt)],je.prototype,"__",void 0),lt([k(5)],je.prototype,"corners",void 0),lt([k(.382)],je.prototype,"innerRadius",void 0),je=lt([T()],je);let He=class extends re{get __tag(){return"Image"}get ready(){return!!this.image&&this.image.ready}constructor(t){super(t),this.on_(_t.LOADED,this.__onLoaded,this)}__onLoaded(t){"fill"===t.attrName&&t.attrValue.url===this.url&&(this.image=t.image)}destroy(){this.image=null,super.destroy()}};lt([h(qt)],He.prototype,"__",void 0),lt([f("")],He.prototype,"url",void 0),He=lt([T()],He);const Ye=He;let Ue=class extends re{get __tag(){return"Canvas"}get ready(){return!this.url}constructor(t){super(t),this.canvas=j.canvas(this.__),this.context=this.canvas.context,t&&t.url&&this.drawImage(t.url)}drawImage(t){new ht({url:t}).load((t=>{this.context.drawImage(t.view,0,0),this.url=void 0,this.paint(),this.emitEvent(new _t(_t.LOADED,{image:t}))}))}draw(t,e,i,s){const o=new dt(t.worldTransform).invert(),r=new dt;e&&r.translate(e.x,e.y),i&&("number"==typeof i?r.scale(i):r.scale(i.x,i.y)),s&&r.rotate(s),o.multiplyParent(r),t.__render(this.canvas,{matrix:o.withScale()}),this.paint()}paint(){this.forceRender()}__drawContent(t,e){const{width:i,height:s}=this.__,{view:o}=this.canvas;t.drawImage(o,0,0,o.width,o.height,0,0,i,s)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e,safeResize:i}=this.__;t.resize(this.__,i),t.smooth!==e&&(t.smooth=e)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=this.context=null),super.destroy()}};lt([h(Gt)],Ue.prototype,"__",void 0),lt([ct(100)],Ue.prototype,"width",void 0),lt([ct(100)],Ue.prototype,"height",void 0),lt([ct(1)],Ue.prototype,"pixelRatio",void 0),lt([ct(!0)],Ue.prototype,"smooth",void 0),lt([d(!1)],Ue.prototype,"safeResize",void 0),lt([ct()],Ue.prototype,"contextSettings",void 0),Ue=lt([T()],Ue);const{copyAndSpread:Xe,includes:qe,spread:Ge,setList:Je}=tt;let $e=class extends te{get __tag(){return"Text"}get textDrawData(){return this.updateLayout(),this.__.__textDrawData}constructor(t){super(t)}__updateTextDrawData(){const t=this.__,{lineHeight:e,letterSpacing:i,fontFamily:s,fontSize:o,fontWeight:r,italic:a,textCase:n,textOverflow:_,padding:h}=t;t.__lineHeight=ft.number(e,o),t.__letterSpacing=ft.number(i,o),t.__padding=h?E.fourNumber(h):void 0,t.__baseLine=t.__lineHeight-(t.__lineHeight-.7*o)/2,t.__font=`${a?"italic ":""}${"small-caps"===n?"small-caps ":""}${"normal"!==r?r+" ":""}${o}px ${s}`,t.__clipText="show"!==_&&!t.__autoSize,t.__textDrawData=gt.getDrawData((t.__isPlacehold=t.placeholder&&""===t.text)?t.placeholder:t.text,this.__)}__updateBoxBounds(){const t=this.__,e=this.__layout,{fontSize:i,italic:s,padding:o,__autoWidth:r,__autoHeight:a}=t;this.__updateTextDrawData();const{bounds:n}=t.__textDrawData,_=e.boxBounds;if(e.contentBounds=n,t.__lineHeight<i&&Ge(n,i/2),r||a){if(_.x=r?n.x:0,_.y=a?n.y:0,_.width=r?n.width:t.width,_.height=a?n.height:t.height,o){const[e,i,s,o]=t.__padding;r&&(_.x-=o,_.width+=i+o),a&&(_.y-=e,_.height+=s+e)}this.__updateNaturalSize()}else super.__updateBoxBounds();s&&(_.width+=.16*i);const h=!qe(_,n)||void 0;h?(Je(t.__textBoxBounds={},[_,n]),e.renderChanged=!0):t.__textBoxBounds=_,this.isOverflow!==h&&(this.isOverflow=h)}__onUpdateSize(){this.__box&&this.__box.__onUpdateSize(),super.__onUpdateSize()}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.isOverflow?1:0),t}__updateRenderBounds(){const{renderBounds:t,renderSpread:e}=this.__layout;Xe(t,this.__.__textBoxBounds,e),this.__box&&(this.__box.__layout.renderBounds=t)}__drawRenderPath(t){t.font=this.__.__font}__draw(t,e,i){const s=this.__box;s&&(s.__nowWorld=this.__nowWorld,s.__draw(t,e,i)),this.textEditing&&!bt.running||super.__draw(t,e,i)}destroy(){this.boxStyle&&(this.boxStyle=null),super.destroy()}};lt([h(Xt)],$e.prototype,"__",void 0),lt([f(0)],$e.prototype,"width",void 0),lt([f(0)],$e.prototype,"height",void 0),lt([p()],$e.prototype,"boxStyle",void 0),lt([d(!1)],$e.prototype,"resizeFontSize",void 0),lt([p("#000000")],$e.prototype,"fill",void 0),lt([at("outside")],$e.prototype,"strokeAlign",void 0),lt([b("all")],$e.prototype,"hitFill",void 0),lt([f("")],$e.prototype,"text",void 0),lt([f("")],$e.prototype,"placeholder",void 0),lt([f("caption")],$e.prototype,"fontFamily",void 0),lt([f(12)],$e.prototype,"fontSize",void 0),lt([f("normal")],$e.prototype,"fontWeight",void 0),lt([f(!1)],$e.prototype,"italic",void 0),lt([f("none")],$e.prototype,"textCase",void 0),lt([f("none")],$e.prototype,"textDecoration",void 0),lt([f(0)],$e.prototype,"letterSpacing",void 0),lt([f({type:"percent",value:1.5})],$e.prototype,"lineHeight",void 0),lt([f(0)],$e.prototype,"paraIndent",void 0),lt([f(0)],$e.prototype,"paraSpacing",void 0),lt([f("x")],$e.prototype,"writingMode",void 0),lt([f("left")],$e.prototype,"textAlign",void 0),lt([f("top")],$e.prototype,"verticalAlign",void 0),lt([f(!0)],$e.prototype,"autoSizeAlign",void 0),lt([f("normal")],$e.prototype,"textWrap",void 0),lt([f("show")],$e.prototype,"textOverflow",void 0),$e=lt([T()],$e);let Ke=class extends te{get __tag(){return"Path"}constructor(t){super(t)}};lt([h(Ht)],Ke.prototype,"__",void 0),lt([at("center")],Ke.prototype,"strokeAlign",void 0),Ke=lt([T()],Ke);let Qe=class extends ee{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new Ke(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this}moveTo(t,e){return this}lineTo(t,e){return this}bezierCurveTo(t,e,i,s,o,r){return this}quadraticCurveTo(t,e,i,s){return this}closePath(){return this}rect(t,e,i,s){return this}roundRect(t,e,i,s,o){return this}ellipse(t,e,i,s,o,r,a,n){return this}arc(t,e,i,s,o,r){return this}arcTo(t,e,i,s,o){return this}drawEllipse(t,e,i,s,o,r,a,n){return this}drawArc(t,e,i,s,o,r){return this}drawPoints(t,e,i){return this}clearPath(){return this}paint(){this.pathElement.__layout.boxChanged||this.pathElement.forceUpdate("path")}};lt([h(Yt)],Qe.prototype,"__",void 0),lt([(e,i)=>{t(e,i,{get(){return this.__path}})}],Qe.prototype,"path",void 0),Qe=lt([F(pt,["set","path","paint"]),T()],Qe);export{le as Box,Lt as BoxData,Ue as Canvas,Gt as CanvasData,vt as ColorConvert,St as Effect,ve as Ellipse,Nt as EllipseData,bt as Export,kt as Filter,ue as Frame,Tt as FrameData,ee as Group,Dt as GroupData,He as Image,qt as ImageData,oe as Leafer,zt as LeaferData,Be as Line,Mt as LineData,Ye as MyImage,xt as Paint,Rt as PaintGradient,mt as PaintImage,Ke as Path,wt as PathArrow,Ht as PathData,Qe as Pen,Yt as PenData,Le as Polygon,Vt as PolygonData,re as Rect,Ot as RectData,Qt as RectRender,je as Star,jt as StarData,Bt as State,$e as Text,gt as TextConvert,Xt as TextData,Ct as Transition,te as UI,Jt as UIBounds,Et as UIData,$t as UIRender,ft as UnitConvert,ut as effectType,ct as resizeType,yt as zoomLayerType};
|
|
1
|
+
import{defineKey as t,decorateLeafAttr as e,attr as i,Plugin as s,PathConvert as o,DataHelper as r,Debug as a,LeafData as n,canvasSizeAttrs as _,UICreator as h,dataProcessor as d,dataType as p,surfaceType as l,opacityType as u,visibleType as c,sortType as y,maskType as g,eraserType as v,positionType as f,boundsType as w,scaleType as x,rotationType as m,autoLayoutType as R,naturalBoundsType as S,pathInputType as k,pathType as b,hitType as B,strokeType as A,cursorType as C,rewrite as P,Leaf as F,useModule as W,rewriteAble as E,MathHelper as I,pen as T,PathCorner as D,PathDrawer as z,registerUI as L,Branch as M,LeafList as O,Resource as N,getBoundsData as V,Creator as j,CanvasManager as Y,WaitHelper as H,LeaferEvent as U,Bounds as X,ResizeEvent as q,AutoBounds as G,Run as J,LayoutEvent as $,RenderEvent as K,WatchEvent as Q,ImageManager as Z,BoundsHelper as tt,affectRenderBoundsType as et,PathCommandDataHelper as it,Platform as st,PointHelper as ot,PathBounds as rt,affectStrokeBoundsType as at,getPointData as nt,LeaferImage as _t,ImageEvent as ht,Matrix as dt,PathCreator as pt}from"@leafer/core";export*from"@leafer/core";function lt(t,e,i,s){var o,r=arguments.length,a=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,s);else for(var n=t.length-1;n>=0;n--)(o=t[n])&&(a=(r<3?o(a):r>3?o(e,i,a):o(e,i))||a);return r>3&&a&&Object.defineProperty(e,i,a),a}function ut(t){return e(t,(t=>i({set(e){this.__setAttr(t,e),e&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function ct(t){return e(t,(t=>i({set(e){this.__setAttr(t,e),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function yt(){return(e,i)=>{const s="_"+i;t(e,i,{set(t){this.isLeafer&&(this[s]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[s]||this:this.leafer&&this.leafer.zoomLayer}})}}"function"==typeof SuppressedError&&SuppressedError;const gt={},vt={hasTransparent:function(t){if(!t||7===t.length||4===t.length)return!1;if("transparent"===t)return!0;const e=t[0];if("#"===e)switch(t.length){case 5:return"f"!==t[4]&&"F"!==t[4];case 9:return"f"!==t[7]&&"F"!==t[7]||"f"!==t[8]&&"F"!==t[8]}else if(("r"===e||"h"===e)&&"a"===t[3]){const e=t.lastIndexOf(",");if(e>-1)return parseFloat(t.slice(e+1))<1}return!1}},ft={number:(t,e)=>"object"==typeof t?"percent"===t.type?t.value*e:t.value:t},wt={},xt={},mt={},Rt={},St={},kt={apply(){s.need("filter")}},bt={},Bt={setStyleName:()=>s.need("state"),set:()=>s.need("state")},At={list:{},register(t,e){At.list[t]=e},get:t=>At.list[t]},{parse:Ct,objectToCanvasData:Pt}=o,{stintSet:Ft}=r,{hasTransparent:Wt}=vt,Et={},It=a.get("UIData");class Tt extends n{get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get __strokeWidth(){const{strokeWidth:t,strokeWidthFixed:e}=this;if(e){const e=this.__leaf;let{scaleX:i}=e.__nowWorld||e.__world;return i<0&&(i=-i),i>1?t/i:t}return t}get __hasStroke(){return this.stroke&&this.strokeWidth}get __hasHalf(){const t=this;return t.stroke&&"center"===t.strokeAlign&&t.strokeWidth%2||void 0}get __hasMultiPaint(){const t=this;return!!(t.__isFills&&t.fill.length>1||t.__isStrokes&&t.stroke.length>1||t.__useEffect)||t.fill&&this.__hasStroke}get __clipAfterFill(){const t=this;return t.cornerRadius||t.innerShadow||t.__pathInputed}get __hasSurface(){return this.fill||this.stroke}get __autoWidth(){return!this._width}get __autoHeight(){return!this._height}get __autoSide(){return!this._width||!this._height}get __autoSize(){return!this._width&&!this._height}setVisible(t){this._visible=t;const{leafer:e}=this.__leaf;e&&(e.watcher.hasVisible=!0)}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,It.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,It.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t?"object"==typeof t&&this.__setPaint("fill",t):(Ft(this,"__isTransparentFill",Wt(t)),this.__isFills&&this.__removePaint("fill",!0),this._fill=t)}setStroke(t){"string"!=typeof t&&t?"object"==typeof t&&this.__setPaint("stroke",t):(Ft(this,"__isTransparentStroke",Wt(t)),this.__isStrokes&&this.__removePaint("stroke",!0),this._stroke=t)}setPath(t){const e="string"==typeof t;e||t&&"object"==typeof t[0]?(this.__setInput("path",t),this._path=e?Ct(t):Pt(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){Dt(this,"shadow",t)}setInnerShadow(t){Dt(this,"innerShadow",t)}setFilter(t){Dt(this,"filter",t)}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&xt.compute("fill",this.__leaf),e&&xt.compute("stroke",this.__leaf),this.__needComputePaint=void 0}__setPaint(t,e){this.__setInput(t,e);const i=this.__leaf.__layout;i.boxChanged||i.boxChange(),e instanceof Array&&!e.length?this.__removePaint(t):"fill"===t?(this.__isFills=!0,this._fill||(this._fill=Et)):(this.__isStrokes=!0,this._stroke||(this._stroke=Et))}__removePaint(t,e){e&&this.__removeInput(t),mt.recycleImage(t,this),"fill"===t?(Ft(this,"__isAlphaPixelFill",void 0),this._fill=this.__isFills=void 0):(Ft(this,"__isAlphaPixelStroke",void 0),this._stroke=this.__isStrokes=void 0)}}function Dt(t,e,i){t.__setInput(e,i),i instanceof Array?(i.some((t=>!1===t.visible))&&(i=i.filter((t=>!1!==t.visible))),i.length||(i=void 0)):i=i&&!1!==i.visible?[i]:void 0,t["_"+e]=i}class zt extends Tt{}class Lt extends zt{get __boxStroke(){return!this.__pathInputed}get __drawAfterFill(){const t=this;return"hide"===t.overflow&&(t.__clipAfterFill||t.innerShadow)&&t.__leaf.children.length}get __clipAfterFill(){return this.__leaf.isOverflow||super.__clipAfterFill}}class Mt extends zt{__getInputData(t,e){const i=super.__getInputData(t,e);return _.forEach((t=>delete i[t])),i}}class Ot extends Lt{}class Nt extends Tt{}class Vt extends Tt{get __boxStroke(){return!this.__pathInputed}}class jt extends Tt{get __boxStroke(){return!this.__pathInputed}}class Yt extends Tt{}class Ht extends Tt{}class Ut extends Tt{get __pathInputed(){return 2}}class Xt extends zt{}const qt={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class Gt extends Tt{get __useNaturalRatio(){return!1}setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),t=qt[t]||400):this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t}setBoxStyle(t){let e=this.__leaf,i=e.__box;if(t){const{boxStyle:s}=this;if(i)for(let t in s)i[t]=void 0;else i=e.__box=h.get("Rect",0);const o=e.__layout,r=i.__layout;s||(i.parent=e,i.__world=e.__world,r.boxBounds=o.boxBounds),i.set(t),r.strokeChanged&&o.strokeChange(),r.renderChanged&&o.renderChange(),i.__updateChange()}else i&&(e.__box=i.parent=null,i.destroy());this._boxStyle=t}}class Jt extends Vt{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.fill=t?{type:"image",mode:"stretch",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(t,e){const i=super.__getInputData(t,e);return delete i.fill,i}}class $t extends Vt{get __isCanvas(){return!0}get __drawAfterFill(){return!0}__getInputData(t,e){const i=super.__getInputData(t,e);return i.url=this.__leaf.canvas.toDataURL("image/png"),i}}const Kt={__updateStrokeSpread(){let t=0,e=0;const i=this.__,{strokeAlign:s,strokeWidth:o}=i,r=this.__box;if((i.stroke||"all"===i.hitStroke)&&o&&"inside"!==s&&(e=t="center"===s?o/2:o,!i.__boxStroke)){const e=i.__isLinePath?0:10*t,s="none"===i.strokeCap?0:o;t+=Math.max(e,s)}return i.__useArrow&&(t+=5*o),r&&(t=Math.max(r.__layout.strokeSpread=r.__updateStrokeSpread(),t),e=r.__layout.strokeBoxSpread),this.__layout.strokeBoxSpread=e,t},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o,filter:r}=this.__;e&&e.forEach((e=>t=Math.max(t,Math.max(Math.abs(e.y),Math.abs(e.x))+(e.spread>0?e.spread:0)+1.5*e.blur))),s&&(t=Math.max(t,s)),r&&(t+=kt.getSpread(r));let a=t=Math.ceil(t);return i&&i.forEach((t=>a=Math.max(a,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur))),o&&(a=Math.max(a,o)),this.__layout.renderShapeSpread=a,t+=this.__layout.strokeSpread||0,this.__box?Math.max(this.__box.__updateRenderSpread(),t):t}},{stintSet:Qt}=r,Zt={__updateChange(){const t=this.__;if(t.__useEffect){const{shadow:e,fill:i,stroke:s}=t,o=t.innerShadow||t.blur||t.backgroundBlur||t.filter;Qt(t,"__isFastShadow",e&&!o&&e.length<2&&!e[0].spread&&!(e[0].box&&t.__isTransparentFill)&&i&&!(i instanceof Array&&i.length>1)&&(this.useFastShadow||!s||s&&"inside"===t.strokeAlign)),t.__useEffect=!(!e&&!o)}Qt(this.__world,"half",t.__hasHalf),Qt(t,"__fillAfterStroke",t.stroke&&"outside"===t.strokeAlign&&t.fill&&!t.__isTransparentFill),t.__checkSingle(),Qt(t,"__complex",t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect)},__drawFast(t,e){te(this,t,e)},__draw(t,e,i){const s=this.__;if(s.__complex){s.__needComputePaint&&s.__computePaint();const{fill:o,stroke:r,__drawAfterFill:a,__fillAfterStroke:n,__isFastShadow:_}=s;if(this.__drawRenderPath(t),s.__useEffect&&!_){const _=xt.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:h,innerShadow:d,filter:p}=s;h&&St.shadow(this,t,_),n&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t)),o&&(s.__isFills?xt.fills(o,this,t):xt.fill(o,this,t)),a&&this.__drawAfterFill(t,e),d&&St.innerShadow(this,t,_),r&&!n&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t)),p&&kt.apply(p,this,this.__nowWorld,t,i,_),_.worldCanvas&&_.worldCanvas.recycle(),_.canvas.recycle()}else{if(n&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t)),_){const e=s.shadow[0],{scaleX:i,scaleY:o}=this.__nowWorld;t.save(),t.setWorldShadow(e.x*i,e.y*o,e.blur*i,vt.string(e.color))}o&&(s.__isFills?xt.fills(o,this,t):xt.fill(o,this,t)),_&&t.restore(),a&&this.__drawAfterFill(t,e),r&&!n&&(s.__isStrokes?xt.strokes(r,this,t):xt.stroke(r,this,t))}}else s.__pathInputed?te(this,t,e):this.__drawFast(t,e)},__renderShape(t,e,i,s){if(this.__worldOpacity){t.setWorld(this.__nowWorld=this.__getNowWorld(e));const{fill:o,stroke:r}=this.__;this.__drawRenderPath(t),o&&!i&&(this.__.__isAlphaPixelFill?xt.fills(o,this,t):xt.fill("#000000",this,t)),this.__.__isCanvas&&this.__drawAfterFill(t,e),r&&!s&&(this.__.__isAlphaPixelStroke?xt.strokes(r,this,t):xt.stroke("#000000",this,t))}},__drawAfterFill(t,e){this.__.__clipAfterFill?(t.save(),this.windingRule?t.clip(this.windingRule):t.clip(),this.__drawContent(t,e),t.restore()):this.__drawContent(t,e)}};function te(t,e,i){const{fill:s,stroke:o,__drawAfterFill:r,__fillAfterStroke:a}=t.__;t.__drawRenderPath(e),a&&xt.stroke(o,t,e),s&&xt.fill(s,t,e),r&&t.__drawAfterFill(e,i),o&&!a&&xt.stroke(o,t,e)}const ee={__drawFast(t,e){let{x:i,y:s,width:o,height:r}=this.__layout.boxBounds;const{fill:a,stroke:n,__drawAfterFill:_}=this.__;if(a&&(t.fillStyle=a,t.fillRect(i,s,o,r)),_&&this.__drawAfterFill(t,e),n){const{strokeAlign:a,__strokeWidth:_}=this.__;if(!_)return;t.setStroke(n,_,this.__);const h=_/2;switch(a){case"center":t.strokeRect(0,0,o,r);break;case"inside":o-=_,r-=_,o<0||r<0?(t.save(),this.__clip(t,e),t.strokeRect(i+h,s+h,o,r),t.restore()):t.strokeRect(i+h,s+h,o,r);break;case"outside":t.strokeRect(i-h,s-h,o+_,r+_)}}}};var ie;let se=ie=class extends F{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){I.assignScale(this,t)}get scale(){return this.__.scale}get pen(){const{path:t}=this.__;return T.set(this.path=t||[]),t||this.__drawPathByBox(T),T}constructor(t){super(t)}reset(t){}set(t,e){t&&(e?"temp"===e?(this.lockNormalStyle=!0,Object.assign(this,t),this.lockNormalStyle=!1):this.animate(t,e):Object.assign(this,t))}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){return s.need("find")}findTag(t){return this.find({tag:t})}findOne(t,e){return s.need("find")}findId(t){return this.findOne({id:t})}getPath(t,e){this.__layout.update();let i=e?this.__.__pathForRender:this.__.path;return i||(T.set(i=[]),this.__drawPathByBox(T)),t?o.toCanvasData(i,!0):i}getPathString(t,e,i){return o.stringify(this.getPath(t,e),i)}load(){this.__.__computePaint()}__onUpdateSize(){if(this.__.__input){const t=this.__;!t.lazy||this.__inLazyBounds||bt.running?t.__computePaint():t.__needComputePaint=!0}}__updateRenderPath(){if(this.__.path){const t=this.__;t.__pathForRender=t.cornerRadius?D.smooth(t.path,t.cornerRadius,t.cornerSmoothing):t.path,t.__useArrow&&wt.addArrows(this,!t.cornerRadius)}}__drawRenderPath(t){t.beginPath(),this.__drawPathByData(t,this.__.__pathForRender)}__drawPath(t){t.beginPath(),this.__drawPathByData(t,this.__.path)}__drawPathByData(t,e){e?z.drawPathByData(t,e):this.__drawPathByBox(t)}__drawPathByBox(t){const{x:e,y:i,width:s,height:o}=this.__layout.boxBounds;if(this.__.cornerRadius){const{cornerRadius:r}=this.__;t.roundRect(e,i,s,o,"number"==typeof r?[r]:r)}else t.rect(e,i,s,o)}drawImagePlaceholder(t,e){xt.fill(this.__.placeholderColor,this,t)}animate(t,e,i,o){return s.need("animate")}killAnimate(t,e){}export(t,e){return s.need("export")}syncExport(t,e){return s.need("export")}clone(t){const e=r.clone(this.toJSON());return t&&Object.assign(e,t),ie.one(e)}static one(t,e,i,s,o){return h.get(t.tag||this.prototype.__tag,t,e,i,s,o)}static registerUI(){L()(this)}static registerData(t){d(t)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,this.__animate&&this.killAnimate(),super.destroy()}};lt([d(Tt)],se.prototype,"__",void 0),lt([yt()],se.prototype,"zoomLayer",void 0),lt([p("")],se.prototype,"id",void 0),lt([p("")],se.prototype,"name",void 0),lt([p("")],se.prototype,"className",void 0),lt([l("pass-through")],se.prototype,"blendMode",void 0),lt([u(1)],se.prototype,"opacity",void 0),lt([c(!0)],se.prototype,"visible",void 0),lt([l(!1)],se.prototype,"locked",void 0),lt([l(!1)],se.prototype,"dim",void 0),lt([l(!1)],se.prototype,"dimskip",void 0),lt([y(0)],se.prototype,"zIndex",void 0),lt([g(!1)],se.prototype,"mask",void 0),lt([v(!1)],se.prototype,"eraser",void 0),lt([f(0,!0)],se.prototype,"x",void 0),lt([f(0,!0)],se.prototype,"y",void 0),lt([w(100,!0)],se.prototype,"width",void 0),lt([w(100,!0)],se.prototype,"height",void 0),lt([x(1,!0)],se.prototype,"scaleX",void 0),lt([x(1,!0)],se.prototype,"scaleY",void 0),lt([m(0,!0)],se.prototype,"rotation",void 0),lt([m(0,!0)],se.prototype,"skewX",void 0),lt([m(0,!0)],se.prototype,"skewY",void 0),lt([f(0,!0)],se.prototype,"offsetX",void 0),lt([f(0,!0)],se.prototype,"offsetY",void 0),lt([f(0,!0)],se.prototype,"scrollX",void 0),lt([f(0,!0)],se.prototype,"scrollY",void 0),lt([R()],se.prototype,"origin",void 0),lt([R()],se.prototype,"around",void 0),lt([p(!1)],se.prototype,"lazy",void 0),lt([S(1)],se.prototype,"pixelRatio",void 0),lt([k()],se.prototype,"path",void 0),lt([b()],se.prototype,"windingRule",void 0),lt([b(!0)],se.prototype,"closed",void 0),lt([w(0)],se.prototype,"padding",void 0),lt([w(!1)],se.prototype,"lockRatio",void 0),lt([w()],se.prototype,"widthRange",void 0),lt([w()],se.prototype,"heightRange",void 0),lt([p(!1)],se.prototype,"draggable",void 0),lt([p()],se.prototype,"dragBounds",void 0),lt([p(!1)],se.prototype,"editable",void 0),lt([B(!0)],se.prototype,"hittable",void 0),lt([B("path")],se.prototype,"hitFill",void 0),lt([A("path")],se.prototype,"hitStroke",void 0),lt([B(!1)],se.prototype,"hitBox",void 0),lt([B(!0)],se.prototype,"hitChildren",void 0),lt([B(!0)],se.prototype,"hitSelf",void 0),lt([B()],se.prototype,"hitRadius",void 0),lt([C("")],se.prototype,"cursor",void 0),lt([l()],se.prototype,"fill",void 0),lt([A()],se.prototype,"stroke",void 0),lt([A("inside")],se.prototype,"strokeAlign",void 0),lt([A(1)],se.prototype,"strokeWidth",void 0),lt([A(!1)],se.prototype,"strokeWidthFixed",void 0),lt([A("none")],se.prototype,"strokeCap",void 0),lt([A("miter")],se.prototype,"strokeJoin",void 0),lt([A()],se.prototype,"dashPattern",void 0),lt([A(0)],se.prototype,"dashOffset",void 0),lt([A(10)],se.prototype,"miterLimit",void 0),lt([b(0)],se.prototype,"cornerRadius",void 0),lt([b()],se.prototype,"cornerSmoothing",void 0),lt([ut()],se.prototype,"shadow",void 0),lt([ut()],se.prototype,"innerShadow",void 0),lt([ut()],se.prototype,"blur",void 0),lt([ut()],se.prototype,"backgroundBlur",void 0),lt([ut()],se.prototype,"grayscale",void 0),lt([ut()],se.prototype,"filter",void 0),lt([l()],se.prototype,"placeholderColor",void 0),lt([p(100)],se.prototype,"placeholderDelay",void 0),lt([p({})],se.prototype,"data",void 0),lt([P(F.prototype.reset)],se.prototype,"reset",null),se=ie=lt([W(Kt),W(Zt),E()],se);let oe=class extends se{get __tag(){return"Group"}get isBranch(){return!0}constructor(t){super(t)}reset(t){this.__setBranch(),super.reset(t)}__setBranch(){this.children||(this.children=[])}set(t,e){if(t)if(t.children){const{children:i}=t;delete t.children,this.children?this.clear():this.__setBranch(),super.set(t,e),i.forEach((t=>this.add(t))),t.children=i}else super.set(t,e)}toJSON(t){const e=super.toJSON(t);return e.children=this.children.map((e=>e.toJSON(t))),e}pick(t,e){}addAt(t,e){this.add(t,e)}addAfter(t,e){this.add(t,this.children.indexOf(e)+1)}addBefore(t,e){this.add(t,this.children.indexOf(e))}add(t,e){}addMany(...t){}remove(t,e){}removeAll(t){}clear(){}};var re;lt([d(zt)],oe.prototype,"__",void 0),lt([w(0)],oe.prototype,"width",void 0),lt([w(0)],oe.prototype,"height",void 0),oe=lt([W(M),L()],oe);const ae=a.get("Leafer");let ne=re=class extends oe{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&N.isComplete}get layoutLocked(){return!this.layouter.running}get FPS(){return this.renderer?this.renderer.FPS:60}get cursorPoint(){return this.interaction&&this.interaction.hoverData||{x:this.width/2,y:this.height/2}}get clientBounds(){return this.canvas&&this.canvas.getClientBounds(!0)||V()}constructor(t,e){super(e),this.config={start:!0,hittable:!0,smooth:!0,lazySpeard:100},this.leafs=0,this.__eventIds=[],this.__controllers=[],this.__readyWait=[],this.__viewReadyWait=[],this.__viewCompletedWait=[],this.__nextRenderWait=[],this.userConfig=t,t&&(t.view||t.width)&&this.init(t),re.list.add(this)}init(t,e){if(this.canvas)return;let i;const{config:s}=this;this.__setLeafer(this),e&&(this.parentApp=e,this.__bindApp(e),i=e.running),t&&(this.parent=e,this.initType(t.type),this.parent=void 0,r.assign(s,t));const o=this.canvas=j.canvas(s);this.__controllers.push(this.renderer=j.renderer(this,o,s),this.watcher=j.watcher(this,s),this.layouter=j.layouter(this,s)),this.isApp&&this.__setApp(),this.__checkAutoLayout(s,e),this.view=o.view,e||(this.selector=j.selector(this),this.interaction=j.interaction(this,o,this.selector,s),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=j.hitCanvasManager()),this.canvasManager=new Y,i=s.start),this.hittable=s.hittable,this.fill=s.fill,this.canvasManager.add(o),this.__listenEvents(),i&&(this.__startTimer=setTimeout(this.start.bind(this))),H.run(this.__initWait),this.onInit()}onInit(){}initType(t){}set(t,e){this.waitInit((()=>{super.set(t,e)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.running=!0,this.ready?this.emitLeafer(U.RESTART):this.emitLeafer(U.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render())}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(U.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(t){const e=r.copyAttrs({},t,_);Object.keys(e).forEach((t=>this[t]=e[t]))}forceRender(t,e){const{renderer:i}=this;i&&(i.addBlock(t?new X(t):this.canvas.bounds),this.viewReady&&(e?i.render():i.update()))}requestRender(t=!1){this.renderer&&this.renderer.update(t)}updateCursor(t){const e=this.interaction;e&&(t?e.setCursor(t):e.updateCursor())}updateLazyBounds(){this.lazyBounds=this.canvas.bounds.clone().spread(this.config.lazySpeard)}__doResize(t){const{canvas:e}=this;if(!e||e.isSameSize(t))return;const i=r.copyAttrs({},this.canvas,_);e.resize(t),this.updateLazyBounds(),this.__onResize(new q(t,i))}__onResize(t){this.emitEvent(t),r.copyAttrs(this.__,t,_),setTimeout((()=>{this.canvasManager&&this.canvasManager.clearRecycled()}),0)}__setApp(){}__bindApp(t){this.selector=t.selector,this.interaction=t.interaction,this.canvasManager=t.canvasManager,this.hitCanvasManager=t.hitCanvasManager}__setLeafer(t){this.leafer=t,this.__level=1}__checkAutoLayout(t,e){e||(t.width&&t.height||(this.autoLayout=new G(t)),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(t,e){return this.canvas&&(_.includes(t)?this.__changeCanvasSize(t,e):"fill"===t?this.__changeFill(e):"hittable"===t?this.parent||(this.canvas.hittable=e):"zIndex"===t&&(this.canvas.zIndex=e,setTimeout((()=>this.parent&&this.parent.__updateSortChildren())))),super.__setAttr(t,e)}__getAttr(t){return this.canvas&&_.includes(t)?this.canvas[t]:super.__getAttr(t)}__changeCanvasSize(t,e){const i=r.copyAttrs({},this.canvas,_);i[t]=this.config[t]=e,e&&this.canvas.stopAutoLayout(),this.__doResize(i)}__changeFill(t){this.config.fill=t,this.canvas.allowBackgroundColor?this.canvas.backgroundColor=t:this.forceRender()}__onCreated(){this.created=!0}__onReady(){this.ready=!0,this.emitLeafer(U.BEFORE_READY),this.emitLeafer(U.READY),this.emitLeafer(U.AFTER_READY),H.run(this.__readyWait)}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(U.VIEW_READY),H.run(this.__viewReadyWait))}__onLayoutEnd(){const{grow:t,width:e,height:i}=this.config;if(t){let{width:s,height:o,pixelRatio:r}=this;const a="box"===t?this.worldBoxBounds:this.__world;e||(s=Math.max(1,a.x+a.width)),i||(o=Math.max(1,a.y+a.height)),this.__doResize({width:s,height:o,pixelRatio:r})}this.ready||this.__onReady()}__onNextRender(){if(this.viewReady){H.run(this.__nextRenderWait);const{imageReady:t}=this;t&&!this.viewCompleted&&this.__checkViewCompleted(),t||(this.viewCompleted=!1,this.requestRender())}else this.requestRender()}__checkViewCompleted(t=!0){this.nextRender((()=>{this.imageReady&&(t&&this.emitLeafer(U.VIEW_COMPLETED),H.run(this.__viewCompletedWait),this.viewCompleted=!0)}))}__onWatchData(){this.watcher.childrenChanged&&this.interaction&&this.nextRender((()=>this.interaction.updateCursor()))}waitInit(t,e){e&&(t=t.bind(e)),this.__initWait||(this.__initWait=[]),this.canvas?t():this.__initWait.push(t)}waitReady(t,e){e&&(t=t.bind(e)),this.ready?t():this.__readyWait.push(t)}waitViewReady(t,e){e&&(t=t.bind(e)),this.viewReady?t():this.__viewReadyWait.push(t)}waitViewCompleted(t,e){e&&(t=t.bind(e)),this.__viewCompletedWait.push(t),this.viewCompleted?this.__checkViewCompleted(!1):this.running||this.start()}nextRender(t,e,i){e&&(t=t.bind(e));const s=this.__nextRenderWait;if(i){for(let e=0;e<s.length;e++)if(s[e]===t){s.splice(e,1);break}}else s.push(t);this.requestRender()}zoom(t,e,i,o){return s.need("view")}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}getWorldPointByClient(t,e){return this.interaction&&this.interaction.getLocal(t,e)}getPagePointByClient(t,e){return this.getPagePoint(this.getWorldPointByClient(t,e))}getClientPointByWorld(t){const{x:e,y:i}=this.clientBounds;return{x:e+t.x,y:i+t.y}}updateClientBounds(){this.canvas&&this.canvas.updateClientBounds()}receiveEvent(t){}emitLeafer(t){this.emitEvent(new U(t,this))}__listenEvents(){const t=J.start("FirstCreate "+this.innerName);this.once([[U.START,()=>J.end(t)],[$.START,this.updateLazyBounds,this],[K.START,this.__onCreated,this],[K.END,this.__onViewReady,this]]),this.__eventIds.push(this.on_([[Q.DATA,this.__onWatchData,this],[$.END,this.__onLayoutEnd,this],[K.NEXT,this.__onNextRender,this]]))}__removeListenEvents(){this.off_(this.__eventIds)}destroy(t){const e=()=>{if(!this.destroyed){re.list.remove(this);try{this.stop(),this.emitEvent(new U(U.END,this)),this.__removeListenEvents(),this.__controllers.forEach((t=>!(this.parent&&t===this.interaction)&&t.destroy())),this.__controllers.length=0,this.parent||(this.selector&&this.selector.destroy(),this.hitCanvasManager&&this.hitCanvasManager.destroy(),this.canvasManager.destroy()),this.canvas.destroy(),this.config.view=this.view=this.parentApp=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{Z.clearRecycled()}),100)}catch(t){ae.error(t)}}};t?e():setTimeout(e)}};ne.list=new O,lt([d(Mt)],ne.prototype,"__",void 0),lt([w()],ne.prototype,"pixelRatio",void 0),ne=re=lt([L()],ne);let _e=class extends se{get __tag(){return"Rect"}constructor(t){super(t)}};lt([d(Vt)],_e.prototype,"__",void 0),_e=lt([W(ee),E(),L()],_e);const{copy:he,add:de,includes:pe}=tt,le=_e.prototype,ue=oe.prototype,ce={};let ye=class extends oe{get __tag(){return"Box"}get isBranchLeaf(){return!0}constructor(t){super(t),this.__layout.renderChanged||this.__layout.renderChange()}__updateStrokeSpread(){return 0}__updateRectRenderSpread(){return 0}__updateRenderSpread(){return this.__updateRectRenderSpread()||-1}__updateRectBoxBounds(){}__updateBoxBounds(t){const e=this.__;if(this.children.length&&!this.pathInputed)if(e.__autoSide){e.__hasSurface&&this.__extraUpdate(),super.__updateBoxBounds();const{boxBounds:t}=this.__layout;e.__autoSize||(e.__autoWidth?(t.width+=t.x,t.x=0,t.height=e.height,t.y=0):(t.height+=t.y,t.y=0,t.width=e.width,t.x=0)),this.__updateNaturalSize()}else this.__updateRectBoxBounds();else this.__updateRectBoxBounds()}__updateStrokeBounds(){}__updateRenderBounds(){let t;const{renderBounds:e}=this.__layout;this.children.length?(super.__updateRenderBounds(),he(ce,e),this.__updateRectRenderBounds(),t=!pe(e,ce),t&&"hide"!==this.__.overflow&&de(e,ce)):this.__updateRectRenderBounds(),r.stintSet(this,"isOverflow",t)}__updateRectRenderBounds(){}__updateRectChange(){}__updateChange(){super.__updateChange(),this.__updateRectChange()}__renderRect(t,e){}__renderGroup(t,e){}__render(t,e){this.__.__drawAfterFill?this.__renderRect(t,e):(this.__renderRect(t,e),this.children.length&&this.__renderGroup(t,e))}__drawContent(t,e){this.__renderGroup(t,e),this.__.__hasStroke&&(t.setWorld(this.__nowWorld),this.__drawRenderPath(t))}};lt([d(Lt)],ye.prototype,"__",void 0),lt([w(100)],ye.prototype,"width",void 0),lt([w(100)],ye.prototype,"height",void 0),lt([p(!1)],ye.prototype,"resizeChildren",void 0),lt([et("show")],ye.prototype,"overflow",void 0),lt([P(le.__updateStrokeSpread)],ye.prototype,"__updateStrokeSpread",null),lt([P(le.__updateRenderSpread)],ye.prototype,"__updateRectRenderSpread",null),lt([P(le.__updateBoxBounds)],ye.prototype,"__updateRectBoxBounds",null),lt([P(le.__updateStrokeBounds)],ye.prototype,"__updateStrokeBounds",null),lt([P(le.__updateRenderBounds)],ye.prototype,"__updateRectRenderBounds",null),lt([P(le.__updateChange)],ye.prototype,"__updateRectChange",null),lt([P(le.__render)],ye.prototype,"__renderRect",null),lt([P(ue.__render)],ye.prototype,"__renderGroup",null),ye=lt([E(),L()],ye);let ge=class extends ye{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}};lt([d(Ot)],ge.prototype,"__",void 0),lt([l("#FFFFFF")],ge.prototype,"fill",void 0),lt([et("hide")],ge.prototype,"overflow",void 0),ge=lt([L()],ge);const{moveTo:ve,closePath:fe,ellipse:we}=it;let xe=class extends se{get __tag(){return"Ellipse"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,innerRadius:i,startAngle:s,endAngle:o}=this.__,r=t/2,a=e/2,n=this.__.path=[];i?(s||o?(i<1&&we(n,r,a,r*i,a*i,0,s,o,!1),we(n,r,a,r,a,0,o,s,!0),i<1&&fe(n)):(i<1&&(we(n,r,a,r*i,a*i),ve(n,t,a)),we(n,r,a,r,a,0,360,0,!0)),st.ellipseToCurve&&(this.__.path=this.getPath(!0))):s||o?(ve(n,r,a),we(n,r,a,r,a,0,s,o,!1),fe(n)):we(n,r,a,r,a)}};lt([d(jt)],xe.prototype,"__",void 0),lt([b(0)],xe.prototype,"innerRadius",void 0),lt([b(0)],xe.prototype,"startAngle",void 0),lt([b(0)],xe.prototype,"endAngle",void 0),xe=lt([L()],xe);const{moveTo:me,lineTo:Re,drawPoints:Se}=it,{rotate:ke,getAngle:be,getDistance:Be,defaultPoint:Ae}=ot,{toBounds:Ce}=rt;let Pe=class extends se{get __tag(){return"Line"}get toPoint(){const{width:t,rotation:e}=this.__,i=nt();return t&&(i.x=t),e&&ke(i,e),i}set toPoint(t){this.width=Be(Ae,t),this.rotation=be(Ae,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__,e=t.path=[];t.points?Se(e,t.points,!1,t.closed):(me(e,0,0),Re(e,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(Se(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&wt.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?Ce(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}};lt([d(Nt)],Pe.prototype,"__",void 0),lt([at("center")],Pe.prototype,"strokeAlign",void 0),lt([w(0)],Pe.prototype,"height",void 0),lt([b()],Pe.prototype,"points",void 0),lt([b(0)],Pe.prototype,"curve",void 0),lt([b(!1)],Pe.prototype,"closed",void 0),Pe=lt([L()],Pe);const{sin:Fe,cos:We,PI:Ee}=Math,{moveTo:Ie,lineTo:Te,closePath:De,drawPoints:ze}=it,Le=Pe.prototype;let Me=class extends se{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)ze(t,this.__.points,!1,!0);else{const{width:e,height:i,sides:s}=this.__,o=e/2,r=i/2;Ie(t,o,0);for(let e=1;e<s;e++)Te(t,o+o*Fe(2*e*Ee/s),r-r*We(2*e*Ee/s))}De(t)}__updateRenderPath(){}__updateBoxBounds(){}};lt([d(Yt)],Me.prototype,"__",void 0),lt([b(3)],Me.prototype,"sides",void 0),lt([b()],Me.prototype,"points",void 0),lt([b(0)],Me.prototype,"curve",void 0),lt([P(Le.__updateRenderPath)],Me.prototype,"__updateRenderPath",null),lt([P(Le.__updateBoxBounds)],Me.prototype,"__updateBoxBounds",null),Me=lt([E(),L()],Me);const{sin:Oe,cos:Ne,PI:Ve}=Math,{moveTo:je,lineTo:Ye,closePath:He}=it;let Ue=class extends se{get __tag(){return"Star"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,corners:i,innerRadius:s}=this.__,o=t/2,r=e/2,a=this.__.path=[];je(a,o,0);for(let t=1;t<2*i;t++)Ye(a,o+(t%2==0?o:o*s)*Oe(t*Ve/i),r-(t%2==0?r:r*s)*Ne(t*Ve/i));He(a)}};lt([d(Ht)],Ue.prototype,"__",void 0),lt([b(5)],Ue.prototype,"corners",void 0),lt([b(.382)],Ue.prototype,"innerRadius",void 0),Ue=lt([L()],Ue);let Xe=class extends _e{get __tag(){return"Image"}get ready(){const{image:t}=this;return t&&t.ready}get image(){const{fill:t}=this.__;return t instanceof Array&&t[0].image}constructor(t){super(t)}};lt([d(Jt)],Xe.prototype,"__",void 0),lt([w("")],Xe.prototype,"url",void 0),Xe=lt([L()],Xe);const qe=Xe;let Ge=class extends _e{get __tag(){return"Canvas"}get context(){return this.canvas.context}get ready(){return!this.url}constructor(t){super(t),this.canvas=j.canvas(this.__),t&&t.url&&this.drawImage(t.url)}drawImage(t){new _t({url:t}).load((t=>{this.context.drawImage(t.view,0,0),this.url=void 0,this.paint(),this.emitEvent(new ht(ht.LOADED,{image:t}))}))}draw(t,e,i,s){const o=new dt(t.worldTransform).invert(),r=new dt;e&&r.translate(e.x,e.y),i&&("number"==typeof i?r.scale(i):r.scale(i.x,i.y)),s&&r.rotate(s),o.multiplyParent(r),t.__render(this.canvas,{matrix:o.withScale()}),this.paint()}paint(){this.forceRender()}__drawContent(t,e){const{width:i,height:s}=this.__,{view:o}=this.canvas;t.drawImage(o,0,0,o.width,o.height,0,0,i,s)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e,safeResize:i}=this.__;t.resize(this.__,i),t.smooth!==e&&(t.smooth=e)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=null),super.destroy()}};lt([d($t)],Ge.prototype,"__",void 0),lt([ct(100)],Ge.prototype,"width",void 0),lt([ct(100)],Ge.prototype,"height",void 0),lt([ct(1)],Ge.prototype,"pixelRatio",void 0),lt([ct(!0)],Ge.prototype,"smooth",void 0),lt([p(!1)],Ge.prototype,"safeResize",void 0),lt([ct()],Ge.prototype,"contextSettings",void 0),Ge=lt([L()],Ge);const{copyAndSpread:Je,includes:$e,spread:Ke,setList:Qe}=tt;let Ze=class extends se{get __tag(){return"Text"}get textDrawData(){return this.updateLayout(),this.__.__textDrawData}constructor(t){super(t)}__updateTextDrawData(){const t=this.__,{lineHeight:e,letterSpacing:i,fontFamily:s,fontSize:o,fontWeight:r,italic:a,textCase:n,textOverflow:_,padding:h}=t;t.__lineHeight=ft.number(e,o),t.__letterSpacing=ft.number(i,o),t.__padding=h?I.fourNumber(h):void 0,t.__baseLine=t.__lineHeight-(t.__lineHeight-.7*o)/2,t.__font=`${a?"italic ":""}${"small-caps"===n?"small-caps ":""}${"normal"!==r?r+" ":""}${o}px ${s}`,t.__clipText="show"!==_&&!t.__autoSize,t.__textDrawData=gt.getDrawData((t.__isPlacehold=t.placeholder&&""===t.text)?t.placeholder:t.text,this.__)}__updateBoxBounds(){const t=this.__,e=this.__layout,{fontSize:i,italic:s,padding:o,__autoWidth:a,__autoHeight:n}=t;this.__updateTextDrawData();const{bounds:_}=t.__textDrawData,h=e.boxBounds;if(e.contentBounds=_,t.__lineHeight<i&&Ke(_,i/2),a||n){if(h.x=a?_.x:0,h.y=n?_.y:0,h.width=a?_.width:t.width,h.height=n?_.height:t.height,o){const[e,i,s,o]=t.__padding;a&&(h.x-=o,h.width+=i+o),n&&(h.y-=e,h.height+=s+e)}this.__updateNaturalSize()}else super.__updateBoxBounds();s&&(h.width+=.16*i),r.stintSet(this,"isOverflow",!$e(h,_)),this.isOverflow?(Qe(t.__textBoxBounds={},[h,_]),e.renderChanged=!0):t.__textBoxBounds=h}__onUpdateSize(){this.__box&&this.__box.__onUpdateSize(),super.__onUpdateSize()}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.isOverflow?1:0),t}__updateRenderBounds(){const{renderBounds:t,renderSpread:e}=this.__layout;Je(t,this.__.__textBoxBounds,e),this.__box&&(this.__box.__layout.renderBounds=t)}__drawRenderPath(t){t.font=this.__.__font}__draw(t,e,i){const s=this.__box;s&&(s.__nowWorld=this.__nowWorld,s.__draw(t,e,i)),this.textEditing&&!bt.running||super.__draw(t,e,i)}destroy(){this.boxStyle&&(this.boxStyle=null),super.destroy()}};lt([d(Gt)],Ze.prototype,"__",void 0),lt([w(0)],Ze.prototype,"width",void 0),lt([w(0)],Ze.prototype,"height",void 0),lt([l()],Ze.prototype,"boxStyle",void 0),lt([p(!1)],Ze.prototype,"resizeFontSize",void 0),lt([l("#000000")],Ze.prototype,"fill",void 0),lt([at("outside")],Ze.prototype,"strokeAlign",void 0),lt([B("all")],Ze.prototype,"hitFill",void 0),lt([w("")],Ze.prototype,"text",void 0),lt([w("")],Ze.prototype,"placeholder",void 0),lt([w("caption")],Ze.prototype,"fontFamily",void 0),lt([w(12)],Ze.prototype,"fontSize",void 0),lt([w("normal")],Ze.prototype,"fontWeight",void 0),lt([w(!1)],Ze.prototype,"italic",void 0),lt([w("none")],Ze.prototype,"textCase",void 0),lt([w("none")],Ze.prototype,"textDecoration",void 0),lt([w(0)],Ze.prototype,"letterSpacing",void 0),lt([w({type:"percent",value:1.5})],Ze.prototype,"lineHeight",void 0),lt([w(0)],Ze.prototype,"paraIndent",void 0),lt([w(0)],Ze.prototype,"paraSpacing",void 0),lt([w("x")],Ze.prototype,"writingMode",void 0),lt([w("left")],Ze.prototype,"textAlign",void 0),lt([w("top")],Ze.prototype,"verticalAlign",void 0),lt([w(!0)],Ze.prototype,"autoSizeAlign",void 0),lt([w("normal")],Ze.prototype,"textWrap",void 0),lt([w("show")],Ze.prototype,"textOverflow",void 0),Ze=lt([L()],Ze);let ti=class extends se{get __tag(){return"Path"}constructor(t){super(t)}};lt([d(Ut)],ti.prototype,"__",void 0),lt([at("center")],ti.prototype,"strokeAlign",void 0),ti=lt([L()],ti);let ei=class extends oe{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new ti(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this}moveTo(t,e){return this}lineTo(t,e){return this}bezierCurveTo(t,e,i,s,o,r){return this}quadraticCurveTo(t,e,i,s){return this}closePath(){return this}rect(t,e,i,s){return this}roundRect(t,e,i,s,o){return this}ellipse(t,e,i,s,o,r,a,n){return this}arc(t,e,i,s,o,r){return this}arcTo(t,e,i,s,o){return this}drawEllipse(t,e,i,s,o,r,a,n){return this}drawArc(t,e,i,s,o,r){return this}drawPoints(t,e,i){return this}clearPath(){return this}paint(){this.pathElement.__layout.boxChanged||this.pathElement.forceUpdate("path")}};lt([d(Xt)],ei.prototype,"__",void 0),lt([(e,i)=>{t(e,i,{get(){return this.__path}})}],ei.prototype,"path",void 0),ei=lt([W(pt,["set","path","paint"]),L()],ei);export{ye as Box,Lt as BoxData,Ge as Canvas,$t as CanvasData,vt as ColorConvert,St as Effect,xe as Ellipse,jt as EllipseData,bt as Export,kt as Filter,ge as Frame,Ot as FrameData,oe as Group,zt as GroupData,Xe as Image,Jt as ImageData,ne as Leafer,Mt as LeaferData,Pe as Line,Nt as LineData,qe as MyImage,xt as Paint,Rt as PaintGradient,mt as PaintImage,ti as Path,wt as PathArrow,Ut as PathData,ei as Pen,Xt as PenData,Me as Polygon,Yt as PolygonData,_e as Rect,Vt as RectData,ee as RectRender,Ue as Star,Ht as StarData,Bt as State,Ze as Text,gt as TextConvert,Gt as TextData,At as Transition,se as UI,Kt as UIBounds,Tt as UIData,Zt as UIRender,ft as UnitConvert,ut as effectType,ct as resizeType,yt as zoomLayerType};
|
|
2
2
|
//# sourceMappingURL=draw.esm.min.js.map
|