leafer-ui 1.4.0 → 1.4.2

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/dist/web.js CHANGED
@@ -1377,7 +1377,7 @@ var LeaferUI = (function (exports) {
1377
1377
  }
1378
1378
  const D$4 = Debug;
1379
1379
 
1380
- const debug$f = Debug.get('RunTime');
1380
+ const debug$g = Debug.get('RunTime');
1381
1381
  const Run = {
1382
1382
  currentId: 0,
1383
1383
  currentName: '',
@@ -1386,24 +1386,24 @@ var LeaferUI = (function (exports) {
1386
1386
  nameToIdMap: {},
1387
1387
  start(name, microsecond) {
1388
1388
  const id = IncrementId.create(IncrementId.RUNTIME);
1389
- R.currentId = R.idMap[id] = microsecond ? performance.now() : Date.now();
1390
- R.currentName = R.nameMap[id] = name;
1391
- R.nameToIdMap[name] = id;
1389
+ R$1.currentId = R$1.idMap[id] = microsecond ? performance.now() : Date.now();
1390
+ R$1.currentName = R$1.nameMap[id] = name;
1391
+ R$1.nameToIdMap[name] = id;
1392
1392
  return id;
1393
1393
  },
1394
1394
  end(id, microsecond) {
1395
- const time = R.idMap[id], name = R.nameMap[id];
1395
+ const time = R$1.idMap[id], name = R$1.nameMap[id];
1396
1396
  const duration = microsecond ? (performance.now() - time) / 1000 : Date.now() - time;
1397
- R.idMap[id] = R.nameMap[id] = R.nameToIdMap[name] = undefined;
1398
- debug$f.log(name, duration, 'ms');
1397
+ R$1.idMap[id] = R$1.nameMap[id] = R$1.nameToIdMap[name] = undefined;
1398
+ debug$g.log(name, duration, 'ms');
1399
1399
  },
1400
1400
  endOfName(name, microsecond) {
1401
- const id = R.nameToIdMap[name];
1401
+ const id = R$1.nameToIdMap[name];
1402
1402
  if (id !== undefined)
1403
- R.end(id, microsecond);
1403
+ R$1.end(id, microsecond);
1404
1404
  }
1405
1405
  };
1406
- const R = Run;
1406
+ const R$1 = Run;
1407
1407
 
1408
1408
  const check = [];
1409
1409
  const Plugin = {
@@ -1424,18 +1424,18 @@ var LeaferUI = (function (exports) {
1424
1424
  };
1425
1425
  setTimeout(() => check.forEach(name => Plugin.has(name, true)));
1426
1426
 
1427
- const debug$e = Debug.get('UICreator');
1427
+ const debug$f = Debug.get('UICreator');
1428
1428
  const UICreator = {
1429
1429
  list: {},
1430
1430
  register(UI) {
1431
1431
  const { __tag: tag } = UI.prototype;
1432
1432
  if (list$1[tag])
1433
- debug$e.repeat(tag);
1433
+ debug$f.repeat(tag);
1434
1434
  list$1[tag] = UI;
1435
1435
  },
1436
1436
  get(tag, data, x, y, width, height) {
1437
1437
  if (!list$1[tag])
1438
- debug$e.error('not register ' + tag);
1438
+ debug$f.error('not register ' + tag);
1439
1439
  const ui = new list$1[tag](data);
1440
1440
  if (x !== undefined) {
1441
1441
  ui.x = x;
@@ -1451,7 +1451,7 @@ var LeaferUI = (function (exports) {
1451
1451
  };
1452
1452
  const { list: list$1 } = UICreator;
1453
1453
 
1454
- const debug$d = Debug.get('EventCreator');
1454
+ const debug$e = Debug.get('EventCreator');
1455
1455
  const EventCreator = {
1456
1456
  nameList: {},
1457
1457
  register(Event) {
@@ -1459,7 +1459,7 @@ var LeaferUI = (function (exports) {
1459
1459
  Object.keys(Event).forEach(key => {
1460
1460
  name = Event[key];
1461
1461
  if (typeof name === 'string')
1462
- nameList[name] && debug$d.repeat(name), nameList[name] = Event;
1462
+ nameList[name] && debug$e.repeat(name), nameList[name] = Event;
1463
1463
  });
1464
1464
  },
1465
1465
  changeName(oldName, newName) {
@@ -1536,10 +1536,10 @@ var LeaferUI = (function (exports) {
1536
1536
  Object.keys(merge).forEach(key => {
1537
1537
  var _a, _b;
1538
1538
  value = merge[key];
1539
- if ((value === null || value === undefined ? undefined : value.constructor) === Object && ((_a = t[key]) === null || _a === undefined ? undefined : _a.constructor) === Object)
1539
+ if ((value === null || value === void 0 ? void 0 : value.constructor) === Object && ((_a = t[key]) === null || _a === void 0 ? void 0 : _a.constructor) === Object)
1540
1540
  return assign(t[key], merge[key], exclude && exclude[key]);
1541
1541
  if (exclude && (key in exclude)) {
1542
- if (((_b = exclude[key]) === null || _b === undefined ? undefined : _b.constructor) === Object)
1542
+ if (((_b = exclude[key]) === null || _b === void 0 ? void 0 : _b.constructor) === Object)
1543
1543
  assign(t[key] = {}, merge[key], exclude[key]);
1544
1544
  return;
1545
1545
  }
@@ -1663,7 +1663,7 @@ var LeaferUI = (function (exports) {
1663
1663
  const t = this;
1664
1664
  if (t.blendMode === 'pass-through') {
1665
1665
  const leaf = this.__leaf;
1666
- if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser) {
1666
+ if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser || t.filter) {
1667
1667
  t.__single = true;
1668
1668
  }
1669
1669
  else if (t.__single) {
@@ -1776,7 +1776,7 @@ var LeaferUI = (function (exports) {
1776
1776
  }
1777
1777
  setTransform(_a, _b, _c, _d, _e, _f) { }
1778
1778
  resetTransform() { }
1779
- getTransform() { return undefined; }
1779
+ getTransform() { return void 0; }
1780
1780
  save() { }
1781
1781
  restore() { }
1782
1782
  transform(a, b, c, d, e, f) {
@@ -1833,12 +1833,12 @@ var LeaferUI = (function (exports) {
1833
1833
  ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) { }
1834
1834
  rect(_x, _y, _width, _height) { }
1835
1835
  roundRect(_x, _y, _width, _height, _radius) { }
1836
- createConicGradient(_startAngle, _x, _y) { return undefined; }
1837
- createLinearGradient(_x0, _y0, _x1, _y1) { return undefined; }
1838
- createPattern(_image, _repetition) { return undefined; }
1839
- createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return undefined; }
1836
+ createConicGradient(_startAngle, _x, _y) { return void 0; }
1837
+ createLinearGradient(_x0, _y0, _x1, _y1) { return void 0; }
1838
+ createPattern(_image, _repetition) { return void 0; }
1839
+ createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return void 0; }
1840
1840
  fillText(_text, _x, _y, _maxWidth) { }
1841
- measureText(_text) { return undefined; }
1841
+ measureText(_text) { return void 0; }
1842
1842
  strokeText(_text, _x, _y, _maxWidth) { }
1843
1843
  destroy() {
1844
1844
  this.context = null;
@@ -1846,79 +1846,79 @@ var LeaferUI = (function (exports) {
1846
1846
  }
1847
1847
  __decorate([
1848
1848
  contextAttr('imageSmoothingEnabled')
1849
- ], Canvas.prototype, "smooth", undefined);
1849
+ ], Canvas.prototype, "smooth", void 0);
1850
1850
  __decorate([
1851
1851
  contextAttr('imageSmoothingQuality')
1852
- ], Canvas.prototype, "smoothLevel", undefined);
1852
+ ], Canvas.prototype, "smoothLevel", void 0);
1853
1853
  __decorate([
1854
1854
  contextAttr('globalAlpha')
1855
- ], Canvas.prototype, "opacity", undefined);
1855
+ ], Canvas.prototype, "opacity", void 0);
1856
1856
  __decorate([
1857
1857
  contextAttr()
1858
- ], Canvas.prototype, "fillStyle", undefined);
1858
+ ], Canvas.prototype, "fillStyle", void 0);
1859
1859
  __decorate([
1860
1860
  contextAttr()
1861
- ], Canvas.prototype, "strokeStyle", undefined);
1861
+ ], Canvas.prototype, "strokeStyle", void 0);
1862
1862
  __decorate([
1863
1863
  contextAttr('lineWidth')
1864
- ], Canvas.prototype, "strokeWidth", undefined);
1864
+ ], Canvas.prototype, "strokeWidth", void 0);
1865
1865
  __decorate([
1866
1866
  contextAttr('lineCap')
1867
- ], Canvas.prototype, "strokeCap", undefined);
1867
+ ], Canvas.prototype, "strokeCap", void 0);
1868
1868
  __decorate([
1869
1869
  contextAttr('lineJoin')
1870
- ], Canvas.prototype, "strokeJoin", undefined);
1870
+ ], Canvas.prototype, "strokeJoin", void 0);
1871
1871
  __decorate([
1872
1872
  contextAttr('lineDashOffset')
1873
- ], Canvas.prototype, "dashOffset", undefined);
1873
+ ], Canvas.prototype, "dashOffset", void 0);
1874
1874
  __decorate([
1875
1875
  contextAttr()
1876
- ], Canvas.prototype, "miterLimit", undefined);
1876
+ ], Canvas.prototype, "miterLimit", void 0);
1877
1877
  __decorate([
1878
1878
  contextAttr()
1879
- ], Canvas.prototype, "shadowBlur", undefined);
1879
+ ], Canvas.prototype, "shadowBlur", void 0);
1880
1880
  __decorate([
1881
1881
  contextAttr()
1882
- ], Canvas.prototype, "shadowColor", undefined);
1882
+ ], Canvas.prototype, "shadowColor", void 0);
1883
1883
  __decorate([
1884
1884
  contextAttr()
1885
- ], Canvas.prototype, "shadowOffsetX", undefined);
1885
+ ], Canvas.prototype, "shadowOffsetX", void 0);
1886
1886
  __decorate([
1887
1887
  contextAttr()
1888
- ], Canvas.prototype, "shadowOffsetY", undefined);
1888
+ ], Canvas.prototype, "shadowOffsetY", void 0);
1889
1889
  __decorate([
1890
1890
  contextAttr()
1891
- ], Canvas.prototype, "filter", undefined);
1891
+ ], Canvas.prototype, "filter", void 0);
1892
1892
  __decorate([
1893
1893
  contextAttr()
1894
- ], Canvas.prototype, "font", undefined);
1894
+ ], Canvas.prototype, "font", void 0);
1895
1895
  __decorate([
1896
1896
  contextAttr()
1897
- ], Canvas.prototype, "fontKerning", undefined);
1897
+ ], Canvas.prototype, "fontKerning", void 0);
1898
1898
  __decorate([
1899
1899
  contextAttr()
1900
- ], Canvas.prototype, "fontStretch", undefined);
1900
+ ], Canvas.prototype, "fontStretch", void 0);
1901
1901
  __decorate([
1902
1902
  contextAttr()
1903
- ], Canvas.prototype, "fontVariantCaps", undefined);
1903
+ ], Canvas.prototype, "fontVariantCaps", void 0);
1904
1904
  __decorate([
1905
1905
  contextAttr()
1906
- ], Canvas.prototype, "textAlign", undefined);
1906
+ ], Canvas.prototype, "textAlign", void 0);
1907
1907
  __decorate([
1908
1908
  contextAttr()
1909
- ], Canvas.prototype, "textBaseline", undefined);
1909
+ ], Canvas.prototype, "textBaseline", void 0);
1910
1910
  __decorate([
1911
1911
  contextAttr()
1912
- ], Canvas.prototype, "textRendering", undefined);
1912
+ ], Canvas.prototype, "textRendering", void 0);
1913
1913
  __decorate([
1914
1914
  contextAttr()
1915
- ], Canvas.prototype, "wordSpacing", undefined);
1915
+ ], Canvas.prototype, "wordSpacing", void 0);
1916
1916
  __decorate([
1917
1917
  contextAttr()
1918
- ], Canvas.prototype, "letterSpacing", undefined);
1918
+ ], Canvas.prototype, "letterSpacing", void 0);
1919
1919
  __decorate([
1920
1920
  contextAttr()
1921
- ], Canvas.prototype, "direction", undefined);
1921
+ ], Canvas.prototype, "direction", void 0);
1922
1922
  __decorate([
1923
1923
  contextMethod()
1924
1924
  ], Canvas.prototype, "setTransform", null);
