leafer-draw 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$e = Debug.get('RunTime');
1380
+ const debug$f = 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$e.log(name, duration, 'ms');
1397
+ R$1.idMap[id] = R$1.nameMap[id] = R$1.nameToIdMap[name] = undefined;
1398
+ debug$f.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$d = Debug.get('UICreator');
1427
+ const debug$e = 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$d.repeat(tag);
1433
+ debug$e.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$d.error('not register ' + tag);
1438
+ debug$e.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$c = Debug.get('EventCreator');
1454
+ const debug$d = 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$c.repeat(name), nameList[name] = Event;
1462
+ nameList[name] && debug$d.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$2, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2617
2617
  const { ellipticalArc } = EllipseHelper;
2618
- const debug$b = Debug.get('PathConvert');
2618
+ const debug$c = 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$b.error(`command: ${command} [index:${i}]`, old);
2859
+ debug$c.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$a = Debug.get('PathDrawer');
3082
+ const debug$b = 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$a.error(`command: ${command} [index:${i}]`, data);
3145
+ debug$b.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$7, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3157
- const debug$9 = Debug.get('PathBounds');
3155
+ const debug$a = 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$9.error(`command: ${command} [index:${i}]`, data);
3263
+ debug$a.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$8 = Debug.get('TaskProcessor');
3379
+ const debug$9 = 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$8.error(error);
3394
+ debug$9.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$8 = 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$8.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.tasker.isComplete; },
3635
3675
  get(config) {
3636
- let image = I.map[config.url];
3637
- if (!image) {
3638
- image = Creator.image(config);
3639
- I.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.recycledList;
3651
- if (list.length > 100) {
3652
- list.forEach(image => {
3653
- if (!image.use && image.url) {
3654
- delete I.map[image.url];
3655
- image.destroy();
3656
- }
3657
- });
3689
+ if (list.length > I.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.map = {};
3682
3714
  I.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$4 = 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;
@@ -6910,9 +6950,7 @@ var LeaferUI = (function (exports) {
6910
6950
  const ColorConvert = {};
6911
6951
  const UnitConvert = {
6912
6952
  number(value, percentRefer) {
6913
- if (typeof value === 'object')
6914
- return value.type === 'percent' ? value.value * percentRefer : value.value;
6915
- return value;
6953
+ return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
6916
6954
  }
6917
6955
  };
6918
6956
  const PathArrow = {};
@@ -6920,16 +6958,15 @@ var LeaferUI = (function (exports) {
6920
6958
  const PaintImage = {};
6921
6959
  const PaintGradient = {};
6922
6960
  const Effect = {};
6961
+ const Filter = {
6962
+ apply() { Plugin.need('filter'); }
6963
+ };
6923
6964
  const Export = {};
6924
6965
  const State = {
6925
- setStyleName(_leaf, _styleName, _value) { return Plugin.need('state'); },
6926
- set(_leaf, _stateName) { return Plugin.need('state'); }
6927
- };
6928
- const Transition = {
6929
- list: {},
6930
- register(attrName, fn) { Transition.list[attrName] = fn; },
6931
- get(attrName) { return Transition.list[attrName]; }
6966
+ setStyleName() { return Plugin.need('state'); },
6967
+ set() { return Plugin.need('state'); }
6932
6968
  };
6969
+ const Transition = {};
6933
6970
 
6934
6971
  const { parse, objectToCanvasData } = PathConvert;
6935
6972
  const emptyPaint = {};
@@ -7036,24 +7073,13 @@ var LeaferUI = (function (exports) {
7036
7073
  }
7037
7074
  }
7038
7075
  setShadow(value) {
7039
- this.__setInput('shadow', value);
7040
- if (value instanceof Array) {
7041
- if (value.some((item) => item.visible === false))
7042
- value = value.filter((item) => item.visible !== false);
7043
- this._shadow = value.length ? value : null;
7044
- }
7045
- else
7046
- this._shadow = value && value.visible !== false ? [value] : null;
7076
+ setArray(this, 'shadow', value);
7047
7077
  }
7048
7078
  setInnerShadow(value) {
7049
- this.__setInput('innerShadow', value);
7050
- if (value instanceof Array) {
7051
- if (value.some((item) => item.visible === false))
7052
- value = value.filter((item) => item.visible !== false);
7053
- this._innerShadow = value.length ? value : null;
7054
- }
7055
- else
7056
- this._innerShadow = value && value.visible !== false ? [value] : null;
7079
+ setArray(this, 'innerShadow', value);
7080
+ }
7081
+ setFilter(value) {
7082
+ setArray(this, 'filter', value);
7057
7083
  }
7058
7084
  __computePaint() {
7059
7085
  const { fill, stroke } = this.__input;
@@ -7064,6 +7090,17 @@ var LeaferUI = (function (exports) {
7064
7090
  this.__needComputePaint = false;
7065
7091
  }
7066
7092
  }
7093
+ function setArray(data, key, value) {
7094
+ data.__setInput(key, value);
7095
+ if (value instanceof Array) {
7096
+ if (value.some((item) => item.visible === false))
7097
+ value = value.filter((item) => item.visible !== false);
7098
+ value.length || (value = null);
7099
+ }
7100
+ else
7101
+ value = value && value.visible !== false ? [value] : null;
7102
+ data['_' + key] = value;
7103
+ }
7067
7104
 
7068
7105
  class GroupData extends UIData {
7069
7106
  }
@@ -7186,11 +7223,13 @@ var LeaferUI = (function (exports) {
7186
7223
  },
7187
7224
  __updateRenderSpread() {
7188
7225
  let width = 0;
7189
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7226
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7190
7227
  if (shadow)
7191
7228
  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));
7192
7229
  if (blur)
7193
7230
  width = Math.max(width, blur);
7231
+ if (filter)
7232
+ width += Filter.getSpread(filter);
7194
7233
  let shapeWidth = width = Math.ceil(width);
7195
7234
  if (innerShadow)
7196
7235
  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));
@@ -7205,8 +7244,8 @@ var LeaferUI = (function (exports) {
7205
7244
  __updateChange() {
7206
7245
  const data = this.__;
7207
7246
  if (data.__useEffect) {
7208
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7209
- data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur);
7247
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7248
+ data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
7210
7249
  }
7211
7250
  data.__checkSingle();
7212
7251
  const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
@@ -7220,7 +7259,7 @@ var LeaferUI = (function (exports) {
7220
7259
  __drawFast(canvas, options) {
7221
7260
  drawFast(this, canvas, options);
7222
7261
  },
7223
- __draw(canvas, options) {
7262
+ __draw(canvas, options, originCanvas) {
7224
7263
  const data = this.__;
7225
7264
  if (data.__complex) {
7226
7265
  if (data.__needComputePaint)
@@ -7230,7 +7269,7 @@ var LeaferUI = (function (exports) {
7230
7269
  if (data.__useEffect) {
7231
7270
  const shape = Paint.shape(this, canvas, options);
7232
7271
  this.__nowWorld = this.__getNowWorld(options);
7233
- const { shadow, innerShadow } = data;
7272
+ const { shadow, innerShadow, filter } = data;
7234
7273
  if (shadow)
7235
7274
  Effect.shadow(this, canvas, shape);
7236
7275
  if (fill)
@@ -7241,6 +7280,8 @@ var LeaferUI = (function (exports) {
7241
7280
  Effect.innerShadow(this, canvas, shape);
7242
7281
  if (stroke)
7243
7282
  data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
7283
+ if (filter)
7284
+ Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
7244
7285
  if (shape.worldCanvas)
7245
7286
  shape.worldCanvas.recycle();
7246
7287
  shape.canvas.recycle();
@@ -7460,199 +7501,202 @@ var LeaferUI = (function (exports) {
7460
7501
  };
7461
7502
  __decorate([
7462
7503
  dataProcessor(UIData)
7463
- ], exports.UI.prototype, "__", undefined);
7504
+ ], exports.UI.prototype, "__", void 0);
7464
7505
  __decorate([
7465
7506
  zoomLayerType()
7466
- ], exports.UI.prototype, "zoomLayer", undefined);
7507
+ ], exports.UI.prototype, "zoomLayer", void 0);
7467
7508
  __decorate([
7468
7509
  dataType('')
7469
- ], exports.UI.prototype, "id", undefined);
7510
+ ], exports.UI.prototype, "id", void 0);
7470
7511
  __decorate([
7471
7512
  dataType('')
7472
- ], exports.UI.prototype, "name", undefined);
7513
+ ], exports.UI.prototype, "name", void 0);
7473
7514
  __decorate([
7474
7515
  dataType('')
7475
- ], exports.UI.prototype, "className", undefined);
7516
+ ], exports.UI.prototype, "className", void 0);
7476
7517
  __decorate([
7477
7518
  surfaceType('pass-through')
7478
- ], exports.UI.prototype, "blendMode", undefined);
7519
+ ], exports.UI.prototype, "blendMode", void 0);
7479
7520
  __decorate([
7480
7521
  opacityType(1)
7481
- ], exports.UI.prototype, "opacity", undefined);
7522
+ ], exports.UI.prototype, "opacity", void 0);
7482
7523
  __decorate([
7483
7524
  visibleType(true)
7484
- ], exports.UI.prototype, "visible", undefined);
7525
+ ], exports.UI.prototype, "visible", void 0);
7485
7526
  __decorate([
7486
7527
  surfaceType(false)
7487
- ], exports.UI.prototype, "locked", undefined);
7528
+ ], exports.UI.prototype, "locked", void 0);
7488
7529
  __decorate([
7489
7530
  sortType(0)
7490
- ], exports.UI.prototype, "zIndex", undefined);
7531
+ ], exports.UI.prototype, "zIndex", void 0);
7491
7532
  __decorate([
7492
7533
  maskType(false)
7493
- ], exports.UI.prototype, "mask", undefined);
7534
+ ], exports.UI.prototype, "mask", void 0);
7494
7535
  __decorate([
7495
7536
  eraserType(false)
7496
- ], exports.UI.prototype, "eraser", undefined);
7537
+ ], exports.UI.prototype, "eraser", void 0);
7497
7538
  __decorate([
7498
7539
  positionType(0, true)
7499
- ], exports.UI.prototype, "x", undefined);
7540
+ ], exports.UI.prototype, "x", void 0);
7500
7541
  __decorate([
7501
7542
  positionType(0, true)
7502
- ], exports.UI.prototype, "y", undefined);
7543
+ ], exports.UI.prototype, "y", void 0);
7503
7544
  __decorate([
7504
7545
  boundsType(100, true)
7505
- ], exports.UI.prototype, "width", undefined);
7546
+ ], exports.UI.prototype, "width", void 0);
7506
7547
  __decorate([
7507
7548
  boundsType(100, true)
7508
- ], exports.UI.prototype, "height", undefined);
7549
+ ], exports.UI.prototype, "height", void 0);
7509
7550
  __decorate([
7510
7551
  scaleType(1, true)
7511
- ], exports.UI.prototype, "scaleX", undefined);
7552
+ ], exports.UI.prototype, "scaleX", void 0);
7512
7553
  __decorate([
7513
7554
  scaleType(1, true)
7514
- ], exports.UI.prototype, "scaleY", undefined);
7555
+ ], exports.UI.prototype, "scaleY", void 0);
7515
7556
  __decorate([
7516
7557
  rotationType(0, true)
7517
- ], exports.UI.prototype, "rotation", undefined);
7558
+ ], exports.UI.prototype, "rotation", void 0);
7518
7559
  __decorate([
7519
7560
  rotationType(0, true)
7520
- ], exports.UI.prototype, "skewX", undefined);
7561
+ ], exports.UI.prototype, "skewX", void 0);
7521
7562
  __decorate([
7522
7563
  rotationType(0, true)
7523
- ], exports.UI.prototype, "skewY", undefined);
7564
+ ], exports.UI.prototype, "skewY", void 0);
7524
7565
  __decorate([
7525
7566
  positionType(0, true)
7526
- ], exports.UI.prototype, "offsetX", undefined);
7567
+ ], exports.UI.prototype, "offsetX", void 0);
7527
7568
  __decorate([
7528
7569
  positionType(0, true)
7529
- ], exports.UI.prototype, "offsetY", undefined);
7570
+ ], exports.UI.prototype, "offsetY", void 0);
7530
7571
  __decorate([
7531
7572
  positionType(0, true)
7532
- ], exports.UI.prototype, "scrollX", undefined);
7573
+ ], exports.UI.prototype, "scrollX", void 0);
7533
7574
  __decorate([
7534
7575
  positionType(0, true)
7535
- ], exports.UI.prototype, "scrollY", undefined);
7576
+ ], exports.UI.prototype, "scrollY", void 0);
7536
7577
  __decorate([
7537
7578
  autoLayoutType()
7538
- ], exports.UI.prototype, "origin", undefined);
7579
+ ], exports.UI.prototype, "origin", void 0);
7539
7580
  __decorate([
7540
7581
  autoLayoutType()
7541
- ], exports.UI.prototype, "around", undefined);
7582
+ ], exports.UI.prototype, "around", void 0);
7542
7583
  __decorate([
7543
7584
  dataType(false)
7544
- ], exports.UI.prototype, "lazy", undefined);
7585
+ ], exports.UI.prototype, "lazy", void 0);
7545
7586
  __decorate([
7546
7587
  naturalBoundsType(1)
7547
- ], exports.UI.prototype, "pixelRatio", undefined);
7588
+ ], exports.UI.prototype, "pixelRatio", void 0);
7548
7589
  __decorate([
7549
7590
  pathInputType()
7550
- ], exports.UI.prototype, "path", undefined);
7591
+ ], exports.UI.prototype, "path", void 0);
7551
7592
  __decorate([
7552
7593
  pathType()
7553
- ], exports.UI.prototype, "windingRule", undefined);
7594
+ ], exports.UI.prototype, "windingRule", void 0);
7554
7595
  __decorate([
7555
7596
  pathType(true)
7556
- ], exports.UI.prototype, "closed", undefined);
7597
+ ], exports.UI.prototype, "closed", void 0);
7557
7598
  __decorate([
7558
7599
  boundsType(0)
7559
- ], exports.UI.prototype, "padding", undefined);
7600
+ ], exports.UI.prototype, "padding", void 0);
7560
7601
  __decorate([
7561
7602
  boundsType(false)
7562
- ], exports.UI.prototype, "lockRatio", undefined);
7603
+ ], exports.UI.prototype, "lockRatio", void 0);
7563
7604
  __decorate([
7564
7605
  boundsType()
7565
- ], exports.UI.prototype, "widthRange", undefined);
7606
+ ], exports.UI.prototype, "widthRange", void 0);
7566
7607
  __decorate([
7567
7608
  boundsType()
7568
- ], exports.UI.prototype, "heightRange", undefined);
7609
+ ], exports.UI.prototype, "heightRange", void 0);
7569
7610
  __decorate([
7570
7611
  dataType(false)
7571
- ], exports.UI.prototype, "draggable", undefined);
7612
+ ], exports.UI.prototype, "draggable", void 0);
7572
7613
  __decorate([
7573
7614
  dataType()
7574
- ], exports.UI.prototype, "dragBounds", undefined);
7615
+ ], exports.UI.prototype, "dragBounds", void 0);
7575
7616
  __decorate([
7576
7617
  dataType(false)
7577
- ], exports.UI.prototype, "editable", undefined);
7618
+ ], exports.UI.prototype, "editable", void 0);
7578
7619
  __decorate([
7579
7620
  hitType(true)
7580
- ], exports.UI.prototype, "hittable", undefined);
7621
+ ], exports.UI.prototype, "hittable", void 0);
7581
7622
  __decorate([
7582
7623
  hitType('path')
7583
- ], exports.UI.prototype, "hitFill", undefined);
7624
+ ], exports.UI.prototype, "hitFill", void 0);
7584
7625
  __decorate([
7585
7626
  strokeType('path')
7586
- ], exports.UI.prototype, "hitStroke", undefined);
7627
+ ], exports.UI.prototype, "hitStroke", void 0);
7587
7628
  __decorate([
7588
7629
  hitType(false)
7589
- ], exports.UI.prototype, "hitBox", undefined);
7630
+ ], exports.UI.prototype, "hitBox", void 0);
7590
7631
  __decorate([
7591
7632
  hitType(true)
7592
- ], exports.UI.prototype, "hitChildren", undefined);
7633
+ ], exports.UI.prototype, "hitChildren", void 0);
7593
7634
  __decorate([
7594
7635
  hitType(true)
7595
- ], exports.UI.prototype, "hitSelf", undefined);
7636
+ ], exports.UI.prototype, "hitSelf", void 0);
7596
7637
  __decorate([
7597
7638
  hitType()
7598
- ], exports.UI.prototype, "hitRadius", undefined);
7639
+ ], exports.UI.prototype, "hitRadius", void 0);
7599
7640
  __decorate([
7600
7641
  cursorType('')
7601
- ], exports.UI.prototype, "cursor", undefined);
7642
+ ], exports.UI.prototype, "cursor", void 0);
7602
7643
  __decorate([
7603
7644
  surfaceType()
7604
- ], exports.UI.prototype, "fill", undefined);
7645
+ ], exports.UI.prototype, "fill", void 0);
7605
7646
  __decorate([
7606
7647
  strokeType()
7607
- ], exports.UI.prototype, "stroke", undefined);
7648
+ ], exports.UI.prototype, "stroke", void 0);
7608
7649
  __decorate([
7609
7650
  strokeType('inside')
7610
- ], exports.UI.prototype, "strokeAlign", undefined);
7651
+ ], exports.UI.prototype, "strokeAlign", void 0);
7611
7652
  __decorate([
7612
7653
  strokeType(1)
7613
- ], exports.UI.prototype, "strokeWidth", undefined);
7654
+ ], exports.UI.prototype, "strokeWidth", void 0);
7614
7655
  __decorate([
7615
7656
  strokeType(false)
7616
- ], exports.UI.prototype, "strokeWidthFixed", undefined);
7657
+ ], exports.UI.prototype, "strokeWidthFixed", void 0);
7617
7658
  __decorate([
7618
7659
  strokeType('none')
7619
- ], exports.UI.prototype, "strokeCap", undefined);
7660
+ ], exports.UI.prototype, "strokeCap", void 0);
7620
7661
  __decorate([
7621
7662
  strokeType('miter')
7622
- ], exports.UI.prototype, "strokeJoin", undefined);
7663
+ ], exports.UI.prototype, "strokeJoin", void 0);
7623
7664
  __decorate([
7624
7665
  strokeType()
7625
- ], exports.UI.prototype, "dashPattern", undefined);
7666
+ ], exports.UI.prototype, "dashPattern", void 0);
7626
7667
  __decorate([
7627
7668
  strokeType()
7628
- ], exports.UI.prototype, "dashOffset", undefined);
7669
+ ], exports.UI.prototype, "dashOffset", void 0);
7629
7670
  __decorate([
7630
7671
  strokeType(10)
7631
- ], exports.UI.prototype, "miterLimit", undefined);
7672
+ ], exports.UI.prototype, "miterLimit", void 0);
7632
7673
  __decorate([
7633
7674
  pathType(0)
7634
- ], exports.UI.prototype, "cornerRadius", undefined);
7675
+ ], exports.UI.prototype, "cornerRadius", void 0);
7635
7676
  __decorate([
7636
7677
  pathType()
7637
- ], exports.UI.prototype, "cornerSmoothing", undefined);
7678
+ ], exports.UI.prototype, "cornerSmoothing", void 0);
7679
+ __decorate([
7680
+ effectType()
7681
+ ], exports.UI.prototype, "shadow", void 0);
7638
7682
  __decorate([
7639
7683
  effectType()
7640
- ], exports.UI.prototype, "shadow", undefined);
7684
+ ], exports.UI.prototype, "innerShadow", void 0);
7641
7685
  __decorate([
7642
7686
  effectType()
7643
- ], exports.UI.prototype, "innerShadow", undefined);
7687
+ ], exports.UI.prototype, "blur", void 0);
7644
7688
  __decorate([
7645
7689
  effectType()
7646
- ], exports.UI.prototype, "blur", undefined);
7690
+ ], exports.UI.prototype, "backgroundBlur", void 0);
7647
7691
  __decorate([
7648
7692
  effectType()
7649
- ], exports.UI.prototype, "backgroundBlur", undefined);
7693
+ ], exports.UI.prototype, "grayscale", void 0);
7650
7694
  __decorate([
7651
7695
  effectType()
7652
- ], exports.UI.prototype, "grayscale", undefined);
7696
+ ], exports.UI.prototype, "filter", void 0);
7653
7697
  __decorate([
7654
7698
  dataType({})
7655
- ], exports.UI.prototype, "data", undefined);
7699
+ ], exports.UI.prototype, "data", void 0);
7656
7700
  __decorate([
7657
7701
  rewrite(exports.Leaf.prototype.reset)
7658
7702
  ], exports.UI.prototype, "reset", null);
