@leafer-ui/draw 1.0.0-rc.23 → 1.0.0-rc.24

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 CHANGED
@@ -53,10 +53,11 @@ function stateType(defaultValue) {
53
53
  function arrowType(defaultValue) {
54
54
  return core.decorateLeafAttr(defaultValue, (key) => core.attr({
55
55
  set(value) {
56
- this.__setAttr(key, value);
57
- const data = this.__;
58
- data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
59
- core.doStrokeType(this);
56
+ if (this.__setAttr(key, value)) {
57
+ const data = this.__;
58
+ data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
59
+ core.doStrokeType(this);
60
+ }
60
61
  }
61
62
  }));
62
63
  }
@@ -229,7 +230,7 @@ class UIData extends core.LeafData {
229
230
  const UnitConvert = {
230
231
  number(value, percentRefer) {
231
232
  if (typeof value === 'object')
232
- return value.type === 'percent' ? (value.value > 49 ? value.value / 100 : value.value) * percentRefer : value.value;
233
+ return value.type === 'percent' ? value.value * percentRefer : value.value;
233
234
  return value;
234
235
  }
235
236
  };
@@ -238,7 +239,7 @@ class GroupData extends UIData {
238
239
  }
239
240
 
240
241
  class BoxData extends GroupData {
241
- get __boxStroke() { return true; }
242
+ get __boxStroke() { return !this.__pathInputed; }
242
243
  }
243
244
 
244
245
  class LeaferData extends GroupData {
@@ -251,11 +252,11 @@ class LineData extends UIData {
251
252
  }
252
253
 
253
254
  class RectData extends UIData {
254
- get __boxStroke() { return true; }
255
+ get __boxStroke() { return !this.__pathInputed; }
255
256
  }
256
257
 
257
258
  class EllipseData extends UIData {
258
- get __boxStroke() { return true; }
259
+ get __boxStroke() { return !this.__pathInputed; }
259
260
  }
260
261
 
261
262
  class PolygonData extends UIData {
@@ -282,6 +283,7 @@ const fontWeightMap = {
282
283
  'black': 900
283
284
  };
284
285
  class TextData extends UIData {
286
+ get __useNaturalRatio() { return false; }
285
287
  setFontWeight(value) {
286
288
  if (typeof value === 'string') {
287
289
  this.__setInput('fontWeight', value);
@@ -323,19 +325,18 @@ class CanvasData extends RectData {
323
325
  const UIBounds = {
324
326
  __updateStrokeSpread() {
325
327
  let width = 0, boxWidth = 0;
326
- const { stroke, hitStroke, strokeAlign, strokeWidth } = this.__;
327
- if ((stroke || hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
328
+ const data = this.__, { strokeAlign, strokeWidth } = data;
329
+ if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
328
330
  boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
329
- if (!this.__.__boxStroke) {
330
- const { miterLimit, strokeCap } = this.__;
331
- const miterLimitAddWidth = this.__tag !== 'Line' ? 1 / Math.sin(miterLimit * core.OneRadian / 2) * Math.sqrt(strokeWidth) - width : 0;
332
- const storkeCapAddWidth = strokeCap === 'none' ? 0 : strokeWidth;
331
+ if (!data.__boxStroke) {
332
+ const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * width;
333
+ const storkeCapAddWidth = data.strokeCap === 'none' ? 0 : strokeWidth;
333
334
  width += Math.max(miterLimitAddWidth, storkeCapAddWidth);
334
335
  }
335
336
  }
336
- this.__layout.strokeBoxSpread = boxWidth;
337
- if (this.__.__useArrow)
337
+ if (data.__useArrow)
338
338
  width += strokeWidth * 5;
339
+ this.__layout.strokeBoxSpread = boxWidth;
339
340
  return width;
340
341
  },
341
342
  __updateRenderSpread() {
@@ -355,7 +356,7 @@ const UIBounds = {
355
356
  if (backgroundBlur)
356
357
  shapeWidth = Math.max(shapeWidth, backgroundBlur);
357
358
  this.__layout.renderShapeSpread = shapeWidth;
358
- return width;
359
+ return width + (this.__layout.strokeSpread || 0);
359
360
  }
360
361
  };
361
362
 
@@ -446,7 +447,7 @@ function drawFast(ui, canvas, options) {
446
447
 
447
448
  const RectRender = {
448
449
  __drawFast(canvas, options) {
449
- const { width, height, fill, stroke, __drawAfterFill } = this.__;
450
+ let { width, height, fill, stroke, __drawAfterFill } = this.__;
450
451
  if (fill) {
451
452
  canvas.fillStyle = fill;
452
453
  canvas.fillRect(0, 0, width, height);
@@ -464,7 +465,16 @@ const RectRender = {
464
465
  canvas.strokeRect(0, 0, width, height);
465
466
  break;
466
467
  case 'inside':
467
- canvas.strokeRect(half, half, width - __strokeWidth, height - __strokeWidth);
468
+ width -= __strokeWidth, height -= __strokeWidth;
469
+ if (width < 0 || height < 0) {
470
+ canvas.save();
471
+ this.__clip(canvas, options);
472
+ canvas.strokeRect(half, half, width, height);
473
+ canvas.restore();
474
+ }
475
+ else {
476
+ canvas.strokeRect(half, half, width, height);
477
+ }
468
478
  break;
469
479
  case 'outside':
470
480
  canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
@@ -492,11 +502,14 @@ exports.UI = UI_1 = class UI extends core.Leaf {
492
502
  return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX;
493
503
  }
494
504
  get pen() {
495
- core.pen.set(this.path = this.__.path || []);
505
+ const { path } = this.__;
506
+ core.pen.set(this.path = path || []);
507
+ if (!path)
508
+ this.__drawPathByBox(core.pen);
496
509
  return core.pen;
497
510
  }
498
511
  get editConfig() { return undefined; }
499
- get editOuter() { return 'EditTool'; }
512
+ get editOuter() { return this.__.__isLinePath ? 'LineEditTool' : 'EditTool'; }
500
513
  get editInner() { return 'PathEditor'; }
501
514
  constructor(data) {
502
515
  super(data);
@@ -516,18 +529,16 @@ exports.UI = UI_1 = class UI extends core.Leaf {
516
529
  getPath(curve, pathForRender) {
517
530
  this.__layout.update();
518
531
  let path = pathForRender ? this.__.__pathForRender : this.__.path;
519
- if (!path) {
520
- const { width, height } = this.boxBounds;
521
- if (width || height) {
522
- core.pen.set(path = []);
523
- this.__drawPathByBox(core.pen);
524
- }
525
- }
532
+ if (!path)
533
+ core.pen.set(path = []), this.__drawPathByBox(core.pen);
526
534
  return curve ? core.PathConvert.toCanvasData(path, true) : path;
527
535
  }
528
536
  getPathString(curve, pathForRender) {
529
537
  return core.PathConvert.stringify(this.getPath(curve, pathForRender));
530
538
  }
539
+ load() {
540
+ this.__.__computePaint();
541
+ }
531
542
  __onUpdateSize() {
532
543
  if (this.__.__input) {
533
544
  const data = this.__;
@@ -613,7 +624,7 @@ __decorate([
613
624
  core.opacityType(1)
614
625
  ], exports.UI.prototype, "opacity", void 0);
615
626
  __decorate([
616
- core.opacityType(true)
627
+ core.visibleType(true)
617
628
  ], exports.UI.prototype, "visible", void 0);
618
629
  __decorate([
619
630
  stateType(false)
@@ -630,9 +641,6 @@ __decorate([
630
641
  __decorate([
631
642
  core.maskType(false)
632
643
  ], exports.UI.prototype, "mask", void 0);
633
- __decorate([
634
- core.surfaceType('pixel')
635
- ], exports.UI.prototype, "maskType", void 0);
636
644
  __decorate([
637
645
  core.eraserType(false)
638
646
  ], exports.UI.prototype, "eraser", void 0);
@@ -925,6 +933,7 @@ exports.Leafer = Leafer_1 = class Leafer extends exports.Group {
925
933
  get layoutLocked() { return !this.layouter.running; }
926
934
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
927
935
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
936
+ get clientBounds() { return this.canvas && this.canvas.getClientBounds(); }
928
937
  constructor(userConfig, data) {
929
938
  super(data);
930
939
  this.config = {
@@ -1082,7 +1091,8 @@ exports.Leafer = Leafer_1 = class Leafer extends exports.Group {
1082
1091
  this.__changeFill(newValue);
1083
1092
  }
1084
1093
  else if (attrName === 'hittable') {
1085
- this.canvas.hittable = newValue;
1094
+ if (!this.parent)
1095
+ this.canvas.hittable = newValue;
1086
1096
  }
1087
1097
  }
1088
1098
  return super.__setAttr(attrName, newValue);
@@ -1200,6 +1210,9 @@ exports.Leafer = Leafer_1 = class Leafer extends exports.Group {
1200
1210
  zoom(_zoomType, _padding, _fixedScale) { return undefined; }
1201
1211
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
1202
1212
  getValidScale(changeScale) { return changeScale; }
1213
+ getWorldPointByClient(clientPoint, updateClient) {
1214
+ return this.interaction && this.interaction.getLocal(clientPoint, updateClient);
1215
+ }
1203
1216
  __checkUpdateLayout() {
1204
1217
  this.__layout.update();
1205
1218
  }
@@ -1282,8 +1295,8 @@ exports.Rect = __decorate([
1282
1295
 
1283
1296
  const rect = exports.Rect.prototype;
1284
1297
  const group = exports.Group.prototype;
1285
- const bounds = {};
1286
- const { copy, add } = core.BoundsHelper;
1298
+ const childrenRenderBounds = {};
1299
+ const { copy, add, includes: includes$1 } = core.BoundsHelper;
1287
1300
  exports.Box = class Box extends exports.Group {
1288
1301
  get __tag() { return 'Box'; }
1289
1302
  get isBranchLeaf() { return true; }
@@ -1294,40 +1307,50 @@ exports.Box = class Box extends exports.Group {
1294
1307
  __updateStrokeSpread() { return 0; }
1295
1308
  __updateRectRenderSpread() { return 0; }
1296
1309
  __updateRenderSpread() {
1297
- const width = this.__updateRectRenderSpread();
1298
- const hide = this.__.__drawAfterFill = this.__.overflow === 'hide';
1299
- return (width || hide) ? width : -1;
1310
+ return this.__updateRectRenderSpread() || -1;
1300
1311
  }
1301
1312
  __updateRectBoxBounds() { }
1302
1313
  __updateBoxBounds() {
1303
1314
  const data = this.__;
1304
- if (data.__autoSide && this.children.length) {
1305
- if (this.leafer)
1306
- this.leafer.layouter.addExtra(this);
1307
- super.__updateBoxBounds();
1308
- if (!data.__autoSize) {
1309
- const b = this.__layout.boxBounds;
1310
- if (!data.__autoWidth)
1311
- b.x = 0, b.width = data.width;
1312
- if (!data.__autoHeight)
1313
- b.y = 0, b.height = data.height;
1315
+ if (this.children.length) {
1316
+ if (data.__autoSide) {
1317
+ if (this.leafer && this.leafer.ready)
1318
+ this.leafer.layouter.addExtra(this);
1319
+ super.__updateBoxBounds();
1320
+ if (!data.__autoSize) {
1321
+ const b = this.__layout.boxBounds;
1322
+ if (!data.__autoWidth)
1323
+ b.x = 0, b.width = data.width;
1324
+ if (!data.__autoHeight)
1325
+ b.y = 0, b.height = data.height;
1326
+ }
1314
1327
  }
1328
+ else {
1329
+ this.__updateRectBoxBounds();
1330
+ }
1331
+ if (data.flow)
1332
+ this.__updateContentBounds();
1315
1333
  }
1316
1334
  else {
1317
1335
  this.__updateRectBoxBounds();
1318
1336
  }
1319
- if (data.flow)
1320
- this.__updateContentBounds();
1321
1337
  }
1322
1338
  __updateStrokeBounds() { }
1323
1339
  __updateRenderBounds() {
1324
- this.__updateRectRenderBounds();
1325
- if (!this.__.__drawAfterFill) {
1326
- const { renderBounds } = this.__layout;
1327
- copy(bounds, renderBounds);
1340
+ let isOverflow;
1341
+ const { renderBounds } = this.__layout;
1342
+ if (this.children.length) {
1328
1343
  super.__updateRenderBounds();
1329
- add(renderBounds, bounds);
1344
+ copy(childrenRenderBounds, renderBounds);
1345
+ this.__updateRectRenderBounds();
1346
+ isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
1347
+ }
1348
+ else {
1349
+ this.__updateRectRenderBounds();
1330
1350
  }
1351
+ this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
1352
+ if (isOverflow && !(this.__.__drawAfterFill = this.__.overflow === 'hide'))
1353
+ add(renderBounds, childrenRenderBounds);
1331
1354
  }
1332
1355
  __updateRectRenderBounds() { }
1333
1356
  __updateRectChange() { }
@@ -1343,16 +1366,27 @@ exports.Box = class Box extends exports.Group {
1343
1366
  }
1344
1367
  else {
1345
1368
  this.__renderRect(canvas, options);
1346
- this.__renderGroup(canvas, options);
1369
+ if (this.children.length)
1370
+ this.__renderGroup(canvas, options);
1347
1371
  }
1348
1372
  }
1349
1373
  __drawAfterFill(canvas, options) {
1350
- canvas.save();
1351
- canvas.clip();
1352
- this.__renderGroup(canvas, options);
1353
- canvas.restore();
1354
- if (this.__.stroke)
1374
+ const { length } = this.children;
1375
+ if (this.isOverflow) {
1376
+ canvas.save();
1377
+ canvas.clip();
1378
+ if (length)
1379
+ this.__renderGroup(canvas, options);
1380
+ canvas.restore();
1381
+ }
1382
+ else {
1383
+ if (length)
1384
+ this.__renderGroup(canvas, options);
1385
+ }
1386
+ if (this.__.stroke && length) {
1387
+ canvas.setWorld(this.__nowWorld);
1355
1388
  this.__drawRenderPath(canvas);
1389
+ }
1356
1390
  }
1357
1391
  };
1358
1392
  __decorate([
@@ -1490,9 +1524,10 @@ exports.Line = class Line extends exports.UI {
1490
1524
  super(data);
1491
1525
  }
1492
1526
  __updatePath() {
1493
- const path = this.__.path = [];
1494
- if (this.__.points) {
1495
- drawPoints$1(path, this.__.points, this.__.closed);
1527
+ const data = this.__;
1528
+ const path = data.path = [];
1529
+ if (data.points) {
1530
+ drawPoints$1(path, data.points, false, data.closed);
1496
1531
  }
1497
1532
  else {
1498
1533
  moveTo$2(path, 0, 0);
@@ -1862,7 +1897,7 @@ __decorate([
1862
1897
  core.boundsType(0)
1863
1898
  ], exports.Text.prototype, "letterSpacing", void 0);
1864
1899
  __decorate([
1865
- core.boundsType({ type: 'percent', value: 150 })
1900
+ core.boundsType({ type: 'percent', value: 1.5 })
1866
1901
  ], exports.Text.prototype, "lineHeight", void 0);
1867
1902
  __decorate([
1868
1903
  core.boundsType(0)
@@ -1956,8 +1991,6 @@ function penPathType() {
1956
1991
  };
1957
1992
  }
1958
1993
 
1959
- const version = "1.0.0-rc.23";
1960
-
1961
1994
  exports.BoxData = BoxData;
1962
1995
  exports.CanvasData = CanvasData;
1963
1996
  exports.ColorConvert = ColorConvert;
@@ -1990,7 +2023,6 @@ exports.arrowType = arrowType;
1990
2023
  exports.effectType = effectType;
1991
2024
  exports.resizeType = resizeType;
1992
2025
  exports.stateType = stateType;
1993
- exports.version = version;
1994
2026
  exports.zoomLayerType = zoomLayerType;
1995
2027
  Object.keys(core).forEach(function (k) {
1996
2028
  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
package/lib/draw.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { decorateLeafAttr, attr, doStrokeType, defineKey, Debug, LeafData, PathConvert, OneRadian, dataProcessor, dataType, surfaceType, opacityType, sortType, maskType, eraserType, positionType, boundsType, scaleType, rotationType, autoLayoutType, naturalBoundsType, pathInputType, pathType, hitType, strokeType, cursorType, rewrite, Leaf, useModule, rewriteAble, pen, PathCorner, PathDrawer, UICreator, registerUI, Branch, LeafList, ImageManager, DataHelper, Creator, CanvasManager, WaitHelper, LeaferEvent, canvasSizeAttrs, Bounds, ResizeEvent, AutoBounds, Run, LayoutEvent, RenderEvent, WatchEvent, affectRenderBoundsType, BoundsHelper, Platform, PathCommandDataHelper, affectStrokeBoundsType, getPointData, PointHelper, PathBounds, ImageEvent, Matrix, MathHelper, PathCreator } from '@leafer/core';
1
+ import { decorateLeafAttr, attr, doStrokeType, defineKey, Debug, LeafData, PathConvert, dataProcessor, dataType, surfaceType, opacityType, visibleType, sortType, maskType, eraserType, positionType, boundsType, scaleType, rotationType, autoLayoutType, naturalBoundsType, pathInputType, pathType, hitType, strokeType, cursorType, rewrite, Leaf, useModule, rewriteAble, pen, PathCorner, PathDrawer, UICreator, registerUI, Branch, LeafList, ImageManager, DataHelper, Creator, CanvasManager, WaitHelper, LeaferEvent, canvasSizeAttrs, Bounds, ResizeEvent, AutoBounds, Run, LayoutEvent, RenderEvent, WatchEvent, affectRenderBoundsType, BoundsHelper, Platform, PathCommandDataHelper, affectStrokeBoundsType, getPointData, PointHelper, PathBounds, ImageEvent, Matrix, MathHelper, PathCreator } from '@leafer/core';
2
2
  export * from '@leafer/core';
3
3
 
4
4
  /******************************************************************************
@@ -52,10 +52,11 @@ function stateType(defaultValue) {
52
52
  function arrowType(defaultValue) {
53
53
  return decorateLeafAttr(defaultValue, (key) => attr({
54
54
  set(value) {
55
- this.__setAttr(key, value);
56
- const data = this.__;
57
- data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
58
- doStrokeType(this);
55
+ if (this.__setAttr(key, value)) {
56
+ const data = this.__;
57
+ data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
58
+ doStrokeType(this);
59
+ }
59
60
  }
60
61
  }));
61
62
  }
@@ -228,7 +229,7 @@ class UIData extends LeafData {
228
229
  const UnitConvert = {
229
230
  number(value, percentRefer) {
230
231
  if (typeof value === 'object')
231
- return value.type === 'percent' ? (value.value > 49 ? value.value / 100 : value.value) * percentRefer : value.value;
232
+ return value.type === 'percent' ? value.value * percentRefer : value.value;
232
233
  return value;
233
234
  }
234
235
  };
@@ -237,7 +238,7 @@ class GroupData extends UIData {
237
238
  }
238
239
 
239
240
  class BoxData extends GroupData {
240
- get __boxStroke() { return true; }
241
+ get __boxStroke() { return !this.__pathInputed; }
241
242
  }
242
243
 
243
244
  class LeaferData extends GroupData {
@@ -250,11 +251,11 @@ class LineData extends UIData {
250
251
  }
251
252
 
252
253
  class RectData extends UIData {
253
- get __boxStroke() { return true; }
254
+ get __boxStroke() { return !this.__pathInputed; }
254
255
  }
255
256
 
256
257
  class EllipseData extends UIData {
257
- get __boxStroke() { return true; }
258
+ get __boxStroke() { return !this.__pathInputed; }
258
259
  }
259
260
 
260
261
  class PolygonData extends UIData {
@@ -281,6 +282,7 @@ const fontWeightMap = {
281
282
  'black': 900
282
283
  };
283
284
  class TextData extends UIData {
285
+ get __useNaturalRatio() { return false; }
284
286
  setFontWeight(value) {
285
287
  if (typeof value === 'string') {
286
288
  this.__setInput('fontWeight', value);
@@ -322,19 +324,18 @@ class CanvasData extends RectData {
322
324
  const UIBounds = {
323
325
  __updateStrokeSpread() {
324
326
  let width = 0, boxWidth = 0;
325
- const { stroke, hitStroke, strokeAlign, strokeWidth } = this.__;
326
- if ((stroke || hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
327
+ const data = this.__, { strokeAlign, strokeWidth } = data;
328
+ if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {
327
329
  boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth;
328
- if (!this.__.__boxStroke) {
329
- const { miterLimit, strokeCap } = this.__;
330
- const miterLimitAddWidth = this.__tag !== 'Line' ? 1 / Math.sin(miterLimit * OneRadian / 2) * Math.sqrt(strokeWidth) - width : 0;
331
- const storkeCapAddWidth = strokeCap === 'none' ? 0 : strokeWidth;
330
+ if (!data.__boxStroke) {
331
+ const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * width;
332
+ const storkeCapAddWidth = data.strokeCap === 'none' ? 0 : strokeWidth;
332
333
  width += Math.max(miterLimitAddWidth, storkeCapAddWidth);
333
334
  }
334
335
  }
335
- this.__layout.strokeBoxSpread = boxWidth;
336
- if (this.__.__useArrow)
336
+ if (data.__useArrow)
337
337
  width += strokeWidth * 5;
338
+ this.__layout.strokeBoxSpread = boxWidth;
338
339
  return width;
339
340
  },
340
341
  __updateRenderSpread() {
@@ -354,7 +355,7 @@ const UIBounds = {
354
355
  if (backgroundBlur)
355
356
  shapeWidth = Math.max(shapeWidth, backgroundBlur);
356
357
  this.__layout.renderShapeSpread = shapeWidth;
357
- return width;
358
+ return width + (this.__layout.strokeSpread || 0);
358
359
  }
359
360
  };
360
361
 
@@ -445,7 +446,7 @@ function drawFast(ui, canvas, options) {
445
446
 
446
447
  const RectRender = {
447
448
  __drawFast(canvas, options) {
448
- const { width, height, fill, stroke, __drawAfterFill } = this.__;
449
+ let { width, height, fill, stroke, __drawAfterFill } = this.__;
449
450
  if (fill) {
450
451
  canvas.fillStyle = fill;
451
452
  canvas.fillRect(0, 0, width, height);
@@ -463,7 +464,16 @@ const RectRender = {
463
464
  canvas.strokeRect(0, 0, width, height);
464
465
  break;
465
466
  case 'inside':
466
- canvas.strokeRect(half, half, width - __strokeWidth, height - __strokeWidth);
467
+ width -= __strokeWidth, height -= __strokeWidth;
468
+ if (width < 0 || height < 0) {
469
+ canvas.save();
470
+ this.__clip(canvas, options);
471
+ canvas.strokeRect(half, half, width, height);
472
+ canvas.restore();
473
+ }
474
+ else {
475
+ canvas.strokeRect(half, half, width, height);
476
+ }
467
477
  break;
468
478
  case 'outside':
469
479
  canvas.strokeRect(-half, -half, width + __strokeWidth, height + __strokeWidth);
@@ -491,11 +501,14 @@ let UI = UI_1 = class UI extends Leaf {
491
501
  return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX;
492
502
  }
493
503
  get pen() {
494
- pen.set(this.path = this.__.path || []);
504
+ const { path } = this.__;
505
+ pen.set(this.path = path || []);
506
+ if (!path)
507
+ this.__drawPathByBox(pen);
495
508
  return pen;
496
509
  }
497
510
  get editConfig() { return undefined; }
498
- get editOuter() { return 'EditTool'; }
511
+ get editOuter() { return this.__.__isLinePath ? 'LineEditTool' : 'EditTool'; }
499
512
  get editInner() { return 'PathEditor'; }
500
513
  constructor(data) {
501
514
  super(data);
@@ -515,18 +528,16 @@ let UI = UI_1 = class UI extends Leaf {
515
528
  getPath(curve, pathForRender) {
516
529
  this.__layout.update();
517
530
  let path = pathForRender ? this.__.__pathForRender : this.__.path;
518
- if (!path) {
519
- const { width, height } = this.boxBounds;
520
- if (width || height) {
521
- pen.set(path = []);
522
- this.__drawPathByBox(pen);
523
- }
524
- }
531
+ if (!path)
532
+ pen.set(path = []), this.__drawPathByBox(pen);
525
533
  return curve ? PathConvert.toCanvasData(path, true) : path;
526
534
  }
527
535
  getPathString(curve, pathForRender) {
528
536
  return PathConvert.stringify(this.getPath(curve, pathForRender));
529
537
  }
538
+ load() {
539
+ this.__.__computePaint();
540
+ }
530
541
  __onUpdateSize() {
531
542
  if (this.__.__input) {
532
543
  const data = this.__;
@@ -612,7 +623,7 @@ __decorate([
612
623
  opacityType(1)
613
624
  ], UI.prototype, "opacity", void 0);
614
625
  __decorate([
615
- opacityType(true)
626
+ visibleType(true)
616
627
  ], UI.prototype, "visible", void 0);
617
628
  __decorate([
618
629
  stateType(false)
@@ -629,9 +640,6 @@ __decorate([
629
640
  __decorate([
630
641
  maskType(false)
631
642
  ], UI.prototype, "mask", void 0);
632
- __decorate([
633
- surfaceType('pixel')
634
- ], UI.prototype, "maskType", void 0);
635
643
  __decorate([
636
644
  eraserType(false)
637
645
  ], UI.prototype, "eraser", void 0);
@@ -924,6 +932,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
924
932
  get layoutLocked() { return !this.layouter.running; }
925
933
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
926
934
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
935
+ get clientBounds() { return this.canvas && this.canvas.getClientBounds(); }
927
936
  constructor(userConfig, data) {
928
937
  super(data);
929
938
  this.config = {
@@ -1081,7 +1090,8 @@ let Leafer = Leafer_1 = class Leafer extends Group {
1081
1090
  this.__changeFill(newValue);
1082
1091
  }
1083
1092
  else if (attrName === 'hittable') {
1084
- this.canvas.hittable = newValue;
1093
+ if (!this.parent)
1094
+ this.canvas.hittable = newValue;
1085
1095
  }
1086
1096
  }
1087
1097
  return super.__setAttr(attrName, newValue);
@@ -1199,6 +1209,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
1199
1209
  zoom(_zoomType, _padding, _fixedScale) { return undefined; }
1200
1210
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
1201
1211
  getValidScale(changeScale) { return changeScale; }
1212
+ getWorldPointByClient(clientPoint, updateClient) {
1213
+ return this.interaction && this.interaction.getLocal(clientPoint, updateClient);
1214
+ }
1202
1215
  __checkUpdateLayout() {
1203
1216
  this.__layout.update();
1204
1217
  }
@@ -1281,8 +1294,8 @@ Rect = __decorate([
1281
1294
 
1282
1295
  const rect = Rect.prototype;
1283
1296
  const group = Group.prototype;
1284
- const bounds = {};
1285
- const { copy, add } = BoundsHelper;
1297
+ const childrenRenderBounds = {};
1298
+ const { copy, add, includes: includes$1 } = BoundsHelper;
1286
1299
  let Box = class Box extends Group {
1287
1300
  get __tag() { return 'Box'; }
1288
1301
  get isBranchLeaf() { return true; }
@@ -1293,40 +1306,50 @@ let Box = class Box extends Group {
1293
1306
  __updateStrokeSpread() { return 0; }
1294
1307
  __updateRectRenderSpread() { return 0; }
1295
1308
  __updateRenderSpread() {
1296
- const width = this.__updateRectRenderSpread();
1297
- const hide = this.__.__drawAfterFill = this.__.overflow === 'hide';
1298
- return (width || hide) ? width : -1;
1309
+ return this.__updateRectRenderSpread() || -1;
1299
1310
  }
1300
1311
  __updateRectBoxBounds() { }
1301
1312
  __updateBoxBounds() {
1302
1313
  const data = this.__;
1303
- if (data.__autoSide && this.children.length) {
1304
- if (this.leafer)
1305
- this.leafer.layouter.addExtra(this);
1306
- super.__updateBoxBounds();
1307
- if (!data.__autoSize) {
1308
- const b = this.__layout.boxBounds;
1309
- if (!data.__autoWidth)
1310
- b.x = 0, b.width = data.width;
1311
- if (!data.__autoHeight)
1312
- b.y = 0, b.height = data.height;
1314
+ if (this.children.length) {
1315
+ if (data.__autoSide) {
1316
+ if (this.leafer && this.leafer.ready)
1317
+ this.leafer.layouter.addExtra(this);
1318
+ super.__updateBoxBounds();
1319
+ if (!data.__autoSize) {
1320
+ const b = this.__layout.boxBounds;
1321
+ if (!data.__autoWidth)
1322
+ b.x = 0, b.width = data.width;
1323
+ if (!data.__autoHeight)
1324
+ b.y = 0, b.height = data.height;
1325
+ }
1313
1326
  }
1327
+ else {
1328
+ this.__updateRectBoxBounds();
1329
+ }
1330
+ if (data.flow)
1331
+ this.__updateContentBounds();
1314
1332
  }
1315
1333
  else {
1316
1334
  this.__updateRectBoxBounds();
1317
1335
  }
1318
- if (data.flow)
1319
- this.__updateContentBounds();
1320
1336
  }
1321
1337
  __updateStrokeBounds() { }
1322
1338
  __updateRenderBounds() {
1323
- this.__updateRectRenderBounds();
1324
- if (!this.__.__drawAfterFill) {
1325
- const { renderBounds } = this.__layout;
1326
- copy(bounds, renderBounds);
1339
+ let isOverflow;
1340
+ const { renderBounds } = this.__layout;
1341
+ if (this.children.length) {
1327
1342
  super.__updateRenderBounds();
1328
- add(renderBounds, bounds);
1343
+ copy(childrenRenderBounds, renderBounds);
1344
+ this.__updateRectRenderBounds();
1345
+ isOverflow = !includes$1(renderBounds, childrenRenderBounds) || undefined;
1346
+ }
1347
+ else {
1348
+ this.__updateRectRenderBounds();
1329
1349
  }
1350
+ this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
1351
+ if (isOverflow && !(this.__.__drawAfterFill = this.__.overflow === 'hide'))
1352
+ add(renderBounds, childrenRenderBounds);
1330
1353
  }
1331
1354
  __updateRectRenderBounds() { }
1332
1355
  __updateRectChange() { }
@@ -1342,16 +1365,27 @@ let Box = class Box extends Group {
1342
1365
  }
1343
1366
  else {
1344
1367
  this.__renderRect(canvas, options);
1345
- this.__renderGroup(canvas, options);
1368
+ if (this.children.length)
1369
+ this.__renderGroup(canvas, options);
1346
1370
  }
1347
1371
  }
1348
1372
  __drawAfterFill(canvas, options) {
1349
- canvas.save();
1350
- canvas.clip();
1351
- this.__renderGroup(canvas, options);
1352
- canvas.restore();
1353
- if (this.__.stroke)
1373
+ const { length } = this.children;
1374
+ if (this.isOverflow) {
1375
+ canvas.save();
1376
+ canvas.clip();
1377
+ if (length)
1378
+ this.__renderGroup(canvas, options);
1379
+ canvas.restore();
1380
+ }
1381
+ else {
1382
+ if (length)
1383
+ this.__renderGroup(canvas, options);
1384
+ }
1385
+ if (this.__.stroke && length) {
1386
+ canvas.setWorld(this.__nowWorld);
1354
1387
  this.__drawRenderPath(canvas);
1388
+ }
1355
1389
  }
1356
1390
  };
1357
1391
  __decorate([
@@ -1489,9 +1523,10 @@ let Line = class Line extends UI {
1489
1523
  super(data);
1490
1524
  }
1491
1525
  __updatePath() {
1492
- const path = this.__.path = [];
1493
- if (this.__.points) {
1494
- drawPoints$1(path, this.__.points, this.__.closed);
1526
+ const data = this.__;
1527
+ const path = data.path = [];
1528
+ if (data.points) {
1529
+ drawPoints$1(path, data.points, false, data.closed);
1495
1530
  }
1496
1531
  else {
1497
1532
  moveTo$2(path, 0, 0);
@@ -1861,7 +1896,7 @@ __decorate([
1861
1896
  boundsType(0)
1862
1897
  ], Text.prototype, "letterSpacing", void 0);
1863
1898
  __decorate([
1864
- boundsType({ type: 'percent', value: 150 })
1899
+ boundsType({ type: 'percent', value: 1.5 })
1865
1900
  ], Text.prototype, "lineHeight", void 0);
1866
1901
  __decorate([
1867
1902
  boundsType(0)
@@ -1955,6 +1990,4 @@ function penPathType() {
1955
1990
  };
1956
1991
  }
1957
1992
 
1958
- const version = "1.0.0-rc.23";
1959
-
1960
- export { Box, BoxData, Canvas, CanvasData, ColorConvert, Effect, Ellipse, EllipseData, Export, Frame, FrameData, Group, GroupData, Image, ImageData, Leafer, LeaferData, Line, LineData, Paint, PaintGradient, PaintImage, Path, PathArrow, PathData, Pen, PenData, Polygon, PolygonData, Rect, RectData, RectRender, Star, StarData, State, Text, TextConvert, TextData, UI, UIBounds, UIData, UIRender, UnitConvert, arrowType, effectType, resizeType, stateType, version, zoomLayerType };
1993
+ export { Box, BoxData, Canvas, CanvasData, ColorConvert, Effect, Ellipse, EllipseData, Export, Frame, FrameData, Group, GroupData, Image, ImageData, Leafer, LeaferData, Line, LineData, Paint, PaintGradient, PaintImage, Path, PathArrow, PathData, Pen, PenData, Polygon, PolygonData, Rect, RectData, RectRender, Star, StarData, State, Text, TextConvert, TextData, UI, UIBounds, UIData, UIRender, UnitConvert, arrowType, effectType, resizeType, stateType, zoomLayerType };
@@ -1 +1 @@
1
- import{decorateLeafAttr as t,attr as e,doStrokeType as i,defineKey as s,Debug as o,LeafData as r,PathConvert as a,OneRadian as n,dataProcessor as _,dataType as h,surfaceType as d,opacityType as p,sortType as l,maskType as u,eraserType as c,positionType as y,boundsType as v,scaleType as g,rotationType as f,autoLayoutType as w,naturalBoundsType as x,pathInputType as m,pathType as R,hitType as S,strokeType as k,cursorType as b,rewrite as B,Leaf as A,useModule as C,rewriteAble as P,pen as F,PathCorner as E,PathDrawer as D,UICreator as L,registerUI as T,Branch as W,LeafList as I,ImageManager as z,DataHelper as M,Creator as O,CanvasManager as N,WaitHelper as H,LeaferEvent as V,canvasSizeAttrs as Y,Bounds as X,ResizeEvent as U,AutoBounds as j,Run as G,LayoutEvent as J,RenderEvent as $,WatchEvent as K,affectRenderBoundsType as q,BoundsHelper as Q,Platform as Z,PathCommandDataHelper as tt,affectStrokeBoundsType as et,getPointData as it,PointHelper as st,PathBounds as ot,ImageEvent as rt,Matrix as at,MathHelper as nt,PathCreator as _t}from"@leafer/core";export*from"@leafer/core";function ht(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"==typeof SuppressedError&&SuppressedError;const dt={},pt={},lt={},ut={},ct={},yt={},vt={},gt={},ft={};function wt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),this.waitLeafer((()=>{ft.setStyle&&ft.setStyle(this,t+"Style",e)}))}})))}function xt(s){return t(s,(t=>e({set(e){this.__setAttr(t,e);const s=this.__;s.__useArrow="none"!==s.startArrow||"none"!==s.endArrow,i(this)}})))}function mt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),e&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function Rt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function St(){return(t,e)=>{const i="_"+e;s(t,e,{set(t){this.isLeafer&&(this[i]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[i]||this:this.leafer&&this.leafer.zoomLayer}})}}const{parse:kt}=a,bt={},Bt=o.get("UIData");class At extends r{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 __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.__leaf.leafer&&(this.__leaf.leafer.watcher.hasVisible=!0),this._visible=t}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,Bt.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,Bt.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("fill",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isFills=!0,this._fill||(this._fill=bt)):(this.__isFills&&(this.__removeInput("fill"),ct.recycleImage("fill",this),this.__isFills=!1,this.__pixelFill&&(this.__pixelFill=!1)),this._fill=t)}setStroke(t){"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("stroke",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isStrokes=!0,this._stroke||(this._stroke=bt)):(this.__isStrokes&&(this.__removeInput("stroke"),ct.recycleImage("stroke",this),this.__isStrokes=!1,this.__pixelStroke&&(this.__pixelStroke=!1)),this._stroke=t)}setPath(t){"string"==typeof t?(this.__setInput("path",t),this._path=kt(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){this.__setInput("shadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._shadow=t.length?t:null):this._shadow=t?!1===t.visible?null:[t]:null}setInnerShadow(t){this.__setInput("innerShadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._innerShadow=t.length?t:null):this._innerShadow=t?!1===t.visible?null:[t]:null}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&ut.compute("fill",this.__leaf),e&&ut.compute("stroke",this.__leaf),this.__needComputePaint=!1}}const Ct={number:(t,e)=>"object"==typeof t?"percent"===t.type?(t.value>49?t.value/100:t.value)*e:t.value:t};class Pt extends At{}class Ft extends Pt{get __boxStroke(){return!0}}class Et extends Pt{}class Dt extends Ft{}class Lt extends At{}class Tt extends At{get __boxStroke(){return!0}}class Wt extends At{get __boxStroke(){return!0}}class It extends At{}class zt extends At{}class Mt extends At{}class Ot extends Pt{}const Nt={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class Ht extends At{setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),this._fontWeight=Nt[t]||400):(this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t)}}class Vt extends Tt{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.__leaf.image&&(this.__leaf.image=null),this.fill=t?{type:"image",mode:"strench",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(){const t=super.__getInputData();return delete t.fill,t}}class Yt extends Tt{}const Xt={__updateStrokeSpread(){let t=0,e=0;const{stroke:i,hitStroke:s,strokeAlign:o,strokeWidth:r}=this.__;if((i||"all"===s)&&r&&"inside"!==o&&(e=t="center"===o?r/2:r,!this.__.__boxStroke)){const{miterLimit:e,strokeCap:i}=this.__,s="Line"!==this.__tag?1/Math.sin(e*n/2)*Math.sqrt(r)-t:0,o="none"===i?0:r;t+=Math.max(s,o)}return this.__layout.strokeBoxSpread=e,this.__.__useArrow&&(t+=5*r),t},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o}=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));let r=t=Math.ceil(t);return i&&i.forEach((t=>{r=Math.max(r,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur)})),o&&(r=Math.max(r,o)),this.__layout.renderShapeSpread=r,t}},Ut={__updateChange(){const t=this.__;if(t.__useEffect){const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o}=this.__;t.__useEffect=!!(e||i||s||o)}t.__checkSingle();t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect?t.__complex=!0:t.__complex&&(t.__complex=!1)},__drawFast(t,e){jt(this,t,e)},__draw(t,e){const i=this.__;if(i.__complex){i.__needComputePaint&&i.__computePaint();const{fill:s,stroke:o,__drawAfterFill:r}=i;if(this.__drawRenderPath(t),i.__useEffect){const a=ut.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:n,innerShadow:_}=i;n&&vt.shadow(this,t,a),s&&(i.__isFills?ut.fills(s,this,t):ut.fill(s,this,t)),r&&this.__drawAfterFill(t,e),_&&vt.innerShadow(this,t,a),o&&(i.__isStrokes?ut.strokes(o,this,t):ut.stroke(o,this,t)),a.worldCanvas&&a.worldCanvas.recycle(),a.canvas.recycle()}else s&&(i.__isFills?ut.fills(s,this,t):ut.fill(s,this,t)),r&&this.__drawAfterFill(t,e),o&&(i.__isStrokes?ut.strokes(o,this,t):ut.stroke(o,this,t))}else i.__pathInputed?jt(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?ut.fills(o,this,t):ut.fill("#000000",this,t)),r&&!s&&(this.__.__pixelStroke?ut.strokes(r,this,t):ut.stroke("#000000",this,t))}}};function jt(t,e,i){const{fill:s,stroke:o,__drawAfterFill:r}=t.__;t.__drawRenderPath(e),s&&ut.fill(s,t,e),r&&t.__drawAfterFill(e,i),o&&ut.stroke(o,t,e)}const Gt={__drawFast(t,e){const{width:i,height:s,fill:o,stroke:r,__drawAfterFill:a}=this.__;if(o&&(t.fillStyle=o,t.fillRect(0,0,i,s)),a&&this.__drawAfterFill(t,e),r){const{strokeAlign:e,__strokeWidth:o}=this.__;if(!o)return;t.setStroke(r,o,this.__);const a=o/2;switch(e){case"center":t.strokeRect(0,0,i,s);break;case"inside":t.strokeRect(a,a,i-o,s-o);break;case"outside":t.strokeRect(-a,-a,i+o,s+o)}}}};var Jt;let $t=Jt=class extends A{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){"number"==typeof t?this.scaleX=this.scaleY=t:(this.scaleX=t.x,this.scaleY=t.y)}get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get pen(){return F.set(this.path=this.__.path||[]),F}get editConfig(){}get editOuter(){return"EditTool"}get editInner(){return"PathEditor"}constructor(t){super(t)}reset(t){}set(t){Object.assign(this,t)}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){}findTag(t){return this.find({tag:t})}findOne(t,e){}findId(t){return this.findOne({id:t})}getPath(t,e){this.__layout.update();let i=e?this.__.__pathForRender:this.__.path;if(!i){const{width:t,height:e}=this.boxBounds;(t||e)&&(F.set(i=[]),this.__drawPathByBox(F))}return t?a.toCanvasData(i,!0):i}getPathString(t,e){return a.stringify(this.getPath(t,e))}__onUpdateSize(){if(this.__.__input){const t=this.__;t.lazy&&this.leafer&&this.leafer.created&&!this.leafer.lazyBounds.hit(this.__world)?t.__needComputePaint=!0:t.__computePaint()}}__updateRenderPath(){if(this.__.path){const t=this.__;t.__pathForRender=t.cornerRadius?E.smooth(t.path,t.cornerRadius,t.cornerSmoothing):t.path,t.__useArrow&&lt.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?D.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)}export(t,e){return gt.export(this,t,e)}clone(){return Jt.one(this.toJSON())}static one(t,e,i,s,o){return L.get(t.tag||this.prototype.__tag,t,e,i,s,o)}static registerUI(){T()(this)}static registerData(t){_(t)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,super.destroy()}};ht([_(At)],$t.prototype,"__",void 0),ht([St()],$t.prototype,"zoomLayer",void 0),ht([h("")],$t.prototype,"id",void 0),ht([h("")],$t.prototype,"name",void 0),ht([h("")],$t.prototype,"className",void 0),ht([d("pass-through")],$t.prototype,"blendMode",void 0),ht([p(1)],$t.prototype,"opacity",void 0),ht([p(!0)],$t.prototype,"visible",void 0),ht([wt(!1)],$t.prototype,"selected",void 0),ht([wt(!1)],$t.prototype,"disabled",void 0),ht([h(!1)],$t.prototype,"locked",void 0),ht([l(0)],$t.prototype,"zIndex",void 0),ht([u(!1)],$t.prototype,"mask",void 0),ht([d("pixel")],$t.prototype,"maskType",void 0),ht([c(!1)],$t.prototype,"eraser",void 0),ht([y(0,!0)],$t.prototype,"x",void 0),ht([y(0,!0)],$t.prototype,"y",void 0),ht([v(100,!0)],$t.prototype,"width",void 0),ht([v(100,!0)],$t.prototype,"height",void 0),ht([g(1,!0)],$t.prototype,"scaleX",void 0),ht([g(1,!0)],$t.prototype,"scaleY",void 0),ht([f(0,!0)],$t.prototype,"rotation",void 0),ht([f(0,!0)],$t.prototype,"skewX",void 0),ht([f(0,!0)],$t.prototype,"skewY",void 0),ht([y(0,!0)],$t.prototype,"offsetX",void 0),ht([y(0,!0)],$t.prototype,"offsetY",void 0),ht([y(0,!0)],$t.prototype,"scrollX",void 0),ht([y(0,!0)],$t.prototype,"scrollY",void 0),ht([w()],$t.prototype,"origin",void 0),ht([w()],$t.prototype,"around",void 0),ht([h(!1)],$t.prototype,"lazy",void 0),ht([x(1)],$t.prototype,"pixelRatio",void 0),ht([m()],$t.prototype,"path",void 0),ht([R()],$t.prototype,"windingRule",void 0),ht([R(!0)],$t.prototype,"closed",void 0),ht([w(!1)],$t.prototype,"flow",void 0),ht([v(0)],$t.prototype,"padding",void 0),ht([v(0)],$t.prototype,"gap",void 0),ht([v("top-left")],$t.prototype,"align",void 0),ht([v(!1)],$t.prototype,"wrap",void 0),ht([v("box")],$t.prototype,"itemBox",void 0),ht([v(!0)],$t.prototype,"inFlow",void 0),ht([v()],$t.prototype,"autoWidth",void 0),ht([v()],$t.prototype,"autoHeight",void 0),ht([v()],$t.prototype,"autoBox",void 0),ht([v()],$t.prototype,"widthRange",void 0),ht([v()],$t.prototype,"heightRange",void 0),ht([h(!1)],$t.prototype,"draggable",void 0),ht([h()],$t.prototype,"dragBounds",void 0),ht([h(!1)],$t.prototype,"editable",void 0),ht([S(!0)],$t.prototype,"hittable",void 0),ht([S("path")],$t.prototype,"hitFill",void 0),ht([k("path")],$t.prototype,"hitStroke",void 0),ht([S(!1)],$t.prototype,"hitBox",void 0),ht([S(!0)],$t.prototype,"hitChildren",void 0),ht([S(!0)],$t.prototype,"hitSelf",void 0),ht([S()],$t.prototype,"hitRadius",void 0),ht([b("")],$t.prototype,"cursor",void 0),ht([d()],$t.prototype,"fill",void 0),ht([k()],$t.prototype,"stroke",void 0),ht([k("inside")],$t.prototype,"strokeAlign",void 0),ht([k(1)],$t.prototype,"strokeWidth",void 0),ht([k(!1)],$t.prototype,"strokeWidthFixed",void 0),ht([k("none")],$t.prototype,"strokeCap",void 0),ht([k("miter")],$t.prototype,"strokeJoin",void 0),ht([k()],$t.prototype,"dashPattern",void 0),ht([k()],$t.prototype,"dashOffset",void 0),ht([k(10)],$t.prototype,"miterLimit",void 0),ht([xt("none")],$t.prototype,"startArrow",void 0),ht([xt("none")],$t.prototype,"endArrow",void 0),ht([R(0)],$t.prototype,"cornerRadius",void 0),ht([R()],$t.prototype,"cornerSmoothing",void 0),ht([mt()],$t.prototype,"shadow",void 0),ht([mt()],$t.prototype,"innerShadow",void 0),ht([mt()],$t.prototype,"blur",void 0),ht([mt()],$t.prototype,"backgroundBlur",void 0),ht([mt()],$t.prototype,"grayscale",void 0),ht([h()],$t.prototype,"normalStyle",void 0),ht([h()],$t.prototype,"hoverStyle",void 0),ht([h()],$t.prototype,"pressStyle",void 0),ht([h()],$t.prototype,"focusStyle",void 0),ht([h()],$t.prototype,"selectedStyle",void 0),ht([h()],$t.prototype,"disabledStyle",void 0),ht([B(A.prototype.reset)],$t.prototype,"reset",null),$t=Jt=ht([C(Xt),C(Ut),P()],$t);let Kt=class extends $t{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){if(t.children){const{children:e}=t;let i;delete t.children,this.children?this.clear():this.__setBranch(),super.set(t),e.forEach((t=>{i=t.__?t:L.get(t.tag,t),this.add(i)})),t.children=e}else super.set(t)}toJSON(){const t=super.toJSON();return t.children=this.children.map((t=>t.toJSON())),t}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 qt;ht([_(Pt)],Kt.prototype,"__",void 0),Kt=ht([C(W),T()],Kt);const Qt=o.get("Leafer");let Zt=qt=class extends Kt{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&z.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}}constructor(t,e){super(e),this.config={type:"design",start:!0,hittable:!0,smooth:!0,lazySpeard:100,zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0,autoDistance:2}},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),qt.list.add(this)}init(t,e){if(this.canvas)return;let i;this.__setLeafer(this),t&&M.assign(this.config,t);const{config:s}=this;this.initType(s.type);const o=this.canvas=O.canvas(s);this.__controllers.push(this.renderer=O.renderer(this,o,s),this.watcher=O.watcher(this,s),this.layouter=O.layouter(this,s)),this.isApp&&this.__setApp(),this.__checkAutoLayout(s),this.view=o.view,e?(this.__bindApp(e),i=e.running):(this.selector=O.selector(this),this.interaction=O.interaction(this,o,this.selector,s),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=O.hitCanvasManager()),this.canvasManager=new N,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){this.waitInit((()=>{super.set(t)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.ready?this.emitLeafer(V.RESTART):this.emitLeafer(V.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render(),this.running=!0)}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(V.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(t){const e=M.copyAttrs({},t,Y);Object.keys(e).forEach((t=>this[t]=e[t]))}forceRender(t){this.renderer.addBlock(t?new X(t):this.canvas.bounds),this.viewReady&&this.renderer.update()}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=M.copyAttrs({},this.canvas,Y);e.resize(t),this.updateLazyBounds(),this.__onResize(new U(t,i))}__onResize(t){this.emitEvent(t),M.copyAttrs(this.__,t,Y),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){t.width&&t.height||(this.autoLayout=new j(t),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(t,e){return this.canvas&&(Y.includes(t)?this.__changeCanvasSize(t,e):"fill"===t?this.__changeFill(e):"hittable"===t&&(this.canvas.hittable=e)),super.__setAttr(t,e)}__getAttr(t){return this.canvas&&Y.includes(t)?this.canvas[t]:super.__getAttr(t)}__changeCanvasSize(t,e){const i=M.copyAttrs({},this.canvas,Y);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||(this.ready=!0,this.emitLeafer(V.BEFORE_READY),this.emitLeafer(V.READY),this.emitLeafer(V.AFTER_READY),H.run(this.__readyWait))}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(V.VIEW_READY),H.run(this.__viewReadyWait))}__onNextRender(){if(this.viewReady){H.run(this.__nextRenderWait);const{imageReady:t}=this;t&&!this.viewCompleted&&this.__checkViewCompleted(),t||(this.viewCompleted=!1)}}__checkViewCompleted(t=!0){this.nextRender((()=>{this.imageReady&&(t&&this.emitLeafer(V.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)}zoom(t,e,i){}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}__checkUpdateLayout(){this.__layout.update()}emitLeafer(t){this.emitEvent(new V(t,this))}__listenEvents(){const t=G.start("FirstCreate "+this.innerName);this.once(V.START,(()=>G.end(t))),this.once(J.START,(()=>this.updateLazyBounds())),this.once(J.END,(()=>this.__onReady())),this.once($.START,(()=>this.__onCreated())),this.once($.END,(()=>this.__onViewReady())),this.__eventIds.push(this.on_(K.DATA,this.__onWatchData,this),this.on_($.NEXT,this.__onNextRender,this),this.on_(J.CHECK_UPDATE,this.__checkUpdateLayout,this))}__removeListenEvents(){this.off_(this.__eventIds),this.__eventIds.length=0}destroy(t){const e=()=>{if(!this.destroyed){qt.list.remove(this);try{this.stop(),this.emitEvent(new V(V.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=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{z.clearRecycled()}),100)}catch(t){Qt.error(t)}}};t?e():setTimeout(e)}};Zt.list=new I,ht([_(Et)],Zt.prototype,"__",void 0),ht([v()],Zt.prototype,"pixelRatio",void 0),Zt=qt=ht([T()],Zt);let te=class extends $t{get __tag(){return"Rect"}constructor(t){super(t)}};ht([_(Tt)],te.prototype,"__",void 0),te=ht([C(Gt),P(),T()],te);const ee=te.prototype,ie=Kt.prototype,se={},{copy:oe,add:re}=Q;let ae=class extends Kt{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(){const t=this.__updateRectRenderSpread(),e=this.__.__drawAfterFill="hide"===this.__.overflow;return t||e?t:-1}__updateRectBoxBounds(){}__updateBoxBounds(){const t=this.__;if(t.__autoSide&&this.children.length){if(this.leafer&&this.leafer.layouter.addExtra(this),super.__updateBoxBounds(),!t.__autoSize){const e=this.__layout.boxBounds;t.__autoWidth||(e.x=0,e.width=t.width),t.__autoHeight||(e.y=0,e.height=t.height)}}else this.__updateRectBoxBounds();t.flow&&this.__updateContentBounds()}__updateStrokeBounds(){}__updateRenderBounds(){if(this.__updateRectRenderBounds(),!this.__.__drawAfterFill){const{renderBounds:t}=this.__layout;oe(se,t),super.__updateRenderBounds(),re(t,se)}}__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.__renderGroup(t,e))}__drawAfterFill(t,e){t.save(),t.clip(),this.__renderGroup(t,e),t.restore(),this.__.stroke&&this.__drawRenderPath(t)}};ht([_(Ft)],ae.prototype,"__",void 0),ht([q("show")],ae.prototype,"overflow",void 0),ht([B(ee.__updateStrokeSpread)],ae.prototype,"__updateStrokeSpread",null),ht([B(ee.__updateRenderSpread)],ae.prototype,"__updateRectRenderSpread",null),ht([B(ee.__updateBoxBounds)],ae.prototype,"__updateRectBoxBounds",null),ht([B(ee.__updateStrokeBounds)],ae.prototype,"__updateStrokeBounds",null),ht([B(ee.__updateRenderBounds)],ae.prototype,"__updateRectRenderBounds",null),ht([B(ee.__updateChange)],ae.prototype,"__updateRectChange",null),ht([B(ee.__render)],ae.prototype,"__renderRect",null),ht([B(ie.__render)],ae.prototype,"__renderGroup",null),ae=ht([P(),T()],ae);let ne=class extends ae{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}};ht([_(Dt)],ne.prototype,"__",void 0),ht([d("#FFFFFF")],ne.prototype,"fill",void 0),ht([q("hide")],ne.prototype,"overflow",void 0),ne=ht([T()],ne);const{moveTo:_e,closePath:he,ellipse:de}=tt;let pe=class extends $t{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&&de(n,r,a,r*i,a*i,0,s,o,!1),de(n,r,a,r,a,0,o,s,!0),i<1&&he(n)):(i<1&&(de(n,r,a,r*i,a*i),_e(n,t,a)),de(n,r,a,r,a,0,360,0,!0)),Z.ellipseToCurve&&(this.__.path=this.getPath(!0))):s||o?(_e(n,r,a),de(n,r,a,r,a,0,s,o,!1),he(n)):de(n,r,a,r,a)}};ht([_(Wt)],pe.prototype,"__",void 0),ht([R(0)],pe.prototype,"innerRadius",void 0),ht([R(0)],pe.prototype,"startAngle",void 0),ht([R(0)],pe.prototype,"endAngle",void 0),pe=ht([T()],pe);const{moveTo:le,lineTo:ue,drawPoints:ce}=tt,{rotate:ye,getAngle:ve,getDistance:ge,defaultPoint:fe}=st,{toBounds:we}=ot;let xe=class extends $t{get __tag(){return"Line"}get toPoint(){const{width:t,rotation:e}=this.__,i=it();return t&&(i.x=t),e&&ye(i,e),i}set toPoint(t){this.width=ge(fe,t),this.rotation=ve(fe,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];this.__.points?ce(t,this.__.points,this.__.closed):(le(t,0,0),ue(t,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(ce(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&lt.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?we(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}};ht([_(Lt)],xe.prototype,"__",void 0),ht([et("center")],xe.prototype,"strokeAlign",void 0),ht([v(0)],xe.prototype,"height",void 0),ht([R()],xe.prototype,"points",void 0),ht([R(0)],xe.prototype,"curve",void 0),ht([R(!1)],xe.prototype,"closed",void 0),xe=ht([T()],xe);const{sin:me,cos:Re,PI:Se}=Math,{moveTo:ke,lineTo:be,closePath:Be,drawPoints:Ae}=tt,Ce=xe.prototype;let Pe=class extends $t{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)Ae(t,this.__.points,!1,!0);else{const{width:e,height:i,sides:s}=this.__,o=e/2,r=i/2;ke(t,o,0);for(let e=1;e<s;e++)be(t,o+o*me(2*e*Se/s),r-r*Re(2*e*Se/s))}Be(t)}__updateRenderPath(){}__updateBoxBounds(){}};ht([_(It)],Pe.prototype,"__",void 0),ht([R(3)],Pe.prototype,"sides",void 0),ht([R()],Pe.prototype,"points",void 0),ht([R(0)],Pe.prototype,"curve",void 0),ht([B(Ce.__updateRenderPath)],Pe.prototype,"__updateRenderPath",null),ht([B(Ce.__updateBoxBounds)],Pe.prototype,"__updateBoxBounds",null),Pe=ht([P(),T()],Pe);const{sin:Fe,cos:Ee,PI:De}=Math,{moveTo:Le,lineTo:Te,closePath:We}=tt;let Ie=class extends $t{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=[];Le(a,o,0);for(let t=1;t<2*i;t++)Te(a,o+(t%2==0?o:o*s)*Fe(t*De/i),r-(t%2==0?r:r*s)*Ee(t*De/i));We(a)}};ht([_(zt)],Ie.prototype,"__",void 0),ht([R(5)],Ie.prototype,"corners",void 0),ht([R(.382)],Ie.prototype,"innerRadius",void 0),Ie=ht([T()],Ie);let ze=class extends te{get __tag(){return"Image"}get ready(){return!!this.image&&this.image.ready}constructor(t){super(t),this.on(rt.LOADED,(t=>{"fill"===t.attrName&&t.attrValue.url===this.url&&(this.image=t.image)}))}destroy(){this.image=null,super.destroy()}};ht([_(Vt)],ze.prototype,"__",void 0),ht([v("")],ze.prototype,"url",void 0),ze=ht([T()],ze);let Me=class extends te{get __tag(){return"Canvas"}constructor(t){super(t),this.canvas=O.canvas(this.__),this.context=this.canvas.context,this.__.__drawAfterFill=!0}draw(t,e,i,s){t.__layout.update();const o=new at(t.__world).invert(),r=new at;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.forceUpdate("fill")}__drawAfterFill(t,e){const i=this.canvas.view,{width:s,height:o}=this;this.__.cornerRadius?(t.save(),t.clip(),t.drawImage(this.canvas.view,0,0,i.width,i.height,0,0,s,o),t.restore()):t.drawImage(this.canvas.view,0,0,i.width,i.height,0,0,s,o)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e}=this.__;t.smooth!==e&&(t.smooth=e),t.resize(this.__)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=null,this.context=null),super.destroy()}};ht([_(Yt)],Me.prototype,"__",void 0),ht([Rt(100)],Me.prototype,"width",void 0),ht([Rt(100)],Me.prototype,"height",void 0),ht([Rt(Z.devicePixelRatio)],Me.prototype,"pixelRatio",void 0),ht([Rt(!0)],Me.prototype,"smooth",void 0),ht([Rt()],Me.prototype,"contextSettings",void 0),ht([S("all")],Me.prototype,"hitFill",void 0),Me=ht([T()],Me);const{copyAndSpread:Oe,includes:Ne,isSame:He,spread:Ve,setList:Ye}=Q;let Xe=class extends $t{get __tag(){return"Text"}get editInner(){return"TextEditor"}get textDrawData(){return this.__layout.update(),this.__.__textDrawData}constructor(t){super(t)}__drawHitPath(t){const{__lineHeight:e,__baseLine:i,__textDrawData:s}=this.__;t.beginPath(),this.__.__letterSpacing<0?this.__drawPathByData(t):s.rows.forEach((s=>t.rect(s.x,s.y-i,s.width,e)))}__drawPathByData(t,e){const{x:i,y:s,width:o,height:r}=this.__layout.boxBounds;t.rect(i,s,o,r)}__drawRenderPath(t){t.font=this.__.__font}__updateTextDrawData(){const t=this.__;t.__textDrawData=dt.getDrawData(t.text,this.__)}__updateBoxBounds(){const t=this.__,e=this.__layout,{lineHeight:i,letterSpacing:s,fontFamily:o,fontSize:r,fontWeight:a,italic:n,textCase:_,textOverflow:h,padding:d}=t,p=t.__autoWidth,l=t.__autoHeight;t.__lineHeight=Ct.number(i,r),t.__letterSpacing=Ct.number(s,r),t.__padding=d?nt.fourNumber(d):void 0,t.__baseLine=t.__lineHeight-(t.__lineHeight-.7*r)/2,t.__font=`${n?"italic ":""}${"small-caps"===_?"small-caps ":""}${"normal"!==a?a+" ":""}${r}px ${o}`,t.__clipText="show"!==h&&!t.__autoSize,this.__updateTextDrawData();const{bounds:u}=t.__textDrawData,c=e.boxBounds;if(t.__lineHeight<r&&Ve(u,r/2),p||l){if(c.x=p?u.x:0,c.y=l?u.y:0,c.width=p?u.width:t.width,c.height=l?u.height:t.height,d){const[e,i,s,o]=t.__padding;p&&(c.x-=o,c.width+=i+o),l&&(c.y-=e,c.height+=s+e)}this.__updateNaturalSize()}else super.__updateBoxBounds();n&&(c.width+=.16*r);const y=Ne(c,u)?c:u;He(y,e.contentBounds)?t.__textBoxBounds=y:(e.contentBounds=y,e.renderChanged=!0,Ye(t.__textBoxBounds={},[c,u]))}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.__layout.boxBounds===this.__layout.contentBounds?0:1),t}__updateRenderBounds(){Oe(this.__layout.renderBounds,this.__.__textBoxBounds,this.__layout.renderSpread)}};ht([_(Ht)],Xe.prototype,"__",void 0),ht([v(0)],Xe.prototype,"width",void 0),ht([v(0)],Xe.prototype,"height",void 0),ht([d("#000000")],Xe.prototype,"fill",void 0),ht([et("outside")],Xe.prototype,"strokeAlign",void 0),ht([S("all")],Xe.prototype,"hitFill",void 0),ht([v("")],Xe.prototype,"text",void 0),ht([v("L")],Xe.prototype,"fontFamily",void 0),ht([v(12)],Xe.prototype,"fontSize",void 0),ht([v("normal")],Xe.prototype,"fontWeight",void 0),ht([v(!1)],Xe.prototype,"italic",void 0),ht([v("none")],Xe.prototype,"textCase",void 0),ht([v("none")],Xe.prototype,"textDecoration",void 0),ht([v(0)],Xe.prototype,"letterSpacing",void 0),ht([v({type:"percent",value:150})],Xe.prototype,"lineHeight",void 0),ht([v(0)],Xe.prototype,"paraIndent",void 0),ht([v(0)],Xe.prototype,"paraSpacing",void 0),ht([v("left")],Xe.prototype,"textAlign",void 0),ht([v("top")],Xe.prototype,"verticalAlign",void 0),ht([v("normal")],Xe.prototype,"textWrap",void 0),ht([v("show")],Xe.prototype,"textOverflow",void 0),Xe=ht([T()],Xe);let Ue=class extends $t{get __tag(){return"Path"}constructor(t){super(t),this.__.__pathInputed=2}};ht([_(Mt)],Ue.prototype,"__",void 0),ht([et("center")],Ue.prototype,"strokeAlign",void 0),Ue=ht([T()],Ue);let je=class extends Kt{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new Ue(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this.__path.length=0,this.paint(),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.forceUpdate("path")}};ht([_(Ot)],je.prototype,"__",void 0),ht([(t,e)=>{s(t,e,{get(){return this.__path}})}],je.prototype,"path",void 0),je=ht([C(_t,["set","beginPath","path"]),T()],je);const Ge="1.0.0-rc.23";export{ae as Box,Ft as BoxData,Me as Canvas,Yt as CanvasData,pt as ColorConvert,vt as Effect,pe as Ellipse,Wt as EllipseData,gt as Export,ne as Frame,Dt as FrameData,Kt as Group,Pt as GroupData,ze as Image,Vt as ImageData,Zt as Leafer,Et as LeaferData,xe as Line,Lt as LineData,ut as Paint,yt as PaintGradient,ct as PaintImage,Ue as Path,lt as PathArrow,Mt as PathData,je as Pen,Ot as PenData,Pe as Polygon,It as PolygonData,te as Rect,Tt as RectData,Gt as RectRender,Ie as Star,zt as StarData,ft as State,Xe as Text,dt as TextConvert,Ht as TextData,$t as UI,Xt as UIBounds,At as UIData,Ut as UIRender,Ct as UnitConvert,xt as arrowType,mt as effectType,Rt as resizeType,wt as stateType,Ge as version,St as zoomLayerType};
1
+ import{decorateLeafAttr as t,attr as e,doStrokeType as i,defineKey as s,Debug as o,LeafData as r,PathConvert as a,dataProcessor as n,dataType as _,surfaceType as h,opacityType as d,visibleType as p,sortType as l,maskType as u,eraserType as c,positionType as y,boundsType as g,scaleType as v,rotationType as f,autoLayoutType as w,naturalBoundsType as x,pathInputType as m,pathType as R,hitType as S,strokeType as B,cursorType as k,rewrite as b,Leaf as A,useModule as P,rewriteAble as C,pen as F,PathCorner as E,PathDrawer as L,UICreator as D,registerUI as W,Branch as I,LeafList as T,ImageManager as z,DataHelper as M,Creator as O,CanvasManager as N,WaitHelper as H,LeaferEvent as V,canvasSizeAttrs as Y,Bounds as X,ResizeEvent as U,AutoBounds as j,Run as G,LayoutEvent as J,RenderEvent as $,WatchEvent as K,affectRenderBoundsType as q,BoundsHelper as Q,Platform as Z,PathCommandDataHelper as tt,affectStrokeBoundsType as et,getPointData as it,PointHelper as st,PathBounds as ot,ImageEvent as rt,Matrix as at,MathHelper as nt,PathCreator as _t}from"@leafer/core";export*from"@leafer/core";function ht(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"==typeof SuppressedError&&SuppressedError;const dt={},pt={},lt={},ut={},ct={},yt={},gt={},vt={},ft={};function wt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),this.waitLeafer((()=>{ft.setStyle&&ft.setStyle(this,t+"Style",e)}))}})))}function xt(s){return t(s,(t=>e({set(e){if(this.__setAttr(t,e)){const t=this.__;t.__useArrow="none"!==t.startArrow||"none"!==t.endArrow,i(this)}}})))}function mt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),e&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function Rt(i){return t(i,(t=>e({set(e){this.__setAttr(t,e),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function St(){return(t,e)=>{const i="_"+e;s(t,e,{set(t){this.isLeafer&&(this[i]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[i]||this:this.leafer&&this.leafer.zoomLayer}})}}const{parse:Bt}=a,kt={},bt=o.get("UIData");class At extends r{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 __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.__leaf.leafer&&(this.__leaf.leafer.watcher.hasVisible=!0),this._visible=t}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,bt.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,bt.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("fill",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isFills=!0,this._fill||(this._fill=kt)):(this.__isFills&&(this.__removeInput("fill"),ct.recycleImage("fill",this),this.__isFills=!1,this.__pixelFill&&(this.__pixelFill=!1)),this._fill=t)}setStroke(t){"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("stroke",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isStrokes=!0,this._stroke||(this._stroke=kt)):(this.__isStrokes&&(this.__removeInput("stroke"),ct.recycleImage("stroke",this),this.__isStrokes=!1,this.__pixelStroke&&(this.__pixelStroke=!1)),this._stroke=t)}setPath(t){"string"==typeof t?(this.__setInput("path",t),this._path=Bt(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){this.__setInput("shadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._shadow=t.length?t:null):this._shadow=t?!1===t.visible?null:[t]:null}setInnerShadow(t){this.__setInput("innerShadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._innerShadow=t.length?t:null):this._innerShadow=t?!1===t.visible?null:[t]:null}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&ut.compute("fill",this.__leaf),e&&ut.compute("stroke",this.__leaf),this.__needComputePaint=!1}}const Pt={number:(t,e)=>"object"==typeof t?"percent"===t.type?t.value*e:t.value:t};class Ct extends At{}class Ft extends Ct{get __boxStroke(){return!this.__pathInputed}}class Et extends Ct{}class Lt extends Ft{}class Dt extends At{}class Wt extends At{get __boxStroke(){return!this.__pathInputed}}class It extends At{get __boxStroke(){return!this.__pathInputed}}class Tt extends At{}class zt extends At{}class Mt extends At{}class Ot extends Ct{}const Nt={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class Ht extends At{get __useNaturalRatio(){return!1}setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),this._fontWeight=Nt[t]||400):(this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t)}}class Vt extends Wt{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.__leaf.image&&(this.__leaf.image=null),this.fill=t?{type:"image",mode:"strench",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(){const t=super.__getInputData();return delete t.fill,t}}class Yt extends Wt{}const Xt={__updateStrokeSpread(){let t=0,e=0;const i=this.__,{strokeAlign:s,strokeWidth:o}=i;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),this.__layout.strokeBoxSpread=e,t},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o}=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));let r=t=Math.ceil(t);return i&&i.forEach((t=>{r=Math.max(r,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur)})),o&&(r=Math.max(r,o)),this.__layout.renderShapeSpread=r,t+(this.__layout.strokeSpread||0)}},Ut={__updateChange(){const t=this.__;if(t.__useEffect){const{shadow:e,innerShadow:i,blur:s,backgroundBlur:o}=this.__;t.__useEffect=!!(e||i||s||o)}t.__checkSingle();t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect?t.__complex=!0:t.__complex&&(t.__complex=!1)},__drawFast(t,e){jt(this,t,e)},__draw(t,e){const i=this.__;if(i.__complex){i.__needComputePaint&&i.__computePaint();const{fill:s,stroke:o,__drawAfterFill:r}=i;if(this.__drawRenderPath(t),i.__useEffect){const a=ut.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:n,innerShadow:_}=i;n&&gt.shadow(this,t,a),s&&(i.__isFills?ut.fills(s,this,t):ut.fill(s,this,t)),r&&this.__drawAfterFill(t,e),_&&gt.innerShadow(this,t,a),o&&(i.__isStrokes?ut.strokes(o,this,t):ut.stroke(o,this,t)),a.worldCanvas&&a.worldCanvas.recycle(),a.canvas.recycle()}else s&&(i.__isFills?ut.fills(s,this,t):ut.fill(s,this,t)),r&&this.__drawAfterFill(t,e),o&&(i.__isStrokes?ut.strokes(o,this,t):ut.stroke(o,this,t))}else i.__pathInputed?jt(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?ut.fills(o,this,t):ut.fill("#000000",this,t)),r&&!s&&(this.__.__pixelStroke?ut.strokes(r,this,t):ut.stroke("#000000",this,t))}}};function jt(t,e,i){const{fill:s,stroke:o,__drawAfterFill:r}=t.__;t.__drawRenderPath(e),s&&ut.fill(s,t,e),r&&t.__drawAfterFill(e,i),o&&ut.stroke(o,t,e)}const Gt={__drawFast(t,e){let{width:i,height:s,fill:o,stroke:r,__drawAfterFill:a}=this.__;if(o&&(t.fillStyle=o,t.fillRect(0,0,i,s)),a&&this.__drawAfterFill(t,e),r){const{strokeAlign:o,__strokeWidth:a}=this.__;if(!a)return;t.setStroke(r,a,this.__);const n=a/2;switch(o){case"center":t.strokeRect(0,0,i,s);break;case"inside":i-=a,s-=a,i<0||s<0?(t.save(),this.__clip(t,e),t.strokeRect(n,n,i,s),t.restore()):t.strokeRect(n,n,i,s);break;case"outside":t.strokeRect(-n,-n,i+a,s+a)}}}};var Jt;let $t=Jt=class extends A{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){"number"==typeof t?this.scaleX=this.scaleY=t:(this.scaleX=t.x,this.scaleY=t.y)}get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get pen(){const{path:t}=this.__;return F.set(this.path=t||[]),t||this.__drawPathByBox(F),F}get editConfig(){}get editOuter(){return this.__.__isLinePath?"LineEditTool":"EditTool"}get editInner(){return"PathEditor"}constructor(t){super(t)}reset(t){}set(t){Object.assign(this,t)}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){}findTag(t){return this.find({tag:t})}findOne(t,e){}findId(t){return this.findOne({id:t})}getPath(t,e){this.__layout.update();let i=e?this.__.__pathForRender:this.__.path;return i||(F.set(i=[]),this.__drawPathByBox(F)),t?a.toCanvasData(i,!0):i}getPathString(t,e){return a.stringify(this.getPath(t,e))}load(){this.__.__computePaint()}__onUpdateSize(){if(this.__.__input){const t=this.__;t.lazy&&this.leafer&&this.leafer.created&&!this.leafer.lazyBounds.hit(this.__world)?t.__needComputePaint=!0:t.__computePaint()}}__updateRenderPath(){if(this.__.path){const t=this.__;t.__pathForRender=t.cornerRadius?E.smooth(t.path,t.cornerRadius,t.cornerSmoothing):t.path,t.__useArrow&&lt.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)}export(t,e){return vt.export(this,t,e)}clone(){return Jt.one(this.toJSON())}static one(t,e,i,s,o){return D.get(t.tag||this.prototype.__tag,t,e,i,s,o)}static registerUI(){W()(this)}static registerData(t){n(t)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,super.destroy()}};ht([n(At)],$t.prototype,"__",void 0),ht([St()],$t.prototype,"zoomLayer",void 0),ht([_("")],$t.prototype,"id",void 0),ht([_("")],$t.prototype,"name",void 0),ht([_("")],$t.prototype,"className",void 0),ht([h("pass-through")],$t.prototype,"blendMode",void 0),ht([d(1)],$t.prototype,"opacity",void 0),ht([p(!0)],$t.prototype,"visible",void 0),ht([wt(!1)],$t.prototype,"selected",void 0),ht([wt(!1)],$t.prototype,"disabled",void 0),ht([_(!1)],$t.prototype,"locked",void 0),ht([l(0)],$t.prototype,"zIndex",void 0),ht([u(!1)],$t.prototype,"mask",void 0),ht([c(!1)],$t.prototype,"eraser",void 0),ht([y(0,!0)],$t.prototype,"x",void 0),ht([y(0,!0)],$t.prototype,"y",void 0),ht([g(100,!0)],$t.prototype,"width",void 0),ht([g(100,!0)],$t.prototype,"height",void 0),ht([v(1,!0)],$t.prototype,"scaleX",void 0),ht([v(1,!0)],$t.prototype,"scaleY",void 0),ht([f(0,!0)],$t.prototype,"rotation",void 0),ht([f(0,!0)],$t.prototype,"skewX",void 0),ht([f(0,!0)],$t.prototype,"skewY",void 0),ht([y(0,!0)],$t.prototype,"offsetX",void 0),ht([y(0,!0)],$t.prototype,"offsetY",void 0),ht([y(0,!0)],$t.prototype,"scrollX",void 0),ht([y(0,!0)],$t.prototype,"scrollY",void 0),ht([w()],$t.prototype,"origin",void 0),ht([w()],$t.prototype,"around",void 0),ht([_(!1)],$t.prototype,"lazy",void 0),ht([x(1)],$t.prototype,"pixelRatio",void 0),ht([m()],$t.prototype,"path",void 0),ht([R()],$t.prototype,"windingRule",void 0),ht([R(!0)],$t.prototype,"closed",void 0),ht([w(!1)],$t.prototype,"flow",void 0),ht([g(0)],$t.prototype,"padding",void 0),ht([g(0)],$t.prototype,"gap",void 0),ht([g("top-left")],$t.prototype,"align",void 0),ht([g(!1)],$t.prototype,"wrap",void 0),ht([g("box")],$t.prototype,"itemBox",void 0),ht([g(!0)],$t.prototype,"inFlow",void 0),ht([g()],$t.prototype,"autoWidth",void 0),ht([g()],$t.prototype,"autoHeight",void 0),ht([g()],$t.prototype,"autoBox",void 0),ht([g()],$t.prototype,"widthRange",void 0),ht([g()],$t.prototype,"heightRange",void 0),ht([_(!1)],$t.prototype,"draggable",void 0),ht([_()],$t.prototype,"dragBounds",void 0),ht([_(!1)],$t.prototype,"editable",void 0),ht([S(!0)],$t.prototype,"hittable",void 0),ht([S("path")],$t.prototype,"hitFill",void 0),ht([B("path")],$t.prototype,"hitStroke",void 0),ht([S(!1)],$t.prototype,"hitBox",void 0),ht([S(!0)],$t.prototype,"hitChildren",void 0),ht([S(!0)],$t.prototype,"hitSelf",void 0),ht([S()],$t.prototype,"hitRadius",void 0),ht([k("")],$t.prototype,"cursor",void 0),ht([h()],$t.prototype,"fill",void 0),ht([B()],$t.prototype,"stroke",void 0),ht([B("inside")],$t.prototype,"strokeAlign",void 0),ht([B(1)],$t.prototype,"strokeWidth",void 0),ht([B(!1)],$t.prototype,"strokeWidthFixed",void 0),ht([B("none")],$t.prototype,"strokeCap",void 0),ht([B("miter")],$t.prototype,"strokeJoin",void 0),ht([B()],$t.prototype,"dashPattern",void 0),ht([B()],$t.prototype,"dashOffset",void 0),ht([B(10)],$t.prototype,"miterLimit",void 0),ht([xt("none")],$t.prototype,"startArrow",void 0),ht([xt("none")],$t.prototype,"endArrow",void 0),ht([R(0)],$t.prototype,"cornerRadius",void 0),ht([R()],$t.prototype,"cornerSmoothing",void 0),ht([mt()],$t.prototype,"shadow",void 0),ht([mt()],$t.prototype,"innerShadow",void 0),ht([mt()],$t.prototype,"blur",void 0),ht([mt()],$t.prototype,"backgroundBlur",void 0),ht([mt()],$t.prototype,"grayscale",void 0),ht([_()],$t.prototype,"normalStyle",void 0),ht([_()],$t.prototype,"hoverStyle",void 0),ht([_()],$t.prototype,"pressStyle",void 0),ht([_()],$t.prototype,"focusStyle",void 0),ht([_()],$t.prototype,"selectedStyle",void 0),ht([_()],$t.prototype,"disabledStyle",void 0),ht([b(A.prototype.reset)],$t.prototype,"reset",null),$t=Jt=ht([P(Xt),P(Ut),C()],$t);let Kt=class extends $t{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){if(t.children){const{children:e}=t;let i;delete t.children,this.children?this.clear():this.__setBranch(),super.set(t),e.forEach((t=>{i=t.__?t:D.get(t.tag,t),this.add(i)})),t.children=e}else super.set(t)}toJSON(){const t=super.toJSON();return t.children=this.children.map((t=>t.toJSON())),t}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 qt;ht([n(Ct)],Kt.prototype,"__",void 0),Kt=ht([P(I),W()],Kt);const Qt=o.get("Leafer");let Zt=qt=class extends Kt{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&z.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()}constructor(t,e){super(e),this.config={type:"design",start:!0,hittable:!0,smooth:!0,lazySpeard:100,zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0,autoDistance:2}},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),qt.list.add(this)}init(t,e){if(this.canvas)return;let i;this.__setLeafer(this),t&&M.assign(this.config,t);const{config:s}=this;this.initType(s.type);const o=this.canvas=O.canvas(s);this.__controllers.push(this.renderer=O.renderer(this,o,s),this.watcher=O.watcher(this,s),this.layouter=O.layouter(this,s)),this.isApp&&this.__setApp(),this.__checkAutoLayout(s),this.view=o.view,e?(this.__bindApp(e),i=e.running):(this.selector=O.selector(this),this.interaction=O.interaction(this,o,this.selector,s),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=O.hitCanvasManager()),this.canvasManager=new N,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){this.waitInit((()=>{super.set(t)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.ready?this.emitLeafer(V.RESTART):this.emitLeafer(V.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render(),this.running=!0)}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(V.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(t){const e=M.copyAttrs({},t,Y);Object.keys(e).forEach((t=>this[t]=e[t]))}forceRender(t){this.renderer.addBlock(t?new X(t):this.canvas.bounds),this.viewReady&&this.renderer.update()}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=M.copyAttrs({},this.canvas,Y);e.resize(t),this.updateLazyBounds(),this.__onResize(new U(t,i))}__onResize(t){this.emitEvent(t),M.copyAttrs(this.__,t,Y),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){t.width&&t.height||(this.autoLayout=new j(t),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(t,e){return this.canvas&&(Y.includes(t)?this.__changeCanvasSize(t,e):"fill"===t?this.__changeFill(e):"hittable"===t&&(this.parent||(this.canvas.hittable=e))),super.__setAttr(t,e)}__getAttr(t){return this.canvas&&Y.includes(t)?this.canvas[t]:super.__getAttr(t)}__changeCanvasSize(t,e){const i=M.copyAttrs({},this.canvas,Y);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||(this.ready=!0,this.emitLeafer(V.BEFORE_READY),this.emitLeafer(V.READY),this.emitLeafer(V.AFTER_READY),H.run(this.__readyWait))}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(V.VIEW_READY),H.run(this.__viewReadyWait))}__onNextRender(){if(this.viewReady){H.run(this.__nextRenderWait);const{imageReady:t}=this;t&&!this.viewCompleted&&this.__checkViewCompleted(),t||(this.viewCompleted=!1)}}__checkViewCompleted(t=!0){this.nextRender((()=>{this.imageReady&&(t&&this.emitLeafer(V.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)}zoom(t,e,i){}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}getWorldPointByClient(t,e){return this.interaction&&this.interaction.getLocal(t,e)}__checkUpdateLayout(){this.__layout.update()}emitLeafer(t){this.emitEvent(new V(t,this))}__listenEvents(){const t=G.start("FirstCreate "+this.innerName);this.once(V.START,(()=>G.end(t))),this.once(J.START,(()=>this.updateLazyBounds())),this.once(J.END,(()=>this.__onReady())),this.once($.START,(()=>this.__onCreated())),this.once($.END,(()=>this.__onViewReady())),this.__eventIds.push(this.on_(K.DATA,this.__onWatchData,this),this.on_($.NEXT,this.__onNextRender,this),this.on_(J.CHECK_UPDATE,this.__checkUpdateLayout,this))}__removeListenEvents(){this.off_(this.__eventIds),this.__eventIds.length=0}destroy(t){const e=()=>{if(!this.destroyed){qt.list.remove(this);try{this.stop(),this.emitEvent(new V(V.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=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{z.clearRecycled()}),100)}catch(t){Qt.error(t)}}};t?e():setTimeout(e)}};Zt.list=new T,ht([n(Et)],Zt.prototype,"__",void 0),ht([g()],Zt.prototype,"pixelRatio",void 0),Zt=qt=ht([W()],Zt);let te=class extends $t{get __tag(){return"Rect"}constructor(t){super(t)}};ht([n(Wt)],te.prototype,"__",void 0),te=ht([P(Gt),C(),W()],te);const ee=te.prototype,ie=Kt.prototype,se={},{copy:oe,add:re,includes:ae}=Q;let ne=class extends Kt{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(){const t=this.__;if(this.children.length){if(t.__autoSide){if(this.leafer&&this.leafer.ready&&this.leafer.layouter.addExtra(this),super.__updateBoxBounds(),!t.__autoSize){const e=this.__layout.boxBounds;t.__autoWidth||(e.x=0,e.width=t.width),t.__autoHeight||(e.y=0,e.height=t.height)}}else this.__updateRectBoxBounds();t.flow&&this.__updateContentBounds()}else this.__updateRectBoxBounds()}__updateStrokeBounds(){}__updateRenderBounds(){let t;const{renderBounds:e}=this.__layout;this.children.length?(super.__updateRenderBounds(),oe(se,e),this.__updateRectRenderBounds(),t=!ae(e,se)||void 0):this.__updateRectRenderBounds(),this.isOverflow!==t&&(this.isOverflow=t),t&&!(this.__.__drawAfterFill="hide"===this.__.overflow)&&re(e,se)}__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))}__drawAfterFill(t,e){const{length:i}=this.children;this.isOverflow?(t.save(),t.clip(),i&&this.__renderGroup(t,e),t.restore()):i&&this.__renderGroup(t,e),this.__.stroke&&i&&(t.setWorld(this.__nowWorld),this.__drawRenderPath(t))}};ht([n(Ft)],ne.prototype,"__",void 0),ht([q("show")],ne.prototype,"overflow",void 0),ht([b(ee.__updateStrokeSpread)],ne.prototype,"__updateStrokeSpread",null),ht([b(ee.__updateRenderSpread)],ne.prototype,"__updateRectRenderSpread",null),ht([b(ee.__updateBoxBounds)],ne.prototype,"__updateRectBoxBounds",null),ht([b(ee.__updateStrokeBounds)],ne.prototype,"__updateStrokeBounds",null),ht([b(ee.__updateRenderBounds)],ne.prototype,"__updateRectRenderBounds",null),ht([b(ee.__updateChange)],ne.prototype,"__updateRectChange",null),ht([b(ee.__render)],ne.prototype,"__renderRect",null),ht([b(ie.__render)],ne.prototype,"__renderGroup",null),ne=ht([C(),W()],ne);let _e=class extends ne{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}};ht([n(Lt)],_e.prototype,"__",void 0),ht([h("#FFFFFF")],_e.prototype,"fill",void 0),ht([q("hide")],_e.prototype,"overflow",void 0),_e=ht([W()],_e);const{moveTo:he,closePath:de,ellipse:pe}=tt;let le=class extends $t{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&&pe(n,r,a,r*i,a*i,0,s,o,!1),pe(n,r,a,r,a,0,o,s,!0),i<1&&de(n)):(i<1&&(pe(n,r,a,r*i,a*i),he(n,t,a)),pe(n,r,a,r,a,0,360,0,!0)),Z.ellipseToCurve&&(this.__.path=this.getPath(!0))):s||o?(he(n,r,a),pe(n,r,a,r,a,0,s,o,!1),de(n)):pe(n,r,a,r,a)}};ht([n(It)],le.prototype,"__",void 0),ht([R(0)],le.prototype,"innerRadius",void 0),ht([R(0)],le.prototype,"startAngle",void 0),ht([R(0)],le.prototype,"endAngle",void 0),le=ht([W()],le);const{moveTo:ue,lineTo:ce,drawPoints:ye}=tt,{rotate:ge,getAngle:ve,getDistance:fe,defaultPoint:we}=st,{toBounds:xe}=ot;let me=class extends $t{get __tag(){return"Line"}get toPoint(){const{width:t,rotation:e}=this.__,i=it();return t&&(i.x=t),e&&ge(i,e),i}set toPoint(t){this.width=fe(we,t),this.rotation=ve(we,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__,e=t.path=[];t.points?ye(e,t.points,!1,t.closed):(ue(e,0,0),ce(e,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(ye(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&lt.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?xe(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}};ht([n(Dt)],me.prototype,"__",void 0),ht([et("center")],me.prototype,"strokeAlign",void 0),ht([g(0)],me.prototype,"height",void 0),ht([R()],me.prototype,"points",void 0),ht([R(0)],me.prototype,"curve",void 0),ht([R(!1)],me.prototype,"closed",void 0),me=ht([W()],me);const{sin:Re,cos:Se,PI:Be}=Math,{moveTo:ke,lineTo:be,closePath:Ae,drawPoints:Pe}=tt,Ce=me.prototype;let Fe=class extends $t{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)Pe(t,this.__.points,!1,!0);else{const{width:e,height:i,sides:s}=this.__,o=e/2,r=i/2;ke(t,o,0);for(let e=1;e<s;e++)be(t,o+o*Re(2*e*Be/s),r-r*Se(2*e*Be/s))}Ae(t)}__updateRenderPath(){}__updateBoxBounds(){}};ht([n(Tt)],Fe.prototype,"__",void 0),ht([R(3)],Fe.prototype,"sides",void 0),ht([R()],Fe.prototype,"points",void 0),ht([R(0)],Fe.prototype,"curve",void 0),ht([b(Ce.__updateRenderPath)],Fe.prototype,"__updateRenderPath",null),ht([b(Ce.__updateBoxBounds)],Fe.prototype,"__updateBoxBounds",null),Fe=ht([C(),W()],Fe);const{sin:Ee,cos:Le,PI:De}=Math,{moveTo:We,lineTo:Ie,closePath:Te}=tt;let ze=class extends $t{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=[];We(a,o,0);for(let t=1;t<2*i;t++)Ie(a,o+(t%2==0?o:o*s)*Ee(t*De/i),r-(t%2==0?r:r*s)*Le(t*De/i));Te(a)}};ht([n(zt)],ze.prototype,"__",void 0),ht([R(5)],ze.prototype,"corners",void 0),ht([R(.382)],ze.prototype,"innerRadius",void 0),ze=ht([W()],ze);let Me=class extends te{get __tag(){return"Image"}get ready(){return!!this.image&&this.image.ready}constructor(t){super(t),this.on(rt.LOADED,(t=>{"fill"===t.attrName&&t.attrValue.url===this.url&&(this.image=t.image)}))}destroy(){this.image=null,super.destroy()}};ht([n(Vt)],Me.prototype,"__",void 0),ht([g("")],Me.prototype,"url",void 0),Me=ht([W()],Me);let Oe=class extends te{get __tag(){return"Canvas"}constructor(t){super(t),this.canvas=O.canvas(this.__),this.context=this.canvas.context,this.__.__drawAfterFill=!0}draw(t,e,i,s){t.__layout.update();const o=new at(t.__world).invert(),r=new at;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.forceUpdate("fill")}__drawAfterFill(t,e){const i=this.canvas.view,{width:s,height:o}=this;this.__.cornerRadius?(t.save(),t.clip(),t.drawImage(this.canvas.view,0,0,i.width,i.height,0,0,s,o),t.restore()):t.drawImage(this.canvas.view,0,0,i.width,i.height,0,0,s,o)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e}=this.__;t.smooth!==e&&(t.smooth=e),t.resize(this.__)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=null,this.context=null),super.destroy()}};ht([n(Yt)],Oe.prototype,"__",void 0),ht([Rt(100)],Oe.prototype,"width",void 0),ht([Rt(100)],Oe.prototype,"height",void 0),ht([Rt(Z.devicePixelRatio)],Oe.prototype,"pixelRatio",void 0),ht([Rt(!0)],Oe.prototype,"smooth",void 0),ht([Rt()],Oe.prototype,"contextSettings",void 0),ht([S("all")],Oe.prototype,"hitFill",void 0),Oe=ht([W()],Oe);const{copyAndSpread:Ne,includes:He,isSame:Ve,spread:Ye,setList:Xe}=Q;let Ue=class extends $t{get __tag(){return"Text"}get editInner(){return"TextEditor"}get textDrawData(){return this.__layout.update(),this.__.__textDrawData}constructor(t){super(t)}__drawHitPath(t){const{__lineHeight:e,__baseLine:i,__textDrawData:s}=this.__;t.beginPath(),this.__.__letterSpacing<0?this.__drawPathByData(t):s.rows.forEach((s=>t.rect(s.x,s.y-i,s.width,e)))}__drawPathByData(t,e){const{x:i,y:s,width:o,height:r}=this.__layout.boxBounds;t.rect(i,s,o,r)}__drawRenderPath(t){t.font=this.__.__font}__updateTextDrawData(){const t=this.__;t.__textDrawData=dt.getDrawData(t.text,this.__)}__updateBoxBounds(){const t=this.__,e=this.__layout,{lineHeight:i,letterSpacing:s,fontFamily:o,fontSize:r,fontWeight:a,italic:n,textCase:_,textOverflow:h,padding:d}=t,p=t.__autoWidth,l=t.__autoHeight;t.__lineHeight=Pt.number(i,r),t.__letterSpacing=Pt.number(s,r),t.__padding=d?nt.fourNumber(d):void 0,t.__baseLine=t.__lineHeight-(t.__lineHeight-.7*r)/2,t.__font=`${n?"italic ":""}${"small-caps"===_?"small-caps ":""}${"normal"!==a?a+" ":""}${r}px ${o}`,t.__clipText="show"!==h&&!t.__autoSize,this.__updateTextDrawData();const{bounds:u}=t.__textDrawData,c=e.boxBounds;if(t.__lineHeight<r&&Ye(u,r/2),p||l){if(c.x=p?u.x:0,c.y=l?u.y:0,c.width=p?u.width:t.width,c.height=l?u.height:t.height,d){const[e,i,s,o]=t.__padding;p&&(c.x-=o,c.width+=i+o),l&&(c.y-=e,c.height+=s+e)}this.__updateNaturalSize()}else super.__updateBoxBounds();n&&(c.width+=.16*r);const y=He(c,u)?c:u;Ve(y,e.contentBounds)?t.__textBoxBounds=y:(e.contentBounds=y,e.renderChanged=!0,Xe(t.__textBoxBounds={},[c,u]))}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.__layout.boxBounds===this.__layout.contentBounds?0:1),t}__updateRenderBounds(){Ne(this.__layout.renderBounds,this.__.__textBoxBounds,this.__layout.renderSpread)}};ht([n(Ht)],Ue.prototype,"__",void 0),ht([g(0)],Ue.prototype,"width",void 0),ht([g(0)],Ue.prototype,"height",void 0),ht([h("#000000")],Ue.prototype,"fill",void 0),ht([et("outside")],Ue.prototype,"strokeAlign",void 0),ht([S("all")],Ue.prototype,"hitFill",void 0),ht([g("")],Ue.prototype,"text",void 0),ht([g("L")],Ue.prototype,"fontFamily",void 0),ht([g(12)],Ue.prototype,"fontSize",void 0),ht([g("normal")],Ue.prototype,"fontWeight",void 0),ht([g(!1)],Ue.prototype,"italic",void 0),ht([g("none")],Ue.prototype,"textCase",void 0),ht([g("none")],Ue.prototype,"textDecoration",void 0),ht([g(0)],Ue.prototype,"letterSpacing",void 0),ht([g({type:"percent",value:1.5})],Ue.prototype,"lineHeight",void 0),ht([g(0)],Ue.prototype,"paraIndent",void 0),ht([g(0)],Ue.prototype,"paraSpacing",void 0),ht([g("left")],Ue.prototype,"textAlign",void 0),ht([g("top")],Ue.prototype,"verticalAlign",void 0),ht([g("normal")],Ue.prototype,"textWrap",void 0),ht([g("show")],Ue.prototype,"textOverflow",void 0),Ue=ht([W()],Ue);let je=class extends $t{get __tag(){return"Path"}constructor(t){super(t),this.__.__pathInputed=2}};ht([n(Mt)],je.prototype,"__",void 0),ht([et("center")],je.prototype,"strokeAlign",void 0),je=ht([W()],je);let Ge=class extends Kt{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new je(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this.__path.length=0,this.paint(),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.forceUpdate("path")}};ht([n(Ot)],Ge.prototype,"__",void 0),ht([(t,e)=>{s(t,e,{get(){return this.__path}})}],Ge.prototype,"path",void 0),Ge=ht([P(_t,["set","beginPath","path"]),W()],Ge);export{ne as Box,Ft as BoxData,Oe as Canvas,Yt as CanvasData,pt as ColorConvert,gt as Effect,le as Ellipse,It as EllipseData,vt as Export,_e as Frame,Lt as FrameData,Kt as Group,Ct as GroupData,Me as Image,Vt as ImageData,Zt as Leafer,Et as LeaferData,me as Line,Dt as LineData,ut as Paint,yt as PaintGradient,ct as PaintImage,je as Path,lt as PathArrow,Mt as PathData,Ge as Pen,Ot as PenData,Fe as Polygon,Tt as PolygonData,te as Rect,Wt as RectData,Gt as RectRender,ze as Star,zt as StarData,ft as State,Ue as Text,dt as TextConvert,Ht as TextData,$t as UI,Xt as UIBounds,At as UIData,Ut as UIRender,Pt as UnitConvert,xt as arrowType,mt as effectType,Rt as resizeType,wt as stateType,St as zoomLayerType};
package/lib/draw.min.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var t=require("@leafer/core");function e(t,e,o,s){var r,i=arguments.length,a=i<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,o):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,o,s);else for(var p=t.length-1;p>=0;p--)(r=t[p])&&(a=(i<3?r(a):i>3?r(e,o,a):r(e,o))||a);return i>3&&a&&Object.defineProperty(e,o,a),a}"function"==typeof SuppressedError&&SuppressedError;const o={},s={},r={},i={},a={},p={},n={};function h(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),this.waitLeafer((()=>{n.setStyle&&n.setStyle(this,e+"Style",t)}))}})))}function _(e){return t.decorateLeafAttr(e,(e=>t.attr({set(o){this.__setAttr(e,o);const s=this.__;s.__useArrow="none"!==s.startArrow||"none"!==s.endArrow,t.doStrokeType(this)}})))}function d(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),t&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function l(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function u(){return(e,o)=>{const s="_"+o;t.defineKey(e,o,{set(t){this.isLeafer&&(this[s]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[s]||this:this.leafer&&this.leafer.zoomLayer}})}}const{parse:c}=t.PathConvert,y={},x=t.Debug.get("UIData");class v extends t.LeafData{get __strokeWidth(){const{strokeWidth:t,strokeWidthFixed:e}=this;if(e){const e=this.__leaf;let{scaleX:o}=e.__nowWorld||e.__world;return o<0&&(o=-o),o>1?t/o:t}return t}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.__leaf.leafer&&(this.__leaf.leafer.watcher.hasVisible=!0),this._visible=t}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,x.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,x.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("fill",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isFills=!0,this._fill||(this._fill=y)):(this.__isFills&&(this.__removeInput("fill"),i.recycleImage("fill",this),this.__isFills=!1,this.__pixelFill&&(this.__pixelFill=!1)),this._fill=t)}setStroke(t){"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("stroke",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isStrokes=!0,this._stroke||(this._stroke=y)):(this.__isStrokes&&(this.__removeInput("stroke"),i.recycleImage("stroke",this),this.__isStrokes=!1,this.__pixelStroke&&(this.__pixelStroke=!1)),this._stroke=t)}setPath(t){"string"==typeof t?(this.__setInput("path",t),this._path=c(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){this.__setInput("shadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._shadow=t.length?t:null):this._shadow=t?!1===t.visible?null:[t]:null}setInnerShadow(t){this.__setInput("innerShadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._innerShadow=t.length?t:null):this._innerShadow=t?!1===t.visible?null:[t]:null}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&r.compute("fill",this.__leaf),e&&r.compute("stroke",this.__leaf),this.__needComputePaint=!1}}const g={number:(t,e)=>"object"==typeof t?"percent"===t.type?(t.value>49?t.value/100:t.value)*e:t.value:t};class f extends v{}class w extends f{get __boxStroke(){return!0}}class T extends f{}class m extends w{}class I extends v{}class R extends v{get __boxStroke(){return!0}}class b extends v{get __boxStroke(){return!0}}class P extends v{}class S extends v{}class U extends v{}class B extends f{}const k={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class C extends v{setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),this._fontWeight=k[t]||400):(this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t)}}class A extends R{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.__leaf.image&&(this.__leaf.image=null),this.fill=t?{type:"image",mode:"strench",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(){const t=super.__getInputData();return delete t.fill,t}}class L extends R{}const E={__updateStrokeSpread(){let e=0,o=0;const{stroke:s,hitStroke:r,strokeAlign:i,strokeWidth:a}=this.__;if((s||"all"===r)&&a&&"inside"!==i&&(o=e="center"===i?a/2:a,!this.__.__boxStroke)){const{miterLimit:o,strokeCap:s}=this.__,r="Line"!==this.__tag?1/Math.sin(o*t.OneRadian/2)*Math.sqrt(a)-e:0,i="none"===s?0:a;e+=Math.max(r,i)}return this.__layout.strokeBoxSpread=o,this.__.__useArrow&&(e+=5*a),e},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:o,blur:s,backgroundBlur: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));let i=t=Math.ceil(t);return o&&o.forEach((t=>{i=Math.max(i,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur)})),r&&(i=Math.max(i,r)),this.__layout.renderShapeSpread=i,t}},D={__updateChange(){const t=this.__;if(t.__useEffect){const{shadow:e,innerShadow:o,blur:s,backgroundBlur:r}=this.__;t.__useEffect=!!(e||o||s||r)}t.__checkSingle();t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect?t.__complex=!0:t.__complex&&(t.__complex=!1)},__drawFast(t,e){F(this,t,e)},__draw(t,e){const o=this.__;if(o.__complex){o.__needComputePaint&&o.__computePaint();const{fill:s,stroke:i,__drawAfterFill:p}=o;if(this.__drawRenderPath(t),o.__useEffect){const n=r.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:h,innerShadow:_}=o;h&&a.shadow(this,t,n),s&&(o.__isFills?r.fills(s,this,t):r.fill(s,this,t)),p&&this.__drawAfterFill(t,e),_&&a.innerShadow(this,t,n),i&&(o.__isStrokes?r.strokes(i,this,t):r.stroke(i,this,t)),n.worldCanvas&&n.worldCanvas.recycle(),n.canvas.recycle()}else s&&(o.__isFills?r.fills(s,this,t):r.fill(s,this,t)),p&&this.__drawAfterFill(t,e),i&&(o.__isStrokes?r.strokes(i,this,t):r.stroke(i,this,t))}else o.__pathInputed?F(this,t,e):this.__drawFast(t,e)},__renderShape(t,e,o,s){if(this.__worldOpacity){t.setWorld(this.__nowWorld=this.__getNowWorld(e));const{fill:i,stroke:a}=this.__;this.__drawRenderPath(t),i&&!o&&(this.__.__pixelFill?r.fills(i,this,t):r.fill("#000000",this,t)),a&&!s&&(this.__.__pixelStroke?r.strokes(a,this,t):r.stroke("#000000",this,t))}}};function F(t,e,o){const{fill:s,stroke:i,__drawAfterFill:a}=t.__;t.__drawRenderPath(e),s&&r.fill(s,t,e),a&&t.__drawAfterFill(e,o),i&&r.stroke(i,t,e)}const W={__drawFast(t,e){const{width:o,height:s,fill:r,stroke:i,__drawAfterFill:a}=this.__;if(r&&(t.fillStyle=r,t.fillRect(0,0,o,s)),a&&this.__drawAfterFill(t,e),i){const{strokeAlign:e,__strokeWidth:r}=this.__;if(!r)return;t.setStroke(i,r,this.__);const a=r/2;switch(e){case"center":t.strokeRect(0,0,o,s);break;case"inside":t.strokeRect(a,a,o-r,s-r);break;case"outside":t.strokeRect(-a,-a,o+r,s+r)}}}};var z,M;exports.UI=z=class extends t.Leaf{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){"number"==typeof t?this.scaleX=this.scaleY=t:(this.scaleX=t.x,this.scaleY=t.y)}get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get pen(){return t.pen.set(this.path=this.__.path||[]),t.pen}get editConfig(){}get editOuter(){return"EditTool"}get editInner(){return"PathEditor"}constructor(t){super(t)}reset(t){}set(t){Object.assign(this,t)}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){}findTag(t){return this.find({tag:t})}findOne(t,e){}findId(t){return this.findOne({id:t})}getPath(e,o){this.__layout.update();let s=o?this.__.__pathForRender:this.__.path;if(!s){const{width:e,height:o}=this.boxBounds;(e||o)&&(t.pen.set(s=[]),this.__drawPathByBox(t.pen))}return e?t.PathConvert.toCanvasData(s,!0):s}getPathString(e,o){return t.PathConvert.stringify(this.getPath(e,o))}__onUpdateSize(){if(this.__.__input){const t=this.__;t.lazy&&this.leafer&&this.leafer.created&&!this.leafer.lazyBounds.hit(this.__world)?t.__needComputePaint=!0:t.__computePaint()}}__updateRenderPath(){if(this.__.path){const e=this.__;e.__pathForRender=e.cornerRadius?t.PathCorner.smooth(e.path,e.cornerRadius,e.cornerSmoothing):e.path,e.__useArrow&&s.addArrows(this,!e.cornerRadius)}}__drawRenderPath(t){t.beginPath(),this.__drawPathByData(t,this.__.__pathForRender)}__drawPath(t){t.beginPath(),this.__drawPathByData(t,this.__.path)}__drawPathByData(e,o){o?t.PathDrawer.drawPathByData(e,o):this.__drawPathByBox(e)}__drawPathByBox(t){const{x:e,y:o,width:s,height:r}=this.__layout.boxBounds;if(this.__.cornerRadius){const{cornerRadius:i}=this.__;t.roundRect(e,o,s,r,"number"==typeof i?[i]:i)}else t.rect(e,o,s,r)}export(t,e){return p.export(this,t,e)}clone(){return z.one(this.toJSON())}static one(e,o,s,r,i){return t.UICreator.get(e.tag||this.prototype.__tag,e,o,s,r,i)}static registerUI(){t.registerUI()(this)}static registerData(e){t.dataProcessor(e)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,super.destroy()}},e([t.dataProcessor(v)],exports.UI.prototype,"__",void 0),e([u()],exports.UI.prototype,"zoomLayer",void 0),e([t.dataType("")],exports.UI.prototype,"id",void 0),e([t.dataType("")],exports.UI.prototype,"name",void 0),e([t.dataType("")],exports.UI.prototype,"className",void 0),e([t.surfaceType("pass-through")],exports.UI.prototype,"blendMode",void 0),e([t.opacityType(1)],exports.UI.prototype,"opacity",void 0),e([t.opacityType(!0)],exports.UI.prototype,"visible",void 0),e([h(!1)],exports.UI.prototype,"selected",void 0),e([h(!1)],exports.UI.prototype,"disabled",void 0),e([t.dataType(!1)],exports.UI.prototype,"locked",void 0),e([t.sortType(0)],exports.UI.prototype,"zIndex",void 0),e([t.maskType(!1)],exports.UI.prototype,"mask",void 0),e([t.surfaceType("pixel")],exports.UI.prototype,"maskType",void 0),e([t.eraserType(!1)],exports.UI.prototype,"eraser",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"x",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"y",void 0),e([t.boundsType(100,!0)],exports.UI.prototype,"width",void 0),e([t.boundsType(100,!0)],exports.UI.prototype,"height",void 0),e([t.scaleType(1,!0)],exports.UI.prototype,"scaleX",void 0),e([t.scaleType(1,!0)],exports.UI.prototype,"scaleY",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"rotation",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"skewX",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"skewY",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"offsetX",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"offsetY",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"scrollX",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"scrollY",void 0),e([t.autoLayoutType()],exports.UI.prototype,"origin",void 0),e([t.autoLayoutType()],exports.UI.prototype,"around",void 0),e([t.dataType(!1)],exports.UI.prototype,"lazy",void 0),e([t.naturalBoundsType(1)],exports.UI.prototype,"pixelRatio",void 0),e([t.pathInputType()],exports.UI.prototype,"path",void 0),e([t.pathType()],exports.UI.prototype,"windingRule",void 0),e([t.pathType(!0)],exports.UI.prototype,"closed",void 0),e([t.autoLayoutType(!1)],exports.UI.prototype,"flow",void 0),e([t.boundsType(0)],exports.UI.prototype,"padding",void 0),e([t.boundsType(0)],exports.UI.prototype,"gap",void 0),e([t.boundsType("top-left")],exports.UI.prototype,"align",void 0),e([t.boundsType(!1)],exports.UI.prototype,"wrap",void 0),e([t.boundsType("box")],exports.UI.prototype,"itemBox",void 0),e([t.boundsType(!0)],exports.UI.prototype,"inFlow",void 0),e([t.boundsType()],exports.UI.prototype,"autoWidth",void 0),e([t.boundsType()],exports.UI.prototype,"autoHeight",void 0),e([t.boundsType()],exports.UI.prototype,"autoBox",void 0),e([t.boundsType()],exports.UI.prototype,"widthRange",void 0),e([t.boundsType()],exports.UI.prototype,"heightRange",void 0),e([t.dataType(!1)],exports.UI.prototype,"draggable",void 0),e([t.dataType()],exports.UI.prototype,"dragBounds",void 0),e([t.dataType(!1)],exports.UI.prototype,"editable",void 0),e([t.hitType(!0)],exports.UI.prototype,"hittable",void 0),e([t.hitType("path")],exports.UI.prototype,"hitFill",void 0),e([t.strokeType("path")],exports.UI.prototype,"hitStroke",void 0),e([t.hitType(!1)],exports.UI.prototype,"hitBox",void 0),e([t.hitType(!0)],exports.UI.prototype,"hitChildren",void 0),e([t.hitType(!0)],exports.UI.prototype,"hitSelf",void 0),e([t.hitType()],exports.UI.prototype,"hitRadius",void 0),e([t.cursorType("")],exports.UI.prototype,"cursor",void 0),e([t.surfaceType()],exports.UI.prototype,"fill",void 0),e([t.strokeType()],exports.UI.prototype,"stroke",void 0),e([t.strokeType("inside")],exports.UI.prototype,"strokeAlign",void 0),e([t.strokeType(1)],exports.UI.prototype,"strokeWidth",void 0),e([t.strokeType(!1)],exports.UI.prototype,"strokeWidthFixed",void 0),e([t.strokeType("none")],exports.UI.prototype,"strokeCap",void 0),e([t.strokeType("miter")],exports.UI.prototype,"strokeJoin",void 0),e([t.strokeType()],exports.UI.prototype,"dashPattern",void 0),e([t.strokeType()],exports.UI.prototype,"dashOffset",void 0),e([t.strokeType(10)],exports.UI.prototype,"miterLimit",void 0),e([_("none")],exports.UI.prototype,"startArrow",void 0),e([_("none")],exports.UI.prototype,"endArrow",void 0),e([t.pathType(0)],exports.UI.prototype,"cornerRadius",void 0),e([t.pathType()],exports.UI.prototype,"cornerSmoothing",void 0),e([d()],exports.UI.prototype,"shadow",void 0),e([d()],exports.UI.prototype,"innerShadow",void 0),e([d()],exports.UI.prototype,"blur",void 0),e([d()],exports.UI.prototype,"backgroundBlur",void 0),e([d()],exports.UI.prototype,"grayscale",void 0),e([t.dataType()],exports.UI.prototype,"normalStyle",void 0),e([t.dataType()],exports.UI.prototype,"hoverStyle",void 0),e([t.dataType()],exports.UI.prototype,"pressStyle",void 0),e([t.dataType()],exports.UI.prototype,"focusStyle",void 0),e([t.dataType()],exports.UI.prototype,"selectedStyle",void 0),e([t.dataType()],exports.UI.prototype,"disabledStyle",void 0),e([t.rewrite(t.Leaf.prototype.reset)],exports.UI.prototype,"reset",null),exports.UI=z=e([t.useModule(E),t.useModule(D),t.rewriteAble()],exports.UI),exports.Group=class extends exports.UI{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(e){if(e.children){const{children:o}=e;let s;delete e.children,this.children?this.clear():this.__setBranch(),super.set(e),o.forEach((e=>{s=e.__?e:t.UICreator.get(e.tag,e),this.add(s)})),e.children=o}else super.set(e)}toJSON(){const t=super.toJSON();return t.children=this.children.map((t=>t.toJSON())),t}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(){}},e([t.dataProcessor(f)],exports.Group.prototype,"__",void 0),exports.Group=e([t.useModule(t.Branch),t.registerUI()],exports.Group);const H=t.Debug.get("Leafer");exports.Leafer=M=class extends exports.Group{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&t.ImageManager.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}}constructor(t,e){super(e),this.config={type:"design",start:!0,hittable:!0,smooth:!0,lazySpeard:100,zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0,autoDistance:2}},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),M.list.add(this)}init(e,o){if(this.canvas)return;let s;this.__setLeafer(this),e&&t.DataHelper.assign(this.config,e);const{config:r}=this;this.initType(r.type);const i=this.canvas=t.Creator.canvas(r);this.__controllers.push(this.renderer=t.Creator.renderer(this,i,r),this.watcher=t.Creator.watcher(this,r),this.layouter=t.Creator.layouter(this,r)),this.isApp&&this.__setApp(),this.__checkAutoLayout(r),this.view=i.view,o?(this.__bindApp(o),s=o.running):(this.selector=t.Creator.selector(this),this.interaction=t.Creator.interaction(this,i,this.selector,r),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=t.Creator.hitCanvasManager()),this.canvasManager=new t.CanvasManager,s=r.start),this.hittable=r.hittable,this.fill=r.fill,this.canvasManager.add(i),this.__listenEvents(),s&&(this.__startTimer=setTimeout(this.start.bind(this))),t.WaitHelper.run(this.__initWait),this.onInit()}onInit(){}initType(t){}set(t){this.waitInit((()=>{super.set(t)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.ready?this.emitLeafer(t.LeaferEvent.RESTART):this.emitLeafer(t.LeaferEvent.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render(),this.running=!0)}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(t.LeaferEvent.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(e){const o=t.DataHelper.copyAttrs({},e,t.canvasSizeAttrs);Object.keys(o).forEach((t=>this[t]=o[t]))}forceRender(e){this.renderer.addBlock(e?new t.Bounds(e):this.canvas.bounds),this.viewReady&&this.renderer.update()}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(e){const{canvas:o}=this;if(!o||o.isSameSize(e))return;const s=t.DataHelper.copyAttrs({},this.canvas,t.canvasSizeAttrs);o.resize(e),this.updateLazyBounds(),this.__onResize(new t.ResizeEvent(e,s))}__onResize(e){this.emitEvent(e),t.DataHelper.copyAttrs(this.__,e,t.canvasSizeAttrs),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(e){e.width&&e.height||(this.autoLayout=new t.AutoBounds(e),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(e,o){return this.canvas&&(t.canvasSizeAttrs.includes(e)?this.__changeCanvasSize(e,o):"fill"===e?this.__changeFill(o):"hittable"===e&&(this.canvas.hittable=o)),super.__setAttr(e,o)}__getAttr(e){return this.canvas&&t.canvasSizeAttrs.includes(e)?this.canvas[e]:super.__getAttr(e)}__changeCanvasSize(e,o){const s=t.DataHelper.copyAttrs({},this.canvas,t.canvasSizeAttrs);s[e]=this.config[e]=o,o&&this.canvas.stopAutoLayout(),this.__doResize(s)}__changeFill(t){this.config.fill=t,this.canvas.allowBackgroundColor?this.canvas.backgroundColor=t:this.forceRender()}__onCreated(){this.created=!0}__onReady(){this.ready||(this.ready=!0,this.emitLeafer(t.LeaferEvent.BEFORE_READY),this.emitLeafer(t.LeaferEvent.READY),this.emitLeafer(t.LeaferEvent.AFTER_READY),t.WaitHelper.run(this.__readyWait))}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(t.LeaferEvent.VIEW_READY),t.WaitHelper.run(this.__viewReadyWait))}__onNextRender(){if(this.viewReady){t.WaitHelper.run(this.__nextRenderWait);const{imageReady:e}=this;e&&!this.viewCompleted&&this.__checkViewCompleted(),e||(this.viewCompleted=!1)}}__checkViewCompleted(e=!0){this.nextRender((()=>{this.imageReady&&(e&&this.emitLeafer(t.LeaferEvent.VIEW_COMPLETED),t.WaitHelper.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,o){e&&(t=t.bind(e));const s=this.__nextRenderWait;if(o){for(let e=0;e<s.length;e++)if(s[e]===t){s.splice(e,1);break}}else s.push(t)}zoom(t,e,o){}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}__checkUpdateLayout(){this.__layout.update()}emitLeafer(e){this.emitEvent(new t.LeaferEvent(e,this))}__listenEvents(){const e=t.Run.start("FirstCreate "+this.innerName);this.once(t.LeaferEvent.START,(()=>t.Run.end(e))),this.once(t.LayoutEvent.START,(()=>this.updateLazyBounds())),this.once(t.LayoutEvent.END,(()=>this.__onReady())),this.once(t.RenderEvent.START,(()=>this.__onCreated())),this.once(t.RenderEvent.END,(()=>this.__onViewReady())),this.__eventIds.push(this.on_(t.WatchEvent.DATA,this.__onWatchData,this),this.on_(t.RenderEvent.NEXT,this.__onNextRender,this),this.on_(t.LayoutEvent.CHECK_UPDATE,this.__checkUpdateLayout,this))}__removeListenEvents(){this.off_(this.__eventIds),this.__eventIds.length=0}destroy(e){const o=()=>{if(!this.destroyed){M.list.remove(this);try{this.stop(),this.emitEvent(new t.LeaferEvent(t.LeaferEvent.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=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{t.ImageManager.clearRecycled()}),100)}catch(t){H.error(t)}}};e?o():setTimeout(o)}},exports.Leafer.list=new t.LeafList,e([t.dataProcessor(T)],exports.Leafer.prototype,"__",void 0),e([t.boundsType()],exports.Leafer.prototype,"pixelRatio",void 0),exports.Leafer=M=e([t.registerUI()],exports.Leafer),exports.Rect=class extends exports.UI{get __tag(){return"Rect"}constructor(t){super(t)}},e([t.dataProcessor(R)],exports.Rect.prototype,"__",void 0),exports.Rect=e([t.useModule(W),t.rewriteAble(),t.registerUI()],exports.Rect);const O=exports.Rect.prototype,N=exports.Group.prototype,G={},{copy:V,add:Y}=t.BoundsHelper;exports.Box=class extends exports.Group{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(){const t=this.__updateRectRenderSpread(),e=this.__.__drawAfterFill="hide"===this.__.overflow;return t||e?t:-1}__updateRectBoxBounds(){}__updateBoxBounds(){const t=this.__;if(t.__autoSide&&this.children.length){if(this.leafer&&this.leafer.layouter.addExtra(this),super.__updateBoxBounds(),!t.__autoSize){const e=this.__layout.boxBounds;t.__autoWidth||(e.x=0,e.width=t.width),t.__autoHeight||(e.y=0,e.height=t.height)}}else this.__updateRectBoxBounds();t.flow&&this.__updateContentBounds()}__updateStrokeBounds(){}__updateRenderBounds(){if(this.__updateRectRenderBounds(),!this.__.__drawAfterFill){const{renderBounds:t}=this.__layout;V(G,t),super.__updateRenderBounds(),Y(t,G)}}__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.__renderGroup(t,e))}__drawAfterFill(t,e){t.save(),t.clip(),this.__renderGroup(t,e),t.restore(),this.__.stroke&&this.__drawRenderPath(t)}},e([t.dataProcessor(w)],exports.Box.prototype,"__",void 0),e([t.affectRenderBoundsType("show")],exports.Box.prototype,"overflow",void 0),e([t.rewrite(O.__updateStrokeSpread)],exports.Box.prototype,"__updateStrokeSpread",null),e([t.rewrite(O.__updateRenderSpread)],exports.Box.prototype,"__updateRectRenderSpread",null),e([t.rewrite(O.__updateBoxBounds)],exports.Box.prototype,"__updateRectBoxBounds",null),e([t.rewrite(O.__updateStrokeBounds)],exports.Box.prototype,"__updateStrokeBounds",null),e([t.rewrite(O.__updateRenderBounds)],exports.Box.prototype,"__updateRectRenderBounds",null),e([t.rewrite(O.__updateChange)],exports.Box.prototype,"__updateRectChange",null),e([t.rewrite(O.__render)],exports.Box.prototype,"__renderRect",null),e([t.rewrite(N.__render)],exports.Box.prototype,"__renderGroup",null),exports.Box=e([t.rewriteAble(),t.registerUI()],exports.Box),exports.Frame=class extends exports.Box{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}},e([t.dataProcessor(m)],exports.Frame.prototype,"__",void 0),e([t.surfaceType("#FFFFFF")],exports.Frame.prototype,"fill",void 0),e([t.affectRenderBoundsType("hide")],exports.Frame.prototype,"overflow",void 0),exports.Frame=e([t.registerUI()],exports.Frame);const{moveTo:j,closePath:X,ellipse:J}=t.PathCommandDataHelper;exports.Ellipse=class extends exports.UI{get __tag(){return"Ellipse"}constructor(t){super(t)}__updatePath(){const{width:e,height:o,innerRadius:s,startAngle:r,endAngle:i}=this.__,a=e/2,p=o/2,n=this.__.path=[];s?(r||i?(s<1&&J(n,a,p,a*s,p*s,0,r,i,!1),J(n,a,p,a,p,0,i,r,!0),s<1&&X(n)):(s<1&&(J(n,a,p,a*s,p*s),j(n,e,p)),J(n,a,p,a,p,0,360,0,!0)),t.Platform.ellipseToCurve&&(this.__.path=this.getPath(!0))):r||i?(j(n,a,p),J(n,a,p,a,p,0,r,i,!1),X(n)):J(n,a,p,a,p)}},e([t.dataProcessor(b)],exports.Ellipse.prototype,"__",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"innerRadius",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"startAngle",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"endAngle",void 0),exports.Ellipse=e([t.registerUI()],exports.Ellipse);const{moveTo:K,lineTo:$,drawPoints:q}=t.PathCommandDataHelper,{rotate:Q,getAngle:Z,getDistance:tt,defaultPoint:et}=t.PointHelper,{toBounds:ot}=t.PathBounds;exports.Line=class extends exports.UI{get __tag(){return"Line"}get toPoint(){const{width:e,rotation:o}=this.__,s=t.getPointData();return e&&(s.x=e),o&&Q(s,o),s}set toPoint(t){this.width=tt(et,t),this.rotation=Z(et,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];this.__.points?q(t,this.__.points,this.__.closed):(K(t,0,0),$(t,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(q(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&s.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?ot(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}},e([t.dataProcessor(I)],exports.Line.prototype,"__",void 0),e([t.affectStrokeBoundsType("center")],exports.Line.prototype,"strokeAlign",void 0),e([t.boundsType(0)],exports.Line.prototype,"height",void 0),e([t.pathType()],exports.Line.prototype,"points",void 0),e([t.pathType(0)],exports.Line.prototype,"curve",void 0),e([t.pathType(!1)],exports.Line.prototype,"closed",void 0),exports.Line=e([t.registerUI()],exports.Line);const{sin:st,cos:rt,PI:it}=Math,{moveTo:at,lineTo:pt,closePath:nt,drawPoints:ht}=t.PathCommandDataHelper,_t=exports.Line.prototype;exports.Polygon=class extends exports.UI{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)ht(t,this.__.points,!1,!0);else{const{width:e,height:o,sides:s}=this.__,r=e/2,i=o/2;at(t,r,0);for(let e=1;e<s;e++)pt(t,r+r*st(2*e*it/s),i-i*rt(2*e*it/s))}nt(t)}__updateRenderPath(){}__updateBoxBounds(){}},e([t.dataProcessor(P)],exports.Polygon.prototype,"__",void 0),e([t.pathType(3)],exports.Polygon.prototype,"sides",void 0),e([t.pathType()],exports.Polygon.prototype,"points",void 0),e([t.pathType(0)],exports.Polygon.prototype,"curve",void 0),e([t.rewrite(_t.__updateRenderPath)],exports.Polygon.prototype,"__updateRenderPath",null),e([t.rewrite(_t.__updateBoxBounds)],exports.Polygon.prototype,"__updateBoxBounds",null),exports.Polygon=e([t.rewriteAble(),t.registerUI()],exports.Polygon);const{sin:dt,cos:lt,PI:ut}=Math,{moveTo:ct,lineTo:yt,closePath:xt}=t.PathCommandDataHelper;exports.Star=class extends exports.UI{get __tag(){return"Star"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,corners:o,innerRadius:s}=this.__,r=t/2,i=e/2,a=this.__.path=[];ct(a,r,0);for(let t=1;t<2*o;t++)yt(a,r+(t%2==0?r:r*s)*dt(t*ut/o),i-(t%2==0?i:i*s)*lt(t*ut/o));xt(a)}},e([t.dataProcessor(S)],exports.Star.prototype,"__",void 0),e([t.pathType(5)],exports.Star.prototype,"corners",void 0),e([t.pathType(.382)],exports.Star.prototype,"innerRadius",void 0),exports.Star=e([t.registerUI()],exports.Star),exports.Image=class extends exports.Rect{get __tag(){return"Image"}get ready(){return!!this.image&&this.image.ready}constructor(e){super(e),this.on(t.ImageEvent.LOADED,(t=>{"fill"===t.attrName&&t.attrValue.url===this.url&&(this.image=t.image)}))}destroy(){this.image=null,super.destroy()}},e([t.dataProcessor(A)],exports.Image.prototype,"__",void 0),e([t.boundsType("")],exports.Image.prototype,"url",void 0),exports.Image=e([t.registerUI()],exports.Image),exports.Canvas=class extends exports.Rect{get __tag(){return"Canvas"}constructor(e){super(e),this.canvas=t.Creator.canvas(this.__),this.context=this.canvas.context,this.__.__drawAfterFill=!0}draw(e,o,s,r){e.__layout.update();const i=new t.Matrix(e.__world).invert(),a=new t.Matrix;o&&a.translate(o.x,o.y),s&&("number"==typeof s?a.scale(s):a.scale(s.x,s.y)),r&&a.rotate(r),i.multiplyParent(a),e.__render(this.canvas,{matrix:i.withScale()}),this.paint()}paint(){this.forceUpdate("fill")}__drawAfterFill(t,e){const o=this.canvas.view,{width:s,height:r}=this;this.__.cornerRadius?(t.save(),t.clip(),t.drawImage(this.canvas.view,0,0,o.width,o.height,0,0,s,r),t.restore()):t.drawImage(this.canvas.view,0,0,o.width,o.height,0,0,s,r)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e}=this.__;t.smooth!==e&&(t.smooth=e),t.resize(this.__)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=null,this.context=null),super.destroy()}},e([t.dataProcessor(L)],exports.Canvas.prototype,"__",void 0),e([l(100)],exports.Canvas.prototype,"width",void 0),e([l(100)],exports.Canvas.prototype,"height",void 0),e([l(t.Platform.devicePixelRatio)],exports.Canvas.prototype,"pixelRatio",void 0),e([l(!0)],exports.Canvas.prototype,"smooth",void 0),e([l()],exports.Canvas.prototype,"contextSettings",void 0),e([t.hitType("all")],exports.Canvas.prototype,"hitFill",void 0),exports.Canvas=e([t.registerUI()],exports.Canvas);const{copyAndSpread:vt,includes:gt,isSame:ft,spread:wt,setList:Tt}=t.BoundsHelper;exports.Text=class extends exports.UI{get __tag(){return"Text"}get editInner(){return"TextEditor"}get textDrawData(){return this.__layout.update(),this.__.__textDrawData}constructor(t){super(t)}__drawHitPath(t){const{__lineHeight:e,__baseLine:o,__textDrawData:s}=this.__;t.beginPath(),this.__.__letterSpacing<0?this.__drawPathByData(t):s.rows.forEach((s=>t.rect(s.x,s.y-o,s.width,e)))}__drawPathByData(t,e){const{x:o,y:s,width:r,height:i}=this.__layout.boxBounds;t.rect(o,s,r,i)}__drawRenderPath(t){t.font=this.__.__font}__updateTextDrawData(){const t=this.__;t.__textDrawData=o.getDrawData(t.text,this.__)}__updateBoxBounds(){const e=this.__,o=this.__layout,{lineHeight:s,letterSpacing:r,fontFamily:i,fontSize:a,fontWeight:p,italic:n,textCase:h,textOverflow:_,padding:d}=e,l=e.__autoWidth,u=e.__autoHeight;e.__lineHeight=g.number(s,a),e.__letterSpacing=g.number(r,a),e.__padding=d?t.MathHelper.fourNumber(d):void 0,e.__baseLine=e.__lineHeight-(e.__lineHeight-.7*a)/2,e.__font=`${n?"italic ":""}${"small-caps"===h?"small-caps ":""}${"normal"!==p?p+" ":""}${a}px ${i}`,e.__clipText="show"!==_&&!e.__autoSize,this.__updateTextDrawData();const{bounds:c}=e.__textDrawData,y=o.boxBounds;if(e.__lineHeight<a&&wt(c,a/2),l||u){if(y.x=l?c.x:0,y.y=u?c.y:0,y.width=l?c.width:e.width,y.height=u?c.height:e.height,d){const[t,o,s,r]=e.__padding;l&&(y.x-=r,y.width+=o+r),u&&(y.y-=t,y.height+=s+t)}this.__updateNaturalSize()}else super.__updateBoxBounds();n&&(y.width+=.16*a);const x=gt(y,c)?y:c;ft(x,o.contentBounds)?e.__textBoxBounds=x:(o.contentBounds=x,o.renderChanged=!0,Tt(e.__textBoxBounds={},[y,c]))}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.__layout.boxBounds===this.__layout.contentBounds?0:1),t}__updateRenderBounds(){vt(this.__layout.renderBounds,this.__.__textBoxBounds,this.__layout.renderSpread)}},e([t.dataProcessor(C)],exports.Text.prototype,"__",void 0),e([t.boundsType(0)],exports.Text.prototype,"width",void 0),e([t.boundsType(0)],exports.Text.prototype,"height",void 0),e([t.surfaceType("#000000")],exports.Text.prototype,"fill",void 0),e([t.affectStrokeBoundsType("outside")],exports.Text.prototype,"strokeAlign",void 0),e([t.hitType("all")],exports.Text.prototype,"hitFill",void 0),e([t.boundsType("")],exports.Text.prototype,"text",void 0),e([t.boundsType("L")],exports.Text.prototype,"fontFamily",void 0),e([t.boundsType(12)],exports.Text.prototype,"fontSize",void 0),e([t.boundsType("normal")],exports.Text.prototype,"fontWeight",void 0),e([t.boundsType(!1)],exports.Text.prototype,"italic",void 0),e([t.boundsType("none")],exports.Text.prototype,"textCase",void 0),e([t.boundsType("none")],exports.Text.prototype,"textDecoration",void 0),e([t.boundsType(0)],exports.Text.prototype,"letterSpacing",void 0),e([t.boundsType({type:"percent",value:150})],exports.Text.prototype,"lineHeight",void 0),e([t.boundsType(0)],exports.Text.prototype,"paraIndent",void 0),e([t.boundsType(0)],exports.Text.prototype,"paraSpacing",void 0),e([t.boundsType("left")],exports.Text.prototype,"textAlign",void 0),e([t.boundsType("top")],exports.Text.prototype,"verticalAlign",void 0),e([t.boundsType("normal")],exports.Text.prototype,"textWrap",void 0),e([t.boundsType("show")],exports.Text.prototype,"textOverflow",void 0),exports.Text=e([t.registerUI()],exports.Text),exports.Path=class extends exports.UI{get __tag(){return"Path"}constructor(t){super(t),this.__.__pathInputed=2}},e([t.dataProcessor(U)],exports.Path.prototype,"__",void 0),e([t.affectStrokeBoundsType("center")],exports.Path.prototype,"strokeAlign",void 0),exports.Path=e([t.registerUI()],exports.Path),exports.Pen=class extends exports.Group{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new exports.Path(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this.__path.length=0,this.paint(),this}moveTo(t,e){return this}lineTo(t,e){return this}bezierCurveTo(t,e,o,s,r,i){return this}quadraticCurveTo(t,e,o,s){return this}closePath(){return this}rect(t,e,o,s){return this}roundRect(t,e,o,s,r){return this}ellipse(t,e,o,s,r,i,a,p){return this}arc(t,e,o,s,r,i){return this}arcTo(t,e,o,s,r){return this}drawEllipse(t,e,o,s,r,i,a,p){return this}drawArc(t,e,o,s,r,i){return this}drawPoints(t,e,o){return this}clearPath(){return this}paint(){this.pathElement.forceUpdate("path")}},e([t.dataProcessor(B)],exports.Pen.prototype,"__",void 0),e([(e,o)=>{t.defineKey(e,o,{get(){return this.__path}})}],exports.Pen.prototype,"path",void 0),exports.Pen=e([t.useModule(t.PathCreator,["set","beginPath","path"]),t.registerUI()],exports.Pen);exports.BoxData=w,exports.CanvasData=L,exports.ColorConvert={},exports.Effect=a,exports.EllipseData=b,exports.Export=p,exports.FrameData=m,exports.GroupData=f,exports.ImageData=A,exports.LeaferData=T,exports.LineData=I,exports.Paint=r,exports.PaintGradient={},exports.PaintImage=i,exports.PathArrow=s,exports.PathData=U,exports.PenData=B,exports.PolygonData=P,exports.RectData=R,exports.RectRender=W,exports.StarData=S,exports.State=n,exports.TextConvert=o,exports.TextData=C,exports.UIBounds=E,exports.UIData=v,exports.UIRender=D,exports.UnitConvert=g,exports.arrowType=_,exports.effectType=d,exports.resizeType=l,exports.stateType=h,exports.version="1.0.0-rc.23",exports.zoomLayerType=u,Object.keys(t).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
1
+ "use strict";var t=require("@leafer/core");function e(t,e,o,s){var r,i=arguments.length,a=i<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,o):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,o,s);else for(var n=t.length-1;n>=0;n--)(r=t[n])&&(a=(i<3?r(a):i>3?r(e,o,a):r(e,o))||a);return i>3&&a&&Object.defineProperty(e,o,a),a}"function"==typeof SuppressedError&&SuppressedError;const o={},s={},r={},i={},a={},n={},p={};function h(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),this.waitLeafer((()=>{p.setStyle&&p.setStyle(this,e+"Style",t)}))}})))}function _(e){return t.decorateLeafAttr(e,(e=>t.attr({set(o){if(this.__setAttr(e,o)){const e=this.__;e.__useArrow="none"!==e.startArrow||"none"!==e.endArrow,t.doStrokeType(this)}}})))}function d(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),t&&(this.__.__useEffect=!0),this.__layout.renderChanged||this.__layout.renderChange()}})))}function l(e){return t.decorateLeafAttr(e,(e=>t.attr({set(t){this.__setAttr(e,t),this.__layout.boxChanged||this.__layout.boxChange(),this.__updateSize()}})))}function u(){return(e,o)=>{const s="_"+o;t.defineKey(e,o,{set(t){this.isLeafer&&(this[s]=t)},get(){return this.isApp?this.tree.zoomLayer:this.isLeafer?this[s]||this:this.leafer&&this.leafer.zoomLayer}})}}const{parse:c}=t.PathConvert,y={},x=t.Debug.get("UIData");class v extends t.LeafData{get __strokeWidth(){const{strokeWidth:t,strokeWidthFixed:e}=this;if(e){const e=this.__leaf;let{scaleX:o}=e.__nowWorld||e.__world;return o<0&&(o=-o),o>1?t/o:t}return t}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.__leaf.leafer&&(this.__leaf.leafer.watcher.hasVisible=!0),this._visible=t}setWidth(t){t<0?(this._width=-t,this.__leaf.scaleX*=-1,x.warn("width < 0, instead -scaleX ",this)):this._width=t}setHeight(t){t<0?(this._height=-t,this.__leaf.scaleY*=-1,x.warn("height < 0, instead -scaleY",this)):this._height=t}setFill(t){this.__naturalWidth&&this.__removeNaturalSize(),"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("fill",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isFills=!0,this._fill||(this._fill=y)):(this.__isFills&&(this.__removeInput("fill"),i.recycleImage("fill",this),this.__isFills=!1,this.__pixelFill&&(this.__pixelFill=!1)),this._fill=t)}setStroke(t){"string"!=typeof t&&t?"object"==typeof t&&(this.__setInput("stroke",t),this.__leaf.__layout.boxChanged||this.__leaf.__layout.boxChange(),this.__isStrokes=!0,this._stroke||(this._stroke=y)):(this.__isStrokes&&(this.__removeInput("stroke"),i.recycleImage("stroke",this),this.__isStrokes=!1,this.__pixelStroke&&(this.__pixelStroke=!1)),this._stroke=t)}setPath(t){"string"==typeof t?(this.__setInput("path",t),this._path=c(t)):(this.__input&&this.__removeInput("path"),this._path=t)}setShadow(t){this.__setInput("shadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._shadow=t.length?t:null):this._shadow=t?!1===t.visible?null:[t]:null}setInnerShadow(t){this.__setInput("innerShadow",t),t instanceof Array?(t.some((t=>!1===t.visible))&&(t=t.filter((t=>!1!==t.visible))),this._innerShadow=t.length?t:null):this._innerShadow=t?!1===t.visible?null:[t]:null}__computePaint(){const{fill:t,stroke:e}=this.__input;t&&r.compute("fill",this.__leaf),e&&r.compute("stroke",this.__leaf),this.__needComputePaint=!1}}const g={number:(t,e)=>"object"==typeof t?"percent"===t.type?t.value*e:t.value:t};class f extends v{}class w extends f{get __boxStroke(){return!this.__pathInputed}}class T extends f{}class m extends w{}class I extends v{}class R extends v{get __boxStroke(){return!this.__pathInputed}}class b extends v{get __boxStroke(){return!this.__pathInputed}}class P extends v{}class S extends v{}class B extends v{}class U extends f{}const k={thin:100,"extra-light":200,light:300,normal:400,medium:500,"semi-bold":600,bold:700,"extra-bold":800,black:900};class C extends v{get __useNaturalRatio(){return!1}setFontWeight(t){"string"==typeof t?(this.__setInput("fontWeight",t),this._fontWeight=k[t]||400):(this.__input&&this.__removeInput("fontWeight"),this._fontWeight=t)}}class L extends R{setUrl(t){this.__setImageFill(t),this._url=t}__setImageFill(t){this.__leaf.image&&(this.__leaf.image=null),this.fill=t?{type:"image",mode:"strench",url:t}:void 0}__getData(){const t=super.__getData();return delete t.fill,t}__getInputData(){const t=super.__getInputData();return delete t.fill,t}}class A extends R{}const E={__updateStrokeSpread(){let t=0,e=0;const o=this.__,{strokeAlign:s,strokeWidth:r}=o;if((o.stroke||"all"===o.hitStroke)&&r&&"inside"!==s&&(e=t="center"===s?r/2:r,!o.__boxStroke)){const e=o.__isLinePath?0:10*t,s="none"===o.strokeCap?0:r;t+=Math.max(e,s)}return o.__useArrow&&(t+=5*r),this.__layout.strokeBoxSpread=e,t},__updateRenderSpread(){let t=0;const{shadow:e,innerShadow:o,blur:s,backgroundBlur: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));let i=t=Math.ceil(t);return o&&o.forEach((t=>{i=Math.max(i,Math.max(Math.abs(t.y),Math.abs(t.x))+(t.spread<0?-t.spread:0)+1.5*t.blur)})),r&&(i=Math.max(i,r)),this.__layout.renderShapeSpread=i,t+(this.__layout.strokeSpread||0)}},D={__updateChange(){const t=this.__;if(t.__useEffect){const{shadow:e,innerShadow:o,blur:s,backgroundBlur:r}=this.__;t.__useEffect=!!(e||o||s||r)}t.__checkSingle();t.__isFills||t.__isStrokes||t.cornerRadius||t.__useEffect?t.__complex=!0:t.__complex&&(t.__complex=!1)},__drawFast(t,e){F(this,t,e)},__draw(t,e){const o=this.__;if(o.__complex){o.__needComputePaint&&o.__computePaint();const{fill:s,stroke:i,__drawAfterFill:n}=o;if(this.__drawRenderPath(t),o.__useEffect){const p=r.shape(this,t,e);this.__nowWorld=this.__getNowWorld(e);const{shadow:h,innerShadow:_}=o;h&&a.shadow(this,t,p),s&&(o.__isFills?r.fills(s,this,t):r.fill(s,this,t)),n&&this.__drawAfterFill(t,e),_&&a.innerShadow(this,t,p),i&&(o.__isStrokes?r.strokes(i,this,t):r.stroke(i,this,t)),p.worldCanvas&&p.worldCanvas.recycle(),p.canvas.recycle()}else s&&(o.__isFills?r.fills(s,this,t):r.fill(s,this,t)),n&&this.__drawAfterFill(t,e),i&&(o.__isStrokes?r.strokes(i,this,t):r.stroke(i,this,t))}else o.__pathInputed?F(this,t,e):this.__drawFast(t,e)},__renderShape(t,e,o,s){if(this.__worldOpacity){t.setWorld(this.__nowWorld=this.__getNowWorld(e));const{fill:i,stroke:a}=this.__;this.__drawRenderPath(t),i&&!o&&(this.__.__pixelFill?r.fills(i,this,t):r.fill("#000000",this,t)),a&&!s&&(this.__.__pixelStroke?r.strokes(a,this,t):r.stroke("#000000",this,t))}}};function F(t,e,o){const{fill:s,stroke:i,__drawAfterFill:a}=t.__;t.__drawRenderPath(e),s&&r.fill(s,t,e),a&&t.__drawAfterFill(e,o),i&&r.stroke(i,t,e)}const W={__drawFast(t,e){let{width:o,height:s,fill:r,stroke:i,__drawAfterFill:a}=this.__;if(r&&(t.fillStyle=r,t.fillRect(0,0,o,s)),a&&this.__drawAfterFill(t,e),i){const{strokeAlign:r,__strokeWidth:a}=this.__;if(!a)return;t.setStroke(i,a,this.__);const n=a/2;switch(r){case"center":t.strokeRect(0,0,o,s);break;case"inside":o-=a,s-=a,o<0||s<0?(t.save(),this.__clip(t,e),t.strokeRect(n,n,o,s),t.restore()):t.strokeRect(n,n,o,s);break;case"outside":t.strokeRect(-n,-n,o+a,s+a)}}}};var z,M;exports.UI=z=class extends t.Leaf{get app(){return this.leafer&&this.leafer.app}get isFrame(){return!1}set scale(t){"number"==typeof t?this.scaleX=this.scaleY=t:(this.scaleX=t.x,this.scaleY=t.y)}get scale(){const{scaleX:t,scaleY:e}=this;return t!==e?{x:t,y:e}:t}get pen(){const{path:e}=this.__;return t.pen.set(this.path=e||[]),e||this.__drawPathByBox(t.pen),t.pen}get editConfig(){}get editOuter(){return this.__.__isLinePath?"LineEditTool":"EditTool"}get editInner(){return"PathEditor"}constructor(t){super(t)}reset(t){}set(t){Object.assign(this,t)}get(t){return"string"==typeof t?this.__.__getInput(t):this.__.__getInputData(t)}createProxyData(){}find(t,e){}findTag(t){return this.find({tag:t})}findOne(t,e){}findId(t){return this.findOne({id:t})}getPath(e,o){this.__layout.update();let s=o?this.__.__pathForRender:this.__.path;return s||(t.pen.set(s=[]),this.__drawPathByBox(t.pen)),e?t.PathConvert.toCanvasData(s,!0):s}getPathString(e,o){return t.PathConvert.stringify(this.getPath(e,o))}load(){this.__.__computePaint()}__onUpdateSize(){if(this.__.__input){const t=this.__;t.lazy&&this.leafer&&this.leafer.created&&!this.leafer.lazyBounds.hit(this.__world)?t.__needComputePaint=!0:t.__computePaint()}}__updateRenderPath(){if(this.__.path){const e=this.__;e.__pathForRender=e.cornerRadius?t.PathCorner.smooth(e.path,e.cornerRadius,e.cornerSmoothing):e.path,e.__useArrow&&s.addArrows(this,!e.cornerRadius)}}__drawRenderPath(t){t.beginPath(),this.__drawPathByData(t,this.__.__pathForRender)}__drawPath(t){t.beginPath(),this.__drawPathByData(t,this.__.path)}__drawPathByData(e,o){o?t.PathDrawer.drawPathByData(e,o):this.__drawPathByBox(e)}__drawPathByBox(t){const{x:e,y:o,width:s,height:r}=this.__layout.boxBounds;if(this.__.cornerRadius){const{cornerRadius:i}=this.__;t.roundRect(e,o,s,r,"number"==typeof i?[i]:i)}else t.rect(e,o,s,r)}export(t,e){return n.export(this,t,e)}clone(){return z.one(this.toJSON())}static one(e,o,s,r,i){return t.UICreator.get(e.tag||this.prototype.__tag,e,o,s,r,i)}static registerUI(){t.registerUI()(this)}static registerData(e){t.dataProcessor(e)(this.prototype)}static setEditConfig(t){}static setEditOuter(t){}static setEditInner(t){}destroy(){this.fill=this.stroke=null,super.destroy()}},e([t.dataProcessor(v)],exports.UI.prototype,"__",void 0),e([u()],exports.UI.prototype,"zoomLayer",void 0),e([t.dataType("")],exports.UI.prototype,"id",void 0),e([t.dataType("")],exports.UI.prototype,"name",void 0),e([t.dataType("")],exports.UI.prototype,"className",void 0),e([t.surfaceType("pass-through")],exports.UI.prototype,"blendMode",void 0),e([t.opacityType(1)],exports.UI.prototype,"opacity",void 0),e([t.visibleType(!0)],exports.UI.prototype,"visible",void 0),e([h(!1)],exports.UI.prototype,"selected",void 0),e([h(!1)],exports.UI.prototype,"disabled",void 0),e([t.dataType(!1)],exports.UI.prototype,"locked",void 0),e([t.sortType(0)],exports.UI.prototype,"zIndex",void 0),e([t.maskType(!1)],exports.UI.prototype,"mask",void 0),e([t.eraserType(!1)],exports.UI.prototype,"eraser",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"x",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"y",void 0),e([t.boundsType(100,!0)],exports.UI.prototype,"width",void 0),e([t.boundsType(100,!0)],exports.UI.prototype,"height",void 0),e([t.scaleType(1,!0)],exports.UI.prototype,"scaleX",void 0),e([t.scaleType(1,!0)],exports.UI.prototype,"scaleY",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"rotation",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"skewX",void 0),e([t.rotationType(0,!0)],exports.UI.prototype,"skewY",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"offsetX",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"offsetY",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"scrollX",void 0),e([t.positionType(0,!0)],exports.UI.prototype,"scrollY",void 0),e([t.autoLayoutType()],exports.UI.prototype,"origin",void 0),e([t.autoLayoutType()],exports.UI.prototype,"around",void 0),e([t.dataType(!1)],exports.UI.prototype,"lazy",void 0),e([t.naturalBoundsType(1)],exports.UI.prototype,"pixelRatio",void 0),e([t.pathInputType()],exports.UI.prototype,"path",void 0),e([t.pathType()],exports.UI.prototype,"windingRule",void 0),e([t.pathType(!0)],exports.UI.prototype,"closed",void 0),e([t.autoLayoutType(!1)],exports.UI.prototype,"flow",void 0),e([t.boundsType(0)],exports.UI.prototype,"padding",void 0),e([t.boundsType(0)],exports.UI.prototype,"gap",void 0),e([t.boundsType("top-left")],exports.UI.prototype,"align",void 0),e([t.boundsType(!1)],exports.UI.prototype,"wrap",void 0),e([t.boundsType("box")],exports.UI.prototype,"itemBox",void 0),e([t.boundsType(!0)],exports.UI.prototype,"inFlow",void 0),e([t.boundsType()],exports.UI.prototype,"autoWidth",void 0),e([t.boundsType()],exports.UI.prototype,"autoHeight",void 0),e([t.boundsType()],exports.UI.prototype,"autoBox",void 0),e([t.boundsType()],exports.UI.prototype,"widthRange",void 0),e([t.boundsType()],exports.UI.prototype,"heightRange",void 0),e([t.dataType(!1)],exports.UI.prototype,"draggable",void 0),e([t.dataType()],exports.UI.prototype,"dragBounds",void 0),e([t.dataType(!1)],exports.UI.prototype,"editable",void 0),e([t.hitType(!0)],exports.UI.prototype,"hittable",void 0),e([t.hitType("path")],exports.UI.prototype,"hitFill",void 0),e([t.strokeType("path")],exports.UI.prototype,"hitStroke",void 0),e([t.hitType(!1)],exports.UI.prototype,"hitBox",void 0),e([t.hitType(!0)],exports.UI.prototype,"hitChildren",void 0),e([t.hitType(!0)],exports.UI.prototype,"hitSelf",void 0),e([t.hitType()],exports.UI.prototype,"hitRadius",void 0),e([t.cursorType("")],exports.UI.prototype,"cursor",void 0),e([t.surfaceType()],exports.UI.prototype,"fill",void 0),e([t.strokeType()],exports.UI.prototype,"stroke",void 0),e([t.strokeType("inside")],exports.UI.prototype,"strokeAlign",void 0),e([t.strokeType(1)],exports.UI.prototype,"strokeWidth",void 0),e([t.strokeType(!1)],exports.UI.prototype,"strokeWidthFixed",void 0),e([t.strokeType("none")],exports.UI.prototype,"strokeCap",void 0),e([t.strokeType("miter")],exports.UI.prototype,"strokeJoin",void 0),e([t.strokeType()],exports.UI.prototype,"dashPattern",void 0),e([t.strokeType()],exports.UI.prototype,"dashOffset",void 0),e([t.strokeType(10)],exports.UI.prototype,"miterLimit",void 0),e([_("none")],exports.UI.prototype,"startArrow",void 0),e([_("none")],exports.UI.prototype,"endArrow",void 0),e([t.pathType(0)],exports.UI.prototype,"cornerRadius",void 0),e([t.pathType()],exports.UI.prototype,"cornerSmoothing",void 0),e([d()],exports.UI.prototype,"shadow",void 0),e([d()],exports.UI.prototype,"innerShadow",void 0),e([d()],exports.UI.prototype,"blur",void 0),e([d()],exports.UI.prototype,"backgroundBlur",void 0),e([d()],exports.UI.prototype,"grayscale",void 0),e([t.dataType()],exports.UI.prototype,"normalStyle",void 0),e([t.dataType()],exports.UI.prototype,"hoverStyle",void 0),e([t.dataType()],exports.UI.prototype,"pressStyle",void 0),e([t.dataType()],exports.UI.prototype,"focusStyle",void 0),e([t.dataType()],exports.UI.prototype,"selectedStyle",void 0),e([t.dataType()],exports.UI.prototype,"disabledStyle",void 0),e([t.rewrite(t.Leaf.prototype.reset)],exports.UI.prototype,"reset",null),exports.UI=z=e([t.useModule(E),t.useModule(D),t.rewriteAble()],exports.UI),exports.Group=class extends exports.UI{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(e){if(e.children){const{children:o}=e;let s;delete e.children,this.children?this.clear():this.__setBranch(),super.set(e),o.forEach((e=>{s=e.__?e:t.UICreator.get(e.tag,e),this.add(s)})),e.children=o}else super.set(e)}toJSON(){const t=super.toJSON();return t.children=this.children.map((t=>t.toJSON())),t}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(){}},e([t.dataProcessor(f)],exports.Group.prototype,"__",void 0),exports.Group=e([t.useModule(t.Branch),t.registerUI()],exports.Group);const H=t.Debug.get("Leafer");exports.Leafer=M=class extends exports.Group{get __tag(){return"Leafer"}get isApp(){return!1}get app(){return this.parent||this}get isLeafer(){return!0}get imageReady(){return this.viewReady&&t.ImageManager.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()}constructor(t,e){super(e),this.config={type:"design",start:!0,hittable:!0,smooth:!0,lazySpeard:100,zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0,autoDistance:2}},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),M.list.add(this)}init(e,o){if(this.canvas)return;let s;this.__setLeafer(this),e&&t.DataHelper.assign(this.config,e);const{config:r}=this;this.initType(r.type);const i=this.canvas=t.Creator.canvas(r);this.__controllers.push(this.renderer=t.Creator.renderer(this,i,r),this.watcher=t.Creator.watcher(this,r),this.layouter=t.Creator.layouter(this,r)),this.isApp&&this.__setApp(),this.__checkAutoLayout(r),this.view=i.view,o?(this.__bindApp(o),s=o.running):(this.selector=t.Creator.selector(this),this.interaction=t.Creator.interaction(this,i,this.selector,r),this.interaction&&(this.__controllers.unshift(this.interaction),this.hitCanvasManager=t.Creator.hitCanvasManager()),this.canvasManager=new t.CanvasManager,s=r.start),this.hittable=r.hittable,this.fill=r.fill,this.canvasManager.add(i),this.__listenEvents(),s&&(this.__startTimer=setTimeout(this.start.bind(this))),t.WaitHelper.run(this.__initWait),this.onInit()}onInit(){}initType(t){}set(t){this.waitInit((()=>{super.set(t)}))}start(){clearTimeout(this.__startTimer),!this.running&&this.canvas&&(this.ready?this.emitLeafer(t.LeaferEvent.RESTART):this.emitLeafer(t.LeaferEvent.START),this.__controllers.forEach((t=>t.start())),this.isApp||this.renderer.render(),this.running=!0)}stop(){clearTimeout(this.__startTimer),this.running&&this.canvas&&(this.__controllers.forEach((t=>t.stop())),this.running=!1,this.emitLeafer(t.LeaferEvent.STOP))}unlockLayout(){this.layouter.start(),this.updateLayout()}lockLayout(){this.updateLayout(),this.layouter.stop()}resize(e){const o=t.DataHelper.copyAttrs({},e,t.canvasSizeAttrs);Object.keys(o).forEach((t=>this[t]=o[t]))}forceRender(e){this.renderer.addBlock(e?new t.Bounds(e):this.canvas.bounds),this.viewReady&&this.renderer.update()}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(e){const{canvas:o}=this;if(!o||o.isSameSize(e))return;const s=t.DataHelper.copyAttrs({},this.canvas,t.canvasSizeAttrs);o.resize(e),this.updateLazyBounds(),this.__onResize(new t.ResizeEvent(e,s))}__onResize(e){this.emitEvent(e),t.DataHelper.copyAttrs(this.__,e,t.canvasSizeAttrs),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(e){e.width&&e.height||(this.autoLayout=new t.AutoBounds(e),this.canvas.startAutoLayout(this.autoLayout,this.__onResize.bind(this)))}__setAttr(e,o){return this.canvas&&(t.canvasSizeAttrs.includes(e)?this.__changeCanvasSize(e,o):"fill"===e?this.__changeFill(o):"hittable"===e&&(this.parent||(this.canvas.hittable=o))),super.__setAttr(e,o)}__getAttr(e){return this.canvas&&t.canvasSizeAttrs.includes(e)?this.canvas[e]:super.__getAttr(e)}__changeCanvasSize(e,o){const s=t.DataHelper.copyAttrs({},this.canvas,t.canvasSizeAttrs);s[e]=this.config[e]=o,o&&this.canvas.stopAutoLayout(),this.__doResize(s)}__changeFill(t){this.config.fill=t,this.canvas.allowBackgroundColor?this.canvas.backgroundColor=t:this.forceRender()}__onCreated(){this.created=!0}__onReady(){this.ready||(this.ready=!0,this.emitLeafer(t.LeaferEvent.BEFORE_READY),this.emitLeafer(t.LeaferEvent.READY),this.emitLeafer(t.LeaferEvent.AFTER_READY),t.WaitHelper.run(this.__readyWait))}__onViewReady(){this.viewReady||(this.viewReady=!0,this.emitLeafer(t.LeaferEvent.VIEW_READY),t.WaitHelper.run(this.__viewReadyWait))}__onNextRender(){if(this.viewReady){t.WaitHelper.run(this.__nextRenderWait);const{imageReady:e}=this;e&&!this.viewCompleted&&this.__checkViewCompleted(),e||(this.viewCompleted=!1)}}__checkViewCompleted(e=!0){this.nextRender((()=>{this.imageReady&&(e&&this.emitLeafer(t.LeaferEvent.VIEW_COMPLETED),t.WaitHelper.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,o){e&&(t=t.bind(e));const s=this.__nextRenderWait;if(o){for(let e=0;e<s.length;e++)if(s[e]===t){s.splice(e,1);break}}else s.push(t)}zoom(t,e,o){}getValidMove(t,e){return{x:t,y:e}}getValidScale(t){return t}getWorldPointByClient(t,e){return this.interaction&&this.interaction.getLocal(t,e)}__checkUpdateLayout(){this.__layout.update()}emitLeafer(e){this.emitEvent(new t.LeaferEvent(e,this))}__listenEvents(){const e=t.Run.start("FirstCreate "+this.innerName);this.once(t.LeaferEvent.START,(()=>t.Run.end(e))),this.once(t.LayoutEvent.START,(()=>this.updateLazyBounds())),this.once(t.LayoutEvent.END,(()=>this.__onReady())),this.once(t.RenderEvent.START,(()=>this.__onCreated())),this.once(t.RenderEvent.END,(()=>this.__onViewReady())),this.__eventIds.push(this.on_(t.WatchEvent.DATA,this.__onWatchData,this),this.on_(t.RenderEvent.NEXT,this.__onNextRender,this),this.on_(t.LayoutEvent.CHECK_UPDATE,this.__checkUpdateLayout,this))}__removeListenEvents(){this.off_(this.__eventIds),this.__eventIds.length=0}destroy(e){const o=()=>{if(!this.destroyed){M.list.remove(this);try{this.stop(),this.emitEvent(new t.LeaferEvent(t.LeaferEvent.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=null,this.userConfig&&(this.userConfig.view=null),super.destroy(),setTimeout((()=>{t.ImageManager.clearRecycled()}),100)}catch(t){H.error(t)}}};e?o():setTimeout(o)}},exports.Leafer.list=new t.LeafList,e([t.dataProcessor(T)],exports.Leafer.prototype,"__",void 0),e([t.boundsType()],exports.Leafer.prototype,"pixelRatio",void 0),exports.Leafer=M=e([t.registerUI()],exports.Leafer),exports.Rect=class extends exports.UI{get __tag(){return"Rect"}constructor(t){super(t)}},e([t.dataProcessor(R)],exports.Rect.prototype,"__",void 0),exports.Rect=e([t.useModule(W),t.rewriteAble(),t.registerUI()],exports.Rect);const O=exports.Rect.prototype,N=exports.Group.prototype,G={},{copy:V,add:Y,includes:j}=t.BoundsHelper;exports.Box=class extends exports.Group{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(){const t=this.__;if(this.children.length){if(t.__autoSide){if(this.leafer&&this.leafer.ready&&this.leafer.layouter.addExtra(this),super.__updateBoxBounds(),!t.__autoSize){const e=this.__layout.boxBounds;t.__autoWidth||(e.x=0,e.width=t.width),t.__autoHeight||(e.y=0,e.height=t.height)}}else this.__updateRectBoxBounds();t.flow&&this.__updateContentBounds()}else this.__updateRectBoxBounds()}__updateStrokeBounds(){}__updateRenderBounds(){let t;const{renderBounds:e}=this.__layout;this.children.length?(super.__updateRenderBounds(),V(G,e),this.__updateRectRenderBounds(),t=!j(e,G)||void 0):this.__updateRectRenderBounds(),this.isOverflow!==t&&(this.isOverflow=t),t&&!(this.__.__drawAfterFill="hide"===this.__.overflow)&&Y(e,G)}__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))}__drawAfterFill(t,e){const{length:o}=this.children;this.isOverflow?(t.save(),t.clip(),o&&this.__renderGroup(t,e),t.restore()):o&&this.__renderGroup(t,e),this.__.stroke&&o&&(t.setWorld(this.__nowWorld),this.__drawRenderPath(t))}},e([t.dataProcessor(w)],exports.Box.prototype,"__",void 0),e([t.affectRenderBoundsType("show")],exports.Box.prototype,"overflow",void 0),e([t.rewrite(O.__updateStrokeSpread)],exports.Box.prototype,"__updateStrokeSpread",null),e([t.rewrite(O.__updateRenderSpread)],exports.Box.prototype,"__updateRectRenderSpread",null),e([t.rewrite(O.__updateBoxBounds)],exports.Box.prototype,"__updateRectBoxBounds",null),e([t.rewrite(O.__updateStrokeBounds)],exports.Box.prototype,"__updateStrokeBounds",null),e([t.rewrite(O.__updateRenderBounds)],exports.Box.prototype,"__updateRectRenderBounds",null),e([t.rewrite(O.__updateChange)],exports.Box.prototype,"__updateRectChange",null),e([t.rewrite(O.__render)],exports.Box.prototype,"__renderRect",null),e([t.rewrite(N.__render)],exports.Box.prototype,"__renderGroup",null),exports.Box=e([t.rewriteAble(),t.registerUI()],exports.Box),exports.Frame=class extends exports.Box{get __tag(){return"Frame"}get isFrame(){return!0}constructor(t){super(t)}},e([t.dataProcessor(m)],exports.Frame.prototype,"__",void 0),e([t.surfaceType("#FFFFFF")],exports.Frame.prototype,"fill",void 0),e([t.affectRenderBoundsType("hide")],exports.Frame.prototype,"overflow",void 0),exports.Frame=e([t.registerUI()],exports.Frame);const{moveTo:X,closePath:J,ellipse:K}=t.PathCommandDataHelper;exports.Ellipse=class extends exports.UI{get __tag(){return"Ellipse"}constructor(t){super(t)}__updatePath(){const{width:e,height:o,innerRadius:s,startAngle:r,endAngle:i}=this.__,a=e/2,n=o/2,p=this.__.path=[];s?(r||i?(s<1&&K(p,a,n,a*s,n*s,0,r,i,!1),K(p,a,n,a,n,0,i,r,!0),s<1&&J(p)):(s<1&&(K(p,a,n,a*s,n*s),X(p,e,n)),K(p,a,n,a,n,0,360,0,!0)),t.Platform.ellipseToCurve&&(this.__.path=this.getPath(!0))):r||i?(X(p,a,n),K(p,a,n,a,n,0,r,i,!1),J(p)):K(p,a,n,a,n)}},e([t.dataProcessor(b)],exports.Ellipse.prototype,"__",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"innerRadius",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"startAngle",void 0),e([t.pathType(0)],exports.Ellipse.prototype,"endAngle",void 0),exports.Ellipse=e([t.registerUI()],exports.Ellipse);const{moveTo:$,lineTo:q,drawPoints:Q}=t.PathCommandDataHelper,{rotate:Z,getAngle:tt,getDistance:et,defaultPoint:ot}=t.PointHelper,{toBounds:st}=t.PathBounds;exports.Line=class extends exports.UI{get __tag(){return"Line"}get toPoint(){const{width:e,rotation:o}=this.__,s=t.getPointData();return e&&(s.x=e),o&&Z(s,o),s}set toPoint(t){this.width=et(ot,t),this.rotation=tt(ot,t),this.height&&(this.height=0)}constructor(t){super(t)}__updatePath(){const t=this.__,e=t.path=[];t.points?Q(e,t.points,!1,t.closed):($(e,0,0),q(e,this.width,0))}__updateRenderPath(){const t=this.__;!this.pathInputed&&t.points&&t.curve?(Q(t.__pathForRender=[],t.points,t.curve,t.closed),t.__useArrow&&s.addArrows(this,!1)):super.__updateRenderPath()}__updateBoxBounds(){this.points?st(this.__.__pathForRender,this.__layout.boxBounds):super.__updateBoxBounds()}},e([t.dataProcessor(I)],exports.Line.prototype,"__",void 0),e([t.affectStrokeBoundsType("center")],exports.Line.prototype,"strokeAlign",void 0),e([t.boundsType(0)],exports.Line.prototype,"height",void 0),e([t.pathType()],exports.Line.prototype,"points",void 0),e([t.pathType(0)],exports.Line.prototype,"curve",void 0),e([t.pathType(!1)],exports.Line.prototype,"closed",void 0),exports.Line=e([t.registerUI()],exports.Line);const{sin:rt,cos:it,PI:at}=Math,{moveTo:nt,lineTo:pt,closePath:ht,drawPoints:_t}=t.PathCommandDataHelper,dt=exports.Line.prototype;exports.Polygon=class extends exports.UI{get __tag(){return"Polygon"}constructor(t){super(t)}__updatePath(){const t=this.__.path=[];if(this.__.points)_t(t,this.__.points,!1,!0);else{const{width:e,height:o,sides:s}=this.__,r=e/2,i=o/2;nt(t,r,0);for(let e=1;e<s;e++)pt(t,r+r*rt(2*e*at/s),i-i*it(2*e*at/s))}ht(t)}__updateRenderPath(){}__updateBoxBounds(){}},e([t.dataProcessor(P)],exports.Polygon.prototype,"__",void 0),e([t.pathType(3)],exports.Polygon.prototype,"sides",void 0),e([t.pathType()],exports.Polygon.prototype,"points",void 0),e([t.pathType(0)],exports.Polygon.prototype,"curve",void 0),e([t.rewrite(dt.__updateRenderPath)],exports.Polygon.prototype,"__updateRenderPath",null),e([t.rewrite(dt.__updateBoxBounds)],exports.Polygon.prototype,"__updateBoxBounds",null),exports.Polygon=e([t.rewriteAble(),t.registerUI()],exports.Polygon);const{sin:lt,cos:ut,PI:ct}=Math,{moveTo:yt,lineTo:xt,closePath:vt}=t.PathCommandDataHelper;exports.Star=class extends exports.UI{get __tag(){return"Star"}constructor(t){super(t)}__updatePath(){const{width:t,height:e,corners:o,innerRadius:s}=this.__,r=t/2,i=e/2,a=this.__.path=[];yt(a,r,0);for(let t=1;t<2*o;t++)xt(a,r+(t%2==0?r:r*s)*lt(t*ct/o),i-(t%2==0?i:i*s)*ut(t*ct/o));vt(a)}},e([t.dataProcessor(S)],exports.Star.prototype,"__",void 0),e([t.pathType(5)],exports.Star.prototype,"corners",void 0),e([t.pathType(.382)],exports.Star.prototype,"innerRadius",void 0),exports.Star=e([t.registerUI()],exports.Star),exports.Image=class extends exports.Rect{get __tag(){return"Image"}get ready(){return!!this.image&&this.image.ready}constructor(e){super(e),this.on(t.ImageEvent.LOADED,(t=>{"fill"===t.attrName&&t.attrValue.url===this.url&&(this.image=t.image)}))}destroy(){this.image=null,super.destroy()}},e([t.dataProcessor(L)],exports.Image.prototype,"__",void 0),e([t.boundsType("")],exports.Image.prototype,"url",void 0),exports.Image=e([t.registerUI()],exports.Image),exports.Canvas=class extends exports.Rect{get __tag(){return"Canvas"}constructor(e){super(e),this.canvas=t.Creator.canvas(this.__),this.context=this.canvas.context,this.__.__drawAfterFill=!0}draw(e,o,s,r){e.__layout.update();const i=new t.Matrix(e.__world).invert(),a=new t.Matrix;o&&a.translate(o.x,o.y),s&&("number"==typeof s?a.scale(s):a.scale(s.x,s.y)),r&&a.rotate(r),i.multiplyParent(a),e.__render(this.canvas,{matrix:i.withScale()}),this.paint()}paint(){this.forceUpdate("fill")}__drawAfterFill(t,e){const o=this.canvas.view,{width:s,height:r}=this;this.__.cornerRadius?(t.save(),t.clip(),t.drawImage(this.canvas.view,0,0,o.width,o.height,0,0,s,r),t.restore()):t.drawImage(this.canvas.view,0,0,o.width,o.height,0,0,s,r)}__updateSize(){const{canvas:t}=this;if(t){const{smooth:e}=this.__;t.smooth!==e&&(t.smooth=e),t.resize(this.__)}}destroy(){this.canvas&&(this.canvas.destroy(),this.canvas=null,this.context=null),super.destroy()}},e([t.dataProcessor(A)],exports.Canvas.prototype,"__",void 0),e([l(100)],exports.Canvas.prototype,"width",void 0),e([l(100)],exports.Canvas.prototype,"height",void 0),e([l(t.Platform.devicePixelRatio)],exports.Canvas.prototype,"pixelRatio",void 0),e([l(!0)],exports.Canvas.prototype,"smooth",void 0),e([l()],exports.Canvas.prototype,"contextSettings",void 0),e([t.hitType("all")],exports.Canvas.prototype,"hitFill",void 0),exports.Canvas=e([t.registerUI()],exports.Canvas);const{copyAndSpread:gt,includes:ft,isSame:wt,spread:Tt,setList:mt}=t.BoundsHelper;exports.Text=class extends exports.UI{get __tag(){return"Text"}get editInner(){return"TextEditor"}get textDrawData(){return this.__layout.update(),this.__.__textDrawData}constructor(t){super(t)}__drawHitPath(t){const{__lineHeight:e,__baseLine:o,__textDrawData:s}=this.__;t.beginPath(),this.__.__letterSpacing<0?this.__drawPathByData(t):s.rows.forEach((s=>t.rect(s.x,s.y-o,s.width,e)))}__drawPathByData(t,e){const{x:o,y:s,width:r,height:i}=this.__layout.boxBounds;t.rect(o,s,r,i)}__drawRenderPath(t){t.font=this.__.__font}__updateTextDrawData(){const t=this.__;t.__textDrawData=o.getDrawData(t.text,this.__)}__updateBoxBounds(){const e=this.__,o=this.__layout,{lineHeight:s,letterSpacing:r,fontFamily:i,fontSize:a,fontWeight:n,italic:p,textCase:h,textOverflow:_,padding:d}=e,l=e.__autoWidth,u=e.__autoHeight;e.__lineHeight=g.number(s,a),e.__letterSpacing=g.number(r,a),e.__padding=d?t.MathHelper.fourNumber(d):void 0,e.__baseLine=e.__lineHeight-(e.__lineHeight-.7*a)/2,e.__font=`${p?"italic ":""}${"small-caps"===h?"small-caps ":""}${"normal"!==n?n+" ":""}${a}px ${i}`,e.__clipText="show"!==_&&!e.__autoSize,this.__updateTextDrawData();const{bounds:c}=e.__textDrawData,y=o.boxBounds;if(e.__lineHeight<a&&Tt(c,a/2),l||u){if(y.x=l?c.x:0,y.y=u?c.y:0,y.width=l?c.width:e.width,y.height=u?c.height:e.height,d){const[t,o,s,r]=e.__padding;l&&(y.x-=r,y.width+=o+r),u&&(y.y-=t,y.height+=s+t)}this.__updateNaturalSize()}else super.__updateBoxBounds();p&&(y.width+=.16*a);const x=ft(y,c)?y:c;wt(x,o.contentBounds)?e.__textBoxBounds=x:(o.contentBounds=x,o.renderChanged=!0,mt(e.__textBoxBounds={},[y,c]))}__updateRenderSpread(){let t=super.__updateRenderSpread();return t||(t=this.__layout.boxBounds===this.__layout.contentBounds?0:1),t}__updateRenderBounds(){gt(this.__layout.renderBounds,this.__.__textBoxBounds,this.__layout.renderSpread)}},e([t.dataProcessor(C)],exports.Text.prototype,"__",void 0),e([t.boundsType(0)],exports.Text.prototype,"width",void 0),e([t.boundsType(0)],exports.Text.prototype,"height",void 0),e([t.surfaceType("#000000")],exports.Text.prototype,"fill",void 0),e([t.affectStrokeBoundsType("outside")],exports.Text.prototype,"strokeAlign",void 0),e([t.hitType("all")],exports.Text.prototype,"hitFill",void 0),e([t.boundsType("")],exports.Text.prototype,"text",void 0),e([t.boundsType("L")],exports.Text.prototype,"fontFamily",void 0),e([t.boundsType(12)],exports.Text.prototype,"fontSize",void 0),e([t.boundsType("normal")],exports.Text.prototype,"fontWeight",void 0),e([t.boundsType(!1)],exports.Text.prototype,"italic",void 0),e([t.boundsType("none")],exports.Text.prototype,"textCase",void 0),e([t.boundsType("none")],exports.Text.prototype,"textDecoration",void 0),e([t.boundsType(0)],exports.Text.prototype,"letterSpacing",void 0),e([t.boundsType({type:"percent",value:1.5})],exports.Text.prototype,"lineHeight",void 0),e([t.boundsType(0)],exports.Text.prototype,"paraIndent",void 0),e([t.boundsType(0)],exports.Text.prototype,"paraSpacing",void 0),e([t.boundsType("left")],exports.Text.prototype,"textAlign",void 0),e([t.boundsType("top")],exports.Text.prototype,"verticalAlign",void 0),e([t.boundsType("normal")],exports.Text.prototype,"textWrap",void 0),e([t.boundsType("show")],exports.Text.prototype,"textOverflow",void 0),exports.Text=e([t.registerUI()],exports.Text),exports.Path=class extends exports.UI{get __tag(){return"Path"}constructor(t){super(t),this.__.__pathInputed=2}},e([t.dataProcessor(B)],exports.Path.prototype,"__",void 0),e([t.affectStrokeBoundsType("center")],exports.Path.prototype,"strokeAlign",void 0),exports.Path=e([t.registerUI()],exports.Path),exports.Pen=class extends exports.Group{get __tag(){return"Pen"}constructor(t){super(t)}setStyle(t){const e=this.pathElement=new exports.Path(t);return this.pathStyle=t,this.__path=e.path||(e.path=[]),this.add(e),this}beginPath(){return this.__path.length=0,this.paint(),this}moveTo(t,e){return this}lineTo(t,e){return this}bezierCurveTo(t,e,o,s,r,i){return this}quadraticCurveTo(t,e,o,s){return this}closePath(){return this}rect(t,e,o,s){return this}roundRect(t,e,o,s,r){return this}ellipse(t,e,o,s,r,i,a,n){return this}arc(t,e,o,s,r,i){return this}arcTo(t,e,o,s,r){return this}drawEllipse(t,e,o,s,r,i,a,n){return this}drawArc(t,e,o,s,r,i){return this}drawPoints(t,e,o){return this}clearPath(){return this}paint(){this.pathElement.forceUpdate("path")}},e([t.dataProcessor(U)],exports.Pen.prototype,"__",void 0),e([(e,o)=>{t.defineKey(e,o,{get(){return this.__path}})}],exports.Pen.prototype,"path",void 0),exports.Pen=e([t.useModule(t.PathCreator,["set","beginPath","path"]),t.registerUI()],exports.Pen),exports.BoxData=w,exports.CanvasData=A,exports.ColorConvert={},exports.Effect=a,exports.EllipseData=b,exports.Export=n,exports.FrameData=m,exports.GroupData=f,exports.ImageData=L,exports.LeaferData=T,exports.LineData=I,exports.Paint=r,exports.PaintGradient={},exports.PaintImage=i,exports.PathArrow=s,exports.PathData=B,exports.PenData=U,exports.PolygonData=P,exports.RectData=R,exports.RectRender=W,exports.StarData=S,exports.State=p,exports.TextConvert=o,exports.TextData=C,exports.UIBounds=E,exports.UIData=v,exports.UIRender=D,exports.UnitConvert=g,exports.arrowType=_,exports.effectType=d,exports.resizeType=l,exports.stateType=h,exports.zoomLayerType=u,Object.keys(t).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer-ui/draw",
3
- "version": "1.0.0-rc.23",
3
+ "version": "1.0.0-rc.24",
4
4
  "description": "@leafer-ui/draw",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -29,10 +29,10 @@
29
29
  "leaferjs"
30
30
  ],
31
31
  "dependencies": {
32
- "@leafer/core": "1.0.0-rc.23",
33
- "@leafer-ui/display": "1.0.0-rc.23",
34
- "@leafer-ui/display-module": "1.0.0-rc.23",
35
- "@leafer-ui/decorator": "1.0.0-rc.23",
36
- "@leafer-ui/external": "1.0.0-rc.23"
32
+ "@leafer/core": "1.0.0-rc.24",
33
+ "@leafer-ui/display": "1.0.0-rc.24",
34
+ "@leafer-ui/display-module": "1.0.0-rc.24",
35
+ "@leafer-ui/decorator": "1.0.0-rc.24",
36
+ "@leafer-ui/external": "1.0.0-rc.24"
37
37
  }
38
38
  }
package/src/index.ts CHANGED
@@ -1,5 +1,3 @@
1
- export const version = "1.0.0-rc.23"
2
-
3
1
  export * from '@leafer/core'
4
2
 
5
3
  export * from '@leafer-ui/display'
package/types/index.d.ts CHANGED
@@ -3,7 +3,3 @@ export * from '@leafer-ui/display';
3
3
  export * from '@leafer-ui/display-module';
4
4
  export * from '@leafer-ui/decorator';
5
5
  export * from '@leafer-ui/external';
6
-
7
- declare const version = "1.0.0-rc.23";
8
-
9
- export { version };