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.
@@ -1374,7 +1374,7 @@ function getNameList(name) {
1374
1374
  }
1375
1375
  const D$4 = Debug;
1376
1376
 
1377
- const debug$e = Debug.get('RunTime');
1377
+ const debug$f = Debug.get('RunTime');
1378
1378
  const Run = {
1379
1379
  currentId: 0,
1380
1380
  currentName: '',
@@ -1383,24 +1383,24 @@ const Run = {
1383
1383
  nameToIdMap: {},
1384
1384
  start(name, microsecond) {
1385
1385
  const id = IncrementId.create(IncrementId.RUNTIME);
1386
- R.currentId = R.idMap[id] = microsecond ? performance.now() : Date.now();
1387
- R.currentName = R.nameMap[id] = name;
1388
- R.nameToIdMap[name] = id;
1386
+ R$1.currentId = R$1.idMap[id] = microsecond ? performance.now() : Date.now();
1387
+ R$1.currentName = R$1.nameMap[id] = name;
1388
+ R$1.nameToIdMap[name] = id;
1389
1389
  return id;
1390
1390
  },
1391
1391
  end(id, microsecond) {
1392
- const time = R.idMap[id], name = R.nameMap[id];
1392
+ const time = R$1.idMap[id], name = R$1.nameMap[id];
1393
1393
  const duration = microsecond ? (performance.now() - time) / 1000 : Date.now() - time;
1394
- R.idMap[id] = R.nameMap[id] = R.nameToIdMap[name] = undefined;
1395
- debug$e.log(name, duration, 'ms');
1394
+ R$1.idMap[id] = R$1.nameMap[id] = R$1.nameToIdMap[name] = undefined;
1395
+ debug$f.log(name, duration, 'ms');
1396
1396
  },
1397
1397
  endOfName(name, microsecond) {
1398
- const id = R.nameToIdMap[name];
1398
+ const id = R$1.nameToIdMap[name];
1399
1399
  if (id !== undefined)
1400
- R.end(id, microsecond);
1400
+ R$1.end(id, microsecond);
1401
1401
  }
1402
1402
  };
1403
- const R = Run;
1403
+ const R$1 = Run;
1404
1404
 
1405
1405
  const check = [];
1406
1406
  const Plugin = {
@@ -1421,18 +1421,18 @@ const Plugin = {
1421
1421
  };
1422
1422
  setTimeout(() => check.forEach(name => Plugin.has(name, true)));
1423
1423
 
1424
- const debug$d = Debug.get('UICreator');
1424
+ const debug$e = Debug.get('UICreator');
1425
1425
  const UICreator = {
1426
1426
  list: {},
1427
1427
  register(UI) {
1428
1428
  const { __tag: tag } = UI.prototype;
1429
1429
  if (list$1[tag])
1430
- debug$d.repeat(tag);
1430
+ debug$e.repeat(tag);
1431
1431
  list$1[tag] = UI;
1432
1432
  },
1433
1433
  get(tag, data, x, y, width, height) {
1434
1434
  if (!list$1[tag])
1435
- debug$d.error('not register ' + tag);
1435
+ debug$e.error('not register ' + tag);
1436
1436
  const ui = new list$1[tag](data);
1437
1437
  if (x !== undefined) {
1438
1438
  ui.x = x;
@@ -1448,7 +1448,7 @@ const UICreator = {
1448
1448
  };
1449
1449
  const { list: list$1 } = UICreator;
1450
1450
 
1451
- const debug$c = Debug.get('EventCreator');
1451
+ const debug$d = Debug.get('EventCreator');
1452
1452
  const EventCreator = {
1453
1453
  nameList: {},
1454
1454
  register(Event) {
@@ -1456,7 +1456,7 @@ const EventCreator = {
1456
1456
  Object.keys(Event).forEach(key => {
1457
1457
  name = Event[key];
1458
1458
  if (typeof name === 'string')
1459
- nameList[name] && debug$c.repeat(name), nameList[name] = Event;
1459
+ nameList[name] && debug$d.repeat(name), nameList[name] = Event;
1460
1460
  });
1461
1461
  },
1462
1462
  changeName(oldName, newName) {
@@ -1533,10 +1533,10 @@ const DataHelper = {
1533
1533
  Object.keys(merge).forEach(key => {
1534
1534
  var _a, _b;
1535
1535
  value = merge[key];
1536
- if ((value === null || value === undefined ? undefined : value.constructor) === Object && ((_a = t[key]) === null || _a === undefined ? undefined : _a.constructor) === Object)
1536
+ if ((value === null || value === void 0 ? void 0 : value.constructor) === Object && ((_a = t[key]) === null || _a === void 0 ? void 0 : _a.constructor) === Object)
1537
1537
  return assign(t[key], merge[key], exclude && exclude[key]);
1538
1538
  if (exclude && (key in exclude)) {
1539
- if (((_b = exclude[key]) === null || _b === undefined ? undefined : _b.constructor) === Object)
1539
+ if (((_b = exclude[key]) === null || _b === void 0 ? void 0 : _b.constructor) === Object)
1540
1540
  assign(t[key] = {}, merge[key], exclude[key]);
1541
1541
  return;
1542
1542
  }
@@ -1660,7 +1660,7 @@ class LeafData {
1660
1660
  const t = this;
1661
1661
  if (t.blendMode === 'pass-through') {
1662
1662
  const leaf = this.__leaf;
1663
- if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser) {
1663
+ if ((t.opacity < 1 && (leaf.isBranch || t.__hasMultiPaint)) || leaf.__hasEraser || t.eraser || t.filter) {
1664
1664
  t.__single = true;
1665
1665
  }
1666
1666
  else if (t.__single) {
@@ -1773,7 +1773,7 @@ let Canvas$1 = class Canvas {
1773
1773
  }
1774
1774
  setTransform(_a, _b, _c, _d, _e, _f) { }
1775
1775
  resetTransform() { }
1776
- getTransform() { return undefined; }
1776
+ getTransform() { return void 0; }
1777
1777
  save() { }
1778
1778
  restore() { }
1779
1779
  transform(a, b, c, d, e, f) {
@@ -1830,12 +1830,12 @@ let Canvas$1 = class Canvas {
1830
1830
  ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) { }
1831
1831
  rect(_x, _y, _width, _height) { }
1832
1832
  roundRect(_x, _y, _width, _height, _radius) { }
1833
- createConicGradient(_startAngle, _x, _y) { return undefined; }
1834
- createLinearGradient(_x0, _y0, _x1, _y1) { return undefined; }
1835
- createPattern(_image, _repetition) { return undefined; }
1836
- createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return undefined; }
1833
+ createConicGradient(_startAngle, _x, _y) { return void 0; }
1834
+ createLinearGradient(_x0, _y0, _x1, _y1) { return void 0; }
1835
+ createPattern(_image, _repetition) { return void 0; }
1836
+ createRadialGradient(_x0, _y0, _r0, _x1, _y1, _r1) { return void 0; }
1837
1837
  fillText(_text, _x, _y, _maxWidth) { }
1838
- measureText(_text) { return undefined; }
1838
+ measureText(_text) { return void 0; }
1839
1839
  strokeText(_text, _x, _y, _maxWidth) { }
1840
1840
  destroy() {
1841
1841
  this.context = null;
@@ -1843,79 +1843,79 @@ let Canvas$1 = class Canvas {
1843
1843
  };
1844
1844
  __decorate([
1845
1845
  contextAttr('imageSmoothingEnabled')
1846
- ], Canvas$1.prototype, "smooth", undefined);
1846
+ ], Canvas$1.prototype, "smooth", void 0);
1847
1847
  __decorate([
1848
1848
  contextAttr('imageSmoothingQuality')
1849
- ], Canvas$1.prototype, "smoothLevel", undefined);
1849
+ ], Canvas$1.prototype, "smoothLevel", void 0);
1850
1850
  __decorate([
1851
1851
  contextAttr('globalAlpha')
1852
- ], Canvas$1.prototype, "opacity", undefined);
1852
+ ], Canvas$1.prototype, "opacity", void 0);
1853
1853
  __decorate([
1854
1854
  contextAttr()
1855
- ], Canvas$1.prototype, "fillStyle", undefined);
1855
+ ], Canvas$1.prototype, "fillStyle", void 0);
1856
1856
  __decorate([
1857
1857
  contextAttr()
1858
- ], Canvas$1.prototype, "strokeStyle", undefined);
1858
+ ], Canvas$1.prototype, "strokeStyle", void 0);
1859
1859
  __decorate([
1860
1860
  contextAttr('lineWidth')
1861
- ], Canvas$1.prototype, "strokeWidth", undefined);
1861
+ ], Canvas$1.prototype, "strokeWidth", void 0);
1862
1862
  __decorate([
1863
1863
  contextAttr('lineCap')
1864
- ], Canvas$1.prototype, "strokeCap", undefined);
1864
+ ], Canvas$1.prototype, "strokeCap", void 0);
1865
1865
  __decorate([
1866
1866
  contextAttr('lineJoin')
1867
- ], Canvas$1.prototype, "strokeJoin", undefined);
1867
+ ], Canvas$1.prototype, "strokeJoin", void 0);
1868
1868
  __decorate([
1869
1869
  contextAttr('lineDashOffset')
1870
- ], Canvas$1.prototype, "dashOffset", undefined);
1870
+ ], Canvas$1.prototype, "dashOffset", void 0);
1871
1871
  __decorate([
1872
1872
  contextAttr()
1873
- ], Canvas$1.prototype, "miterLimit", undefined);
1873
+ ], Canvas$1.prototype, "miterLimit", void 0);
1874
1874
  __decorate([
1875
1875
  contextAttr()
1876
- ], Canvas$1.prototype, "shadowBlur", undefined);
1876
+ ], Canvas$1.prototype, "shadowBlur", void 0);
1877
1877
  __decorate([
1878
1878
  contextAttr()
1879
- ], Canvas$1.prototype, "shadowColor", undefined);
1879
+ ], Canvas$1.prototype, "shadowColor", void 0);
1880
1880
  __decorate([
1881
1881
  contextAttr()
1882
- ], Canvas$1.prototype, "shadowOffsetX", undefined);
1882
+ ], Canvas$1.prototype, "shadowOffsetX", void 0);
1883
1883
  __decorate([
1884
1884
  contextAttr()
1885
- ], Canvas$1.prototype, "shadowOffsetY", undefined);
1885
+ ], Canvas$1.prototype, "shadowOffsetY", void 0);
1886
1886
  __decorate([
1887
1887
  contextAttr()
1888
- ], Canvas$1.prototype, "filter", undefined);
1888
+ ], Canvas$1.prototype, "filter", void 0);
1889
1889
  __decorate([
1890
1890
  contextAttr()
1891
- ], Canvas$1.prototype, "font", undefined);
1891
+ ], Canvas$1.prototype, "font", void 0);
1892
1892
  __decorate([
1893
1893
  contextAttr()
1894
- ], Canvas$1.prototype, "fontKerning", undefined);
1894
+ ], Canvas$1.prototype, "fontKerning", void 0);
1895
1895
  __decorate([
1896
1896
  contextAttr()
1897
- ], Canvas$1.prototype, "fontStretch", undefined);
1897
+ ], Canvas$1.prototype, "fontStretch", void 0);
1898
1898
  __decorate([
1899
1899
  contextAttr()
1900
- ], Canvas$1.prototype, "fontVariantCaps", undefined);
1900
+ ], Canvas$1.prototype, "fontVariantCaps", void 0);
1901
1901
  __decorate([
1902
1902
  contextAttr()
1903
- ], Canvas$1.prototype, "textAlign", undefined);
1903
+ ], Canvas$1.prototype, "textAlign", void 0);
1904
1904
  __decorate([
1905
1905
  contextAttr()
1906
- ], Canvas$1.prototype, "textBaseline", undefined);
1906
+ ], Canvas$1.prototype, "textBaseline", void 0);
1907
1907
  __decorate([
1908
1908
  contextAttr()
1909
- ], Canvas$1.prototype, "textRendering", undefined);
1909
+ ], Canvas$1.prototype, "textRendering", void 0);
1910
1910
  __decorate([
1911
1911
  contextAttr()
1912
- ], Canvas$1.prototype, "wordSpacing", undefined);
1912
+ ], Canvas$1.prototype, "wordSpacing", void 0);
1913
1913
  __decorate([
1914
1914
  contextAttr()
1915
- ], Canvas$1.prototype, "letterSpacing", undefined);
1915
+ ], Canvas$1.prototype, "letterSpacing", void 0);
1916
1916
  __decorate([
1917
1917
  contextAttr()
1918
- ], Canvas$1.prototype, "direction", undefined);
1918
+ ], Canvas$1.prototype, "direction", void 0);
1919
1919
  __decorate([
1920
1920
  contextMethod()
1921
1921
  ], Canvas$1.prototype, "setTransform", null);
