leafer-ui 1.3.3 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1374,7 +1374,7 @@ function getNameList(name) {
1374
1374
  }
1375
1375
  const D$4 = Debug;
1376
1376
 
1377
- const debug$f = Debug.get('RunTime');
1377
+ const debug$g = Debug.get('RunTime');
1378
1378
  const Run = {
1379
1379
  currentId: 0,
1380
1380
  currentName: '',
@@ -1383,24 +1383,24 @@ const Run = {
1383
1383
  nameToIdMap: {},
1384
1384
  start(name, microsecond) {
1385
1385
  const id = IncrementId.create(IncrementId.RUNTIME);
1386
- R.currentId = R.idMap[id] = microsecond ? performance.now() : Date.now();
1387
- R.currentName = R.nameMap[id] = name;
1388
- R.nameToIdMap[name] = id;
1386
+ R$1.currentId = R$1.idMap[id] = microsecond ? performance.now() : Date.now();
1387
+ R$1.currentName = R$1.nameMap[id] = name;
1388
+ R$1.nameToIdMap[name] = id;
1389
1389
  return id;
1390
1390
  },
1391
1391
  end(id, microsecond) {
1392
- const time = R.idMap[id], name = R.nameMap[id];
1392
+ const time = R$1.idMap[id], name = R$1.nameMap[id];
1393
1393
  const duration = microsecond ? (performance.now() - time) / 1000 : Date.now() - time;
1394
- R.idMap[id] = R.nameMap[id] = R.nameToIdMap[name] = undefined;
1395
- debug$f.log(name, duration, 'ms');
1394
+ R$1.idMap[id] = R$1.nameMap[id] = R$1.nameToIdMap[name] = undefined;
1395
+ debug$g.log(name, duration, 'ms');
1396
1396
  },
1397
1397
  endOfName(name, microsecond) {
1398
- const id = R.nameToIdMap[name];
1398
+ const id = R$1.nameToIdMap[name];
1399
1399
  if (id !== undefined)
1400
- R.end(id, microsecond);
1400
+ R$1.end(id, microsecond);
1401
1401
  }
1402
1402
  };
1403
- const R = Run;
1403
+ const R$1 = Run;
1404
1404
 
1405
1405
  const check = [];
1406
1406
  const Plugin = {
@@ -1421,18 +1421,18 @@ const Plugin = {
1421
1421
  };
1422
1422
  setTimeout(() => check.forEach(name => Plugin.has(name, true)));
1423
1423
 
1424
- const debug$e = Debug.get('UICreator');
1424
+ const debug$f = Debug.get('UICreator');
1425
1425
  const UICreator = {
1426
1426
  list: {},
1427
1427
  register(UI) {
1428
1428
  const { __tag: tag } = UI.prototype;
1429
1429
  if (list$1[tag])
1430
- debug$e.repeat(tag);
1430
+ debug$f.repeat(tag);
1431
1431
  list$1[tag] = UI;
1432
1432
  },
1433
1433
  get(tag, data, x, y, width, height) {
1434
1434
  if (!list$1[tag])
1435
- debug$e.error('not register ' + tag);
1435
+ debug$f.error('not register ' + tag);
1436
1436
  const ui = new list$1[tag](data);
1437
1437
  if (x !== undefined) {
1438
1438
  ui.x = x;
@@ -1448,7 +1448,7 @@ const UICreator = {
1448
1448
  };
1449
1449
  const { list: list$1 } = UICreator;
1450
1450
 
1451
- const debug$d = Debug.get('EventCreator');
1451
+ const debug$e = Debug.get('EventCreator');
1452
1452
  const EventCreator = {
1453
1453
  nameList: {},
1454
1454
  register(Event) {
@@ -1456,7 +1456,7 @@ const EventCreator = {
1456
1456
  Object.keys(Event).forEach(key => {
1457
1457
  name = Event[key];
1458
1458
  if (typeof name === 'string')
1459
- nameList[name] && debug$d.repeat(name), nameList[name] = Event;
1459
+ nameList[name] && debug$e.repeat(name), nameList[name] = Event;
1460
1460
  });
1461
1461
  },
1462
1462
  changeName(oldName, newName) {
@@ -1533,10 +1533,10 @@ const DataHelper = {
1533
1533
  Object.keys(merge).forEach(key => {
1534
1534
  var _a, _b;
1535
1535
  value = merge[key];
1536
- if ((value === null || value === undefined ? undefined : value.constructor) === Object && ((_a = t[key]) === null || _a === undefined ? undefined : _a.constructor) === Object)
1536
+ if ((value === null || value === void 0 ? void 0 : value.constructor) === Object && ((_a = t[key]) === null || _a === void 0 ? void 0 : _a.constructor) === Object)
1537
1537
  return assign(t[key], merge[key], exclude && exclude[key]);
1538
1538
  if (exclude && (key in exclude)) {
1539
- if (((_b = exclude[key]) === null || _b === undefined ? undefined : _b.constructor) === Object)
1539
+ if (((_b = exclude[key]) === null || _b === void 0 ? void 0 : _b.constructor) === Object)
1540
1540
  assign(t[key] = {}, merge[key], exclude[key]);
1541
1541
  return;
1542
1542
  }
@@ -1660,7 +1660,7 @@ class LeafData {
1660
1660
  const t = this;
1661
1661
  if (t.blendMode === 'pass-through') {
1662
1662
  const leaf = this.__leaf;
1663
- if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser) {
1663
+ if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser || t.filter) {
1664
1664
  t.__single = true;
1665
1665
  }
1666
1666
  else if (t.__single) {
@@ -1773,7 +1773,7 @@ let Canvas$1 = class Canvas {
1773
1773
  }
1774
1774
  setTransform(_a, _b, _c, _d, _e, _f) { }
1775
1775
  resetTransform() { }
1776
- getTransform() { return undefined; }
1776
+ getTransform() { return void 0; }
1777
1777
  save() { }
1778
1778
  restore() { }
1779
1779
  transform(a, b, c, d, e, f) {
@@ -1830,12 +1830,12 @@ let Canvas$1 = class Canvas {
1830
1830
  ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) { }
1831
1831
  rect(_x, _y, _width, _height) { }
1832
1832
  roundRect(_x, _y, _width, _height, _radius) { }
1833
- createConicGradient(_startAngle, _x, _y) { return undefined; }
1834
- createLinearGradient(_x0, _y0, _x1, _y1) { return undefined; }
1835
- createPattern(_image, _repetition) { return undefined; }
1836
- createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return undefined; }
1833
+ createConicGradient(_startAngle, _x, _y) { return void 0; }
1834
+ createLinearGradient(_x0, _y0, _x1, _y1) { return void 0; }
1835
+ createPattern(_image, _repetition) { return void 0; }
1836
+ createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return void 0; }
1837
1837
  fillText(_text, _x, _y, _maxWidth) { }
1838
- measureText(_text) { return undefined; }
1838
+ measureText(_text) { return void 0; }
1839
1839
  strokeText(_text, _x, _y, _maxWidth) { }
1840
1840
  destroy() {
1841
1841
  this.context = null;
@@ -1843,79 +1843,79 @@ let Canvas$1 = class Canvas {
1843
1843
  };
1844
1844
  __decorate([
1845
1845
  contextAttr('imageSmoothingEnabled')
1846
- ], Canvas$1.prototype, "smooth", undefined);
1846
+ ], Canvas$1.prototype, "smooth", void 0);
1847
1847
  __decorate([
1848
1848
  contextAttr('imageSmoothingQuality')
1849
- ], Canvas$1.prototype, "smoothLevel", undefined);
1849
+ ], Canvas$1.prototype, "smoothLevel", void 0);
1850
1850
  __decorate([
1851
1851
  contextAttr('globalAlpha')
1852
- ], Canvas$1.prototype, "opacity", undefined);
1852
+ ], Canvas$1.prototype, "opacity", void 0);
1853
1853
  __decorate([
1854
1854
  contextAttr()
1855
- ], Canvas$1.prototype, "fillStyle", undefined);
1855
+ ], Canvas$1.prototype, "fillStyle", void 0);
1856
1856
  __decorate([
1857
1857
  contextAttr()
1858
- ], Canvas$1.prototype, "strokeStyle", undefined);
1858
+ ], Canvas$1.prototype, "strokeStyle", void 0);
1859
1859
  __decorate([
1860
1860
  contextAttr('lineWidth')
1861
- ], Canvas$1.prototype, "strokeWidth", undefined);
1861
+ ], Canvas$1.prototype, "strokeWidth", void 0);
1862
1862
  __decorate([
1863
1863
  contextAttr('lineCap')
1864
- ], Canvas$1.prototype, "strokeCap", undefined);
1864
+ ], Canvas$1.prototype, "strokeCap", void 0);
1865
1865
  __decorate([
1866
1866
  contextAttr('lineJoin')
1867
- ], Canvas$1.prototype, "strokeJoin", undefined);
1867
+ ], Canvas$1.prototype, "strokeJoin", void 0);
1868
1868
  __decorate([
1869
1869
  contextAttr('lineDashOffset')
1870
- ], Canvas$1.prototype, "dashOffset", undefined);
1870
+ ], Canvas$1.prototype, "dashOffset", void 0);
1871
1871
  __decorate([
1872
1872
  contextAttr()
1873
- ], Canvas$1.prototype, "miterLimit", undefined);
1873
+ ], Canvas$1.prototype, "miterLimit", void 0);
1874
1874
  __decorate([
1875
1875
  contextAttr()
1876
- ], Canvas$1.prototype, "shadowBlur", undefined);
1876
+ ], Canvas$1.prototype, "shadowBlur", void 0);
1877
1877
  __decorate([
1878
1878
  contextAttr()
1879
- ], Canvas$1.prototype, "shadowColor", undefined);
1879
+ ], Canvas$1.prototype, "shadowColor", void 0);
1880
1880
  __decorate([
1881
1881
  contextAttr()
1882
- ], Canvas$1.prototype, "shadowOffsetX", undefined);
1882
+ ], Canvas$1.prototype, "shadowOffsetX", void 0);
1883
1883
  __decorate([
1884
1884
  contextAttr()
1885
- ], Canvas$1.prototype, "shadowOffsetY", undefined);
1885
+ ], Canvas$1.prototype, "shadowOffsetY", void 0);
1886
1886
  __decorate([
1887
1887
  contextAttr()
1888
- ], Canvas$1.prototype, "filter", undefined);
1888
+ ], Canvas$1.prototype, "filter", void 0);
1889
1889
  __decorate([
1890
1890
  contextAttr()
1891
- ], Canvas$1.prototype, "font", undefined);
1891
+ ], Canvas$1.prototype, "font", void 0);
1892
1892
  __decorate([
1893
1893
  contextAttr()
1894
- ], Canvas$1.prototype, "fontKerning", undefined);
1894
+ ], Canvas$1.prototype, "fontKerning", void 0);
1895
1895
  __decorate([
1896
1896
  contextAttr()
1897
- ], Canvas$1.prototype, "fontStretch", undefined);
1897
+ ], Canvas$1.prototype, "fontStretch", void 0);
1898
1898
  __decorate([
1899
1899
  contextAttr()
1900
- ], Canvas$1.prototype, "fontVariantCaps", undefined);
1900
+ ], Canvas$1.prototype, "fontVariantCaps", void 0);
1901
1901
  __decorate([
1902
1902
  contextAttr()
1903
- ], Canvas$1.prototype, "textAlign", undefined);
1903
+ ], Canvas$1.prototype, "textAlign", void 0);
1904
1904
  __decorate([
1905
1905
  contextAttr()
1906
- ], Canvas$1.prototype, "textBaseline", undefined);
1906
+ ], Canvas$1.prototype, "textBaseline", void 0);
1907
1907
  __decorate([
1908
1908
  contextAttr()
1909
- ], Canvas$1.prototype, "textRendering", undefined);
1909
+ ], Canvas$1.prototype, "textRendering", void 0);
1910
1910
  __decorate([
1911
1911
  contextAttr()
1912
- ], Canvas$1.prototype, "wordSpacing", undefined);
1912
+ ], Canvas$1.prototype, "wordSpacing", void 0);
1913
1913
  __decorate([
1914
1914
  contextAttr()
1915
- ], Canvas$1.prototype, "letterSpacing", undefined);
1915
+ ], Canvas$1.prototype, "letterSpacing", void 0);
1916
1916
  __decorate([
1917
1917
  contextAttr()
1918
- ], Canvas$1.prototype, "direction", undefined);
1918
+ ], Canvas$1.prototype, "direction", void 0);
1919
1919
  __decorate([
1920
1920
  contextMethod()
1921
1921
  ], Canvas$1.prototype, "setTransform", null);