@@ -7713,7 +7757,7 @@ var LeaferUI = (function (exports) {
7713
7757
  };
7714
7758
  __decorate([
7715
7759
  dataProcessor(GroupData)
7716
- ], exports.Group.prototype, "__", undefined);
7760
+ ], exports.Group.prototype, "__", void 0);
7717
7761
  exports.Group = __decorate([
7718
7762
  useModule(exports.Branch),
7719
7763
  registerUI()
@@ -7726,7 +7770,7 @@ var LeaferUI = (function (exports) {
7726
7770
  get isApp() { return false; }
7727
7771
  get app() { return this.parent || this; }
7728
7772
  get isLeafer() { return true; }
7729
- get imageReady() { return this.viewReady && ImageManager.isComplete; }
7773
+ get imageReady() { return this.viewReady && Resource.isComplete; }
7730
7774
  get layoutLocked() { return !this.layouter.running; }
7731
7775
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7732
7776
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
@@ -7937,13 +7981,13 @@ var LeaferUI = (function (exports) {
7937
7981
  WaitHelper.run(this.__viewReadyWait);
7938
7982
  }
7939
7983
  __onLayoutEnd() {
7940
- const { grow, growWidth, growHeight } = this.config;
7984
+ const { grow, width: fixedWidth, height: fixedHeight } = this.config;
7941
7985
  if (grow) {
7942
7986
  let { width, height, pixelRatio } = this;
7943
7987
  const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
7944
- if (growWidth !== false)
7988
+ if (!fixedWidth)
7945
7989
  width = Math.max(1, bounds.x + bounds.width);
7946
- if (growHeight !== false)
7990
+ if (!fixedHeight)
7947
7991
  height = Math.max(1, bounds.y + bounds.height);
7948
7992
  this.__doResize({ width, height, pixelRatio });
7949
7993
  }
@@ -8021,7 +8065,7 @@ var LeaferUI = (function (exports) {
8021
8065
  list.push(item);
8022
8066
  this.requestRender();
8023
8067
  }
8024
- zoom(_zoomType, _padding, _fixedScale) {
8068
+ zoom(_zoomType, _padding, _fixedScale, _transition) {
8025
8069
  return Plugin.need('view');
8026
8070
  }
8027
8071
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8086,10 +8130,10 @@ var LeaferUI = (function (exports) {
8086
8130
  exports.Leafer.list = new LeafList();
8087
8131
  __decorate([
8088
8132
  dataProcessor(LeaferData)
8089
- ], exports.Leafer.prototype, "__", undefined);
8133
+ ], exports.Leafer.prototype, "__", void 0);
8090
8134
  __decorate([
8091
8135
  boundsType()
8092
- ], exports.Leafer.prototype, "pixelRatio", undefined);
8136
+ ], exports.Leafer.prototype, "pixelRatio", void 0);
8093
8137
  exports.Leafer = Leafer_1 = __decorate([
8094
8138
  registerUI()
8095
8139
  ], exports.Leafer);
@@ -8102,7 +8146,7 @@ var LeaferUI = (function (exports) {
8102
8146
  };
8103
8147
  __decorate([
8104
8148
  dataProcessor(RectData)
8105
- ], exports.Rect.prototype, "__", undefined);
8149
+ ], exports.Rect.prototype, "__", void 0);
8106
8150
  exports.Rect = __decorate([
8107
8151
  useModule(RectRender),
8108
8152
  rewriteAble(),
@@ -8193,13 +8237,13 @@ var LeaferUI = (function (exports) {
8193
8237
  };
8194
8238
  __decorate([
8195
8239
  dataProcessor(BoxData)
8196
- ], exports.Box.prototype, "__", undefined);
8240
+ ], exports.Box.prototype, "__", void 0);
8197
8241
  __decorate([
8198
8242
  dataType(false)
8199
- ], exports.Box.prototype, "resizeChildren", undefined);
8243
+ ], exports.Box.prototype, "resizeChildren", void 0);
8200
8244
  __decorate([
8201
8245
  affectRenderBoundsType('show')
8202
- ], exports.Box.prototype, "overflow", undefined);
8246
+ ], exports.Box.prototype, "overflow", void 0);
8203
8247
  __decorate([
8204
8248
  rewrite(rect.__updateStrokeSpread)
8205
8249
  ], exports.Box.prototype, "__updateStrokeSpread", null);
@@ -8238,13 +8282,13 @@ var LeaferUI = (function (exports) {
8238
8282
  };
8239
8283
  __decorate([
8240
8284
  dataProcessor(FrameData)
8241
- ], exports.Frame.prototype, "__", undefined);
8285
+ ], exports.Frame.prototype, "__", void 0);
8242
8286
  __decorate([
8243
8287
  surfaceType('#FFFFFF')
8244
- ], exports.Frame.prototype, "fill", undefined);
8288
+ ], exports.Frame.prototype, "fill", void 0);
8245
8289
  __decorate([
8246
8290
  affectRenderBoundsType('hide')
8247
- ], exports.Frame.prototype, "overflow", undefined);
8291
+ ], exports.Frame.prototype, "overflow", void 0);
8248
8292
  exports.Frame = __decorate([
8249
8293
  registerUI()
8250
8294
  ], exports.Frame);