@@ -2612,7 +2612,7 @@ const EllipseHelper = {
2612
2612
  const { M: M$4, m, L: L$5, l, H, h, V, v, C: C$4, c, S, s, Q: Q$3, q, T, t, A, a, Z: Z$4, z, N: N$3, D: D$3, X: X$3, G: G$3, F: F$4, O: O$3, P: P$3, U: U$3 } = PathCommandMap;
2613
2613
  const { rect: rect$2, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2614
2614
  const { ellipticalArc } = EllipseHelper;
2615
- const debug$b = Debug.get('PathConvert');
2615
+ const debug$c = Debug.get('PathConvert');
2616
2616
  const setEndPoint$1 = {};
2617
2617
  const PathConvert = {
2618
2618
  current: { dot: 0 },
@@ -2853,7 +2853,7 @@ const PathConvert = {
2853
2853
  i += 6;
2854
2854
  break;
2855
2855
  default:
2856
- debug$b.error(`command: ${command} [index:${i}]`, old);
2856
+ debug$c.error(`command: ${command} [index:${i}]`, old);
2857
2857
  return data;
2858
2858
  }
2859
2859
  lastCommand = command;
@@ -2962,12 +2962,10 @@ const PathCommandDataHelper = {
2962
2962
  },
2963
2963
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
2964
2964
  if (lastX !== undefined) {
2965
- const maxRadius = tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2) * (getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2) / 2);
2966
- data.push(U$2, x1, y1, x2, y2, min(radius, abs$2(maxRadius)));
2967
- }
2968
- else {
2969
- data.push(U$2, x1, y1, x2, y2, radius);
2965
+ const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
2966
+ radius = min(radius, min(d / 2, d / 2 * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
2970
2967
  }
2968
+ data.push(U$2, x1, y1, x2, y2, radius);
2971
2969
  },
2972
2970
  drawEllipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
2973
2971
  BezierHelper.ellipse(null, x, y, radiusX, radiusY, rotation === undefined ? 0 : rotation, startAngle === undefined ? 0 : startAngle, endAngle === undefined ? 360 : endAngle, anticlockwise, null, null, startPoint);
@@ -3078,7 +3076,7 @@ class PathCreator {
3078
3076
  }
3079
3077
 
3080
3078
  const { M: M$2, L: L$3, C: C$2, Q: Q$1, Z: Z$2, N: N$1, D: D$1, X: X$1, G: G$1, F: F$2, O: O$1, P: P$1, U: U$1 } = PathCommandMap;
3081
- const debug$a = Debug.get('PathDrawer');
3079
+ const debug$b = Debug.get('PathDrawer');
3082
3080
  const PathDrawer = {
3083
3081
  drawPathByData(drawer, data) {
3084
3082
  if (!data)
@@ -3141,7 +3139,7 @@ const PathDrawer = {
3141
3139
  i += 6;
3142
3140
  break;
3143
3141
  default:
3144
- debug$a.error(`command: ${command} [index:${i}]`, data);
3142
+ debug$b.error(`command: ${command} [index:${i}]`, data);
3145
3143
  return;
3146
3144
  }
3147
3145
  }
@@ -3151,7 +3149,7 @@ const PathDrawer = {
3151
3149
  const { M: M$1, L: L$2, C: C$1, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
3152
3150
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3153
3151
  const { addPointBounds, copy: copy$7, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3154
- const debug$9 = Debug.get('PathBounds');
3152
+ const debug$a = Debug.get('PathBounds');
3155
3153
  let radius, radiusX, radiusY;
3156
3154
  const tempPointBounds = {};
3157
3155
  const setPointBounds = {};
@@ -3259,7 +3257,7 @@ const PathBounds = {
3259
3257
  i += 6;
3260
3258
  break;
3261
3259
  default:
3262
- debug$9.error(`command: ${command} [index:${i}]`, data);
3260
+ debug$a.error(`command: ${command} [index:${i}]`, data);
3263
3261
  return;
3264
3262
  }
3265
3263
  }
@@ -3375,7 +3373,7 @@ const FileHelper = {
3375
3373
  const F = FileHelper;
3376
3374
  F.opacityTypes.forEach(type => F.upperCaseTypeMap[type] = type.toUpperCase());
3377
3375
 
3378
- const debug$8 = Debug.get('TaskProcessor');
3376
+ const debug$9 = Debug.get('TaskProcessor');
3379
3377
  class TaskItem {
3380
3378
  constructor(task) {
3381
3379
  this.parallel = true;
@@ -3384,13 +3382,13 @@ class TaskItem {
3384
3382
  this.task = task;
3385
3383
  }
3386
3384
  run() {
3387
- return __awaiter(this, undefined, undefined, function* () {
3385
+ return __awaiter(this, void 0, void 0, function* () {
3388
3386
  try {
3389
3387
  if (this.task && !this.isComplete && this.parent.running)
3390
3388
  yield this.task();
3391
3389
  }
3392
3390
  catch (error) {
3393
- debug$8.error(error);
3391
+ debug$9.error(error);
3394
3392
  }
3395
3393
  });
3396
3394
  }
@@ -3623,18 +3621,58 @@ class TaskProcessor {
3623
3621
  }
3624
3622
  }
3625
3623
 
3626
- const ImageManager = {
3624
+ const debug$8 = Debug.get('Resource');
3625
+ const Resource = {
3626
+ tasker: new TaskProcessor(),
3627
3627
  map: {},
3628
+ get isComplete() { return R.tasker.isComplete; },
3629
+ set(key, value) {
3630
+ if (R.map[key])
3631
+ debug$8.repeat(key);
3632
+ R.map[key] = value;
3633
+ },
3634
+ get(key) {
3635
+ return R.map[key];
3636
+ },
3637
+ remove(key) {
3638
+ const r = R.map[key];
3639
+ if (r) {
3640
+ if (r.destroy)
3641
+ r.destroy();
3642
+ delete R.map[key];
3643
+ }
3644
+ },
3645
+ loadImage(key, format) {
3646
+ return new Promise((resolve, reject) => {
3647
+ const image = this.setImage(key, key, format);
3648
+ image.load(() => resolve(image), (e) => reject(e));
3649
+ });
3650
+ },
3651
+ setImage(key, value, format) {
3652
+ let config;
3653
+ if (typeof value === 'string')
3654
+ config = { url: value };
3655
+ else if (!value.url)
3656
+ config = { url: key, view: value };
3657
+ if (config)
3658
+ format && (config.format = format), value = Creator.image(config);
3659
+ R.set(key, value);
3660
+ return value;
3661
+ },
3662
+ destroy() {
3663
+ R.map = {};
3664
+ }
3665
+ };
3666
+ const R = Resource;
3667
+
3668
+ const ImageManager = {
3669
+ maxRecycled: 100,
3628
3670
  recycledList: [],
3629
- tasker: new TaskProcessor(),
3630
3671
  patternTasker: new TaskProcessor(),
3631
- get isComplete() { return I.tasker.isComplete; },
3632
3672
  get(config) {
3633
- let image = I.map[config.url];
3634
- if (!image) {
3635
- image = Creator.image(config);
3636
- I.map[config.url] = image;
3637
- }
3673
+ let image = Resource.get(config.url);
3674
+ if (!image)
3675
+ Resource.set(config.url, image = Creator.image(config));
3638
3676
  image.use++;
3639
3677
  return image;
3640
3678
  },
@@ -3645,13 +3683,8 @@ const ImageManager = {
3645
3683
  },
3646
3684
  clearRecycled() {
3647
3685
  const list = I.recycledList;
3648
- if (list.length > 100) {
3649
- list.forEach(image => {
3650
- if (!image.use && image.url) {
3651
- delete I.map[image.url];
3652
- image.destroy();
3653
- }
3654
- });
3686
+ if (list.length > I.maxRecycled) {
3687
+ list.forEach(image => (!image.use && image.url) && Resource.remove(image.url));
3655
3688
  list.length = 0;
3656
3689
  }
3657
3690
  },
@@ -3675,7 +3708,6 @@ const ImageManager = {
3675
3708
  return false;
3676
3709
  },
3677
3710
  destroy() {
3678
- I.map = {};
3679
3711
  I.recycledList = [];
3680
3712
  }
3681
3713
  };
@@ -3689,21 +3721,19 @@ class LeaferImage {
3689
3721
  this.use = 0;
3690
3722
  this.waitComplete = [];
3691
3723
  this.innerId = create$1(IMAGE);
3692
- this.config = config || { url: '' };
3693
- this.isSVG = ImageManager.isFormat('svg', config);
3694
- this.hasOpacityPixel = ImageManager.hasOpacityPixel(config);
3724
+ this.config = config || (config = { url: '' });
3725
+ if (config.view) {
3726
+ const { view } = config;
3727
+ this.setView(view.config ? view.view : view);
3728
+ }
3729
+ ImageManager.isFormat('svg', config) && (this.isSVG = true);
3730
+ ImageManager.hasOpacityPixel(config) && (this.hasOpacityPixel = true);
3695
3731
  }
3696
3732
  load(onSuccess, onError) {
3697
3733
  if (!this.loading) {
3698
3734
  this.loading = true;
3699
- ImageManager.tasker.add(() => __awaiter(this, undefined, undefined, function* () {
3700
- return yield Platform.origin.loadImage(this.url).then((img) => {
3701
- this.ready = true;
3702
- this.width = img.naturalWidth || img.width;
3703
- this.height = img.naturalHeight || img.height;
3704
- this.view = img;
3705
- this.onComplete(true);
3706
- }).catch((e) => {
3735
+ Resource.tasker.add(() => __awaiter(this, void 0, void 0, function* () {
3736
+ return yield Platform.origin.loadImage(this.url).then(img => this.setView(img)).catch((e) => {
3707
3737
  this.error = e;
3708
3738
  this.onComplete(false);
3709
3739
  });
@@ -3721,6 +3751,13 @@ class LeaferImage {
3721
3751
  }
3722
3752
  l[index] = l[index + 1] = undefined;
3723
3753
  }
3754
+ setView(img) {
3755
+ this.ready = true;
3756
+ this.width = img.naturalWidth || img.width;
3757
+ this.height = img.naturalHeight || img.height;
3758
+ this.view = img;
3759
+ this.onComplete(true);
3760
+ }
3724
3761
  onComplete(isSuccess) {
3725
3762
  let odd;
3726
3763
  this.waitComplete.forEach((item, index) => {
@@ -3739,6 +3776,9 @@ class LeaferImage {
3739
3776
  this.waitComplete.length = 0;
3740
3777
  this.loading = false;
3741
3778
  }
3779
+ getFull(_filters) {
3780
+ return this.view;
3781
+ }
3742
3782
  getCanvas(width, height, opacity, _filters) {
3743
3783
  width || (width = this.width);
3744
3784
  height || (height = this.height);
@@ -5219,7 +5259,7 @@ const LeafRender = {
5219
5259
  if (this.__.eraser === 'path')
5220
5260
  return this.__renderEraser(canvas, options);
5221
5261
  const tempCanvas = canvas.getSameCanvas(true, true);
5222
- this.__draw(tempCanvas, options);
5262
+ this.__draw(tempCanvas, options, canvas);
5223
5263
  if (this.__worldFlipped) {
5224
5264
  canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, this.__.__blendMode, true);
5225
5265
  }
@@ -6012,7 +6052,7 @@ class LeafLevelList {
6012
6052
  }
6013
6053
  }
6014
6054
 
6015
- const version = "1.4.0";
6055
+ const version = "1.4.2";
6016
6056
 
6017
6057
  const debug$4 = Debug.get('LeaferCanvas');
6018
6058
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6269,7 +6309,7 @@ if (userAgent.indexOf("Firefox") > -1) {
6269
6309
  Platform.intWheelDeltaY = true;
6270
6310
  Platform.syncDomFont = true;
6271
6311
  }
6272
- else if (userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") === -1) {
6312
+ else if (userAgent.indexOf("AppleWebKit") > -1) {
6273
6313
  Platform.fullImageShadow = true;
6274
6314
  }
6275
6315
  if (userAgent.indexOf('Windows') > -1) {
@@ -6538,7 +6578,7 @@ class Layouter {
6538
6578
  }
6539
6579
  partLayout() {
6540
6580
  var _a;
6541
- if (!((_a = this.__updatedList) === null || _a === undefined ? undefined : _a.length))
6581
+ if (!((_a = this.__updatedList) === null || _a === void 0 ? void 0 : _a.length))
6542
6582
  return;
6543
6583
  const t = Run.start('PartLayout');
6544
6584
  const { target, __updatedList: updateList } = this;
@@ -6907,9 +6947,7 @@ const TextConvert = {};
6907
6947
  const ColorConvert = {};
6908
6948
  const UnitConvert = {
6909
6949
  number(value, percentRefer) {
6910
- if (typeof value === 'object')
6911
- return value.type === 'percent' ? value.value * percentRefer : value.value;
6912
- return value;
6950
+ return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
6913
6951
  }
6914
6952
  };
6915
6953
  const PathArrow = {};
@@ -6917,16 +6955,15 @@ const Paint = {};
6917
6955
  const PaintImage = {};
6918
6956
  const PaintGradient = {};
6919
6957
  const Effect = {};
6958
+ const Filter = {
6959
+ apply() { Plugin.need('filter'); }
6960
+ };
6920
6961
  const Export = {};
6921
6962
  const State = {
6922
- setStyleName(_leaf, _styleName, _value) { return Plugin.need('state'); },
6923
- set(_leaf, _stateName) { return Plugin.need('state'); }
6924
- };
6925
- const Transition = {
6926
- list: {},
6927
- register(attrName, fn) { Transition.list[attrName] = fn; },
6928
- get(attrName) { return Transition.list[attrName]; }
6963
+ setStyleName() { return Plugin.need('state'); },
6964
+ set() { return Plugin.need('state'); }
6929
6965
  };
6966
+ const Transition = {};
6930
6967
 
6931
6968
  const { parse, objectToCanvasData } = PathConvert;
6932
6969
  const emptyPaint = {};
@@ -7033,24 +7070,13 @@ class UIData extends LeafData {
7033
7070
  }
7034
7071
  }
7035
7072
  setShadow(value) {
7036
- this.__setInput('shadow', value);
7037
- if (value instanceof Array) {
7038
- if (value.some((item) => item.visible === false))
7039
- value = value.filter((item) => item.visible !== false);
7040
- this._shadow = value.length ? value : null;
7041
- }
7042
- else
7043
- this._shadow = value && value.visible !== false ? [value] : null;
7073
+ setArray(this, 'shadow', value);
7044
7074
  }
7045
7075
  setInnerShadow(value) {
7046
- this.__setInput('innerShadow', value);
7047
- if (value instanceof Array) {
7048
- if (value.some((item) => item.visible === false))
7049
- value = value.filter((item) => item.visible !== false);
7050
- this._innerShadow = value.length ? value : null;
7051
- }
7052
- else
7053
- this._innerShadow = value && value.visible !== false ? [value] : null;
7076
+ setArray(this, 'innerShadow', value);
7077
+ }
7078
+ setFilter(value) {
7079
+ setArray(this, 'filter', value);
7054
7080
  }
7055
7081
  __computePaint() {
7056
7082
  const { fill, stroke } = this.__input;
@@ -7061,6 +7087,17 @@ class UIData extends LeafData {
7061
7087
  this.__needComputePaint = false;
7062
7088
  }
7063
7089
  }
7090
+ function setArray(data, key, value) {
7091
+ data.__setInput(key, value);
7092
+ if (value instanceof Array) {
7093
+ if (value.some((item) => item.visible === false))
7094
+ value = value.filter((item) => item.visible !== false);
7095
+ value.length || (value = null);
7096
+ }
7097
+ else
7098
+ value = value && value.visible !== false ? [value] : null;
7099
+ data['_' + key] = value;
7100
+ }
7064
7101
 
7065
7102
  class GroupData extends UIData {
7066
7103
  }
@@ -7183,11 +7220,13 @@ const UIBounds = {
7183
7220
  },
7184
7221
  __updateRenderSpread() {
7185
7222
  let width = 0;
7186
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7223
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7187
7224
  if (shadow)
7188
7225
  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));
7189
7226
  if (blur)
7190
7227
  width = Math.max(width, blur);
7228
+ if (filter)
7229
+ width += Filter.getSpread(filter);
7191
7230
  let shapeWidth = width = Math.ceil(width);
7192
7231
  if (innerShadow)
7193
7232
  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));
@@ -7202,8 +7241,8 @@ const UIRender = {
7202
7241
  __updateChange() {
7203
7242
  const data = this.__;
7204
7243
  if (data.__useEffect) {
7205
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7206
- data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur);
7244
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7245
+ data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
7207
7246
  }
7208
7247
  data.__checkSingle();
7209
7248
  const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
@@ -7217,7 +7256,7 @@ const UIRender = {
7217
7256
  __drawFast(canvas, options) {
7218
7257
  drawFast(this, canvas, options);
7219
7258
  },
7220
- __draw(canvas, options) {
7259
+ __draw(canvas, options, originCanvas) {
7221
7260
  const data = this.__;
7222
7261
  if (data.__complex) {
7223
7262
  if (data.__needComputePaint)
@@ -7227,7 +7266,7 @@ const UIRender = {
7227
7266
  if (data.__useEffect) {
7228
7267
  const shape = Paint.shape(this, canvas, options);
7229
7268
  this.__nowWorld = this.__getNowWorld(options);
7230
- const { shadow, innerShadow } = data;
7269
+ const { shadow, innerShadow, filter } = data;
7231
7270
  if (shadow)
7232
7271
  Effect.shadow(this, canvas, shape);
7233
7272
  if (fill)
@@ -7238,6 +7277,8 @@ const UIRender = {
7238
7277
  Effect.innerShadow(this, canvas, shape);
7239
7278
  if (stroke)
7240
7279
  data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
7280
+ if (filter)
7281
+ Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
7241
7282
  if (shape.worldCanvas)
7242
7283
  shape.worldCanvas.recycle();
7243
7284
  shape.canvas.recycle();
@@ -7457,199 +7498,202 @@ let UI = UI_1 = class UI extends Leaf {
7457
7498
  };
7458
7499
  __decorate([
7459
7500
  dataProcessor(UIData)
7460
- ], UI.prototype, "__", undefined);
7501
+ ], UI.prototype, "__", void 0);
7461
7502
  __decorate([
7462
7503
  zoomLayerType()
7463
- ], UI.prototype, "zoomLayer", undefined);
7504
+ ], UI.prototype, "zoomLayer", void 0);
7464
7505
  __decorate([
7465
7506
  dataType('')
7466
- ], UI.prototype, "id", undefined);
7507
+ ], UI.prototype, "id", void 0);
7467
7508
  __decorate([
7468
7509
  dataType('')
7469
- ], UI.prototype, "name", undefined);
7510
+ ], UI.prototype, "name", void 0);
7470
7511
  __decorate([
7471
7512
  dataType('')
7472
- ], UI.prototype, "className", undefined);
7513
+ ], UI.prototype, "className", void 0);
7473
7514
  __decorate([
7474
7515
  surfaceType('pass-through')
7475
- ], UI.prototype, "blendMode", undefined);
7516
+ ], UI.prototype, "blendMode", void 0);
7476
7517
  __decorate([
7477
7518
  opacityType(1)
7478
- ], UI.prototype, "opacity", undefined);
7519
+ ], UI.prototype, "opacity", void 0);
7479
7520
  __decorate([
7480
7521
  visibleType(true)
7481
- ], UI.prototype, "visible", undefined);
7522
+ ], UI.prototype, "visible", void 0);
7482
7523
  __decorate([
7483
7524
  surfaceType(false)
7484
- ], UI.prototype, "locked", undefined);
7525
+ ], UI.prototype, "locked", void 0);
7485
7526
  __decorate([
7486
7527
  sortType(0)
7487
- ], UI.prototype, "zIndex", undefined);
7528
+ ], UI.prototype, "zIndex", void 0);
7488
7529
  __decorate([
7489
7530
  maskType(false)
7490
- ], UI.prototype, "mask", undefined);
7531
+ ], UI.prototype, "mask", void 0);
7491
7532
  __decorate([
7492
7533
  eraserType(false)
7493
- ], UI.prototype, "eraser", undefined);
7534
+ ], UI.prototype, "eraser", void 0);
7494
7535
  __decorate([
7495
7536
  positionType(0, true)
7496
- ], UI.prototype, "x", undefined);
7537
+ ], UI.prototype, "x", void 0);
7497
7538
  __decorate([
7498
7539
  positionType(0, true)
7499
- ], UI.prototype, "y", undefined);
7540
+ ], UI.prototype, "y", void 0);
7500
7541
  __decorate([
7501
7542
  boundsType(100, true)
7502
- ], UI.prototype, "width", undefined);
7543
+ ], UI.prototype, "width", void 0);
7503
7544
  __decorate([
7504
7545
  boundsType(100, true)
7505
- ], UI.prototype, "height", undefined);
7546
+ ], UI.prototype, "height", void 0);
7506
7547
  __decorate([
7507
7548
  scaleType(1, true)
7508
- ], UI.prototype, "scaleX", undefined);
7549
+ ], UI.prototype, "scaleX", void 0);
7509
7550
  __decorate([
7510
7551
  scaleType(1, true)
7511
- ], UI.prototype, "scaleY", undefined);
7552
+ ], UI.prototype, "scaleY", void 0);
7512
7553
  __decorate([
7513
7554
  rotationType(0, true)
7514
- ], UI.prototype, "rotation", undefined);
7555
+ ], UI.prototype, "rotation", void 0);
7515
7556
  __decorate([
7516
7557
  rotationType(0, true)
7517
- ], UI.prototype, "skewX", undefined);
7558
+ ], UI.prototype, "skewX", void 0);
7518
7559
  __decorate([
7519
7560
  rotationType(0, true)
7520
- ], UI.prototype, "skewY", undefined);
7561
+ ], UI.prototype, "skewY", void 0);
7521
7562
  __decorate([
7522
7563
  positionType(0, true)
7523
- ], UI.prototype, "offsetX", undefined);
7564
+ ], UI.prototype, "offsetX", void 0);
7524
7565
  __decorate([
7525
7566
  positionType(0, true)
7526
- ], UI.prototype, "offsetY", undefined);
7567
+ ], UI.prototype, "offsetY", void 0);
7527
7568
  __decorate([
7528
7569
  positionType(0, true)
7529
- ], UI.prototype, "scrollX", undefined);
7570
+ ], UI.prototype, "scrollX", void 0);
7530
7571
  __decorate([
7531
7572
  positionType(0, true)
7532
- ], UI.prototype, "scrollY", undefined);
7573
+ ], UI.prototype, "scrollY", void 0);
7533
7574
  __decorate([
7534
7575
  autoLayoutType()
7535
- ], UI.prototype, "origin", undefined);
7576
+ ], UI.prototype, "origin", void 0);
7536
7577
  __decorate([
7537
7578
  autoLayoutType()
7538
- ], UI.prototype, "around", undefined);
7579
+ ], UI.prototype, "around", void 0);
7539
7580
  __decorate([
7540
7581
  dataType(false)
7541
- ], UI.prototype, "lazy", undefined);
7582
+ ], UI.prototype, "lazy", void 0);
7542
7583
  __decorate([
7543
7584
  naturalBoundsType(1)
7544
- ], UI.prototype, "pixelRatio", undefined);
7585
+ ], UI.prototype, "pixelRatio", void 0);
7545
7586
  __decorate([
7546
7587
  pathInputType()
7547
- ], UI.prototype, "path", undefined);
7588
+ ], UI.prototype, "path", void 0);
7548
7589
  __decorate([
7549
7590
  pathType()
7550
- ], UI.prototype, "windingRule", undefined);
7591
+ ], UI.prototype, "windingRule", void 0);
7551
7592
  __decorate([
7552
7593
  pathType(true)
7553
- ], UI.prototype, "closed", undefined);
7594
+ ], UI.prototype, "closed", void 0);
7554
7595
  __decorate([
7555
7596
  boundsType(0)
7556
- ], UI.prototype, "padding", undefined);
7597
+ ], UI.prototype, "padding", void 0);
7557
7598
  __decorate([
7558
7599
  boundsType(false)
7559
- ], UI.prototype, "lockRatio", undefined);
7600
+ ], UI.prototype, "lockRatio", void 0);
7560
7601
  __decorate([
7561
7602
  boundsType()
7562
- ], UI.prototype, "widthRange", undefined);
7603
+ ], UI.prototype, "widthRange", void 0);
7563
7604
  __decorate([
7564
7605
  boundsType()
7565
- ], UI.prototype, "heightRange", undefined);
7606
+ ], UI.prototype, "heightRange", void 0);
7566
7607
  __decorate([
7567
7608
  dataType(false)
7568
- ], UI.prototype, "draggable", undefined);
7609
+ ], UI.prototype, "draggable", void 0);
7569
7610
  __decorate([
7570
7611
  dataType()
7571
- ], UI.prototype, "dragBounds", undefined);
7612
+ ], UI.prototype, "dragBounds", void 0);
7572
7613
  __decorate([
7573
7614
  dataType(false)
7574
- ], UI.prototype, "editable", undefined);
7615
+ ], UI.prototype, "editable", void 0);
7575
7616
  __decorate([
7576
7617
  hitType(true)
7577
- ], UI.prototype, "hittable", undefined);
7618
+ ], UI.prototype, "hittable", void 0);
7578
7619
  __decorate([
7579
7620
  hitType('path')
7580
- ], UI.prototype, "hitFill", undefined);
7621
+ ], UI.prototype, "hitFill", void 0);
7581
7622
  __decorate([
7582
7623
  strokeType('path')
7583
- ], UI.prototype, "hitStroke", undefined);
7624
+ ], UI.prototype, "hitStroke", void 0);
7584
7625
  __decorate([
7585
7626
  hitType(false)
7586
- ], UI.prototype, "hitBox", undefined);
7627
+ ], UI.prototype, "hitBox", void 0);
7587
7628
  __decorate([
7588
7629
  hitType(true)
7589
- ], UI.prototype, "hitChildren", undefined);
7630
+ ], UI.prototype, "hitChildren", void 0);
7590
7631
  __decorate([
7591
7632
  hitType(true)
7592
- ], UI.prototype, "hitSelf", undefined);
7633
+ ], UI.prototype, "hitSelf", void 0);
7593
7634
  __decorate([
7594
7635
  hitType()
7595
- ], UI.prototype, "hitRadius", undefined);
7636
+ ], UI.prototype, "hitRadius", void 0);
7596
7637
  __decorate([
7597
7638
  cursorType('')
7598
- ], UI.prototype, "cursor", undefined);
7639
+ ], UI.prototype, "cursor", void 0);
7599
7640
  __decorate([
7600
7641
  surfaceType()
7601
- ], UI.prototype, "fill", undefined);
7642
+ ], UI.prototype, "fill", void 0);
7602
7643
  __decorate([
7603
7644
  strokeType()
7604
- ], UI.prototype, "stroke", undefined);
7645
+ ], UI.prototype, "stroke", void 0);
7605
7646
  __decorate([
7606
7647
  strokeType('inside')
7607
- ], UI.prototype, "strokeAlign", undefined);
7648
+ ], UI.prototype, "strokeAlign", void 0);
7608
7649
  __decorate([
7609
7650
  strokeType(1)
7610
- ], UI.prototype, "strokeWidth", undefined);
7651
+ ], UI.prototype, "strokeWidth", void 0);
7611
7652
  __decorate([
7612
7653
  strokeType(false)
7613
- ], UI.prototype, "strokeWidthFixed", undefined);
7654
+ ], UI.prototype, "strokeWidthFixed", void 0);
7614
7655
  __decorate([
7615
7656
  strokeType('none')
7616
- ], UI.prototype, "strokeCap", undefined);
7657
+ ], UI.prototype, "strokeCap", void 0);
7617
7658
  __decorate([
7618
7659
  strokeType('miter')
7619
- ], UI.prototype, "strokeJoin", undefined);
7660
+ ], UI.prototype, "strokeJoin", void 0);
7620
7661
  __decorate([
7621
7662
  strokeType()
7622
- ], UI.prototype, "dashPattern", undefined);
7663
+ ], UI.prototype, "dashPattern", void 0);
7623
7664
  __decorate([
7624
7665
  strokeType()
7625
- ], UI.prototype, "dashOffset", undefined);
7666
+ ], UI.prototype, "dashOffset", void 0);
7626
7667
  __decorate([
7627
7668
  strokeType(10)
7628
- ], UI.prototype, "miterLimit", undefined);
7669
+ ], UI.prototype, "miterLimit", void 0);
7629
7670
  __decorate([
7630
7671
  pathType(0)
7631
- ], UI.prototype, "cornerRadius", undefined);
7672
+ ], UI.prototype, "cornerRadius", void 0);
7632
7673
  __decorate([
7633
7674
  pathType()
7634
- ], UI.prototype, "cornerSmoothing", undefined);
7675
+ ], UI.prototype, "cornerSmoothing", void 0);
7676
+ __decorate([
7677
+ effectType()
7678
+ ], UI.prototype, "shadow", void 0);
7635
7679
  __decorate([
7636
7680
  effectType()
7637
- ], UI.prototype, "shadow", undefined);
7681
+ ], UI.prototype, "innerShadow", void 0);
7638
7682
  __decorate([
7639
7683
  effectType()
7640
- ], UI.prototype, "innerShadow", undefined);
7684
+ ], UI.prototype, "blur", void 0);
7641
7685
  __decorate([
7642
7686
  effectType()
7643
- ], UI.prototype, "blur", undefined);
7687
+ ], UI.prototype, "backgroundBlur", void 0);
7644
7688
  __decorate([
7645
7689
  effectType()
7646
- ], UI.prototype, "backgroundBlur", undefined);
7690
+ ], UI.prototype, "grayscale", void 0);
7647
7691
  __decorate([
7648
7692
  effectType()
7649
- ], UI.prototype, "grayscale", undefined);
7693
+ ], UI.prototype, "filter", void 0);
7650
7694
  __decorate([
7651
7695
  dataType({})
7652
- ], UI.prototype, "data", undefined);
7696
+ ], UI.prototype, "data", void 0);
7653
7697
  __decorate([
7654
7698
  rewrite(Leaf.prototype.reset)
7655
7699
  ], UI.prototype, "reset", null);