@@ -2612,7 +2612,7 @@ const EllipseHelper = {
2612
2612
  const { M: M$4, m, L: L$5, l, H, h, V, v, C: C$4, c, S, s, Q: Q$3, q, T, t, A, a, Z: Z$4, z, N: N$3, D: D$3, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3 } = PathCommandMap;
2613
2613
  const { rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2614
2614
  const { ellipticalArc } = EllipseHelper;
2615
- const debug$c = Debug.get('PathConvert');
2615
+ const debug$d = Debug.get('PathConvert');
2616
2616
  const setEndPoint$1 = {};
2617
2617
  const PathConvert = {
2618
2618
  current: { dot: 0 },
@@ -2853,7 +2853,7 @@ const PathConvert = {
2853
2853
  i += 6;
2854
2854
  break;
2855
2855
  default:
2856
- debug$c.error(`command: ${command} [index:${i}]`, old);
2856
+ debug$d.error(`command: ${command} [index:${i}]`, old);
2857
2857
  return data;
2858
2858
  }
2859
2859
  lastCommand = command;
@@ -2962,12 +2962,10 @@ const PathCommandDataHelper = {
2962
2962
  },
2963
2963
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
2964
2964
  if (lastX !== undefined) {
2965
- const maxRadius = tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2) * (getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2) / 2);
2966
- data.push(U$2, x1, y1, x2, y2, min(radius, abs$2(maxRadius)));
2967
- }
2968
- else {
2969
- data.push(U$2, x1, y1, x2, y2, radius);
2965
+ const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
2966
+ radius = min(radius, min(d / 2, d / 2 * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
2970
2967
  }
2968
+ data.push(U$2, x1, y1, x2, y2, radius);
2971
2969
  },
2972
2970
  drawEllipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
2973
2971
  BezierHelper.ellipse(null, x, y, radiusX, radiusY, rotation === undefined ? 0 : rotation, startAngle === undefined ? 0 : startAngle, endAngle === undefined ? 360 : endAngle, anticlockwise, null, null, startPoint);
@@ -3078,7 +3076,7 @@ class PathCreator {
3078
3076
  }
3079
3077
 
3080
3078
  const { M: M$2, L: L$3, C: C$2, Q: Q$1, Z: Z$2, N: N$1, D: D$1, X: X$1, G: G$1, F: F$2, O: O$1, P: P$1, U: U$1 } = PathCommandMap;
3081
- const debug$b = Debug.get('PathDrawer');
3079
+ const debug$c = Debug.get('PathDrawer');
3082
3080
  const PathDrawer = {
3083
3081
  drawPathByData(drawer, data) {
3084
3082
  if (!data)
@@ -3141,7 +3139,7 @@ const PathDrawer = {
3141
3139
  i += 6;
3142
3140
  break;
3143
3141
  default:
3144
- debug$b.error(`command: ${command} [index:${i}]`, data);
3142
+ debug$c.error(`command: ${command} [index:${i}]`, data);
3145
3143
  return;
3146
3144
  }
3147
3145
  }
@@ -3151,7 +3149,7 @@ const PathDrawer = {
3151
3149
  const { M: M$1, L: L$2, C: C$1, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
3152
3150
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3153
3151
  const { addPointBounds, copy: copy$8, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3154
- const debug$a = Debug.get('PathBounds');
3152
+ const debug$b = Debug.get('PathBounds');
3155
3153
  let radius, radiusX, radiusY;
3156
3154
  const tempPointBounds = {};
3157
3155
  const setPointBounds = {};
@@ -3259,7 +3257,7 @@ const PathBounds = {
3259
3257
  i += 6;
3260
3258
  break;
3261
3259
  default:
3262
- debug$a.error(`command: ${command} [index:${i}]`, data);
3260
+ debug$b.error(`command: ${command} [index:${i}]`, data);
3263
3261
  return;
3264
3262
  }
3265
3263
  }
@@ -3375,7 +3373,7 @@ const FileHelper = {
3375
3373
  const F = FileHelper;
3376
3374
  F.opacityTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
3377
3375
 
3378
- const debug$9 = Debug.get('TaskProcessor');
3376
+ const debug$a = Debug.get('TaskProcessor');
3379
3377
  class TaskItem {
3380
3378
  constructor(task) {
3381
3379
  this.parallel = true;
@@ -3384,13 +3382,13 @@ class TaskItem {
3384
3382
  this.task = task;
3385
3383
  }
3386
3384
  run() {
3387
- return __awaiter(this, undefined, undefined, function* () {
3385
+ return __awaiter(this, void 0, void 0, function* () {
3388
3386
  try {
3389
3387
  if (this.task && !this.isComplete && this.parent.running)
3390
3388
  yield this.task();
3391
3389
  }
3392
3390
  catch (error) {
3393
- debug$9.error(error);
3391
+ debug$a.error(error);
3394
3392
  }
3395
3393
  });
3396
3394
  }
@@ -3623,18 +3621,52 @@ class TaskProcessor {
3623
3621
  }
3624
3622
  }
3625
3623
 
3626
- const ImageManager = {
3624
+ const debug$9 = Debug.get('Resource');
3625
+ const Resource = {
3626
+ tasker: new TaskProcessor(),
3627
3627
  map: {},
3628
+ get isComplete() { return R.tasker.isComplete; },
3629
+ set(key, value) {
3630
+ if (R.map[key])
3631
+ debug$9.repeat(key);
3632
+ R.map[key] = value;
3633
+ },
3634
+ get(key) {
3635
+ return R.map[key];
3636
+ },
3637
+ remove(key) {
3638
+ delete R.map[key];
3639
+ },
3640
+ loadImage(key, format) {
3641
+ return new Promise((resolve, reject) => {
3642
+ const image = this.setImage(key, key, format);
3643
+ image.load(() => resolve(image), (e) => reject(e));
3644
+ });
3645
+ },
3646
+ setImage(key, value, format) {
3647
+ let config;
3648
+ if (typeof value === 'string')
3649
+ config = { url: value };
3650
+ else if (!value.url)
3651
+ config = { url: key, view: value };
3652
+ if (config)
3653
+ format && (config.format = format), value = Creator.image(config);
3654
+ R.set(key, value);
3655
+ return value;
3656
+ },
3657
+ destroy() {
3658
+ R.map = {};
3659
+ }
3660
+ };
3661
+ const R = Resource;
3662
+
3663
+ const ImageManager = {
3628
3664
  recycledList: [],
3629
- tasker: new TaskProcessor(),
3630
3665
  patternTasker: new TaskProcessor(),
3631
- get isComplete() { return I$1.tasker.isComplete; },
3632
3666
  get(config) {
3633
- let image = I$1.map[config.url];
3634
- if (!image) {
3635
- image = Creator.image(config);
3636
- I$1.map[config.url] = image;
3637
- }
3667
+ let image = Resource.get(config.url);
3668
+ if (!image)
3669
+ Resource.set(config.url, image = Creator.image(config));
3638
3670
  image.use++;
3639
3671
  return image;
3640
3672
  },
@@ -3648,7 +3680,7 @@ const ImageManager = {
3648
3680
  if (list.length > 100) {
3649
3681
  list.forEach(image => {
3650
3682
  if (!image.use && image.url) {
3651
- delete I$1.map[image.url];
3683
+ Resource.remove(image.url);
3652
3684
  image.destroy();
3653
3685
  }
3654
3686
  });
@@ -3675,7 +3707,6 @@ const ImageManager = {
3675
3707
  return false;
3676
3708
  },
3677
3709
  destroy() {
3678
- I$1.map = {};
3679
3710
  I$1.recycledList = [];
3680
3711
  }
3681
3712
  };
@@ -3689,21 +3720,19 @@ class LeaferImage {
3689
3720
  this.use = 0;
3690
3721
  this.waitComplete = [];
3691
3722
  this.innerId = create$1(IMAGE);
3692
- this.config = config || { url: '' };
3693
- this.isSVG = ImageManager.isFormat('svg', config);
3694
- this.hasOpacityPixel = ImageManager.hasOpacityPixel(config);
3723
+ this.config = config || (config = { url: '' });
3724
+ if (config.view) {
3725
+ const { view } = config;
3726
+ this.setView(view.config ? view.view : view);
3727
+ }
3728
+ ImageManager.isFormat('svg', config) && (this.isSVG = true);
3729
+ ImageManager.hasOpacityPixel(config) && (this.hasOpacityPixel = true);
3695
3730
  }
3696
3731
  load(onSuccess, onError) {
3697
3732
  if (!this.loading) {
3698
3733
  this.loading = true;
3699
- ImageManager.tasker.add(() => __awaiter(this, undefined, undefined, function* () {
3700
- return yield Platform.origin.loadImage(this.url).then((img) => {
3701
- this.ready = true;
3702
- this.width = img.naturalWidth || img.width;
3703
- this.height = img.naturalHeight || img.height;
3704
- this.view = img;
3705
- this.onComplete(true);
3706
- }).catch((e) => {
3734
+ Resource.tasker.add(() => __awaiter(this, void 0, void 0, function* () {
3735
+ return yield Platform.origin.loadImage(this.url).then(img => this.setView(img)).catch((e) => {
3707
3736
  this.error = e;
3708
3737
  this.onComplete(false);
3709
3738
  });
@@ -3721,6 +3750,13 @@ class LeaferImage {
3721
3750
  }
3722
3751
  l[index] = l[index + 1] = undefined;
3723
3752
  }
3753
+ setView(img) {
3754
+ this.ready = true;
3755
+ this.width = img.naturalWidth || img.width;
3756
+ this.height = img.naturalHeight || img.height;
3757
+ this.view = img;
3758
+ this.onComplete(true);
3759
+ }
3724
3760
  onComplete(isSuccess) {
3725
3761
  let odd;
3726
3762
  this.waitComplete.forEach((item, index) => {
@@ -3739,6 +3775,9 @@ class LeaferImage {
3739
3775
  this.waitComplete.length = 0;
3740
3776
  this.loading = false;
3741
3777
  }
3778
+ getFull(_filters) {
3779
+ return this.view;
3780
+ }
3742
3781
  getCanvas(width, height, opacity, _filters) {
3743
3782
  width || (width = this.width);
3744
3783
  height || (height = this.height);
@@ -3821,10 +3860,10 @@ function autoLayoutType(defaultValue) {
3821
3860
  return decorateLeafAttr(defaultValue, (key) => attr({
3822
3861
  set(value) {
3823
3862
  if (this.__setAttr(key, value)) {
3824
- this.__layout.matrixChanged || this.__layout.matrixChange();
3825
3863
  this.__hasAutoLayout = !!(this.origin || this.around || this.flow);
3826
3864
  if (!this.__local)
3827
3865
  this.__layout.createLocal();
3866
+ doBoundsType(this);
3828
3867
  }
3829
3868
  }
3830
3869
  }));
@@ -4207,55 +4246,62 @@ const LeafHelper = {
4207
4246
  y += t.y;
4208
4247
  transition ? t.animate({ x, y }, transition) : (t.x = x, t.y = y);
4209
4248
  },
4210
- zoomOfWorld(t, origin, scaleX, scaleY, resize) {
4211
- L.zoomOfLocal(t, getTempLocal(t, origin), scaleX, scaleY, resize);
4249
+ zoomOfWorld(t, origin, scaleX, scaleY, resize, transition) {
4250
+ L.zoomOfLocal(t, getTempLocal(t, origin), scaleX, scaleY, resize, transition);
4212
4251
  },
4213
- zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize) {
4214
- copy$7(matrix$1, t.__localMatrix);
4252
+ zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize, transition) {
4253
+ const o = t.__localMatrix;
4254
+ if (typeof scaleY !== 'number') {
4255
+ if (scaleY)
4256
+ transition = scaleY;
4257
+ scaleY = scaleX;
4258
+ }
4259
+ copy$7(matrix$1, o);
4215
4260
  scaleOfOuter$2(matrix$1, origin, scaleX, scaleY);
4216
4261
  if (t.origin || t.around) {
4217
- L.setTransform(t, matrix$1, resize);
4262
+ L.setTransform(t, matrix$1, resize, transition);
4218
4263
  }
4219
4264
  else {
4220
- moveByMatrix(t, matrix$1);
4221
- t.scaleResize(scaleX, scaleY, resize !== true);
4265
+ const x = t.x + matrix$1.e - o.e, y = t.y + matrix$1.f - o.f;
4266
+ if (transition && !resize)
4267
+ t.animate({ x, y, scaleX: t.scaleX * scaleX, scaleY: t.scaleY * scaleY }, transition);
4268
+ else
4269
+ t.x = x, t.y = y, t.scaleResize(scaleX, scaleY, resize !== true);
4222
4270
  }
4223
4271
  },
4224
- rotateOfWorld(t, origin, angle) {
4225
- L.rotateOfLocal(t, getTempLocal(t, origin), angle);
4272
+ rotateOfWorld(t, origin, angle, transition) {
4273
+ L.rotateOfLocal(t, getTempLocal(t, origin), angle, transition);
4226
4274
  },
4227
- rotateOfLocal(t, origin, angle) {
4228
- copy$7(matrix$1, t.__localMatrix);
4275
+ rotateOfLocal(t, origin, angle, transition) {
4276
+ const o = t.__localMatrix;
4277
+ copy$7(matrix$1, o);
4229
4278
  rotateOfOuter$2(matrix$1, origin, angle);
4230
- if (t.origin || t.around) {
4231
- L.setTransform(t, matrix$1);
4232
- }
4233
- else {
4234
- moveByMatrix(t, matrix$1);
4235
- t.rotation = MathHelper.formatRotation(t.rotation + angle);
4236
- }
4279
+ if (t.origin || t.around)
4280
+ L.setTransform(t, matrix$1, false, transition);
4281
+ else
4282
+ t.set({ x: t.x + matrix$1.e - o.e, y: t.y + matrix$1.f - o.f, rotation: MathHelper.formatRotation(t.rotation + angle) }, transition);
4237
4283
  },
4238
- skewOfWorld(t, origin, skewX, skewY, resize) {
4239
- L.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize);
4284
+ skewOfWorld(t, origin, skewX, skewY, resize, transition) {
4285
+ L.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize, transition);
4240
4286
  },
4241
- skewOfLocal(t, origin, skewX, skewY = 0, resize) {
4287
+ skewOfLocal(t, origin, skewX, skewY = 0, resize, transition) {
4242
4288
  copy$7(matrix$1, t.__localMatrix);
4243
4289
  skewOfOuter(matrix$1, origin, skewX, skewY);
4244
- L.setTransform(t, matrix$1, resize);
4290
+ L.setTransform(t, matrix$1, resize, transition);
4245
4291
  },
4246
- transformWorld(t, transform, resize) {
4292
+ transformWorld(t, transform, resize, transition) {
4247
4293
  copy$7(matrix$1, t.worldTransform);
4248
4294
  multiplyParent$2(matrix$1, transform);
4249
4295
  if (t.parent)
4250
4296
  divideParent(matrix$1, t.parent.worldTransform);
4251
- L.setTransform(t, matrix$1, resize);
4297
+ L.setTransform(t, matrix$1, resize, transition);
4252
4298
  },
4253
- transform(t, transform, resize) {
4299
+ transform(t, transform, resize, transition) {
4254
4300
  copy$7(matrix$1, t.localTransform);
4255
4301
  multiplyParent$2(matrix$1, transform);
4256
- L.setTransform(t, matrix$1, resize);
4302
+ L.setTransform(t, matrix$1, resize, transition);
4257
4303
  },
4258
- setTransform(t, transform, resize) {
4304
+ setTransform(t, transform, resize, transition) {
4259
4305
  const data = t.__, originPoint = data.origin && L.getInnerOrigin(t, data.origin);
4260
4306
  const layout = getLayout(transform, originPoint, data.around && L.getInnerOrigin(t, data.around));
4261
4307
  if (resize) {
@@ -4270,7 +4316,7 @@ const LeafHelper = {
4270
4316
  t.scaleResize(scaleX, scaleY, false);
4271
4317
  }
4272
4318
  else
4273
- t.set(layout);
4319
+ t.set(layout, transition);
4274
4320
  },
4275
4321
  getFlipTransform(t, axis) {
4276
4322
  const m = getMatrixData();
@@ -4307,11 +4353,6 @@ const LeafHelper = {
4307
4353
  };
4308
4354
  const L = LeafHelper;
4309
4355
  const { updateAllMatrix: updateAllMatrix$3, updateMatrix: updateMatrix$2, updateAllWorldOpacity: updateAllWorldOpacity$1, updateAllChange: updateAllChange$1 } = L;
4310
- function moveByMatrix(t, matrix) {
4311
- const { e, f } = t.__localMatrix;
4312
- t.x += matrix.e - e;
4313
- t.y += matrix.f - f;
4314
- }
4315
4356
  function getTempLocal(t, world) {
4316
4357
  t.__layout.update();
4317
4358
  return t.parent ? PointHelper.tempToInnerOf(world, t.parent.__world) : world;
@@ -5217,7 +5258,7 @@ const LeafRender = {
5217
5258
  if (this.__.eraser === 'path')
5218
5259
  return this.__renderEraser(canvas, options);
5219
5260
  const tempCanvas = canvas.getSameCanvas(true, true);
5220
- this.__draw(tempCanvas, options);
5261
+ this.__draw(tempCanvas, options, canvas);
5221
5262
  if (this.__worldFlipped) {
5222
5263
  canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, this.__.__blendMode, true);
5223
5264
  }
@@ -5585,11 +5626,11 @@ let Leaf = class Leaf {
5585
5626
  const layer = this.leafer ? this.leafer.zoomLayer : this;
5586
5627
  return layer.getWorldPoint(page, relative, distance, change);
5587
5628
  }
5588
- setTransform(matrix, resize) {
5589
- setTransform(this, matrix, resize);
5629
+ setTransform(matrix, resize, transition) {
5630
+ setTransform(this, matrix, resize, transition);
5590
5631
  }
5591
- transform(matrix, resize) {
5592
- transform(this, matrix, resize);
5632
+ transform(matrix, resize, transition) {
5633
+ transform(this, matrix, resize, transition);
5593
5634
  }
5594
5635
  move(x, y, transition) {
5595
5636
  moveLocal(this, x, y, transition);
@@ -5597,32 +5638,32 @@ let Leaf = class Leaf {
5597
5638
  moveInner(x, y, transition) {
5598
5639
  moveWorld(this, x, y, true, transition);
5599
5640
  }
5600
- scaleOf(origin, scaleX, scaleY, resize) {
5601
- zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize);
5641
+ scaleOf(origin, scaleX, scaleY, resize, transition) {
5642
+ zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize, transition);
5602
5643
  }
5603
- rotateOf(origin, rotation) {
5604
- rotateOfLocal(this, getLocalOrigin(this, origin), rotation);
5644
+ rotateOf(origin, rotation, transition) {
5645
+ rotateOfLocal(this, getLocalOrigin(this, origin), rotation, transition);
5605
5646
  }
5606
- skewOf(origin, skewX, skewY, resize) {
5607
- skewOfLocal(this, getLocalOrigin(this, origin), skewX, skewY, resize);
5647
+ skewOf(origin, skewX, skewY, resize, transition) {
5648
+ skewOfLocal(this, getLocalOrigin(this, origin), skewX, skewY, resize, transition);
5608
5649
  }
5609
- transformWorld(worldTransform, resize) {
5610
- transformWorld(this, worldTransform, resize);
5650
+ transformWorld(worldTransform, resize, transition) {
5651
+ transformWorld(this, worldTransform, resize, transition);
5611
5652
  }
5612
5653
  moveWorld(x, y, transition) {
5613
5654
  moveWorld(this, x, y, false, transition);
5614
5655
  }
5615
- scaleOfWorld(worldOrigin, scaleX, scaleY, resize) {
5616
- zoomOfWorld(this, worldOrigin, scaleX, scaleY, resize);
5656
+ scaleOfWorld(worldOrigin, scaleX, scaleY, resize, transition) {
5657
+ zoomOfWorld(this, worldOrigin, scaleX, scaleY, resize, transition);
5617
5658
  }
5618
5659
  rotateOfWorld(worldOrigin, rotation) {
5619
5660
  rotateOfWorld(this, worldOrigin, rotation);
5620
5661
  }
5621
- skewOfWorld(worldOrigin, skewX, skewY, resize) {
5622
- skewOfWorld(this, worldOrigin, skewX, skewY, resize);
5662
+ skewOfWorld(worldOrigin, skewX, skewY, resize, transition) {
5663
+ skewOfWorld(this, worldOrigin, skewX, skewY, resize, transition);
5623
5664
  }
5624
- flip(axis) {
5625
- transform(this, getFlipTransform(this, axis));
5665
+ flip(axis, transition) {
5666
+ transform(this, getFlipTransform(this, axis), false, transition);
5626
5667
  }
5627
5668
  scaleResize(scaleX, scaleY = scaleX, _noResize) {
5628
5669
  this.scaleX *= scaleX;
@@ -6010,7 +6051,7 @@ class LeafLevelList {
6010
6051
  }
6011
6052
  }
6012
6053
 
6013
- const version = "1.3.3";
6054
+ const version = "1.4.1";
6014
6055
 
6015
6056
  const debug$5 = Debug.get('LeaferCanvas');
6016
6057
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6130,7 +6171,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6130
6171
  }
6131
6172
  }
6132
6173
  else {
6133
- window.addEventListener('resize', () => {
6174
+ window.addEventListener('resize', this.windowListener = () => {
6134
6175
  const pixelRatio = Platform.devicePixelRatio;
6135
6176
  if (this.pixelRatio !== pixelRatio) {
6136
6177
  const { width, height } = this;
@@ -6159,11 +6200,9 @@ class LeaferCanvas extends LeaferCanvasBase {
6159
6200
  }
6160
6201
  stopAutoLayout() {
6161
6202
  this.autoLayout = false;
6162
- this.resizeListener = null;
6163
- if (this.resizeObserver) {
6203
+ if (this.resizeObserver)
6164
6204
  this.resizeObserver.disconnect();
6165
- this.resizeObserver = null;
6166
- }
6205
+ this.resizeListener = this.resizeObserver = null;
6167
6206
  }
6168
6207
  emitResize(size) {
6169
6208
  const oldSize = {};
@@ -6184,6 +6223,10 @@ class LeaferCanvas extends LeaferCanvasBase {
6184
6223
  destroy() {
6185
6224
  if (this.view) {
6186
6225
  this.stopAutoLayout();
6226
+ if (this.windowListener) {
6227
+ window.removeEventListener('resize', this.windowListener);
6228
+ this.windowListener = null;
6229
+ }
6187
6230
  if (!this.unreal) {
6188
6231
  const view = this.view;
6189
6232
  if (view.parentElement)
@@ -6210,7 +6253,10 @@ function useCanvas(_canvasType, _power) {
6210
6253
  canvas.height = height;
6211
6254
  return canvas;
6212
6255
  },
6213
- canvasToDataURL: (canvas, type, quality) => canvas.toDataURL(mineType(type), quality),
6256
+ canvasToDataURL: (canvas, type, quality) => {
6257
+ const imageType = mineType(type), url = canvas.toDataURL(imageType, quality);
6258
+ return imageType === 'image/bmp' ? url.replace('image/png;', 'image/bmp;') : url;
6259
+ },
6214
6260
  canvasToBolb: (canvas, type, quality) => new Promise((resolve) => canvas.toBlob(resolve, mineType(type), quality)),
6215
6261
  canvasSaveAs: (canvas, filename, quality) => {
6216
6262
  const url = canvas.toDataURL(mineType(fileType(filename)), quality);
@@ -6255,14 +6301,14 @@ function useCanvas(_canvasType, _power) {
6255
6301
  Platform.name = 'web';
6256
6302
  Platform.isMobile = 'ontouchstart' in window;
6257
6303
  Platform.requestRender = function (render) { window.requestAnimationFrame(render); };
6258
- defineKey(Platform, 'devicePixelRatio', { get() { return Math.max(1, devicePixelRatio); } });
6304
+ defineKey(Platform, 'devicePixelRatio', { get() { return devicePixelRatio; } });
6259
6305
  const { userAgent } = navigator;
6260
6306
  if (userAgent.indexOf("Firefox") > -1) {
6261
6307
  Platform.conicGradientRotate90 = true;
6262
6308
  Platform.intWheelDeltaY = true;
6263
6309
  Platform.syncDomFont = true;
6264
6310
  }
6265
- else if (userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") === -1) {
6311
+ else if (userAgent.indexOf("AppleWebKit") > -1) {
6266
6312
  Platform.fullImageShadow = true;
6267
6313
  }
6268
6314
  if (userAgent.indexOf('Windows') > -1) {
@@ -6531,7 +6577,7 @@ class Layouter {
6531
6577
  }
6532
6578
  partLayout() {
6533
6579
  var _a;
6534
- if (!((_a = this.__updatedList) === null || _a === undefined ? undefined : _a.length))
6580
+ if (!((_a = this.__updatedList) === null || _a === void 0 ? void 0 : _a.length))
6535
6581
  return;
6536
6582
  const t = Run.start('PartLayout');
6537
6583
  const { target, __updatedList: updateList } = this;
@@ -6996,9 +7042,10 @@ class Selector {
6996
7042
  this.finder = Creator.finder && Creator.finder();
6997
7043
  }
6998
7044
  getByPoint(hitPoint, hitRadius, options) {
6999
- if (Platform.backgrounder && this.target)
7000
- this.target.updateLayout();
7001
- return this.picker.getByPoint(hitPoint, hitRadius, options);
7045
+ const { target, picker } = this;
7046
+ if (Platform.backgrounder)
7047
+ target && target.updateLayout();
7048
+ return picker.getByPoint(hitPoint, hitRadius, options);
7002
7049
  }
7003
7050
  getBy(condition, branch, one, options) {
7004
7051
  return this.finder ? this.finder.getBy(condition, branch, one, options) : Plugin.need('find');
@@ -7056,9 +7103,7 @@ const TextConvert = {};
7056
7103
  const ColorConvert = {};
7057
7104
  const UnitConvert = {
7058
7105
  number(value, percentRefer) {
7059
- if (typeof value === 'object')
7060
- return value.type === 'percent' ? value.value * percentRefer : value.value;
7061
- return value;
7106
+ return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
7062
7107
  }
7063
7108
  };
7064
7109
  const PathArrow = {};
@@ -7066,16 +7111,15 @@ const Paint = {};
7066
7111
  const PaintImage = {};
7067
7112
  const PaintGradient = {};
7068
7113
  const Effect = {};
7114
+ const Filter = {
7115
+ apply() { Plugin.need('filter'); }
7116
+ };
7069
7117
  const Export = {};
7070
7118
  const State = {
7071
- setStyleName(_leaf, _styleName, _value) { return Plugin.need('state'); },
7072
- set(_leaf, _stateName) { return Plugin.need('state'); }
7073
- };
7074
- const Transition = {
7075
- list: {},
7076
- register(attrName, fn) { Transition.list[attrName] = fn; },
7077
- get(attrName) { return Transition.list[attrName]; }
7119
+ setStyleName() { return Plugin.need('state'); },
7120
+ set() { return Plugin.need('state'); }
7078
7121
  };
7122
+ const Transition = {};
7079
7123
 
7080
7124
  const { parse, objectToCanvasData } = PathConvert;
7081
7125
  const emptyPaint = {};
@@ -7182,24 +7226,13 @@ class UIData extends LeafData {
7182
7226
  }
7183
7227
  }
7184
7228
  setShadow(value) {
7185
- this.__setInput('shadow', value);
7186
- if (value instanceof Array) {
7187
- if (value.some((item) => item.visible === false))
7188
- value = value.filter((item) => item.visible !== false);
7189
- this._shadow = value.length ? value : null;
7190
- }
7191
- else
7192
- this._shadow = value && value.visible !== false ? [value] : null;
7229
+ setArray(this, 'shadow', value);
7193
7230
  }
7194
7231
  setInnerShadow(value) {
7195
- this.__setInput('innerShadow', value);
7196
- if (value instanceof Array) {
7197
- if (value.some((item) => item.visible === false))
7198
- value = value.filter((item) => item.visible !== false);
7199
- this._innerShadow = value.length ? value : null;
7200
- }
7201
- else
7202
- this._innerShadow = value && value.visible !== false ? [value] : null;
7232
+ setArray(this, 'innerShadow', value);
7233
+ }
7234
+ setFilter(value) {
7235
+ setArray(this, 'filter', value);
7203
7236
  }
7204
7237
  __computePaint() {
7205
7238
  const { fill, stroke } = this.__input;
@@ -7210,6 +7243,17 @@ class UIData extends LeafData {
7210
7243
  this.__needComputePaint = false;
7211
7244
  }
7212
7245
  }
7246
+ function setArray(data, key, value) {
7247
+ data.__setInput(key, value);
7248
+ if (value instanceof Array) {
7249
+ if (value.some((item) => item.visible === false))
7250
+ value = value.filter((item) => item.visible !== false);
7251
+ value.length || (value = null);
7252
+ }
7253
+ else
7254
+ value = value && value.visible !== false ? [value] : null;
7255
+ data['_' + key] = value;
7256
+ }
7213
7257
 
7214
7258
  class GroupData extends UIData {
7215
7259
  }
@@ -7332,11 +7376,13 @@ const UIBounds = {
7332
7376
  },
7333
7377
  __updateRenderSpread() {
7334
7378
  let width = 0;
7335
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7379
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7336
7380
  if (shadow)
7337
7381
  shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5));
7338
7382
  if (blur)
7339
7383
  width = Math.max(width, blur);
7384
+ if (filter)
7385
+ width += Filter.getSpread(filter);
7340
7386
  let shapeWidth = width = Math.ceil(width);
7341
7387
  if (innerShadow)
7342
7388
  innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5));
@@ -7351,8 +7397,8 @@ const UIRender = {
7351
7397
  __updateChange() {
7352
7398
  const data = this.__;
7353
7399
  if (data.__useEffect) {
7354
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7355
- data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur);
7400
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7401
+ data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
7356
7402
  }
7357
7403
  data.__checkSingle();
7358
7404
  const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
@@ -7366,7 +7412,7 @@ const UIRender = {
7366
7412
  __drawFast(canvas, options) {
7367
7413
  drawFast(this, canvas, options);
7368
7414
  },
7369
- __draw(canvas, options) {
7415
+ __draw(canvas, options, originCanvas) {
7370
7416
  const data = this.__;
7371
7417
  if (data.__complex) {
7372
7418
  if (data.__needComputePaint)
@@ -7376,7 +7422,7 @@ const UIRender = {
7376
7422
  if (data.__useEffect) {
7377
7423
  const shape = Paint.shape(this, canvas, options);
7378
7424
  this.__nowWorld = this.__getNowWorld(options);
7379
- const { shadow, innerShadow } = data;
7425
+ const { shadow, innerShadow, filter } = data;
7380
7426
  if (shadow)
7381
7427
  Effect.shadow(this, canvas, shape);
7382
7428
  if (fill)
@@ -7387,6 +7433,8 @@ const UIRender = {
7387
7433
  Effect.innerShadow(this, canvas, shape);
7388
7434
  if (stroke)
7389
7435
  data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
7436
+ if (filter)
7437
+ Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
7390
7438
  if (shape.worldCanvas)
7391
7439
  shape.worldCanvas.recycle();
7392
7440
  shape.canvas.recycle();
@@ -7606,199 +7654,202 @@ let UI = UI_1 = class UI extends Leaf {
7606
7654
  };
7607
7655
  __decorate([
7608
7656
  dataProcessor(UIData)
7609
- ], UI.prototype, "__", undefined);
7657
+ ], UI.prototype, "__", void 0);
7610
7658
  __decorate([
7611
7659
  zoomLayerType()
7612
- ], UI.prototype, "zoomLayer", undefined);
7660
+ ], UI.prototype, "zoomLayer", void 0);
7613
7661
  __decorate([
7614
7662
  dataType('')
7615
- ], UI.prototype, "id", undefined);
7663
+ ], UI.prototype, "id", void 0);
7616
7664
  __decorate([
7617
7665
  dataType('')
7618
- ], UI.prototype, "name", undefined);
7666
+ ], UI.prototype, "name", void 0);
7619
7667
  __decorate([
7620
7668
  dataType('')
7621
- ], UI.prototype, "className", undefined);
7669
+ ], UI.prototype, "className", void 0);
7622
7670
  __decorate([
7623
7671
  surfaceType('pass-through')
7624
- ], UI.prototype, "blendMode", undefined);
7672
+ ], UI.prototype, "blendMode", void 0);
7625
7673
  __decorate([
7626
7674
  opacityType(1)
7627
- ], UI.prototype, "opacity", undefined);
7675
+ ], UI.prototype, "opacity", void 0);
7628
7676
  __decorate([
7629
7677
  visibleType(true)
7630
- ], UI.prototype, "visible", undefined);
7678
+ ], UI.prototype, "visible", void 0);
7631
7679
  __decorate([
7632
7680
  surfaceType(false)
7633
- ], UI.prototype, "locked", undefined);
7681
+ ], UI.prototype, "locked", void 0);
7634
7682
  __decorate([
7635
7683
  sortType(0)
7636
- ], UI.prototype, "zIndex", undefined);
7684
+ ], UI.prototype, "zIndex", void 0);
7637
7685
  __decorate([
7638
7686
  maskType(false)
7639
- ], UI.prototype, "mask", undefined);
7687
+ ], UI.prototype, "mask", void 0);
7640
7688
  __decorate([
7641
7689
  eraserType(false)
7642
- ], UI.prototype, "eraser", undefined);
7690
+ ], UI.prototype, "eraser", void 0);
7643
7691
  __decorate([
7644
7692
  positionType(0, true)
7645
- ], UI.prototype, "x", undefined);
7693
+ ], UI.prototype, "x", void 0);
7646
7694
  __decorate([
7647
7695
  positionType(0, true)
7648
- ], UI.prototype, "y", undefined);
7696
+ ], UI.prototype, "y", void 0);
7649
7697
  __decorate([
7650
7698
  boundsType(100, true)
7651
- ], UI.prototype, "width", undefined);
7699
+ ], UI.prototype, "width", void 0);
7652
7700
  __decorate([
7653
7701
  boundsType(100, true)
7654
- ], UI.prototype, "height", undefined);
7702
+ ], UI.prototype, "height", void 0);
7655
7703
  __decorate([
7656
7704
  scaleType(1, true)
7657
- ], UI.prototype, "scaleX", undefined);
7705
+ ], UI.prototype, "scaleX", void 0);
7658
7706
  __decorate([
7659
7707
  scaleType(1, true)
7660
- ], UI.prototype, "scaleY", undefined);
7708
+ ], UI.prototype, "scaleY", void 0);
7661
7709
  __decorate([
7662
7710
  rotationType(0, true)
7663
- ], UI.prototype, "rotation", undefined);
7711
+ ], UI.prototype, "rotation", void 0);
7664
7712
  __decorate([
7665
7713
  rotationType(0, true)
7666
- ], UI.prototype, "skewX", undefined);
7714
+ ], UI.prototype, "skewX", void 0);
7667
7715
  __decorate([
7668
7716
  rotationType(0, true)
7669
- ], UI.prototype, "skewY", undefined);
7717
+ ], UI.prototype, "skewY", void 0);
7670
7718
  __decorate([
7671
7719
  positionType(0, true)
7672
- ], UI.prototype, "offsetX", undefined);
7720
+ ], UI.prototype, "offsetX", void 0);
7673
7721
  __decorate([
7674
7722
  positionType(0, true)
7675
- ], UI.prototype, "offsetY", undefined);
7723
+ ], UI.prototype, "offsetY", void 0);
7676
7724
  __decorate([
7677
7725
  positionType(0, true)
7678
- ], UI.prototype, "scrollX", undefined);
7726
+ ], UI.prototype, "scrollX", void 0);
7679
7727
  __decorate([
7680
7728
  positionType(0, true)
7681
- ], UI.prototype, "scrollY", undefined);
7729
+ ], UI.prototype, "scrollY", void 0);
7682
7730
  __decorate([
7683
7731
  autoLayoutType()
7684
- ], UI.prototype, "origin", undefined);
7732
+ ], UI.prototype, "origin", void 0);
7685
7733
  __decorate([
7686
7734
  autoLayoutType()
7687
- ], UI.prototype, "around", undefined);
7735
+ ], UI.prototype, "around", void 0);
7688
7736
  __decorate([
7689
7737
  dataType(false)
7690
- ], UI.prototype, "lazy", undefined);
7738
+ ], UI.prototype, "lazy", void 0);
7691
7739
  __decorate([
7692
7740
  naturalBoundsType(1)
7693
- ], UI.prototype, "pixelRatio", undefined);
7741
+ ], UI.prototype, "pixelRatio", void 0);
7694
7742
  __decorate([
7695
7743
  pathInputType()
7696
- ], UI.prototype, "path", undefined);
7744
+ ], UI.prototype, "path", void 0);
7697
7745
  __decorate([
7698
7746
  pathType()
7699
- ], UI.prototype, "windingRule", undefined);
7747
+ ], UI.prototype, "windingRule", void 0);
7700
7748
  __decorate([
7701
7749
  pathType(true)
7702
- ], UI.prototype, "closed", undefined);
7750
+ ], UI.prototype, "closed", void 0);
7703
7751
  __decorate([
7704
7752
  boundsType(0)
7705
- ], UI.prototype, "padding", undefined);
7753
+ ], UI.prototype, "padding", void 0);
7706
7754
  __decorate([
7707
7755
  boundsType(false)
7708
- ], UI.prototype, "lockRatio", undefined);
7756
+ ], UI.prototype, "lockRatio", void 0);
7709
7757
  __decorate([
7710
7758
  boundsType()
7711
- ], UI.prototype, "widthRange", undefined);
7759
+ ], UI.prototype, "widthRange", void 0);
7712
7760
  __decorate([
7713
7761
  boundsType()
7714
- ], UI.prototype, "heightRange", undefined);
7762
+ ], UI.prototype, "heightRange", void 0);
7715
7763
  __decorate([
7716
7764
  dataType(false)
7717
- ], UI.prototype, "draggable", undefined);
7765
+ ], UI.prototype, "draggable", void 0);
7718
7766
  __decorate([
7719
7767
  dataType()
7720
- ], UI.prototype, "dragBounds", undefined);
7768
+ ], UI.prototype, "dragBounds", void 0);
7721
7769
  __decorate([
7722
7770
  dataType(false)
7723
- ], UI.prototype, "editable", undefined);
7771
+ ], UI.prototype, "editable", void 0);
7724
7772
  __decorate([
7725
7773
  hitType(true)
7726
- ], UI.prototype, "hittable", undefined);
7774
+ ], UI.prototype, "hittable", void 0);
7727
7775
  __decorate([
7728
7776
  hitType('path')
7729
- ], UI.prototype, "hitFill", undefined);
7777
+ ], UI.prototype, "hitFill", void 0);
7730
7778
  __decorate([
7731
7779
  strokeType('path')
7732
- ], UI.prototype, "hitStroke", undefined);
7780
+ ], UI.prototype, "hitStroke", void 0);
7733
7781
  __decorate([
7734
7782
  hitType(false)
7735
- ], UI.prototype, "hitBox", undefined);
7783
+ ], UI.prototype, "hitBox", void 0);
7736
7784
  __decorate([
7737
7785
  hitType(true)
7738
- ], UI.prototype, "hitChildren", undefined);
7786
+ ], UI.prototype, "hitChildren", void 0);
7739
7787
  __decorate([
7740
7788
  hitType(true)
7741
- ], UI.prototype, "hitSelf", undefined);
7789
+ ], UI.prototype, "hitSelf", void 0);
7742
7790
  __decorate([
7743
7791
  hitType()
7744
- ], UI.prototype, "hitRadius", undefined);
7792
+ ], UI.prototype, "hitRadius", void 0);
7745
7793
  __decorate([
7746
7794
  cursorType('')
7747
- ], UI.prototype, "cursor", undefined);
7795
+ ], UI.prototype, "cursor", void 0);
7748
7796
  __decorate([
7749
7797
  surfaceType()
7750
- ], UI.prototype, "fill", undefined);
7798
+ ], UI.prototype, "fill", void 0);
7751
7799
  __decorate([
7752
7800
  strokeType()
7753
- ], UI.prototype, "stroke", undefined);
7801
+ ], UI.prototype, "stroke", void 0);
7754
7802
  __decorate([
7755
7803
  strokeType('inside')
7756
- ], UI.prototype, "strokeAlign", undefined);
7804
+ ], UI.prototype, "strokeAlign", void 0);
7757
7805
  __decorate([
7758
7806
  strokeType(1)
7759
- ], UI.prototype, "strokeWidth", undefined);
7807
+ ], UI.prototype, "strokeWidth", void 0);
7760
7808
  __decorate([
7761
7809
  strokeType(false)
7762
- ], UI.prototype, "strokeWidthFixed", undefined);
7810
+ ], UI.prototype, "strokeWidthFixed", void 0);
7763
7811
  __decorate([
7764
7812
  strokeType('none')
7765
- ], UI.prototype, "strokeCap", undefined);
7813
+ ], UI.prototype, "strokeCap", void 0);
7766
7814
  __decorate([
7767
7815
  strokeType('miter')
7768
- ], UI.prototype, "strokeJoin", undefined);
7816
+ ], UI.prototype, "strokeJoin", void 0);
7769
7817
  __decorate([
7770
7818
  strokeType()
7771
- ], UI.prototype, "dashPattern", undefined);
7819
+ ], UI.prototype, "dashPattern", void 0);
7772
7820
  __decorate([
7773
7821
  strokeType()
7774
- ], UI.prototype, "dashOffset", undefined);
7822
+ ], UI.prototype, "dashOffset", void 0);
7775
7823
  __decorate([
7776
7824
  strokeType(10)
7777
- ], UI.prototype, "miterLimit", undefined);
7825
+ ], UI.prototype, "miterLimit", void 0);
7778
7826
  __decorate([
7779
7827
  pathType(0)
7780
- ], UI.prototype, "cornerRadius", undefined);
7828
+ ], UI.prototype, "cornerRadius", void 0);
7781
7829
  __decorate([
7782
7830
  pathType()
7783
- ], UI.prototype, "cornerSmoothing", undefined);
7831
+ ], UI.prototype, "cornerSmoothing", void 0);
7832
+ __decorate([
7833
+ effectType()
7834
+ ], UI.prototype, "shadow", void 0);
7784
7835
  __decorate([
7785
7836
  effectType()
7786
- ], UI.prototype, "shadow", undefined);
7837
+ ], UI.prototype, "innerShadow", void 0);
7787
7838
  __decorate([
7788
7839
  effectType()
7789
- ], UI.prototype, "innerShadow", undefined);
7840
+ ], UI.prototype, "blur", void 0);
7790
7841
  __decorate([
7791
7842
  effectType()
7792
- ], UI.prototype, "blur", undefined);
7843
+ ], UI.prototype, "backgroundBlur", void 0);
7793
7844
  __decorate([
7794
7845
  effectType()
7795
- ], UI.prototype, "backgroundBlur", undefined);
7846
+ ], UI.prototype, "grayscale", void 0);
7796
7847
  __decorate([
7797
7848
  effectType()
7798
- ], UI.prototype, "grayscale", undefined);
7849
+ ], UI.prototype, "filter", void 0);
7799
7850
  __decorate([
7800
7851
  dataType({})
7801
- ], UI.prototype, "data", undefined);
7852
+ ], UI.prototype, "data", void 0);
7802
7853
  __decorate([
7803
7854
  rewrite(Leaf.prototype.reset)
7804
7855
  ], UI.prototype, "reset", null);