@@ -8291,16 +8335,16 @@ var LeaferUI = (function (exports) {
8291
8335
  };
8292
8336
  __decorate([
8293
8337
  dataProcessor(EllipseData)
8294
- ], exports.Ellipse.prototype, "__", undefined);
8338
+ ], exports.Ellipse.prototype, "__", void 0);
8295
8339
  __decorate([
8296
8340
  pathType(0)
8297
- ], exports.Ellipse.prototype, "innerRadius", undefined);
8341
+ ], exports.Ellipse.prototype, "innerRadius", void 0);
8298
8342
  __decorate([
8299
8343
  pathType(0)
8300
- ], exports.Ellipse.prototype, "startAngle", undefined);
8344
+ ], exports.Ellipse.prototype, "startAngle", void 0);
8301
8345
  __decorate([
8302
8346
  pathType(0)
8303
- ], exports.Ellipse.prototype, "endAngle", undefined);
8347
+ ], exports.Ellipse.prototype, "endAngle", void 0);
8304
8348
  exports.Ellipse = __decorate([
8305
8349
  registerUI()
8306
8350
  ], exports.Ellipse);
@@ -8359,22 +8403,22 @@ var LeaferUI = (function (exports) {
8359
8403
  };
8360
8404
  __decorate([
8361
8405
  dataProcessor(LineData)
8362
- ], exports.Line.prototype, "__", undefined);
8406
+ ], exports.Line.prototype, "__", void 0);
8363
8407
  __decorate([
8364
8408
  affectStrokeBoundsType('center')
8365
- ], exports.Line.prototype, "strokeAlign", undefined);
8409
+ ], exports.Line.prototype, "strokeAlign", void 0);
8366
8410
  __decorate([
8367
8411
  boundsType(0)
8368
- ], exports.Line.prototype, "height", undefined);
8412
+ ], exports.Line.prototype, "height", void 0);
8369
8413
  __decorate([
8370
8414
  pathType()
8371
- ], exports.Line.prototype, "points", undefined);
8415
+ ], exports.Line.prototype, "points", void 0);
8372
8416
  __decorate([
8373
8417
  pathType(0)
8374
- ], exports.Line.prototype, "curve", undefined);
8418
+ ], exports.Line.prototype, "curve", void 0);
8375
8419
  __decorate([
8376
8420
  pathType(false)
8377
- ], exports.Line.prototype, "closed", undefined);
8421
+ ], exports.Line.prototype, "closed", void 0);
8378
8422
  exports.Line = __decorate([
8379
8423
  registerUI()
8380
8424
  ], exports.Line);