@@ -2615,7 +2615,7 @@ var LeaferUI = (function (exports) {
2615
2615
  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;
2616
2616
  const { rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2617
2617
  const { ellipticalArc } = EllipseHelper;
2618
- const debug$c = Debug.get('PathConvert');
2618
+ const debug$d = Debug.get('PathConvert');
2619
2619
  const setEndPoint$1 = {};
2620
2620
  const PathConvert = {
2621
2621
  current: { dot: 0 },
@@ -2856,7 +2856,7 @@ var LeaferUI = (function (exports) {
2856
2856
  i += 6;
2857
2857
  break;
2858
2858
  default:
2859
- debug$c.error(`command: ${command} [index:${i}]`, old);
2859
+ debug$d.error(`command: ${command} [index:${i}]`, old);
2860
2860
  return data;
2861
2861
  }
2862
2862
  lastCommand = command;
@@ -2965,12 +2965,10 @@ var LeaferUI = (function (exports) {
2965
2965
  },
2966
2966
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
2967
2967
  if (lastX !== undefined) {
2968
- const maxRadius = tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2) * (getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2) / 2);
2969
- data.push(U$2, x1, y1, x2, y2, min(radius, abs$2(maxRadius)));
2970
- }
2971
- else {
2972
- data.push(U$2, x1, y1, x2, y2, radius);
2968
+ const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
2969
+ radius = min(radius, min(d / 2, d / 2 * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
2973
2970
  }
2971
+ data.push(U$2, x1, y1, x2, y2, radius);
2974
2972
  },
2975
2973
  drawEllipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
2976
2974
  BezierHelper.ellipse(null, x, y, radiusX, radiusY, rotation === undefined ? 0 : rotation, startAngle === undefined ? 0 : startAngle, endAngle === undefined ? 360 : endAngle, anticlockwise, null, null, startPoint);
@@ -3081,7 +3079,7 @@ var LeaferUI = (function (exports) {
3081
3079
  }
3082
3080
 
3083
3081
  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;
3084
- const debug$b = Debug.get('PathDrawer');
3082
+ const debug$c = Debug.get('PathDrawer');
3085
3083
  const PathDrawer = {
3086
3084
  drawPathByData(drawer, data) {
3087
3085
  if (!data)
@@ -3144,7 +3142,7 @@ var LeaferUI = (function (exports) {
3144
3142
  i += 6;
3145
3143
  break;
3146
3144
  default:
3147
- debug$b.error(`command: ${command} [index:${i}]`, data);
3145
+ debug$c.error(`command: ${command} [index:${i}]`, data);
3148
3146
  return;
3149
3147
  }
3150
3148
  }
@@ -3154,7 +3152,7 @@ var LeaferUI = (function (exports) {
3154
3152
  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;
3155
3153
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3156
3154
  const { addPointBounds, copy: copy$8, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3157
- const debug$a = Debug.get('PathBounds');
3155
+ const debug$b = Debug.get('PathBounds');
3158
3156
  let radius, radiusX, radiusY;
3159
3157
  const tempPointBounds = {};
3160
3158
  const setPointBounds = {};
@@ -3262,7 +3260,7 @@ var LeaferUI = (function (exports) {
3262
3260
  i += 6;
3263
3261
  break;
3264
3262
  default:
3265
- debug$a.error(`command: ${command} [index:${i}]`, data);
3263
+ debug$b.error(`command: ${command} [index:${i}]`, data);
3266
3264
  return;
3267
3265
  }
3268
3266
  }
@@ -3378,7 +3376,7 @@ var LeaferUI = (function (exports) {
3378
3376
  const F = FileHelper;
3379
3377
  F.opacityTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
3380
3378
 
3381
- const debug$9 = Debug.get('TaskProcessor');
3379
+ const debug$a = Debug.get('TaskProcessor');
3382
3380
  class TaskItem {
3383
3381
  constructor(task) {
3384
3382
  this.parallel = true;
@@ -3387,13 +3385,13 @@ var LeaferUI = (function (exports) {
3387
3385
  this.task = task;
3388
3386
  }
3389
3387
  run() {
3390
- return __awaiter(this, undefined, undefined, function* () {
3388
+ return __awaiter(this, void 0, void 0, function* () {
3391
3389
  try {
3392
3390
  if (this.task && !this.isComplete && this.parent.running)
3393
3391
  yield this.task();
3394
3392
  }
3395
3393
  catch (error) {
3396
- debug$9.error(error);
3394
+ debug$a.error(error);
3397
3395
  }
3398
3396
  });
3399
3397
  }
@@ -3626,18 +3624,58 @@ var LeaferUI = (function (exports) {
3626
3624
  }
3627
3625
  }
3628
3626
 
3629
- const ImageManager = {
3627
+ const debug$9 = Debug.get('Resource');
3628
+ const Resource = {
3629
+ tasker: new TaskProcessor(),
3630
3630
  map: {},
3631
+ get isComplete() { return R.tasker.isComplete; },
3632
+ set(key, value) {
3633
+ if (R.map[key])
3634
+ debug$9.repeat(key);
3635
+ R.map[key] = value;
3636
+ },
3637
+ get(key) {
3638
+ return R.map[key];
3639
+ },
3640
+ remove(key) {
3641
+ const r = R.map[key];
3642
+ if (r) {
3643
+ if (r.destroy)
3644
+ r.destroy();
3645
+ delete R.map[key];
3646
+ }
3647
+ },
3648
+ loadImage(key, format) {
3649
+ return new Promise((resolve, reject) => {
3650
+ const image = this.setImage(key, key, format);
3651
+ image.load(() => resolve(image), (e) => reject(e));
3652
+ });
3653
+ },
3654
+ setImage(key, value, format) {
3655
+ let config;
3656
+ if (typeof value === 'string')
3657
+ config = { url: value };
3658
+ else if (!value.url)
3659
+ config = { url: key, view: value };
3660
+ if (config)
3661
+ format && (config.format = format), value = Creator.image(config);
3662
+ R.set(key, value);
3663
+ return value;
3664
+ },
3665
+ destroy() {
3666
+ R.map = {};
3667
+ }
3668
+ };
3669
+ const R = Resource;
3670
+
3671
+ const ImageManager = {
3672
+ maxRecycled: 100,
3631
3673
  recycledList: [],
3632
- tasker: new TaskProcessor(),
3633
3674
  patternTasker: new TaskProcessor(),
3634
- get isComplete() { return I$1.tasker.isComplete; },
3635
3675
  get(config) {
3636
- let image = I$1.map[config.url];
3637
- if (!image) {
3638
- image = Creator.image(config);
3639
- I$1.map[config.url] = image;
3640
- }
3676
+ let image = Resource.get(config.url);
3677
+ if (!image)
3678
+ Resource.set(config.url, image = Creator.image(config));
3641
3679
  image.use++;
3642
3680
  return image;
3643
3681
  },
@@ -3648,13 +3686,8 @@ var LeaferUI = (function (exports) {
3648
3686
  },
3649
3687
  clearRecycled() {
3650
3688
  const list = I$1.recycledList;
3651
- if (list.length > 100) {
3652
- list.forEach(image => {
3653
- if (!image.use && image.url) {
3654
- delete I$1.map[image.url];
3655
- image.destroy();
3656
- }
3657
- });
3689
+ if (list.length > I$1.maxRecycled) {
3690
+ list.forEach(image => (!image.use && image.url) && Resource.remove(image.url));
3658
3691
  list.length = 0;
3659
3692
  }
3660
3693
  },
@@ -3678,7 +3711,6 @@ var LeaferUI = (function (exports) {
3678
3711
  return false;
3679
3712
  },
3680
3713
  destroy() {
3681
- I$1.map = {};
3682
3714
  I$1.recycledList = [];
3683
3715
  }
3684
3716
  };
@@ -3692,21 +3724,19 @@ var LeaferUI = (function (exports) {
3692
3724
  this.use = 0;
3693
3725
  this.waitComplete = [];
3694
3726
  this.innerId = create$1(IMAGE);
3695
- this.config = config || { url: '' };
3696
- this.isSVG = ImageManager.isFormat('svg', config);
3697
- this.hasOpacityPixel = ImageManager.hasOpacityPixel(config);
3727
+ this.config = config || (config = { url: '' });
3728
+ if (config.view) {
3729
+ const { view } = config;
3730
+ this.setView(view.config ? view.view : view);
3731
+ }
3732
+ ImageManager.isFormat('svg', config) && (this.isSVG = true);
3733
+ ImageManager.hasOpacityPixel(config) && (this.hasOpacityPixel = true);
3698
3734
  }
3699
3735
  load(onSuccess, onError) {
3700
3736
  if (!this.loading) {
3701
3737
  this.loading = true;
3702
- ImageManager.tasker.add(() => __awaiter(this, undefined, undefined, function* () {
3703
- return yield Platform.origin.loadImage(this.url).then((img) => {
3704
- this.ready = true;
3705
- this.width = img.naturalWidth || img.width;
3706
- this.height = img.naturalHeight || img.height;
3707
- this.view = img;
3708
- this.onComplete(true);
3709
- }).catch((e) => {
3738
+ Resource.tasker.add(() => __awaiter(this, void 0, void 0, function* () {
3739
+ return yield Platform.origin.loadImage(this.url).then(img => this.setView(img)).catch((e) => {
3710
3740
  this.error = e;
3711
3741
  this.onComplete(false);
3712
3742
  });
@@ -3724,6 +3754,13 @@ var LeaferUI = (function (exports) {
3724
3754
  }
3725
3755
  l[index] = l[index + 1] = undefined;
3726
3756
  }
3757
+ setView(img) {
3758
+ this.ready = true;
3759
+ this.width = img.naturalWidth || img.width;
3760
+ this.height = img.naturalHeight || img.height;
3761
+ this.view = img;
3762
+ this.onComplete(true);
3763
+ }
3727
3764
  onComplete(isSuccess) {
3728
3765
  let odd;
3729
3766
  this.waitComplete.forEach((item, index) => {
@@ -3742,6 +3779,9 @@ var LeaferUI = (function (exports) {
3742
3779
  this.waitComplete.length = 0;
3743
3780
  this.loading = false;
3744
3781
  }
3782
+ getFull(_filters) {
3783
+ return this.view;
3784
+ }
3745
3785
  getCanvas(width, height, opacity, _filters) {
3746
3786
  width || (width = this.width);
3747
3787
  height || (height = this.height);
@@ -5222,7 +5262,7 @@ var LeaferUI = (function (exports) {
5222
5262
  if (this.__.eraser === 'path')
5223
5263
  return this.__renderEraser(canvas, options);
5224
5264
  const tempCanvas = canvas.getSameCanvas(true, true);
5225
- this.__draw(tempCanvas, options);
5265
+ this.__draw(tempCanvas, options, canvas);
5226
5266
  if (this.__worldFlipped) {
5227
5267
  canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, this.__.__blendMode, true);
5228
5268
  }
@@ -6015,7 +6055,7 @@ var LeaferUI = (function (exports) {
6015
6055
  }
6016
6056
  }
6017
6057
 
6018
- const version = "1.4.0";
6058
+ const version = "1.4.2";
6019
6059
 
6020
6060
  const debug$5 = Debug.get('LeaferCanvas');
6021
6061
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6272,7 +6312,7 @@ var LeaferUI = (function (exports) {
6272
6312
  Platform.intWheelDeltaY = true;
6273
6313
  Platform.syncDomFont = true;
6274
6314
  }
6275
- else if (userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") === -1) {
6315
+ else if (userAgent.indexOf("AppleWebKit") > -1) {
6276
6316
  Platform.fullImageShadow = true;
6277
6317
  }
6278
6318
  if (userAgent.indexOf('Windows') > -1) {
@@ -6541,7 +6581,7 @@ var LeaferUI = (function (exports) {
6541
6581
  }
6542
6582
  partLayout() {
6543
6583
  var _a;
6544
- if (!((_a = this.__updatedList) === null || _a === undefined ? undefined : _a.length))
6584
+ if (!((_a = this.__updatedList) === null || _a === void 0 ? void 0 : _a.length))
6545
6585
  return;
6546
6586
  const t = Run.start('PartLayout');
6547
6587
  const { target, __updatedList: updateList } = this;
@@ -7006,9 +7046,10 @@ var LeaferUI = (function (exports) {
7006
7046
  this.finder = Creator.finder && Creator.finder();
7007
7047
  }
7008
7048
  getByPoint(hitPoint, hitRadius, options) {
7009
- if (Platform.backgrounder && this.target)
7010
- this.target.updateLayout();
7011
- return this.picker.getByPoint(hitPoint, hitRadius, options);
7049
+ const { target, picker } = this;
7050
+ if (Platform.backgrounder)
7051
+ target && target.updateLayout();
7052
+ return picker.getByPoint(hitPoint, hitRadius, options);
7012
7053
  }
7013
7054
  getBy(condition, branch, one, options) {
7014
7055
  return this.finder ? this.finder.getBy(condition, branch, one, options) : Plugin.need('find');
@@ -7066,9 +7107,7 @@ var LeaferUI = (function (exports) {
7066
7107
  const ColorConvert = {};
7067
7108
  const UnitConvert = {
7068
7109
  number(value, percentRefer) {
7069
- if (typeof value === 'object')
7070
- return value.type === 'percent' ? value.value * percentRefer : value.value;
7071
- return value;
7110
+ return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
7072
7111
  }
7073
7112
  };
7074
7113
  const PathArrow = {};
@@ -7076,16 +7115,15 @@ var LeaferUI = (function (exports) {
7076
7115
  const PaintImage = {};
7077
7116
  const PaintGradient = {};
7078
7117
  const Effect = {};
7118
+ const Filter = {
7119
+ apply() { Plugin.need('filter'); }
7120
+ };
7079
7121
  const Export = {};
7080
7122
  const State = {
7081
- setStyleName(_leaf, _styleName, _value) { return Plugin.need('state'); },
7082
- set(_leaf, _stateName) { return Plugin.need('state'); }
7083
- };
7084
- const Transition = {
7085
- list: {},
7086
- register(attrName, fn) { Transition.list[attrName] = fn; },
7087
- get(attrName) { return Transition.list[attrName]; }
7123
+ setStyleName() { return Plugin.need('state'); },
7124
+ set() { return Plugin.need('state'); }
7088
7125
  };
7126
+ const Transition = {};
7089
7127
 
7090
7128
  const { parse, objectToCanvasData } = PathConvert;
7091
7129
  const emptyPaint = {};
@@ -7192,24 +7230,13 @@ var LeaferUI = (function (exports) {
7192
7230
  }
7193
7231
  }
7194
7232
  setShadow(value) {
7195
- this.__setInput('shadow', value);
7196
- if (value instanceof Array) {
7197
- if (value.some((item) => item.visible === false))
7198
- value = value.filter((item) => item.visible !== false);
7199
- this._shadow = value.length ? value : null;
7200
- }
7201
- else
7202
- this._shadow = value && value.visible !== false ? [value] : null;
7233
+ setArray(this, 'shadow', value);
7203
7234
  }
7204
7235
  setInnerShadow(value) {
7205
- this.__setInput('innerShadow', value);
7206
- if (value instanceof Array) {
7207
- if (value.some((item) => item.visible === false))
7208
- value = value.filter((item) => item.visible !== false);
7209
- this._innerShadow = value.length ? value : null;
7210
- }
7211
- else
7212
- this._innerShadow = value && value.visible !== false ? [value] : null;
7236
+ setArray(this, 'innerShadow', value);
7237
+ }
7238
+ setFilter(value) {
7239
+ setArray(this, 'filter', value);
7213
7240
  }
7214
7241
  __computePaint() {
7215
7242
  const { fill, stroke } = this.__input;
@@ -7220,6 +7247,17 @@ var LeaferUI = (function (exports) {
7220
7247
  this.__needComputePaint = false;
7221
7248
  }
7222
7249
  }
7250
+ function setArray(data, key, value) {
7251
+ data.__setInput(key, value);
7252
+ if (value instanceof Array) {
7253
+ if (value.some((item) => item.visible === false))
7254
+ value = value.filter((item) => item.visible !== false);
7255
+ value.length || (value = null);
7256
+ }
7257
+ else
7258
+ value = value && value.visible !== false ? [value] : null;
7259
+ data['_' + key] = value;
7260
+ }
7223
7261
 
7224
7262
  class GroupData extends UIData {
7225
7263
  }
@@ -7342,11 +7380,13 @@ var LeaferUI = (function (exports) {
7342
7380
  },
7343
7381
  __updateRenderSpread() {
7344
7382
  let width = 0;
7345
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7383
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7346
7384
  if (shadow)
7347
7385
  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));
7348
7386
  if (blur)
7349
7387
  width = Math.max(width, blur);
7388
+ if (filter)
7389
+ width += Filter.getSpread(filter);
7350
7390
  let shapeWidth = width = Math.ceil(width);
7351
7391
  if (innerShadow)
7352
7392
  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));
@@ -7361,8 +7401,8 @@ var LeaferUI = (function (exports) {
7361
7401
  __updateChange() {
7362
7402
  const data = this.__;
7363
7403
  if (data.__useEffect) {
7364
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7365
- data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur);
7404
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7405
+ data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
7366
7406
  }
7367
7407
  data.__checkSingle();
7368
7408
  const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
@@ -7376,7 +7416,7 @@ var LeaferUI = (function (exports) {
7376
7416
  __drawFast(canvas, options) {
7377
7417
  drawFast(this, canvas, options);
7378
7418
  },
7379
- __draw(canvas, options) {
7419
+ __draw(canvas, options, originCanvas) {
7380
7420
  const data = this.__;
7381
7421
  if (data.__complex) {
7382
7422
  if (data.__needComputePaint)
@@ -7386,7 +7426,7 @@ var LeaferUI = (function (exports) {
7386
7426
  if (data.__useEffect) {
7387
7427
  const shape = Paint.shape(this, canvas, options);
7388
7428
  this.__nowWorld = this.__getNowWorld(options);
7389
- const { shadow, innerShadow } = data;
7429
+ const { shadow, innerShadow, filter } = data;
7390
7430
  if (shadow)
7391
7431
  Effect.shadow(this, canvas, shape);
7392
7432
  if (fill)
@@ -7397,6 +7437,8 @@ var LeaferUI = (function (exports) {
7397
7437
  Effect.innerShadow(this, canvas, shape);
7398
7438
  if (stroke)
7399
7439
  data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
7440
+ if (filter)
7441
+ Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
7400
7442
  if (shape.worldCanvas)
7401
7443
  shape.worldCanvas.recycle();
7402
7444
  shape.canvas.recycle();
@@ -7616,199 +7658,202 @@ var LeaferUI = (function (exports) {
7616
7658
  };
7617
7659
  __decorate([
7618
7660
  dataProcessor(UIData)
7619
- ], exports.UI.prototype, "__", undefined);
7661
+ ], exports.UI.prototype, "__", void 0);
7620
7662
  __decorate([
7621
7663
  zoomLayerType()
7622
- ], exports.UI.prototype, "zoomLayer", undefined);
7664
+ ], exports.UI.prototype, "zoomLayer", void 0);
7623
7665
  __decorate([
7624
7666
  dataType('')
7625
- ], exports.UI.prototype, "id", undefined);
7667
+ ], exports.UI.prototype, "id", void 0);
7626
7668
  __decorate([
7627
7669
  dataType('')
7628
- ], exports.UI.prototype, "name", undefined);
7670
+ ], exports.UI.prototype, "name", void 0);
7629
7671
  __decorate([
7630
7672
  dataType('')
7631
- ], exports.UI.prototype, "className", undefined);
7673
+ ], exports.UI.prototype, "className", void 0);
7632
7674
  __decorate([
7633
7675
  surfaceType('pass-through')
7634
- ], exports.UI.prototype, "blendMode", undefined);
7676
+ ], exports.UI.prototype, "blendMode", void 0);
7635
7677
  __decorate([
7636
7678
  opacityType(1)
7637
- ], exports.UI.prototype, "opacity", undefined);
7679
+ ], exports.UI.prototype, "opacity", void 0);
7638
7680
  __decorate([
7639
7681
  visibleType(true)
7640
- ], exports.UI.prototype, "visible", undefined);
7682
+ ], exports.UI.prototype, "visible", void 0);
7641
7683
  __decorate([
7642
7684
  surfaceType(false)
7643
- ], exports.UI.prototype, "locked", undefined);
7685
+ ], exports.UI.prototype, "locked", void 0);
7644
7686
  __decorate([
7645
7687
  sortType(0)
7646
- ], exports.UI.prototype, "zIndex", undefined);
7688
+ ], exports.UI.prototype, "zIndex", void 0);
7647
7689
  __decorate([
7648
7690
  maskType(false)
7649
- ], exports.UI.prototype, "mask", undefined);
7691
+ ], exports.UI.prototype, "mask", void 0);
7650
7692
  __decorate([
7651
7693
  eraserType(false)
7652
- ], exports.UI.prototype, "eraser", undefined);
7694
+ ], exports.UI.prototype, "eraser", void 0);
7653
7695
  __decorate([
7654
7696
  positionType(0, true)
7655
- ], exports.UI.prototype, "x", undefined);
7697
+ ], exports.UI.prototype, "x", void 0);
7656
7698
  __decorate([
7657
7699
  positionType(0, true)
7658
- ], exports.UI.prototype, "y", undefined);
7700
+ ], exports.UI.prototype, "y", void 0);
7659
7701
  __decorate([
7660
7702
  boundsType(100, true)
7661
- ], exports.UI.prototype, "width", undefined);
7703
+ ], exports.UI.prototype, "width", void 0);
7662
7704
  __decorate([
7663
7705
  boundsType(100, true)
7664
- ], exports.UI.prototype, "height", undefined);
7706
+ ], exports.UI.prototype, "height", void 0);
7665
7707
  __decorate([
7666
7708
  scaleType(1, true)
7667
- ], exports.UI.prototype, "scaleX", undefined);
7709
+ ], exports.UI.prototype, "scaleX", void 0);
7668
7710
  __decorate([
7669
7711
  scaleType(1, true)
7670
- ], exports.UI.prototype, "scaleY", undefined);
7712
+ ], exports.UI.prototype, "scaleY", void 0);
7671
7713
  __decorate([
7672
7714
  rotationType(0, true)
7673
- ], exports.UI.prototype, "rotation", undefined);
7715
+ ], exports.UI.prototype, "rotation", void 0);
7674
7716
  __decorate([
7675
7717
  rotationType(0, true)
7676
- ], exports.UI.prototype, "skewX", undefined);
7718
+ ], exports.UI.prototype, "skewX", void 0);
7677
7719
  __decorate([
7678
7720
  rotationType(0, true)
7679
- ], exports.UI.prototype, "skewY", undefined);
7721
+ ], exports.UI.prototype, "skewY", void 0);
7680
7722
  __decorate([
7681
7723
  positionType(0, true)
7682
- ], exports.UI.prototype, "offsetX", undefined);
7724
+ ], exports.UI.prototype, "offsetX", void 0);
7683
7725
  __decorate([
7684
7726
  positionType(0, true)
7685
- ], exports.UI.prototype, "offsetY", undefined);
7727
+ ], exports.UI.prototype, "offsetY", void 0);
7686
7728
  __decorate([
7687
7729
  positionType(0, true)
7688
- ], exports.UI.prototype, "scrollX", undefined);
7730
+ ], exports.UI.prototype, "scrollX", void 0);
7689
7731
  __decorate([
7690
7732
  positionType(0, true)
7691
- ], exports.UI.prototype, "scrollY", undefined);
7733
+ ], exports.UI.prototype, "scrollY", void 0);
7692
7734
  __decorate([
7693
7735
  autoLayoutType()
7694
- ], exports.UI.prototype, "origin", undefined);
7736
+ ], exports.UI.prototype, "origin", void 0);
7695
7737
  __decorate([
7696
7738
  autoLayoutType()
7697
- ], exports.UI.prototype, "around", undefined);
7739
+ ], exports.UI.prototype, "around", void 0);
7698
7740
  __decorate([
7699
7741
  dataType(false)
7700
- ], exports.UI.prototype, "lazy", undefined);
7742
+ ], exports.UI.prototype, "lazy", void 0);
7701
7743
  __decorate([
7702
7744
  naturalBoundsType(1)
7703
- ], exports.UI.prototype, "pixelRatio", undefined);
7745
+ ], exports.UI.prototype, "pixelRatio", void 0);
7704
7746
  __decorate([
7705
7747
  pathInputType()
7706
- ], exports.UI.prototype, "path", undefined);
7748
+ ], exports.UI.prototype, "path", void 0);
7707
7749
  __decorate([
7708
7750
  pathType()
7709
- ], exports.UI.prototype, "windingRule", undefined);
7751
+ ], exports.UI.prototype, "windingRule", void 0);
7710
7752
  __decorate([
7711
7753
  pathType(true)
7712
- ], exports.UI.prototype, "closed", undefined);
7754
+ ], exports.UI.prototype, "closed", void 0);
7713
7755
  __decorate([
7714
7756
  boundsType(0)
7715
- ], exports.UI.prototype, "padding", undefined);
7757
+ ], exports.UI.prototype, "padding", void 0);
7716
7758
  __decorate([
7717
7759
  boundsType(false)
7718
- ], exports.UI.prototype, "lockRatio", undefined);
7760
+ ], exports.UI.prototype, "lockRatio", void 0);
7719
7761
  __decorate([
7720
7762
  boundsType()
7721
- ], exports.UI.prototype, "widthRange", undefined);
7763
+ ], exports.UI.prototype, "widthRange", void 0);
7722
7764
  __decorate([
7723
7765
  boundsType()
7724
- ], exports.UI.prototype, "heightRange", undefined);
7766
+ ], exports.UI.prototype, "heightRange", void 0);
7725
7767
  __decorate([
7726
7768
  dataType(false)
7727
- ], exports.UI.prototype, "draggable", undefined);
7769
+ ], exports.UI.prototype, "draggable", void 0);
7728
7770
  __decorate([
7729
7771
  dataType()
7730
- ], exports.UI.prototype, "dragBounds", undefined);
7772
+ ], exports.UI.prototype, "dragBounds", void 0);
7731
7773
  __decorate([
7732
7774
  dataType(false)
7733
- ], exports.UI.prototype, "editable", undefined);
7775
+ ], exports.UI.prototype, "editable", void 0);
7734
7776
  __decorate([
7735
7777
  hitType(true)
7736
- ], exports.UI.prototype, "hittable", undefined);
7778
+ ], exports.UI.prototype, "hittable", void 0);
7737
7779
  __decorate([
7738
7780
  hitType('path')
7739
- ], exports.UI.prototype, "hitFill", undefined);
7781
+ ], exports.UI.prototype, "hitFill", void 0);
7740
7782
  __decorate([
7741
7783
  strokeType('path')
7742
- ], exports.UI.prototype, "hitStroke", undefined);
7784
+ ], exports.UI.prototype, "hitStroke", void 0);
7743
7785
  __decorate([
7744
7786
  hitType(false)
7745
- ], exports.UI.prototype, "hitBox", undefined);
7787
+ ], exports.UI.prototype, "hitBox", void 0);
7746
7788
  __decorate([
7747
7789
  hitType(true)
7748
- ], exports.UI.prototype, "hitChildren", undefined);
7790
+ ], exports.UI.prototype, "hitChildren", void 0);
7749
7791
  __decorate([
7750
7792
  hitType(true)
7751
- ], exports.UI.prototype, "hitSelf", undefined);
7793
+ ], exports.UI.prototype, "hitSelf", void 0);
7752
7794
  __decorate([
7753
7795
  hitType()
7754
- ], exports.UI.prototype, "hitRadius", undefined);
7796
+ ], exports.UI.prototype, "hitRadius", void 0);
7755
7797
  __decorate([
7756
7798
  cursorType('')
7757
- ], exports.UI.prototype, "cursor", undefined);
7799
+ ], exports.UI.prototype, "cursor", void 0);
7758
7800
  __decorate([
7759
7801
  surfaceType()
7760
- ], exports.UI.prototype, "fill", undefined);
7802
+ ], exports.UI.prototype, "fill", void 0);
7761
7803
  __decorate([
7762
7804
  strokeType()
7763
- ], exports.UI.prototype, "stroke", undefined);
7805
+ ], exports.UI.prototype, "stroke", void 0);
7764
7806
  __decorate([
7765
7807
  strokeType('inside')
7766
- ], exports.UI.prototype, "strokeAlign", undefined);
7808
+ ], exports.UI.prototype, "strokeAlign", void 0);
7767
7809
  __decorate([
7768
7810
  strokeType(1)
7769
- ], exports.UI.prototype, "strokeWidth", undefined);
7811
+ ], exports.UI.prototype, "strokeWidth", void 0);
7770
7812
  __decorate([
7771
7813
  strokeType(false)
7772
- ], exports.UI.prototype, "strokeWidthFixed", undefined);
7814
+ ], exports.UI.prototype, "strokeWidthFixed", void 0);
7773
7815
  __decorate([
7774
7816
  strokeType('none')
7775
- ], exports.UI.prototype, "strokeCap", undefined);
7817
+ ], exports.UI.prototype, "strokeCap", void 0);
7776
7818
  __decorate([
7777
7819
  strokeType('miter')
7778
- ], exports.UI.prototype, "strokeJoin", undefined);
7820
+ ], exports.UI.prototype, "strokeJoin", void 0);
7779
7821
  __decorate([
7780
7822
  strokeType()
7781
- ], exports.UI.prototype, "dashPattern", undefined);
7823
+ ], exports.UI.prototype, "dashPattern", void 0);
7782
7824
  __decorate([
7783
7825
  strokeType()
7784
- ], exports.UI.prototype, "dashOffset", undefined);
7826
+ ], exports.UI.prototype, "dashOffset", void 0);
7785
7827
  __decorate([
7786
7828
  strokeType(10)
7787
- ], exports.UI.prototype, "miterLimit", undefined);
7829
+ ], exports.UI.prototype, "miterLimit", void 0);
7788
7830
  __decorate([
7789
7831
  pathType(0)
7790
- ], exports.UI.prototype, "cornerRadius", undefined);
7832
+ ], exports.UI.prototype, "cornerRadius", void 0);
7791
7833
  __decorate([
7792
7834
  pathType()
7793
- ], exports.UI.prototype, "cornerSmoothing", undefined);
7835
+ ], exports.UI.prototype, "cornerSmoothing", void 0);
7836
+ __decorate([
7837
+ effectType()
7838
+ ], exports.UI.prototype, "shadow", void 0);
7794
7839
  __decorate([
7795
7840
  effectType()
7796
- ], exports.UI.prototype, "shadow", undefined);
7841
+ ], exports.UI.prototype, "innerShadow", void 0);
7797
7842
  __decorate([
7798
7843
  effectType()
7799
- ], exports.UI.prototype, "innerShadow", undefined);
7844
+ ], exports.UI.prototype, "blur", void 0);
7800
7845
  __decorate([
7801
7846
  effectType()
7802
- ], exports.UI.prototype, "blur", undefined);
7847
+ ], exports.UI.prototype, "backgroundBlur", void 0);
7803
7848
  __decorate([
7804
7849
  effectType()
7805
- ], exports.UI.prototype, "backgroundBlur", undefined);
7850
+ ], exports.UI.prototype, "grayscale", void 0);
7806
7851
  __decorate([
7807
7852
  effectType()
7808
- ], exports.UI.prototype, "grayscale", undefined);
7853
+ ], exports.UI.prototype, "filter", void 0);
7809
7854
  __decorate([
7810
7855
  dataType({})
7811
- ], exports.UI.prototype, "data", undefined);
7856
+ ], exports.UI.prototype, "data", void 0);
7812
7857
  __decorate([
7813
7858
  rewrite(exports.Leaf.prototype.reset)
7814
7859
  ], exports.UI.prototype, "reset", null);