@@ -7710,7 +7754,7 @@ let Group = class Group extends UI {
7710
7754
  };
7711
7755
  __decorate([
7712
7756
  dataProcessor(GroupData)
7713
- ], Group.prototype, "__", undefined);
7757
+ ], Group.prototype, "__", void 0);
7714
7758
  Group = __decorate([
7715
7759
  useModule(Branch),
7716
7760
  registerUI()
@@ -7723,7 +7767,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7723
7767
  get isApp() { return false; }
7724
7768
  get app() { return this.parent || this; }
7725
7769
  get isLeafer() { return true; }
7726
- get imageReady() { return this.viewReady && ImageManager.isComplete; }
7770
+ get imageReady() { return this.viewReady && Resource.isComplete; }
7727
7771
  get layoutLocked() { return !this.layouter.running; }
7728
7772
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7729
7773
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
@@ -7934,13 +7978,13 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7934
7978
  WaitHelper.run(this.__viewReadyWait);
7935
7979
  }
7936
7980
  __onLayoutEnd() {
7937
- const { grow, growWidth, growHeight } = this.config;
7981
+ const { grow, width: fixedWidth, height: fixedHeight } = this.config;
7938
7982
  if (grow) {
7939
7983
  let { width, height, pixelRatio } = this;
7940
7984
  const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
7941
- if (growWidth !== false)
7985
+ if (!fixedWidth)
7942
7986
  width = Math.max(1, bounds.x + bounds.width);
7943
- if (growHeight !== false)
7987
+ if (!fixedHeight)
7944
7988
  height = Math.max(1, bounds.y + bounds.height);
7945
7989
  this.__doResize({ width, height, pixelRatio });
7946
7990
  }
@@ -8018,7 +8062,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8018
8062
  list.push(item);
8019
8063
  this.requestRender();
8020
8064
  }
8021
- zoom(_zoomType, _padding, _fixedScale) {
8065
+ zoom(_zoomType, _padding, _fixedScale, _transition) {
8022
8066
  return Plugin.need('view');
8023
8067
  }
8024
8068
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8083,10 +8127,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8083
8127
  Leafer.list = new LeafList();
8084
8128
  __decorate([
8085
8129
  dataProcessor(LeaferData)
8086
- ], Leafer.prototype, "__", undefined);
8130
+ ], Leafer.prototype, "__", void 0);
8087
8131
  __decorate([
8088
8132
  boundsType()
8089
- ], Leafer.prototype, "pixelRatio", undefined);
8133
+ ], Leafer.prototype, "pixelRatio", void 0);
8090
8134
  Leafer = Leafer_1 = __decorate([
8091
8135
  registerUI()
8092
8136
  ], Leafer);