@@ -7859,7 +7910,7 @@ let Group = class Group extends UI {
7859
7910
  };
7860
7911
  __decorate([
7861
7912
  dataProcessor(GroupData)
7862
- ], Group.prototype, "__", undefined);
7913
+ ], Group.prototype, "__", void 0);
7863
7914
  Group = __decorate([
7864
7915
  useModule(Branch),
7865
7916
  registerUI()
@@ -7872,7 +7923,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7872
7923
  get isApp() { return false; }
7873
7924
  get app() { return this.parent || this; }
7874
7925
  get isLeafer() { return true; }
7875
- get imageReady() { return this.viewReady && ImageManager.isComplete; }
7926
+ get imageReady() { return this.viewReady && Resource.isComplete; }
7876
7927
  get layoutLocked() { return !this.layouter.running; }
7877
7928
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7878
7929
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
@@ -8083,13 +8134,13 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8083
8134
  WaitHelper.run(this.__viewReadyWait);
8084
8135
  }
8085
8136
  __onLayoutEnd() {
8086
- const { grow, growWidth, growHeight } = this.config;
8137
+ const { grow, width: fixedWidth, height: fixedHeight } = this.config;
8087
8138
  if (grow) {
8088
8139
  let { width, height, pixelRatio } = this;
8089
8140
  const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
8090
- if (growWidth !== false)
8141
+ if (!fixedWidth)
8091
8142
  width = Math.max(1, bounds.x + bounds.width);
8092
- if (growHeight !== false)
8143
+ if (!fixedHeight)
8093
8144
  height = Math.max(1, bounds.y + bounds.height);
8094
8145
  this.__doResize({ width, height, pixelRatio });
8095
8146
  }
@@ -8167,7 +8218,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8167
8218
  list.push(item);
8168
8219
  this.requestRender();
8169
8220
  }
8170
- zoom(_zoomType, _padding, _fixedScale) {
8221
+ zoom(_zoomType, _padding, _fixedScale, _transition) {
8171
8222
  return Plugin.need('view');
8172
8223
  }
8173
8224
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8232,10 +8283,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8232
8283
  Leafer.list = new LeafList();
8233
8284
  __decorate([
8234
8285
  dataProcessor(LeaferData)
8235
- ], Leafer.prototype, "__", undefined);
8286
+ ], Leafer.prototype, "__", void 0);
8236
8287
  __decorate([
8237
8288
  boundsType()
8238
- ], Leafer.prototype, "pixelRatio", undefined);
8289
+ ], Leafer.prototype, "pixelRatio", void 0);
8239
8290
  Leafer = Leafer_1 = __decorate([
8240
8291
  registerUI()
8241
8292
  ], Leafer);