@@ -7869,7 +7914,7 @@ var LeaferUI = (function (exports) {
7869
7914
  };
7870
7915
  __decorate([
7871
7916
  dataProcessor(GroupData)
7872
- ], exports.Group.prototype, "__", undefined);
7917
+ ], exports.Group.prototype, "__", void 0);
7873
7918
  exports.Group = __decorate([
7874
7919
  useModule(exports.Branch),
7875
7920
  registerUI()
@@ -7882,7 +7927,7 @@ var LeaferUI = (function (exports) {
7882
7927
  get isApp() { return false; }
7883
7928
  get app() { return this.parent || this; }
7884
7929
  get isLeafer() { return true; }
7885
- get imageReady() { return this.viewReady && ImageManager.isComplete; }
7930
+ get imageReady() { return this.viewReady && Resource.isComplete; }
7886
7931
  get layoutLocked() { return !this.layouter.running; }
7887
7932
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7888
7933
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
@@ -8093,13 +8138,13 @@ var LeaferUI = (function (exports) {
8093
8138
  WaitHelper.run(this.__viewReadyWait);
8094
8139
  }
8095
8140
  __onLayoutEnd() {
8096
- const { grow, growWidth, growHeight } = this.config;
8141
+ const { grow, width: fixedWidth, height: fixedHeight } = this.config;
8097
8142
  if (grow) {
8098
8143
  let { width, height, pixelRatio } = this;
8099
8144
  const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
8100
- if (growWidth !== false)
8145
+ if (!fixedWidth)
8101
8146
  width = Math.max(1, bounds.x + bounds.width);
8102
- if (growHeight !== false)
8147
+ if (!fixedHeight)
8103
8148
  height = Math.max(1, bounds.y + bounds.height);
8104
8149
  this.__doResize({ width, height, pixelRatio });
8105
8150
  }
@@ -8177,7 +8222,7 @@ var LeaferUI = (function (exports) {
8177
8222
  list.push(item);
8178
8223
  this.requestRender();
8179
8224
  }
8180
- zoom(_zoomType, _padding, _fixedScale) {
8225
+ zoom(_zoomType, _padding, _fixedScale, _transition) {
8181
8226
  return Plugin.need('view');
8182
8227
  }
8183
8228
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8242,10 +8287,10 @@ var LeaferUI = (function (exports) {
8242
8287
  exports.Leafer.list = new LeafList();
8243
8288
  __decorate([
8244
8289
  dataProcessor(LeaferData)
8245
- ], exports.Leafer.prototype, "__", undefined);
8290
+ ], exports.Leafer.prototype, "__", void 0);
8246
8291
  __decorate([
8247
8292
  boundsType()
8248
- ], exports.Leafer.prototype, "pixelRatio", undefined);
8293
+ ], exports.Leafer.prototype, "pixelRatio", void 0);
8249
8294
  exports.Leafer = Leafer_1 = __decorate([
8250
8295
  registerUI()
8251
8296
  ], exports.Leafer);
@@ -8258,7 +8303,7 @@ var LeaferUI = (function (exports) {
8258
8303
  };
8259
8304
  __decorate([
8260
8305
  dataProcessor(RectData)
8261
- ], exports.Rect.prototype, "__", undefined);
8306
+ ], exports.Rect.prototype, "__", void 0);
8262
8307
  exports.Rect = __decorate([
8263
8308
  useModule(RectRender),
8264
8309
  rewriteAble(),
@@ -8349,13 +8394,13 @@ var LeaferUI = (function (exports) {
8349
8394
  };
8350
8395
  __decorate([
8351
8396
  dataProcessor(BoxData)
8352
- ], exports.Box.prototype, "__", undefined);
8397
+ ], exports.Box.prototype, "__", void 0);
8353
8398
  __decorate([
8354
8399
  dataType(false)
8355
- ], exports.Box.prototype, "resizeChildren", undefined);
8400
+ ], exports.Box.prototype, "resizeChildren", void 0);
8356
8401
  __decorate([
8357
8402
  affectRenderBoundsType('show')
8358
- ], exports.Box.prototype, "overflow", undefined);
8403
+ ], exports.Box.prototype, "overflow", void 0);
8359
8404
  __decorate([
8360
8405
  rewrite(rect$1.__updateStrokeSpread)
8361
8406
  ], exports.Box.prototype, "__updateStrokeSpread", null);
@@ -8394,13 +8439,13 @@ var LeaferUI = (function (exports) {
8394
8439
  };
8395
8440
  __decorate([
8396
8441
  dataProcessor(FrameData)
8397
- ], exports.Frame.prototype, "__", undefined);
8442
+ ], exports.Frame.prototype, "__", void 0);
8398
8443
  __decorate([
8399
8444
  surfaceType('#FFFFFF')
8400
- ], exports.Frame.prototype, "fill", undefined);
8445
+ ], exports.Frame.prototype, "fill", void 0);
8401
8446
  __decorate([
8402
8447
  affectRenderBoundsType('hide')
8403
- ], exports.Frame.prototype, "overflow", undefined);
8448
+ ], exports.Frame.prototype, "overflow", void 0);
8404
8449
  exports.Frame = __decorate([
8405
8450
  registerUI()
8406
8451
  ], exports.Frame);