@@ -8407,16 +8451,16 @@ var LeaferUI = (function (exports) {
8407
8451
  };
8408
8452
  __decorate([
8409
8453
  dataProcessor(PolygonData)
8410
- ], exports.Polygon.prototype, "__", undefined);
8454
+ ], exports.Polygon.prototype, "__", void 0);
8411
8455
  __decorate([
8412
8456
  pathType(3)
8413
- ], exports.Polygon.prototype, "sides", undefined);
8457
+ ], exports.Polygon.prototype, "sides", void 0);
8414
8458
  __decorate([
8415
8459
  pathType()
8416
- ], exports.Polygon.prototype, "points", undefined);
8460
+ ], exports.Polygon.prototype, "points", void 0);
8417
8461
  __decorate([
8418
8462
  pathType(0)
8419
- ], exports.Polygon.prototype, "curve", undefined);
8463
+ ], exports.Polygon.prototype, "curve", void 0);
8420
8464
  __decorate([
8421
8465
  rewrite(line.__updateRenderPath)
8422
8466
  ], exports.Polygon.prototype, "__updateRenderPath", null);
@@ -8448,13 +8492,13 @@ var LeaferUI = (function (exports) {
8448
8492
  };
8449
8493
  __decorate([
8450
8494
  dataProcessor(StarData)
8451
- ], exports.Star.prototype, "__", undefined);
8495
+ ], exports.Star.prototype, "__", void 0);
8452
8496
  __decorate([
8453
8497
  pathType(5)
8454
- ], exports.Star.prototype, "corners", undefined);
8498
+ ], exports.Star.prototype, "corners", void 0);
8455
8499
  __decorate([
8456
8500
  pathType(0.382)
8457
- ], exports.Star.prototype, "innerRadius", undefined);
8501
+ ], exports.Star.prototype, "innerRadius", void 0);
8458
8502
  exports.Star = __decorate([
8459
8503
  registerUI()
8460
8504
  ], exports.Star);