@@ -8248,7 +8299,7 @@ let Rect = class Rect extends UI {
8248
8299
  };
8249
8300
  __decorate([
8250
8301
  dataProcessor(RectData)
8251
- ], Rect.prototype, "__", undefined);
8302
+ ], Rect.prototype, "__", void 0);
8252
8303
  Rect = __decorate([
8253
8304
  useModule(RectRender),
8254
8305
  rewriteAble(),
@@ -8339,13 +8390,13 @@ let Box = class Box extends Group {
8339
8390
  };
8340
8391
  __decorate([
8341
8392
  dataProcessor(BoxData)
8342
- ], Box.prototype, "__", undefined);
8393
+ ], Box.prototype, "__", void 0);
8343
8394
  __decorate([
8344
8395
  dataType(false)
8345
- ], Box.prototype, "resizeChildren", undefined);
8396
+ ], Box.prototype, "resizeChildren", void 0);
8346
8397
  __decorate([
8347
8398
  affectRenderBoundsType('show')
8348
- ], Box.prototype, "overflow", undefined);
8399
+ ], Box.prototype, "overflow", void 0);
8349
8400
  __decorate([
8350
8401
  rewrite(rect$1.__updateStrokeSpread)
8351
8402
  ], Box.prototype, "__updateStrokeSpread", null);