@@ -8447,16 +8492,16 @@ var LeaferUI = (function (exports) {
8447
8492
  };
8448
8493
  __decorate([
8449
8494
  dataProcessor(EllipseData)
8450
- ], exports.Ellipse.prototype, "__", undefined);
8495
+ ], exports.Ellipse.prototype, "__", void 0);
8451
8496
  __decorate([
8452
8497
  pathType(0)
8453
- ], exports.Ellipse.prototype, "innerRadius", undefined);
8498
+ ], exports.Ellipse.prototype, "innerRadius", void 0);
8454
8499
  __decorate([
8455
8500
  pathType(0)
8456
- ], exports.Ellipse.prototype, "startAngle", undefined);
8501
+ ], exports.Ellipse.prototype, "startAngle", void 0);
8457
8502
  __decorate([
8458
8503
  pathType(0)
8459
- ], exports.Ellipse.prototype, "endAngle", undefined);
8504
+ ], exports.Ellipse.prototype, "endAngle", void 0);
8460
8505
  exports.Ellipse = __decorate([
8461
8506
  registerUI()
8462
8507
  ], exports.Ellipse);
@@ -8515,22 +8560,22 @@ var LeaferUI = (function (exports) {
8515
8560
  };
8516
8561
  __decorate([
8517
8562
  dataProcessor(LineData)
8518
- ], exports.Line.prototype, "__", undefined);
8563
+ ], exports.Line.prototype, "__", void 0);
8519
8564
  __decorate([
8520
8565
  affectStrokeBoundsType('center')
8521
- ], exports.Line.prototype, "strokeAlign", undefined);
8566
+ ], exports.Line.prototype, "strokeAlign", void 0);
8522
8567
  __decorate([
8523
8568
  boundsType(0)
8524
- ], exports.Line.prototype, "height", undefined);
8569
+ ], exports.Line.prototype, "height", void 0);
8525
8570
  __decorate([
8526
8571
  pathType()
8527
- ], exports.Line.prototype, "points", undefined);
8572
+ ], exports.Line.prototype, "points", void 0);
8528
8573
  __decorate([
8529
8574
  pathType(0)
8530
- ], exports.Line.prototype, "curve", undefined);
8575
+ ], exports.Line.prototype, "curve", void 0);
8531
8576
  __decorate([
8532
8577
  pathType(false)
8533
- ], exports.Line.prototype, "closed", undefined);
8578
+ ], exports.Line.prototype, "closed", void 0);
8534
8579
  exports.Line = __decorate([
8535
8580
  registerUI()
8536
8581
  ], exports.Line);