@@ -8476,10 +8520,10 @@ var LeaferUI = (function (exports) {
8476
8520
  };
8477
8521
  __decorate([
8478
8522
  dataProcessor(ImageData)
8479
- ], exports.Image.prototype, "__", undefined);
8523
+ ], exports.Image.prototype, "__", void 0);
8480
8524
  __decorate([
8481
8525
  boundsType('')
8482
- ], exports.Image.prototype, "url", undefined);
8526
+ ], exports.Image.prototype, "url", void 0);
8483
8527
  exports.Image = __decorate([
8484
8528
  registerUI()
8485
8529
  ], exports.Image);
@@ -8542,25 +8586,25 @@ var LeaferUI = (function (exports) {
8542
8586
  };
8543
8587
  __decorate([
8544
8588
  dataProcessor(CanvasData)
8545
- ], exports.Canvas.prototype, "__", undefined);
8589
+ ], exports.Canvas.prototype, "__", void 0);
8546
8590
  __decorate([
8547
8591
  resizeType(100)
8548
- ], exports.Canvas.prototype, "width", undefined);
8592
+ ], exports.Canvas.prototype, "width", void 0);
8549
8593
  __decorate([
8550
8594
  resizeType(100)
8551
- ], exports.Canvas.prototype, "height", undefined);
8595
+ ], exports.Canvas.prototype, "height", void 0);
8552
8596
  __decorate([
8553
8597
  resizeType(1)
8554
- ], exports.Canvas.prototype, "pixelRatio", undefined);
8598
+ ], exports.Canvas.prototype, "pixelRatio", void 0);
8555
8599
  __decorate([
8556
8600
  resizeType(true)
8557
- ], exports.Canvas.prototype, "smooth", undefined);
8601
+ ], exports.Canvas.prototype, "smooth", void 0);
8558
8602
  __decorate([
8559
8603
  dataType(false)
8560
- ], exports.Canvas.prototype, "safeResize", undefined);
8604
+ ], exports.Canvas.prototype, "safeResize", void 0);
8561
8605
  __decorate([
8562
8606
  resizeType()
8563
- ], exports.Canvas.prototype, "contextSettings", undefined);
8607
+ ], exports.Canvas.prototype, "contextSettings", void 0);
8564
8608
  exports.Canvas = __decorate([
8565
8609
  registerUI()
8566
8610
  ], exports.Canvas);