@@ -8384,13 +8435,13 @@ let Frame = class Frame extends Box {
8384
8435
  };
8385
8436
  __decorate([
8386
8437
  dataProcessor(FrameData)
8387
- ], Frame.prototype, "__", undefined);
8438
+ ], Frame.prototype, "__", void 0);
8388
8439
  __decorate([
8389
8440
  surfaceType('#FFFFFF')
8390
- ], Frame.prototype, "fill", undefined);
8441
+ ], Frame.prototype, "fill", void 0);
8391
8442
  __decorate([
8392
8443
  affectRenderBoundsType('hide')
8393
- ], Frame.prototype, "overflow", undefined);
8444
+ ], Frame.prototype, "overflow", void 0);
8394
8445
  Frame = __decorate([
8395
8446
  registerUI()
8396
8447
  ], Frame);
@@ -8437,16 +8488,16 @@ let Ellipse = class Ellipse extends UI {
8437
8488
  };
8438
8489
  __decorate([
8439
8490
  dataProcessor(EllipseData)
8440
- ], Ellipse.prototype, "__", undefined);
8491
+ ], Ellipse.prototype, "__", void 0);
8441
8492
  __decorate([
8442
8493
  pathType(0)
8443
- ], Ellipse.prototype, "innerRadius", undefined);
8494
+ ], Ellipse.prototype, "innerRadius", void 0);
8444
8495
  __decorate([
8445
8496
  pathType(0)
8446
- ], Ellipse.prototype, "startAngle", undefined);
8497
+ ], Ellipse.prototype, "startAngle", void 0);
8447
8498
  __decorate([
8448
8499
  pathType(0)
8449
- ], Ellipse.prototype, "endAngle", undefined);
8500
+ ], Ellipse.prototype, "endAngle", void 0);
8450
8501
  Ellipse = __decorate([
8451
8502
  registerUI()
8452
8503
  ], Ellipse);