@@ -8099,7 +8143,7 @@ let Rect = class Rect extends UI {
8099
8143
  };
8100
8144
  __decorate([
8101
8145
  dataProcessor(RectData)
8102
- ], Rect.prototype, "__", undefined);
8146
+ ], Rect.prototype, "__", void 0);
8103
8147
  Rect = __decorate([
8104
8148
  useModule(RectRender),
8105
8149
  rewriteAble(),
@@ -8190,13 +8234,13 @@ let Box = class Box extends Group {
8190
8234
  };
8191
8235
  __decorate([
8192
8236
  dataProcessor(BoxData)
8193
- ], Box.prototype, "__", undefined);
8237
+ ], Box.prototype, "__", void 0);
8194
8238
  __decorate([
8195
8239
  dataType(false)
8196
- ], Box.prototype, "resizeChildren", undefined);
8240
+ ], Box.prototype, "resizeChildren", void 0);
8197
8241
  __decorate([
8198
8242
  affectRenderBoundsType('show')
8199
- ], Box.prototype, "overflow", undefined);
8243
+ ], Box.prototype, "overflow", void 0);
8200
8244
  __decorate([
8201
8245
  rewrite(rect.__updateStrokeSpread)
8202
8246
  ], Box.prototype, "__updateStrokeSpread", null);