@@ -8563,16 +8608,16 @@ var LeaferUI = (function (exports) {
8563
8608
  };
8564
8609
  __decorate([
8565
8610
  dataProcessor(PolygonData)
8566
- ], exports.Polygon.prototype, "__", undefined);
8611
+ ], exports.Polygon.prototype, "__", void 0);
8567
8612
  __decorate([
8568
8613
  pathType(3)
8569
- ], exports.Polygon.prototype, "sides", undefined);
8614
+ ], exports.Polygon.prototype, "sides", void 0);
8570
8615
  __decorate([
8571
8616
  pathType()
8572
- ], exports.Polygon.prototype, "points", undefined);
8617
+ ], exports.Polygon.prototype, "points", void 0);
8573
8618
  __decorate([
8574
8619
  pathType(0)
8575
- ], exports.Polygon.prototype, "curve", undefined);
8620
+ ], exports.Polygon.prototype, "curve", void 0);
8576
8621
  __decorate([
8577
8622
  rewrite(line.__updateRenderPath)
8578
8623
  ], exports.Polygon.prototype, "__updateRenderPath", null);
@@ -8604,13 +8649,13 @@ var LeaferUI = (function (exports) {
8604
8649
  };
8605
8650
  __decorate([
8606
8651
  dataProcessor(StarData)
8607
- ], exports.Star.prototype, "__", undefined);
8652
+ ], exports.Star.prototype, "__", void 0);
8608
8653
  __decorate([
8609
8654
  pathType(5)
8610
- ], exports.Star.prototype, "corners", undefined);
8655
+ ], exports.Star.prototype, "corners", void 0);
8611
8656
  __decorate([
8612
8657
  pathType(0.382)
8613
- ], exports.Star.prototype, "innerRadius", undefined);
8658
+ ], exports.Star.prototype, "innerRadius", void 0);
8614
8659
  exports.Star = __decorate([
8615
8660
  registerUI()
8616
8661
  ], exports.Star);