@@ -8505,22 +8556,22 @@ let Line = class Line extends UI {
8505
8556
  };
8506
8557
  __decorate([
8507
8558
  dataProcessor(LineData)
8508
- ], Line.prototype, "__", undefined);
8559
+ ], Line.prototype, "__", void 0);
8509
8560
  __decorate([
8510
8561
  affectStrokeBoundsType('center')
8511
- ], Line.prototype, "strokeAlign", undefined);
8562
+ ], Line.prototype, "strokeAlign", void 0);
8512
8563
  __decorate([
8513
8564
  boundsType(0)
8514
- ], Line.prototype, "height", undefined);
8565
+ ], Line.prototype, "height", void 0);
8515
8566
  __decorate([
8516
8567
  pathType()
8517
- ], Line.prototype, "points", undefined);
8568
+ ], Line.prototype, "points", void 0);
8518
8569
  __decorate([
8519
8570
  pathType(0)
8520
- ], Line.prototype, "curve", undefined);
8571
+ ], Line.prototype, "curve", void 0);
8521
8572
  __decorate([
8522
8573
  pathType(false)
8523
- ], Line.prototype, "closed", undefined);
8574
+ ], Line.prototype, "closed", void 0);
8524
8575
  Line = __decorate([
8525
8576
  registerUI()
8526
8577
  ], Line);