@@ -8235,13 +8279,13 @@ let Frame = class Frame extends Box {
8235
8279
  };
8236
8280
  __decorate([
8237
8281
  dataProcessor(FrameData)
8238
- ], Frame.prototype, "__", undefined);
8282
+ ], Frame.prototype, "__", void 0);
8239
8283
  __decorate([
8240
8284
  surfaceType('#FFFFFF')
8241
- ], Frame.prototype, "fill", undefined);
8285
+ ], Frame.prototype, "fill", void 0);
8242
8286
  __decorate([
8243
8287
  affectRenderBoundsType('hide')
8244
- ], Frame.prototype, "overflow", undefined);
8288
+ ], Frame.prototype, "overflow", void 0);
8245
8289
  Frame = __decorate([
8246
8290
  registerUI()
8247
8291
  ], Frame);
@@ -8288,16 +8332,16 @@ let Ellipse = class Ellipse extends UI {
8288
8332
  };
8289
8333
  __decorate([
8290
8334
  dataProcessor(EllipseData)
8291
- ], Ellipse.prototype, "__", undefined);
8335
+ ], Ellipse.prototype, "__", void 0);
8292
8336
  __decorate([
8293
8337
  pathType(0)
8294
- ], Ellipse.prototype, "innerRadius", undefined);
8338
+ ], Ellipse.prototype, "innerRadius", void 0);
8295
8339
  __decorate([
8296
8340
  pathType(0)
8297
- ], Ellipse.prototype, "startAngle", undefined);
8341
+ ], Ellipse.prototype, "startAngle", void 0);
8298
8342
  __decorate([
8299
8343
  pathType(0)
8300
- ], Ellipse.prototype, "endAngle", undefined);
8344
+ ], Ellipse.prototype, "endAngle", void 0);
8301
8345
  Ellipse = __decorate([
8302
8346
  registerUI()
8303
8347
  ], Ellipse);