@@ -8632,10 +8677,10 @@ var LeaferUI = (function (exports) {
8632
8677
  };
8633
8678
  __decorate([
8634
8679
  dataProcessor(ImageData)
8635
- ], exports.Image.prototype, "__", undefined);
8680
+ ], exports.Image.prototype, "__", void 0);
8636
8681
  __decorate([
8637
8682
  boundsType('')
8638
- ], exports.Image.prototype, "url", undefined);
8683
+ ], exports.Image.prototype, "url", void 0);
8639
8684
  exports.Image = __decorate([
8640
8685
  registerUI()
8641
8686
  ], exports.Image);
@@ -8698,25 +8743,25 @@ var LeaferUI = (function (exports) {
8698
8743
  };
8699
8744
  __decorate([
8700
8745
  dataProcessor(CanvasData)
8701
- ], exports.Canvas.prototype, "__", undefined);
8746
+ ], exports.Canvas.prototype, "__", void 0);
8702
8747
  __decorate([
8703
8748
  resizeType(100)
8704
- ], exports.Canvas.prototype, "width", undefined);
8749
+ ], exports.Canvas.prototype, "width", void 0);
8705
8750
  __decorate([
8706
8751
  resizeType(100)
8707
- ], exports.Canvas.prototype, "height", undefined);
8752
+ ], exports.Canvas.prototype, "height", void 0);
8708
8753
  __decorate([
8709
8754
  resizeType(1)
8710
- ], exports.Canvas.prototype, "pixelRatio", undefined);
8755
+ ], exports.Canvas.prototype, "pixelRatio", void 0);
8711
8756
  __decorate([
8712
8757
  resizeType(true)
8713
- ], exports.Canvas.prototype, "smooth", undefined);
8758
+ ], exports.Canvas.prototype, "smooth", void 0);
8714
8759
  __decorate([
8715
8760
  dataType(false)
8716
- ], exports.Canvas.prototype, "safeResize", undefined);
8761
+ ], exports.Canvas.prototype, "safeResize", void 0);
8717
8762
  __decorate([
8718
8763
  resizeType()
8719
- ], exports.Canvas.prototype, "contextSettings", undefined);
8764
+ ], exports.Canvas.prototype, "contextSettings", void 0);
8720
8765
  exports.Canvas = __decorate([
8721
8766
  registerUI()
8722
8767
  ], exports.Canvas);