@@ -8553,16 +8604,16 @@ let Polygon = class Polygon extends UI {
8553
8604
  };
8554
8605
  __decorate([
8555
8606
  dataProcessor(PolygonData)
8556
- ], Polygon.prototype, "__", undefined);
8607
+ ], Polygon.prototype, "__", void 0);
8557
8608
  __decorate([
8558
8609
  pathType(3)
8559
- ], Polygon.prototype, "sides", undefined);
8610
+ ], Polygon.prototype, "sides", void 0);
8560
8611
  __decorate([
8561
8612
  pathType()
8562
- ], Polygon.prototype, "points", undefined);
8613
+ ], Polygon.prototype, "points", void 0);
8563
8614
  __decorate([
8564
8615
  pathType(0)
8565
- ], Polygon.prototype, "curve", undefined);
8616
+ ], Polygon.prototype, "curve", void 0);
8566
8617
  __decorate([
8567
8618
  rewrite(line.__updateRenderPath)
8568
8619
  ], Polygon.prototype, "__updateRenderPath", null);
@@ -8594,13 +8645,13 @@ let Star = class Star extends UI {
8594
8645
  };
8595
8646
  __decorate([
8596
8647
  dataProcessor(StarData)
8597
- ], Star.prototype, "__", undefined);
8648
+ ], Star.prototype, "__", void 0);
8598
8649
  __decorate([
8599
8650
  pathType(5)
8600
- ], Star.prototype, "corners", undefined);
8651
+ ], Star.prototype, "corners", void 0);
8601
8652
  __decorate([
8602
8653
  pathType(0.382)
8603
- ], Star.prototype, "innerRadius", undefined);
8654
+ ], Star.prototype, "innerRadius", void 0);
8604
8655
  Star = __decorate([
8605
8656
  registerUI()
8606
8657
  ], Star);
@@ -8622,10 +8673,10 @@ let Image$1 = class Image extends Rect {
8622
8673
  };
8623
8674
  __decorate([
8624
8675
  dataProcessor(ImageData)
8625
- ], Image$1.prototype, "__", undefined);
8676
+ ], Image$1.prototype, "__", void 0);
8626
8677
  __decorate([
8627
8678
  boundsType('')
8628
- ], Image$1.prototype, "url", undefined);
8679
+ ], Image$1.prototype, "url", void 0);
8629
8680
  Image$1 = __decorate([
8630
8681
  registerUI()
8631
8682
  ], Image$1);
@@ -8688,25 +8739,25 @@ let Canvas = class Canvas extends Rect {
8688
8739
  };
8689
8740
  __decorate([
8690
8741
  dataProcessor(CanvasData)
8691
- ], Canvas.prototype, "__", undefined);
8742
+ ], Canvas.prototype, "__", void 0);
8692
8743
  __decorate([
8693
8744
  resizeType(100)
8694
- ], Canvas.prototype, "width", undefined);
8745
+ ], Canvas.prototype, "width", void 0);
8695
8746
  __decorate([
8696
8747
  resizeType(100)
8697
- ], Canvas.prototype, "height", undefined);
8748
+ ], Canvas.prototype, "height", void 0);
8698
8749
  __decorate([
8699
8750
  resizeType(1)
8700
- ], Canvas.prototype, "pixelRatio", undefined);
8751
+ ], Canvas.prototype, "pixelRatio", void 0);
8701
8752
  __decorate([
8702
8753
  resizeType(true)
8703
- ], Canvas.prototype, "smooth", undefined);
8754
+ ], Canvas.prototype, "smooth", void 0);
8704
8755
  __decorate([
8705
8756
  dataType(false)
8706
- ], Canvas.prototype, "safeResize", undefined);
8757
+ ], Canvas.prototype, "safeResize", void 0);
8707
8758
  __decorate([
8708
8759
  resizeType()
8709
- ], Canvas.prototype, "contextSettings", undefined);
8760
+ ], Canvas.prototype, "contextSettings", void 0);
8710
8761
  Canvas = __decorate([
8711
8762
  registerUI()
8712
8763
  ], Canvas);
@@ -8797,76 +8848,76 @@ let Text = class Text extends UI {
8797
8848
  };
8798
8849
  __decorate([
8799
8850
  dataProcessor(TextData)
8800
- ], Text.prototype, "__", undefined);
8851
+ ], Text.prototype, "__", void 0);
8801
8852
  __decorate([
8802
8853
  boundsType(0)
8803
- ], Text.prototype, "width", undefined);
8854
+ ], Text.prototype, "width", void 0);
8804
8855
  __decorate([
8805
8856
  boundsType(0)
8806
- ], Text.prototype, "height", undefined);
8857
+ ], Text.prototype, "height", void 0);
8807
8858
  __decorate([
8808
8859
  dataType(false)
8809
- ], Text.prototype, "resizeFontSize", undefined);
8860
+ ], Text.prototype, "resizeFontSize", void 0);
8810
8861
  __decorate([
8811
8862
  surfaceType('#000000')
8812
- ], Text.prototype, "fill", undefined);
8863
+ ], Text.prototype, "fill", void 0);
8813
8864
  __decorate([
8814
8865
  affectStrokeBoundsType('outside')
8815
- ], Text.prototype, "strokeAlign", undefined);
8866
+ ], Text.prototype, "strokeAlign", void 0);
8816
8867
  __decorate([
8817
8868
  hitType('all')
8818
- ], Text.prototype, "hitFill", undefined);
8869
+ ], Text.prototype, "hitFill", void 0);
8819
8870
  __decorate([
8820
8871
  boundsType('')
8821
- ], Text.prototype, "text", undefined);
8872
+ ], Text.prototype, "text", void 0);
8822
8873
  __decorate([
8823
8874
  boundsType('caption')
8824
- ], Text.prototype, "fontFamily", undefined);
8875
+ ], Text.prototype, "fontFamily", void 0);
8825
8876
  __decorate([
8826
8877
  boundsType(12)
8827
- ], Text.prototype, "fontSize", undefined);
8878
+ ], Text.prototype, "fontSize", void 0);
8828
8879
  __decorate([
8829
8880
  boundsType('normal')
8830
- ], Text.prototype, "fontWeight", undefined);
8881
+ ], Text.prototype, "fontWeight", void 0);
8831
8882
  __decorate([
8832
8883
  boundsType(false)
8833
- ], Text.prototype, "italic", undefined);
8884
+ ], Text.prototype, "italic", void 0);
8834
8885
  __decorate([
8835
8886
  boundsType('none')
8836
- ], Text.prototype, "textCase", undefined);
8887
+ ], Text.prototype, "textCase", void 0);
8837
8888
  __decorate([
8838
8889
  boundsType('none')
8839
- ], Text.prototype, "textDecoration", undefined);
8890
+ ], Text.prototype, "textDecoration", void 0);
8840
8891
  __decorate([
8841
8892
  boundsType(0)
8842
- ], Text.prototype, "letterSpacing", undefined);
8893
+ ], Text.prototype, "letterSpacing", void 0);
8843
8894
  __decorate([
8844
8895
  boundsType({ type: 'percent', value: 1.5 })
8845
- ], Text.prototype, "lineHeight", undefined);
8896
+ ], Text.prototype, "lineHeight", void 0);
8846
8897
  __decorate([
8847
8898
  boundsType(0)
8848
- ], Text.prototype, "paraIndent", undefined);
8899
+ ], Text.prototype, "paraIndent", void 0);
8849
8900
  __decorate([
8850
8901
  boundsType(0)
8851
- ], Text.prototype, "paraSpacing", undefined);
8902
+ ], Text.prototype, "paraSpacing", void 0);
8852
8903
  __decorate([
8853
8904
  boundsType('x')
8854
- ], Text.prototype, "writingMode", undefined);
8905
+ ], Text.prototype, "writingMode", void 0);
8855
8906
  __decorate([
8856
8907
  boundsType('left')
8857
- ], Text.prototype, "textAlign", undefined);
8908
+ ], Text.prototype, "textAlign", void 0);
8858
8909
  __decorate([
8859
8910
  boundsType('top')
8860
- ], Text.prototype, "verticalAlign", undefined);
8911
+ ], Text.prototype, "verticalAlign", void 0);
8861
8912
  __decorate([
8862
8913
  boundsType(true)
8863
- ], Text.prototype, "autoSizeAlign", undefined);
8914
+ ], Text.prototype, "autoSizeAlign", void 0);
8864
8915
  __decorate([
8865
8916
  boundsType('normal')
8866
- ], Text.prototype, "textWrap", undefined);
8917
+ ], Text.prototype, "textWrap", void 0);
8867
8918
  __decorate([
8868
8919
  boundsType('show')
8869
- ], Text.prototype, "textOverflow", undefined);
8920
+ ], Text.prototype, "textOverflow", void 0);
8870
8921
  Text = __decorate([
8871
8922
  registerUI()
8872
8923
  ], Text);
@@ -8879,10 +8930,10 @@ let Path = class Path extends UI {
8879
8930
  };
8880
8931
  __decorate([
8881
8932
  dataProcessor(PathData)
8882
- ], Path.prototype, "__", undefined);
8933
+ ], Path.prototype, "__", void 0);
8883
8934
  __decorate([
8884
8935
  affectStrokeBoundsType('center')
8885
- ], Path.prototype, "strokeAlign", undefined);
8936
+ ], Path.prototype, "strokeAlign", void 0);
8886
8937
  Path = __decorate([
8887
8938
  registerUI()
8888
8939
  ], Path);
@@ -8921,10 +8972,10 @@ let Pen = class Pen extends Group {
8921
8972
  };