@@ -8356,22 +8400,22 @@ let Line = class Line extends UI {
8356
8400
  };
8357
8401
  __decorate([
8358
8402
  dataProcessor(LineData)
8359
- ], Line.prototype, "__", undefined);
8403
+ ], Line.prototype, "__", void 0);
8360
8404
  __decorate([
8361
8405
  affectStrokeBoundsType('center')
8362
- ], Line.prototype, "strokeAlign", undefined);
8406
+ ], Line.prototype, "strokeAlign", void 0);
8363
8407
  __decorate([
8364
8408
  boundsType(0)
8365
- ], Line.prototype, "height", undefined);
8409
+ ], Line.prototype, "height", void 0);
8366
8410
  __decorate([
8367
8411
  pathType()
8368
- ], Line.prototype, "points", undefined);
8412
+ ], Line.prototype, "points", void 0);
8369
8413
  __decorate([
8370
8414
  pathType(0)
8371
- ], Line.prototype, "curve", undefined);
8415
+ ], Line.prototype, "curve", void 0);
8372
8416
  __decorate([
8373
8417
  pathType(false)
8374
- ], Line.prototype, "closed", undefined);
8418
+ ], Line.prototype, "closed", void 0);
8375
8419
  Line = __decorate([
8376
8420
  registerUI()
8377
8421
  ], Line);