@@ -8807,76 +8852,76 @@ var LeaferUI = (function (exports) {
8807
8852
  };
8808
8853
  __decorate([
8809
8854
  dataProcessor(TextData)
8810
- ], exports.Text.prototype, "__", undefined);
8855
+ ], exports.Text.prototype, "__", void 0);
8811
8856
  __decorate([
8812
8857
  boundsType(0)
8813
- ], exports.Text.prototype, "width", undefined);
8858
+ ], exports.Text.prototype, "width", void 0);
8814
8859
  __decorate([
8815
8860
  boundsType(0)
8816
- ], exports.Text.prototype, "height", undefined);
8861
+ ], exports.Text.prototype, "height", void 0);
8817
8862
  __decorate([
8818
8863
  dataType(false)
8819
- ], exports.Text.prototype, "resizeFontSize", undefined);
8864
+ ], exports.Text.prototype, "resizeFontSize", void 0);
8820
8865
  __decorate([
8821
8866
  surfaceType('#000000')
8822
- ], exports.Text.prototype, "fill", undefined);
8867
+ ], exports.Text.prototype, "fill", void 0);
8823
8868
  __decorate([
8824
8869
  affectStrokeBoundsType('outside')
8825
- ], exports.Text.prototype, "strokeAlign", undefined);
8870
+ ], exports.Text.prototype, "strokeAlign", void 0);
8826
8871
  __decorate([
8827
8872
  hitType('all')
8828
- ], exports.Text.prototype, "hitFill", undefined);
8873
+ ], exports.Text.prototype, "hitFill", void 0);
8829
8874
  __decorate([
8830
8875
  boundsType('')
8831
- ], exports.Text.prototype, "text", undefined);
8876
+ ], exports.Text.prototype, "text", void 0);
8832
8877
  __decorate([
8833
8878
  boundsType('caption')
8834
- ], exports.Text.prototype, "fontFamily", undefined);
8879
+ ], exports.Text.prototype, "fontFamily", void 0);
8835
8880
  __decorate([
8836
8881
  boundsType(12)
8837
- ], exports.Text.prototype, "fontSize", undefined);
8882
+ ], exports.Text.prototype, "fontSize", void 0);
8838
8883
  __decorate([
8839
8884
  boundsType('normal')
8840
- ], exports.Text.prototype, "fontWeight", undefined);
8885
+ ], exports.Text.prototype, "fontWeight", void 0);
8841
8886
  __decorate([
8842
8887
  boundsType(false)
8843
- ], exports.Text.prototype, "italic", undefined);
8888
+ ], exports.Text.prototype, "italic", void 0);
8844
8889
  __decorate([
8845
8890
  boundsType('none')
8846
- ], exports.Text.prototype, "textCase", undefined);
8891
+ ], exports.Text.prototype, "textCase", void 0);
8847
8892
  __decorate([
8848
8893
  boundsType('none')
8849
- ], exports.Text.prototype, "textDecoration", undefined);
8894
+ ], exports.Text.prototype, "textDecoration", void 0);
8850
8895
  __decorate([
8851
8896
  boundsType(0)
8852
- ], exports.Text.prototype, "letterSpacing", undefined);
8897
+ ], exports.Text.prototype, "letterSpacing", void 0);
8853
8898
  __decorate([
8854
8899
  boundsType({ type: 'percent', value: 1.5 })
8855
- ], exports.Text.prototype, "lineHeight", undefined);
8900
+ ], exports.Text.prototype, "lineHeight", void 0);
8856
8901
  __decorate([
8857
8902
  boundsType(0)
8858
- ], exports.Text.prototype, "paraIndent", undefined);
8903
+ ], exports.Text.prototype, "paraIndent", void 0);
8859
8904
  __decorate([
8860
8905
  boundsType(0)
8861
- ], exports.Text.prototype, "paraSpacing", undefined);
8906
+ ], exports.Text.prototype, "paraSpacing", void 0);
8862
8907
  __decorate([
8863
8908
  boundsType('x')
8864
- ], exports.Text.prototype, "writingMode", undefined);
8909
+ ], exports.Text.prototype, "writingMode", void 0);
8865
8910
  __decorate([
8866
8911
  boundsType('left')
8867
- ], exports.Text.prototype, "textAlign", undefined);
8912
+ ], exports.Text.prototype, "textAlign", void 0);
8868
8913
  __decorate([
8869
8914
  boundsType('top')
8870
- ], exports.Text.prototype, "verticalAlign", undefined);
8915
+ ], exports.Text.prototype, "verticalAlign", void 0);
8871
8916
  __decorate([
8872
8917
  boundsType(true)
8873
- ], exports.Text.prototype, "autoSizeAlign", undefined);
8918
+ ], exports.Text.prototype, "autoSizeAlign", void 0);
8874
8919
  __decorate([
8875
8920
  boundsType('normal')
8876
- ], exports.Text.prototype, "textWrap", undefined);
8921
+ ], exports.Text.prototype, "textWrap", void 0);
8877
8922
  __decorate([
8878
8923
  boundsType('show')
8879
- ], exports.Text.prototype, "textOverflow", undefined);
8924
+ ], exports.Text.prototype, "textOverflow", void 0);
8880
8925
  exports.Text = __decorate([
8881
8926
  registerUI()
8882
8927
  ], exports.Text);