@@ -8651,76 +8695,76 @@ var LeaferUI = (function (exports) {
8651
8695
  };
8652
8696
  __decorate([
8653
8697
  dataProcessor(TextData)
8654
- ], exports.Text.prototype, "__", undefined);
8698
+ ], exports.Text.prototype, "__", void 0);
8655
8699
  __decorate([
8656
8700
  boundsType(0)
8657
- ], exports.Text.prototype, "width", undefined);
8701
+ ], exports.Text.prototype, "width", void 0);
8658
8702
  __decorate([
8659
8703
  boundsType(0)
8660
- ], exports.Text.prototype, "height", undefined);
8704
+ ], exports.Text.prototype, "height", void 0);
8661
8705
  __decorate([
8662
8706
  dataType(false)
8663
- ], exports.Text.prototype, "resizeFontSize", undefined);
8707
+ ], exports.Text.prototype, "resizeFontSize", void 0);
8664
8708
  __decorate([
8665
8709
  surfaceType('#000000')
8666
- ], exports.Text.prototype, "fill", undefined);
8710
+ ], exports.Text.prototype, "fill", void 0);
8667
8711
  __decorate([
8668
8712
  affectStrokeBoundsType('outside')
8669
- ], exports.Text.prototype, "strokeAlign", undefined);
8713
+ ], exports.Text.prototype, "strokeAlign", void 0);
8670
8714
  __decorate([
8671
8715
  hitType('all')
8672
- ], exports.Text.prototype, "hitFill", undefined);
8716
+ ], exports.Text.prototype, "hitFill", void 0);
8673
8717
  __decorate([
8674
8718
  boundsType('')
8675
- ], exports.Text.prototype, "text", undefined);
8719
+ ], exports.Text.prototype, "text", void 0);
8676
8720
  __decorate([
8677
8721
  boundsType('caption')
8678
- ], exports.Text.prototype, "fontFamily", undefined);
8722
+ ], exports.Text.prototype, "fontFamily", void 0);
8679
8723
  __decorate([
8680
8724
  boundsType(12)
8681
- ], exports.Text.prototype, "fontSize", undefined);
8725
+ ], exports.Text.prototype, "fontSize", void 0);
8682
8726
  __decorate([
8683
8727
  boundsType('normal')
8684
- ], exports.Text.prototype, "fontWeight", undefined);
8728
+ ], exports.Text.prototype, "fontWeight", void 0);
8685
8729
  __decorate([
8686
8730
  boundsType(false)
8687
- ], exports.Text.prototype, "italic", undefined);
8731
+ ], exports.Text.prototype, "italic", void 0);
8688
8732
  __decorate([
8689
8733
  boundsType('none')
8690
- ], exports.Text.prototype, "textCase", undefined);
8734
+ ], exports.Text.prototype, "textCase", void 0);
8691
8735
  __decorate([
8692
8736
  boundsType('none')
8693
- ], exports.Text.prototype, "textDecoration", undefined);
8737
+ ], exports.Text.prototype, "textDecoration", void 0);
8694
8738
  __decorate([
8695
8739
  boundsType(0)
8696
- ], exports.Text.prototype, "letterSpacing", undefined);
8740
+ ], exports.Text.prototype, "letterSpacing", void 0);
8697
8741
  __decorate([
8698
8742
  boundsType({ type: 'percent', value: 1.5 })
8699
- ], exports.Text.prototype, "lineHeight", undefined);
8743
+ ], exports.Text.prototype, "lineHeight", void 0);
8700
8744
  __decorate([
8701
8745
  boundsType(0)
8702
- ], exports.Text.prototype, "paraIndent", undefined);
8746
+ ], exports.Text.prototype, "paraIndent", void 0);
8703
8747
  __decorate([
8704
8748
  boundsType(0)
8705
- ], exports.Text.prototype, "paraSpacing", undefined);
8749
+ ], exports.Text.prototype, "paraSpacing", void 0);
8706
8750
  __decorate([
8707
8751
  boundsType('x')
8708
- ], exports.Text.prototype, "writingMode", undefined);
8752
+ ], exports.Text.prototype, "writingMode", void 0);
8709
8753
  __decorate([
8710
8754
  boundsType('left')
8711
- ], exports.Text.prototype, "textAlign", undefined);
8755
+ ], exports.Text.prototype, "textAlign", void 0);
8712
8756
  __decorate([
8713
8757
  boundsType('top')
8714
- ], exports.Text.prototype, "verticalAlign", undefined);
8758
+ ], exports.Text.prototype, "verticalAlign", void 0);
8715
8759
  __decorate([
8716
8760
  boundsType(true)
8717
- ], exports.Text.prototype, "autoSizeAlign", undefined);
8761
+ ], exports.Text.prototype, "autoSizeAlign", void 0);
8718
8762
  __decorate([
8719
8763
  boundsType('normal')
8720
- ], exports.Text.prototype, "textWrap", undefined);
8764
+ ], exports.Text.prototype, "textWrap", void 0);
8721
8765
  __decorate([
8722
8766
  boundsType('show')
8723
- ], exports.Text.prototype, "textOverflow", undefined);
8767
+ ], exports.Text.prototype, "textOverflow", void 0);
8724
8768
  exports.Text = __decorate([
8725
8769
  registerUI()
8726
8770
  ], exports.Text);