@@ -8404,16 +8448,16 @@ let Polygon = class Polygon extends UI {
8404
8448
  };
8405
8449
  __decorate([
8406
8450
  dataProcessor(PolygonData)
8407
- ], Polygon.prototype, "__", undefined);
8451
+ ], Polygon.prototype, "__", void 0);
8408
8452
  __decorate([
8409
8453
  pathType(3)
8410
- ], Polygon.prototype, "sides", undefined);
8454
+ ], Polygon.prototype, "sides", void 0);
8411
8455
  __decorate([
8412
8456
  pathType()
8413
- ], Polygon.prototype, "points", undefined);
8457
+ ], Polygon.prototype, "points", void 0);
8414
8458
  __decorate([
8415
8459
  pathType(0)
8416
- ], Polygon.prototype, "curve", undefined);
8460
+ ], Polygon.prototype, "curve", void 0);
8417
8461
  __decorate([
8418
8462
  rewrite(line.__updateRenderPath)
8419
8463
  ], Polygon.prototype, "__updateRenderPath", null);
@@ -8445,13 +8489,13 @@ let Star = class Star extends UI {
8445
8489
  };
8446
8490
  __decorate([
8447
8491
  dataProcessor(StarData)
8448
- ], Star.prototype, "__", undefined);
8492
+ ], Star.prototype, "__", void 0);
8449
8493
  __decorate([
8450
8494
  pathType(5)
8451
- ], Star.prototype, "corners", undefined);
8495
+ ], Star.prototype, "corners", void 0);
8452
8496
  __decorate([
8453
8497
  pathType(0.382)
8454
- ], Star.prototype, "innerRadius", undefined);
8498
+ ], Star.prototype, "innerRadius", void 0);
8455
8499
  Star = __decorate([
8456
8500
  registerUI()
8457
8501
  ], Star);
@@ -8473,10 +8517,10 @@ let Image$1 = class Image extends Rect {
8473
8517
  };
8474
8518
  __decorate([
8475
8519
  dataProcessor(ImageData)
8476
- ], Image$1.prototype, "__", undefined);
8520
+ ], Image$1.prototype, "__", void 0);
8477
8521
  __decorate([
8478
8522
  boundsType('')
8479
- ], Image$1.prototype, "url", undefined);
8523
+ ], Image$1.prototype, "url", void 0);
8480
8524
  Image$1 = __decorate([
8481
8525
  registerUI()
8482
8526
  ], Image$1);
@@ -8539,25 +8583,25 @@ let Canvas = class Canvas extends Rect {
8539
8583
  };
8540
8584
  __decorate([
8541
8585
  dataProcessor(CanvasData)
8542
- ], Canvas.prototype, "__", undefined);
8586
+ ], Canvas.prototype, "__", void 0);
8543
8587
  __decorate([
8544
8588
  resizeType(100)
8545
- ], Canvas.prototype, "width", undefined);
8589
+ ], Canvas.prototype, "width", void 0);
8546
8590
  __decorate([
8547
8591
  resizeType(100)
8548
- ], Canvas.prototype, "height", undefined);
8592
+ ], Canvas.prototype, "height", void 0);
8549
8593
  __decorate([
8550
8594
  resizeType(1)
8551
- ], Canvas.prototype, "pixelRatio", undefined);
8595
+ ], Canvas.prototype, "pixelRatio", void 0);
8552
8596
  __decorate([
8553
8597
  resizeType(true)
8554
- ], Canvas.prototype, "smooth", undefined);
8598
+ ], Canvas.prototype, "smooth", void 0);
8555
8599
  __decorate([
8556
8600
  dataType(false)
8557
- ], Canvas.prototype, "safeResize", undefined);
8601
+ ], Canvas.prototype, "safeResize", void 0);
8558
8602
  __decorate([
8559
8603
  resizeType()
8560
- ], Canvas.prototype, "contextSettings", undefined);
8604
+ ], Canvas.prototype, "contextSettings", void 0);
8561
8605
  Canvas = __decorate([
8562
8606
  registerUI()
8563
8607
  ], Canvas);
@@ -8648,76 +8692,76 @@ let Text = class Text extends UI {
8648
8692
  };