@@ -8889,10 +8934,10 @@ var LeaferUI = (function (exports) {
8889
8934
  };
8890
8935
  __decorate([
8891
8936
  dataProcessor(PathData)
8892
- ], exports.Path.prototype, "__", undefined);
8937
+ ], exports.Path.prototype, "__", void 0);
8893
8938
  __decorate([
8894
8939
  affectStrokeBoundsType('center')
8895
- ], exports.Path.prototype, "strokeAlign", undefined);
8940
+ ], exports.Path.prototype, "strokeAlign", void 0);
8896
8941
  exports.Path = __decorate([
8897
8942
  registerUI()
8898
8943
  ], exports.Path);
@@ -8931,10 +8976,10 @@ var LeaferUI = (function (exports) {
8931
8976
  };
8932
8977
  __decorate([
8933
8978
  dataProcessor(PenData)
8934
- ], exports.Pen.prototype, "__", undefined);
8979
+ ], exports.Pen.prototype, "__", void 0);
8935
8980
  __decorate([
8936
8981
  penPathType()
8937
- ], exports.Pen.prototype, "path", undefined);
8982
+ ], exports.Pen.prototype, "path", void 0);
8938
8983
  exports.Pen = __decorate([
8939
8984
  useModule(PathCreator, ['set', 'path', 'paint']),
8940
8985
  registerUI()
@@ -9170,7 +9215,7 @@ var LeaferUI = (function (exports) {
9170
9215
  const { draggable, dragBounds } = leaf, move = leaf.getLocalPoint(total, null, true);
9171
9216
  PointHelper.move(move, start.x - leaf.x, start.y - leaf.y);
9172
9217
  if (dragBounds)
9173
- this.getMoveInDragBounds(leaf.__local, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, move, true);
9218
+ this.getMoveInDragBounds(leaf.__localBoxBounds, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, move, true);
9174
9219
  if (draggable === 'x')
9175
9220
  move.y = 0;
9176
9221
  if (draggable === 'y')
@@ -9873,7 +9918,9 @@ var LeaferUI = (function (exports) {
9873
9918
  }
9874
9919
  findPath(data, options) {
9875
9920
  const { hitRadius, through } = this.p;
9876
- const { bottomList } = this;
9921
+ const { bottomList, target } = this;
9922
+ if (!Platform.backgrounder && !data.origin)
9923
+ target && target.updateLayout();
9877
9924
  const find = this.selector.getByPoint(data, hitRadius, Object.assign({ bottomList, name: data.type }, (options || { through })));
9878
9925
  if (find.throughPath)
9879
9926
  data.throughPath = find.throughPath;
@@ -10118,9 +10165,9 @@ var LeaferUI = (function (exports) {
10118
10165
  }
10119
10166
  return this.__hit(inner);
10120
10167
  };
10121
- leaf.__hitFill = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitFill(inner, this.__.windingRule); };
10122
- leaf.__hitStroke = function (inner, strokeWidth) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitStroke(inner, strokeWidth); };
10123
- leaf.__hitPixel = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === undefined ? undefined : _a.hitPixel(inner, this.__layout.renderBounds, this.__hitCanvas.hitScale); };
10168
+ leaf.__hitFill = function (inner) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitFill(inner, this.__.windingRule); };
10169
+ leaf.__hitStroke = function (inner, strokeWidth) { var _a; return (_a = this.__hitCanvas) === null || _a === void 0 ? void 0 : _a.hitStroke(inner, strokeWidth); };
10170
+ 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); };
10124
10171
  leaf.__drawHitPath = function (canvas) { if (canvas)
10125
10172
  this.__drawRenderPath(canvas); };
10126
10173
 
@@ -10208,8 +10255,8 @@ var LeaferUI = (function (exports) {
10208
10255
  return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()));
10209
10256
  }
10210
10257
  exports.Group.prototype.pick = function (hitPoint, options) {
10211
- this.leafer || this.updateLayout();
10212
10258
  options || (options = emptyData);
10259
+ this.updateLayout();
10213
10260
  return getSelector(this).getByPoint(hitPoint, options.hitRadius || 0, Object.assign(Object.assign({}, options), { target: this }));
10214
10261
  };
10215
10262
 
@@ -10902,7 +10949,7 @@ var LeaferUI = (function (exports) {
10902
10949
  box = tempBox.set(box).shrink(paint.padding);
10903
10950
  if (paint.mode === 'strench')
10904
10951
  paint.mode = 'stretch';
10905
- const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
10952
+ const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
10906
10953
  const sameBox = box.width === width && box.height === height;
10907
10954
  const data = { mode };
10908
10955
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -10965,6 +11012,8 @@ var LeaferUI = (function (exports) {
10965
11012
  data.height = height;
10966
11013
  if (opacity)
10967
11014
  data.opacity = opacity;
11015
+ if (filters)
11016
+ data.filters = filters;
10968
11017
  if (repeat)
10969
11018
  data.repeat = typeof repeat === 'string' ? (repeat === 'x' ? 'repeat-x' : 'repeat-y') : 'repeat';
10970
11019
  return data;
@@ -11067,7 +11116,7 @@ var LeaferUI = (function (exports) {
11067
11116
  scaleX = abs$1(scaleX);
11068
11117
  scaleY = abs$1(scaleY);
11069
11118
  const { image, data } = paint;
11070
- let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, opacity, transform, repeat } = data;
11119
+ let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
11071
11120
  if (sx) {
11072
11121
  imageMatrix = get$1();
11073
11122
  copy$1(imageMatrix, transform);
@@ -11110,7 +11159,7 @@ var LeaferUI = (function (exports) {
11110
11159
  }
11111
11160
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
11112
11161
  }
11113
- const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, opacity);
11162
+ const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, data.opacity, data.filters);
11114
11163
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || 'no-repeat'), imageMatrix, paint);
11115
11164
  paint.style = pattern;
11116
11165
  paint.patternId = id;
@@ -11154,7 +11203,7 @@ var LeaferUI = (function (exports) {
11154
11203
  canvas.opacity *= data.opacity;
11155
11204
  if (data.transform)
11156
11205
  canvas.transform(data.transform);
11157
- canvas.drawImage(paint.image.view, 0, 0, data.width, data.height);
11206
+ canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
11158
11207
  canvas.restore();
11159
11208
  return true;
11160
11209
  }
@@ -11164,7 +11213,7 @@ var LeaferUI = (function (exports) {
11164
11213
  }
11165
11214
  else {
11166
11215
  if (!paint.patternTask) {
11167
- paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, undefined, undefined, function* () {
11216
+ paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
11168
11217
  paint.patternTask = null;
11169
11218
  if (canvas.bounds.hit(ui.__nowWorld))
11170
11219
  createPattern(ui, paint, pixelRatio);
@@ -12062,6 +12111,7 @@ var LeaferUI = (function (exports) {
12062
12111
  exports.Eventer = Eventer;
12063
12112
  exports.Export = Export;
12064
12113
  exports.FileHelper = FileHelper;
12114
+ exports.Filter = Filter;
12065
12115
  exports.FrameData = FrameData;
12066
12116
  exports.GroupData = GroupData;
12067
12117
  exports.HitCanvasManager = HitCanvasManager;
@@ -12132,6 +12182,7 @@ var LeaferUI = (function (exports) {
12132
12182
  exports.RenderEvent = RenderEvent;
12133
12183
  exports.Renderer = Renderer;
12134
12184
  exports.ResizeEvent = ResizeEvent;
12185
+ exports.Resource = Resource;
12135
12186
  exports.Run = Run;
12136
12187
  exports.Selector = Selector;
12137
12188
  exports.StarData = StarData;