@@ -8733,10 +8777,10 @@ var LeaferUI = (function (exports) {
8733
8777
  };
8734
8778
  __decorate([
8735
8779
  dataProcessor(PathData)
8736
- ], exports.Path.prototype, "__", undefined);
8780
+ ], exports.Path.prototype, "__", void 0);
8737
8781
  __decorate([
8738
8782
  affectStrokeBoundsType('center')
8739
- ], exports.Path.prototype, "strokeAlign", undefined);
8783
+ ], exports.Path.prototype, "strokeAlign", void 0);
8740
8784
  exports.Path = __decorate([
8741
8785
  registerUI()
8742
8786
  ], exports.Path);
@@ -8775,10 +8819,10 @@ var LeaferUI = (function (exports) {
8775
8819
  };
8776
8820
  __decorate([
8777
8821
  dataProcessor(PenData)
8778
- ], exports.Pen.prototype, "__", undefined);
8822
+ ], exports.Pen.prototype, "__", void 0);
8779
8823
  __decorate([
8780
8824
  penPathType()
8781
- ], exports.Pen.prototype, "path", undefined);
8825
+ ], exports.Pen.prototype, "path", void 0);
8782
8826
  exports.Pen = __decorate([
8783
8827
  useModule(PathCreator, ['set', 'path', 'paint']),
8784
8828
  registerUI()
@@ -9150,7 +9194,7 @@ var LeaferUI = (function (exports) {
9150
9194
  box = tempBox.set(box).shrink(paint.padding);
9151
9195
  if (paint.mode === 'strench')
9152
9196
  paint.mode = 'stretch';
9153
- const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
9197
+ const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
9154
9198
  const sameBox = box.width === width && box.height === height;
9155
9199
  const data = { mode };
9156
9200
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -9213,6 +9257,8 @@ var LeaferUI = (function (exports) {
9213
9257
  data.height = height;
9214
9258
  if (opacity)
9215
9259
  data.opacity = opacity;
9260
+ if (filters)
9261
+ data.filters = filters;
9216
9262
  if (repeat)
9217
9263
  data.repeat = typeof repeat === 'string' ? (repeat === 'x' ? 'repeat-x' : 'repeat-y') : 'repeat';
9218
9264
  return data;
@@ -9315,7 +9361,7 @@ var LeaferUI = (function (exports) {
9315
9361
  scaleX = abs$1(scaleX);
9316
9362
  scaleY = abs$1(scaleY);
9317
9363
  const { image, data } = paint;
9318
- let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, opacity, transform, repeat } = data;
9364
+ let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
9319
9365
  if (sx) {
9320
9366
  imageMatrix = get$1();
9321
9367
  copy$1(imageMatrix, transform);
@@ -9358,7 +9404,7 @@ var LeaferUI = (function (exports) {
9358
9404
  }
9359
9405
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
9360
9406
  }
9361
- const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, opacity);
9407
+ const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, data.opacity, data.filters);
9362
9408
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || 'no-repeat'), imageMatrix, paint);
9363
9409
  paint.style = pattern;
9364
9410
  paint.patternId = id;
@@ -9402,7 +9448,7 @@ var LeaferUI = (function (exports) {
9402
9448
  canvas.opacity *= data.opacity;
9403
9449
  if (data.transform)
9404
9450
  canvas.transform(data.transform);
9405
- canvas.drawImage(paint.image.view, 0, 0, data.width, data.height);
9451
+ canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
9406
9452
  canvas.restore();
9407
9453
  return true;
9408
9454
  }
@@ -9412,7 +9458,7 @@ var LeaferUI = (function (exports) {
9412
9458
  }
9413
9459
  else {
9414
9460
  if (!paint.patternTask) {
9415
- paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, undefined, undefined, function* () {
9461
+ paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
9416
9462
  paint.patternTask = null;
9417
9463
  if (canvas.bounds.hit(ui.__nowWorld))
9418
9464
  createPattern(ui, paint, pixelRatio);
@@ -10303,6 +10349,7 @@ var LeaferUI = (function (exports) {
10303
10349
  exports.Eventer = Eventer;
10304
10350
  exports.Export = Export;
10305
10351
  exports.FileHelper = FileHelper;
10352
+ exports.Filter = Filter;
10306
10353
  exports.FrameData = FrameData;
10307
10354
  exports.GroupData = GroupData;
10308
10355
  exports.ImageData = ImageData;
@@ -10364,6 +10411,7 @@ var LeaferUI = (function (exports) {
10364
10411
  exports.RenderEvent = RenderEvent;
10365
10412
  exports.Renderer = Renderer;
10366
10413
  exports.ResizeEvent = ResizeEvent;
10414
+ exports.Resource = Resource;
10367
10415
  exports.Run = Run;
10368
10416
  exports.StarData = StarData;
10369
10417
  exports.State = State;