8649
8693
  __decorate([
8650
8694
  dataProcessor(TextData)
8651
- ], Text.prototype, "__", undefined);
8695
+ ], Text.prototype, "__", void 0);
8652
8696
  __decorate([
8653
8697
  boundsType(0)
8654
- ], Text.prototype, "width", undefined);
8698
+ ], Text.prototype, "width", void 0);
8655
8699
  __decorate([
8656
8700
  boundsType(0)
8657
- ], Text.prototype, "height", undefined);
8701
+ ], Text.prototype, "height", void 0);
8658
8702
  __decorate([
8659
8703
  dataType(false)
8660
- ], Text.prototype, "resizeFontSize", undefined);
8704
+ ], Text.prototype, "resizeFontSize", void 0);
8661
8705
  __decorate([
8662
8706
  surfaceType('#000000')
8663
- ], Text.prototype, "fill", undefined);
8707
+ ], Text.prototype, "fill", void 0);
8664
8708
  __decorate([
8665
8709
  affectStrokeBoundsType('outside')
8666
- ], Text.prototype, "strokeAlign", undefined);
8710
+ ], Text.prototype, "strokeAlign", void 0);
8667
8711
  __decorate([
8668
8712
  hitType('all')
8669
- ], Text.prototype, "hitFill", undefined);
8713
+ ], Text.prototype, "hitFill", void 0);
8670
8714
  __decorate([
8671
8715
  boundsType('')
8672
- ], Text.prototype, "text", undefined);
8716
+ ], Text.prototype, "text", void 0);
8673
8717
  __decorate([
8674
8718
  boundsType('caption')
8675
- ], Text.prototype, "fontFamily", undefined);
8719
+ ], Text.prototype, "fontFamily", void 0);
8676
8720
  __decorate([
8677
8721
  boundsType(12)
8678
- ], Text.prototype, "fontSize", undefined);
8722
+ ], Text.prototype, "fontSize", void 0);
8679
8723
  __decorate([
8680
8724
  boundsType('normal')
8681
- ], Text.prototype, "fontWeight", undefined);
8725
+ ], Text.prototype, "fontWeight", void 0);
8682
8726
  __decorate([
8683
8727
  boundsType(false)
8684
- ], Text.prototype, "italic", undefined);
8728
+ ], Text.prototype, "italic", void 0);
8685
8729
  __decorate([
8686
8730
  boundsType('none')
8687
- ], Text.prototype, "textCase", undefined);
8731
+ ], Text.prototype, "textCase", void 0);
8688
8732
  __decorate([
8689
8733
  boundsType('none')
8690
- ], Text.prototype, "textDecoration", undefined);
8734
+ ], Text.prototype, "textDecoration", void 0);
8691
8735
  __decorate([
8692
8736
  boundsType(0)
8693
- ], Text.prototype, "letterSpacing", undefined);
8737
+ ], Text.prototype, "letterSpacing", void 0);
8694
8738
  __decorate([
8695
8739
  boundsType({ type: 'percent', value: 1.5 })
8696
- ], Text.prototype, "lineHeight", undefined);
8740
+ ], Text.prototype, "lineHeight", void 0);
8697
8741
  __decorate([
8698
8742
  boundsType(0)
8699
- ], Text.prototype, "paraIndent", undefined);
8743
+ ], Text.prototype, "paraIndent", void 0);
8700
8744
  __decorate([
8701
8745
  boundsType(0)
8702
- ], Text.prototype, "paraSpacing", undefined);
8746
+ ], Text.prototype, "paraSpacing", void 0);
8703
8747
  __decorate([
8704
8748
  boundsType('x')
8705
- ], Text.prototype, "writingMode", undefined);
8749
+ ], Text.prototype, "writingMode", void 0);
8706
8750
  __decorate([
8707
8751
  boundsType('left')
8708
- ], Text.prototype, "textAlign", undefined);
8752
+ ], Text.prototype, "textAlign", void 0);
8709
8753
  __decorate([
8710
8754
  boundsType('top')
8711
- ], Text.prototype, "verticalAlign", undefined);
8755
+ ], Text.prototype, "verticalAlign", void 0);
8712
8756
  __decorate([
8713
8757
  boundsType(true)
8714
- ], Text.prototype, "autoSizeAlign", undefined);
8758
+ ], Text.prototype, "autoSizeAlign", void 0);
8715
8759
  __decorate([
8716
8760
  boundsType('normal')
8717
- ], Text.prototype, "textWrap", undefined);
8761
+ ], Text.prototype, "textWrap", void 0);
8718
8762
  __decorate([
8719
8763
  boundsType('show')
8720
- ], Text.prototype, "textOverflow", undefined);
8764
+ ], Text.prototype, "textOverflow", void 0);
8721
8765
  Text = __decorate([
8722
8766
  registerUI()
8723
8767
  ], Text);
@@ -8730,10 +8774,10 @@ let Path = class Path extends UI {
8730
8774
  };
8731
8775
  __decorate([
8732
8776
  dataProcessor(PathData)
8733
- ], Path.prototype, "__", undefined);
8777
+ ], Path.prototype, "__", void 0);
8734
8778
  __decorate([
8735
8779
  affectStrokeBoundsType('center')
8736
- ], Path.prototype, "strokeAlign", undefined);
8780
+ ], Path.prototype, "strokeAlign", void 0);
8737
8781
  Path = __decorate([
8738
8782
  registerUI()
8739
8783
  ], Path);
@@ -8772,10 +8816,10 @@ let Pen = class Pen extends Group {
8772
8816
  };
8773
8817
  __decorate([
8774
8818
  dataProcessor(PenData)
8775
- ], Pen.prototype, "__", undefined);
8819
+ ], Pen.prototype, "__", void 0);
8776
8820
  __decorate([
8777
8821
  penPathType()
8778
- ], Pen.prototype, "path", undefined);
8822
+ ], Pen.prototype, "path", void 0);
8779
8823
  Pen = __decorate([
8780
8824
  useModule(PathCreator, ['set', 'path', 'paint']),
8781
8825
  registerUI()
@@ -9147,7 +9191,7 @@ function getPatternData(paint, box, image) {
9147
9191
  box = tempBox.set(box).shrink(paint.padding);
9148
9192
  if (paint.mode === 'strench')
9149
9193
  paint.mode = 'stretch';
9150
- const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
9194
+ const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
9151
9195
  const sameBox = box.width === width && box.height === height;
9152
9196
  const data = { mode };
9153
9197
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -9210,6 +9254,8 @@ function getPatternData(paint, box, image) {
9210
9254
  data.height = height;
9211
9255
  if (opacity)
9212
9256
  data.opacity = opacity;
9257
+ if (filters)
9258
+ data.filters = filters;
9213
9259
  if (repeat)
9214
9260
  data.repeat = typeof repeat === 'string' ? (repeat === 'x' ? 'repeat-x' : 'repeat-y') : 'repeat';
9215
9261
  return data;
@@ -9312,7 +9358,7 @@ function createPattern(ui, paint, pixelRatio) {
9312
9358
  scaleX = abs$1(scaleX);
9313
9359
  scaleY = abs$1(scaleY);
9314
9360
  const { image, data } = paint;
9315
- let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, opacity, transform, repeat } = data;
9361
+ let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
9316
9362
  if (sx) {
9317
9363
  imageMatrix = get$1();
9318
9364
  copy$1(imageMatrix, transform);
@@ -9355,7 +9401,7 @@ function createPattern(ui, paint, pixelRatio) {
9355
9401
  }
9356
9402
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
9357
9403
  }
9358
- const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, opacity);
9404
+ const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, data.opacity, data.filters);
9359
9405
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || 'no-repeat'), imageMatrix, paint);
9360
9406
  paint.style = pattern;
9361
9407
  paint.patternId = id;
@@ -9399,7 +9445,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
9399
9445
  canvas.opacity *= data.opacity;
9400
9446
  if (data.transform)
9401
9447
  canvas.transform(data.transform);
9402
- canvas.drawImage(paint.image.view, 0, 0, data.width, data.height);
9448
+ canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
9403
9449
  canvas.restore();
9404
9450
  return true;
9405
9451
  }
@@ -9409,7 +9455,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
9409
9455
  }
9410
9456
  else {
9411
9457
  if (!paint.patternTask) {
9412
- paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, undefined, undefined, function* () {
9458
+ paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
9413
9459
  paint.patternTask = null;
9414
9460
  if (canvas.bounds.hit(ui.__nowWorld))
9415
9461
  createPattern(ui, paint, pixelRatio);
@@ -10276,5 +10322,5 @@ Object.assign(Effect, EffectModule);
10276
10322
 
10277
10323
  useCanvas();
10278
10324
 
10279
- export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Frame, FrameData, Group, GroupData, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
10325
+ export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
10280
10326
  //# sourceMappingURL=web.module.js.map