8922
8973
  __decorate([
8923
8974
  dataProcessor(PenData)
8924
- ], Pen.prototype, "__", undefined);
8975
+ ], Pen.prototype, "__", void 0);
8925
8976
  __decorate([
8926
8977
  penPathType()
8927
- ], Pen.prototype, "path", undefined);
8978
+ ], Pen.prototype, "path", void 0);
8928
8979
  Pen = __decorate([
8929
8980
  useModule(PathCreator, ['set', 'path', 'paint']),
8930
8981
  registerUI()
@@ -9160,7 +9211,7 @@ let DragEvent$1 = class DragEvent extends PointerEvent$1 {
9160
9211
  const { draggable, dragBounds } = leaf, move = leaf.getLocalPoint(total, null, true);
9161
9212
  PointHelper.move(move, start.x - leaf.x, start.y - leaf.y);
9162
9213
  if (dragBounds)
9163
- this.getMoveInDragBounds(leaf.__local, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, move, true);
9214
+ this.getMoveInDragBounds(leaf.__localBoxBounds, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, move, true);
9164
9215
  if (draggable === 'x')
9165
9216
  move.y = 0;
9166
9217
  if (draggable === 'y')
@@ -9691,10 +9742,9 @@ class InteractionBase {
9691
9742
  }
9692
9743
  }
9693
9744
  pointerMoveReal(data) {
9694
- const { dragHover, dragDistance } = this.p;
9695
9745
  this.emit(PointerEvent$1.BEFORE_MOVE, data, this.defaultPath);
9696
9746
  if (this.downData) {
9697
- const canDrag = PointHelper.getDistance(this.downData, data) > dragDistance;
9747
+ const canDrag = PointHelper.getDistance(this.downData, data) > this.p.dragDistance;
9698
9748
  if (canDrag) {
9699
9749
  if (this.waitTap)
9700
9750
  this.pointerWaitCancel();
@@ -9706,9 +9756,8 @@ class InteractionBase {
9706
9756
  this.updateHoverData(data);
9707
9757
  this.checkPath(data);
9708
9758
  this.emit(PointerEvent$1.MOVE, data);
9709
- if (!(this.dragging && !dragHover))
9710
- this.pointerHover(data);
9711
- if (this.dragger.dragging) {
9759
+ this.pointerHover(data);
9760
+ if (this.dragging) {
9712
9761
  this.dragger.dragOverOrOut(data);
9713
9762
  this.dragger.dragEnterOrLeave(data);
9714
9763
  }
@@ -9789,7 +9838,8 @@ class InteractionBase {
9789
9838
  this.updateCursor();
9790
9839
  }
9791
9840
  pointerHover(data) {
9792
- if (this.canHover) {
9841
+ if (this.canHover && !(this.dragging && !this.p.dragHover)) {
9842
+ data.path || (data.path = new LeafList());
9793
9843
  this.pointerOverOrOut(data);
9794
9844
  this.pointerEnterOrLeave(data);
9795
9845
  }
@@ -9864,7 +9914,9 @@ class InteractionBase {
9864
9914
  }
9865
9915
  findPath(data, options) {
9866
9916
  const { hitRadius, through } = this.p;
9867
- const { bottomList } = this;
9917
+ const { bottomList, target } = this;
9918
+ if (!Platform.backgrounder && !data.origin)
9919
+ target && target.updateLayout();
9868
9920
  const find = this.selector.getByPoint(data, hitRadius, Object.assign({ bottomList, name: data.type }, (options || { through })));
9869
9921
  if (find.throughPath)
9870
9922
  data.throughPath = find.throughPath;
@@ -10109,9 +10161,9 @@ leaf.__hitWorld = function (point) {
10109
10161
  }
10110
10162
  return this.__hit(inner);
10111
10163
  };
10112
- leaf.__hitFill = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitFill(inner, this.__.windingRule); };
10113
- leaf.__hitStroke = function (inner, strokeWidth) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitStroke(inner, strokeWidth); };
10114
- leaf.__hitPixel = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitPixel(inner, this.__layout.renderBounds, this.__hitCanvas.hitScale); };
10164
+ leaf.__hitFill = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitFill(inner, this.__.windingRule); };
10165
+ leaf.__hitStroke = function (inner, strokeWidth) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitStroke(inner, strokeWidth); };
10166
+ leaf.__hitPixel = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitPixel(inner, this.__layout.renderBounds, this.__hitCanvas.hitScale); };
10115
10167
  leaf.__drawHitPath = function (canvas) { if (canvas)
10116
10168
  this.__drawRenderPath(canvas); };
10117
10169
 
@@ -10199,8 +10251,8 @@ function getSelector(ui) {
10199
10251
  return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()));
10200
10252
  }
10201
10253
  Group.prototype.pick = function (hitPoint, options) {
10202
- this.leafer || this.updateLayout();
10203
10254
  options || (options = emptyData);
10255
+ this.updateLayout();
10204
10256
  return getSelector(this).getByPoint(hitPoint, options.hitRadius || 0, Object.assign(Object.assign({}, options), { target: this }));
10205
10257
  };
10206
10258
 
@@ -10268,6 +10320,7 @@ class Interaction extends InteractionBase {
10268
10320
  'pointerdown': this.onPointerDown,
10269
10321
  'mousedown': this.onMouseDown,
10270
10322
  'touchstart': this.onTouchStart,
10323
+ 'pointerleave': this.onPointerLeave,
10271
10324
  'contextmenu': this.onContextMenu,
10272
10325
  'wheel': this.onWheel,
10273
10326
  'gesturestart': this.onGesturestart,
@@ -10350,11 +10403,15 @@ class Interaction extends InteractionBase {
10350
10403
  this.usePointer || (this.usePointer = true);
10351
10404
  this.pointerDown(PointerEventHelper.convert(e, this.getLocal(e)));
10352
10405
  }
10353
- onPointerMove(e) {
10406
+ onPointerMove(e, isLeave) {
10354
10407
  if (this.config.pointer.touch || this.useMultiTouch || this.preventWindowPointer(e))
10355
10408
  return;
10356
10409
  this.usePointer || (this.usePointer = true);
10357
- this.pointerMove(PointerEventHelper.convert(e, this.getLocal(e, true)));
10410
+ const data = PointerEventHelper.convert(e, this.getLocal(e, true));
10411
+ isLeave ? this.pointerHover(data) : this.pointerMove(data);
10412
+ }
10413
+ onPointerLeave(e) {
10414
+ this.onPointerMove(e, true);
10358
10415
  }
10359
10416
  onPointerUp(e) {
10360
10417
  if (this.downData)
@@ -10888,7 +10945,7 @@ function getPatternData(paint, box, image) {
10888
10945
  box = tempBox.set(box).shrink(paint.padding);
10889
10946
  if (paint.mode === 'strench')
10890
10947
  paint.mode = 'stretch';
10891
- const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
10948
+ const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
10892
10949
  const sameBox = box.width === width && box.height === height;
10893
10950
  const data = { mode };
10894
10951
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -10951,6 +11008,8 @@ function getPatternData(paint, box, image) {
10951
11008
  data.height = height;
10952
11009
  if (opacity)
10953
11010
  data.opacity = opacity;
11011
+ if (filters)
11012
+ data.filters = filters;
10954
11013
  if (repeat)
10955
11014
  data.repeat = typeof repeat === 'string' ? (repeat === 'x' ? 'repeat-x' : 'repeat-y') : 'repeat';
10956
11015
  return data;
@@ -11053,7 +11112,7 @@ function createPattern(ui, paint, pixelRatio) {
11053
11112
  scaleX = abs$1(scaleX);
11054
11113
  scaleY = abs$1(scaleY);
11055
11114
  const { image, data } = paint;
11056
- let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, opacity, transform, repeat } = data;
11115
+ let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
11057
11116
  if (sx) {
11058
11117
  imageMatrix = get$1();
11059
11118
  copy$1(imageMatrix, transform);
@@ -11096,7 +11155,7 @@ function createPattern(ui, paint, pixelRatio) {
11096
11155
  }
11097
11156
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
11098
11157
  }
11099
- const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, opacity);
11158
+ const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, data.opacity, data.filters);
11100
11159
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || 'no-repeat'), imageMatrix, paint);
11101
11160
  paint.style = pattern;
11102
11161
  paint.patternId = id;
@@ -11140,7 +11199,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
11140
11199
  canvas.opacity *= data.opacity;
11141
11200
  if (data.transform)
11142
11201
  canvas.transform(data.transform);
11143
- canvas.drawImage(paint.image.view, 0, 0, data.width, data.height);
11202
+ canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
11144
11203
  canvas.restore();
11145
11204
  return true;
11146
11205
  }
@@ -11150,7 +11209,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
11150
11209
  }
11151
11210
  else {
11152
11211
  if (!paint.patternTask) {
11153
- paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, undefined, undefined, function* () {
11212
+ paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
11154
11213
  paint.patternTask = null;
11155
11214
  if (canvas.bounds.hit(ui.__nowWorld))
11156
11215
  createPattern(ui, paint, pixelRatio);
@@ -11740,11 +11799,11 @@ const TextMode = 2;
11740
11799
  function layoutChar(drawData, style, width, _height) {
11741
11800
  const { rows } = drawData;
11742
11801
  const { textAlign, paraIndent, letterSpacing } = style;
11743
- let charX, addWordWidth, indentWidth, mode, wordChar;
11802
+ let charX, addWordWidth, indentWidth, mode, wordChar, wordsLength;
11744
11803
  rows.forEach(row => {
11745
11804
  if (row.words) {
11746
- indentWidth = paraIndent && row.paraStart ? paraIndent : 0;
11747
- addWordWidth = (width && (textAlign === 'justify' || textAlign === 'both') && row.words.length > 1) ? (width - row.width - indentWidth) / (row.words.length - 1) : 0;
11805
+ indentWidth = paraIndent && row.paraStart ? paraIndent : 0, wordsLength = row.words.length;
11806
+ addWordWidth = (width && (textAlign === 'justify' || textAlign === 'both') && wordsLength > 1) ? (width - row.width - indentWidth) / (wordsLength - 1) : 0;
11748
11807
  mode = (letterSpacing || row.isOverflow) ? CharMode : (addWordWidth > 0.01 ? WordMode : TextMode);
11749
11808
  if (row.isOverflow && !letterSpacing)
11750
11809
  row.textMode = true;
@@ -11756,7 +11815,7 @@ function layoutChar(drawData, style, width, _height) {
11756
11815
  row.x += indentWidth;
11757
11816
  charX = row.x;
11758
11817
  row.data = [];
11759
- row.words.forEach(word => {
11818
+ row.words.forEach((word, index) => {
11760
11819
  if (mode === WordMode) {
11761
11820
  wordChar = { char: '', x: charX };
11762
11821
  charX = toWordChar(word.data, charX, wordChar);
@@ -11766,7 +11825,7 @@ function layoutChar(drawData, style, width, _height) {
11766
11825
  else {
11767
11826
  charX = toChar(word.data, charX, row.data, row.isOverflow);
11768
11827
  }
11769
- if (addWordWidth && (!row.paraEnd || textAlign === 'both')) {
11828
+ if (addWordWidth && (!row.paraEnd || textAlign === 'both') && (index !== wordsLength - 1)) {
11770
11829
  charX += addWordWidth;
11771
11830
  row.width += addWordWidth;
11772
11831
  }
@@ -12022,4 +12081,5 @@ Object.assign(Creator, {
12022
12081
  });
12023
12082
  useCanvas();
12024
12083
 
12025
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
12084
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
12085
+ //# sourceMappingURL=web.module.js.map