leafer-draw 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1374,7 +1374,7 @@ function getNameList(name) {
1374
1374
  }
1375
1375
  const D$4 = Debug;
1376
1376
 
1377
- const debug$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,52 @@ 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
+ delete R.map[key];
3639
+ },
3640
+ loadImage(key, format) {
3641
+ return new Promise((resolve, reject) => {
3642
+ const image = this.setImage(key, key, format);
3643
+ image.load(() => resolve(image), (e) => reject(e));
3644
+ });
3645
+ },
3646
+ setImage(key, value, format) {
3647
+ let config;
3648
+ if (typeof value === 'string')
3649
+ config = { url: value };
3650
+ else if (!value.url)
3651
+ config = { url: key, view: value };
3652
+ if (config)
3653
+ format && (config.format = format), value = Creator.image(config);
3654
+ R.set(key, value);
3655
+ return value;
3656
+ },
3657
+ destroy() {
3658
+ R.map = {};
3659
+ }
3660
+ };
3661
+ const R = Resource;
3662
+
3663
+ const ImageManager = {
3628
3664
  recycledList: [],
3629
- tasker: new TaskProcessor(),
3630
3665
  patternTasker: new TaskProcessor(),
3631
- get isComplete() { return I.tasker.isComplete; },
3632
3666
  get(config) {
3633
- let image = I.map[config.url];
3634
- if (!image) {
3635
- image = Creator.image(config);
3636
- I.map[config.url] = image;
3637
- }
3667
+ let image = Resource.get(config.url);
3668
+ if (!image)
3669
+ Resource.set(config.url, image = Creator.image(config));
3638
3670
  image.use++;
3639
3671
  return image;
3640
3672
  },
@@ -3648,7 +3680,7 @@ const ImageManager = {
3648
3680
  if (list.length > 100) {
3649
3681
  list.forEach(image => {
3650
3682
  if (!image.use && image.url) {
3651
- delete I.map[image.url];
3683
+ Resource.remove(image.url);
3652
3684
  image.destroy();
3653
3685
  }
3654
3686
  });
@@ -3675,7 +3707,6 @@ const ImageManager = {
3675
3707
  return false;
3676
3708
  },
3677
3709
  destroy() {
3678
- I.map = {};
3679
3710
  I.recycledList = [];
3680
3711
  }
3681
3712
  };
@@ -3689,21 +3720,19 @@ class LeaferImage {
3689
3720
  this.use = 0;
3690
3721
  this.waitComplete = [];
3691
3722
  this.innerId = create$1(IMAGE);
3692
- this.config = config || { url: '' };
3693
- this.isSVG = ImageManager.isFormat('svg', config);
3694
- this.hasOpacityPixel = ImageManager.hasOpacityPixel(config);
3723
+ this.config = config || (config = { url: '' });
3724
+ if (config.view) {
3725
+ const { view } = config;
3726
+ this.setView(view.config ? view.view : view);
3727
+ }
3728
+ ImageManager.isFormat('svg', config) && (this.isSVG = true);
3729
+ ImageManager.hasOpacityPixel(config) && (this.hasOpacityPixel = true);
3695
3730
  }
3696
3731
  load(onSuccess, onError) {
3697
3732
  if (!this.loading) {
3698
3733
  this.loading = true;
3699
- ImageManager.tasker.add(() => __awaiter(this, undefined, undefined, function* () {
3700
- return yield Platform.origin.loadImage(this.url).then((img) => {
3701
- this.ready = true;
3702
- this.width = img.naturalWidth || img.width;
3703
- this.height = img.naturalHeight || img.height;
3704
- this.view = img;
3705
- this.onComplete(true);
3706
- }).catch((e) => {
3734
+ Resource.tasker.add(() => __awaiter(this, void 0, void 0, function* () {
3735
+ return yield Platform.origin.loadImage(this.url).then(img => this.setView(img)).catch((e) => {
3707
3736
  this.error = e;
3708
3737
  this.onComplete(false);
3709
3738
  });
@@ -3721,6 +3750,13 @@ class LeaferImage {
3721
3750
  }
3722
3751
  l[index] = l[index + 1] = undefined;
3723
3752
  }
3753
+ setView(img) {
3754
+ this.ready = true;
3755
+ this.width = img.naturalWidth || img.width;
3756
+ this.height = img.naturalHeight || img.height;
3757
+ this.view = img;
3758
+ this.onComplete(true);
3759
+ }
3724
3760
  onComplete(isSuccess) {
3725
3761
  let odd;
3726
3762
  this.waitComplete.forEach((item, index) => {
@@ -3739,6 +3775,9 @@ class LeaferImage {
3739
3775
  this.waitComplete.length = 0;
3740
3776
  this.loading = false;
3741
3777
  }
3778
+ getFull(_filters) {
3779
+ return this.view;
3780
+ }
3742
3781
  getCanvas(width, height, opacity, _filters) {
3743
3782
  width || (width = this.width);
3744
3783
  height || (height = this.height);
@@ -5219,7 +5258,7 @@ const LeafRender = {
5219
5258
  if (this.__.eraser === 'path')
5220
5259
  return this.__renderEraser(canvas, options);
5221
5260
  const tempCanvas = canvas.getSameCanvas(true, true);
5222
- this.__draw(tempCanvas, options);
5261
+ this.__draw(tempCanvas, options, canvas);
5223
5262
  if (this.__worldFlipped) {
5224
5263
  canvas.copyWorldByReset(tempCanvas, this.__nowWorld, null, this.__.__blendMode, true);
5225
5264
  }
@@ -6012,7 +6051,7 @@ class LeafLevelList {
6012
6051
  }
6013
6052
  }
6014
6053
 
6015
- const version = "1.4.0";
6054
+ const version = "1.4.1";
6016
6055
 
6017
6056
  const debug$4 = Debug.get('LeaferCanvas');
6018
6057
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6269,7 +6308,7 @@ if (userAgent.indexOf("Firefox") > -1) {
6269
6308
  Platform.intWheelDeltaY = true;
6270
6309
  Platform.syncDomFont = true;
6271
6310
  }
6272
- else if (userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") === -1) {
6311
+ else if (userAgent.indexOf("AppleWebKit") > -1) {
6273
6312
  Platform.fullImageShadow = true;
6274
6313
  }
6275
6314
  if (userAgent.indexOf('Windows') > -1) {
@@ -6538,7 +6577,7 @@ class Layouter {
6538
6577
  }
6539
6578
  partLayout() {
6540
6579
  var _a;
6541
- if (!((_a = this.__updatedList) === null || _a === undefined ? undefined : _a.length))
6580
+ if (!((_a = this.__updatedList) === null || _a === void 0 ? void 0 : _a.length))
6542
6581
  return;
6543
6582
  const t = Run.start('PartLayout');
6544
6583
  const { target, __updatedList: updateList } = this;
@@ -6907,9 +6946,7 @@ const TextConvert = {};
6907
6946
  const ColorConvert = {};
6908
6947
  const UnitConvert = {
6909
6948
  number(value, percentRefer) {
6910
- if (typeof value === 'object')
6911
- return value.type === 'percent' ? value.value * percentRefer : value.value;
6912
- return value;
6949
+ return typeof value === 'object' ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value;
6913
6950
  }
6914
6951
  };
6915
6952
  const PathArrow = {};
@@ -6917,16 +6954,15 @@ const Paint = {};
6917
6954
  const PaintImage = {};
6918
6955
  const PaintGradient = {};
6919
6956
  const Effect = {};
6957
+ const Filter = {
6958
+ apply() { Plugin.need('filter'); }
6959
+ };
6920
6960
  const Export = {};
6921
6961
  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]; }
6962
+ setStyleName() { return Plugin.need('state'); },
6963
+ set() { return Plugin.need('state'); }
6929
6964
  };
6965
+ const Transition = {};
6930
6966
 
6931
6967
  const { parse, objectToCanvasData } = PathConvert;
6932
6968
  const emptyPaint = {};
@@ -7033,24 +7069,13 @@ class UIData extends LeafData {
7033
7069
  }
7034
7070
  }
7035
7071
  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;
7072
+ setArray(this, 'shadow', value);
7044
7073
  }
7045
7074
  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;
7075
+ setArray(this, 'innerShadow', value);
7076
+ }
7077
+ setFilter(value) {
7078
+ setArray(this, 'filter', value);
7054
7079
  }
7055
7080
  __computePaint() {
7056
7081
  const { fill, stroke } = this.__input;
@@ -7061,6 +7086,17 @@ class UIData extends LeafData {
7061
7086
  this.__needComputePaint = false;
7062
7087
  }
7063
7088
  }
7089
+ function setArray(data, key, value) {
7090
+ data.__setInput(key, value);
7091
+ if (value instanceof Array) {
7092
+ if (value.some((item) => item.visible === false))
7093
+ value = value.filter((item) => item.visible !== false);
7094
+ value.length || (value = null);
7095
+ }
7096
+ else
7097
+ value = value && value.visible !== false ? [value] : null;
7098
+ data['_' + key] = value;
7099
+ }
7064
7100
 
7065
7101
  class GroupData extends UIData {
7066
7102
  }
@@ -7183,11 +7219,13 @@ const UIBounds = {
7183
7219
  },
7184
7220
  __updateRenderSpread() {
7185
7221
  let width = 0;
7186
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7222
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7187
7223
  if (shadow)
7188
7224
  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
7225
  if (blur)
7190
7226
  width = Math.max(width, blur);
7227
+ if (filter)
7228
+ width += Filter.getSpread(filter);
7191
7229
  let shapeWidth = width = Math.ceil(width);
7192
7230
  if (innerShadow)
7193
7231
  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 +7240,8 @@ const UIRender = {
7202
7240
  __updateChange() {
7203
7241
  const data = this.__;
7204
7242
  if (data.__useEffect) {
7205
- const { shadow, innerShadow, blur, backgroundBlur } = this.__;
7206
- data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur);
7243
+ const { shadow, innerShadow, blur, backgroundBlur, filter } = this.__;
7244
+ data.__useEffect = !!(shadow || innerShadow || blur || backgroundBlur || filter);
7207
7245
  }
7208
7246
  data.__checkSingle();
7209
7247
  const complex = data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect;
@@ -7217,7 +7255,7 @@ const UIRender = {
7217
7255
  __drawFast(canvas, options) {
7218
7256
  drawFast(this, canvas, options);
7219
7257
  },
7220
- __draw(canvas, options) {
7258
+ __draw(canvas, options, originCanvas) {
7221
7259
  const data = this.__;
7222
7260
  if (data.__complex) {
7223
7261
  if (data.__needComputePaint)
@@ -7227,7 +7265,7 @@ const UIRender = {
7227
7265
  if (data.__useEffect) {
7228
7266
  const shape = Paint.shape(this, canvas, options);
7229
7267
  this.__nowWorld = this.__getNowWorld(options);
7230
- const { shadow, innerShadow } = data;
7268
+ const { shadow, innerShadow, filter } = data;
7231
7269
  if (shadow)
7232
7270
  Effect.shadow(this, canvas, shape);
7233
7271
  if (fill)
@@ -7238,6 +7276,8 @@ const UIRender = {
7238
7276
  Effect.innerShadow(this, canvas, shape);
7239
7277
  if (stroke)
7240
7278
  data.__isStrokes ? Paint.strokes(stroke, this, canvas) : Paint.stroke(stroke, this, canvas);
7279
+ if (filter)
7280
+ Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape);
7241
7281
  if (shape.worldCanvas)
7242
7282
  shape.worldCanvas.recycle();
7243
7283
  shape.canvas.recycle();
@@ -7457,199 +7497,202 @@ let UI = UI_1 = class UI extends Leaf {
7457
7497
  };
7458
7498
  __decorate([
7459
7499
  dataProcessor(UIData)
7460
- ], UI.prototype, "__", undefined);
7500
+ ], UI.prototype, "__", void 0);
7461
7501
  __decorate([
7462
7502
  zoomLayerType()
7463
- ], UI.prototype, "zoomLayer", undefined);
7503
+ ], UI.prototype, "zoomLayer", void 0);
7464
7504
  __decorate([
7465
7505
  dataType('')
7466
- ], UI.prototype, "id", undefined);
7506
+ ], UI.prototype, "id", void 0);
7467
7507
  __decorate([
7468
7508
  dataType('')
7469
- ], UI.prototype, "name", undefined);
7509
+ ], UI.prototype, "name", void 0);
7470
7510
  __decorate([
7471
7511
  dataType('')
7472
- ], UI.prototype, "className", undefined);
7512
+ ], UI.prototype, "className", void 0);
7473
7513
  __decorate([
7474
7514
  surfaceType('pass-through')
7475
- ], UI.prototype, "blendMode", undefined);
7515
+ ], UI.prototype, "blendMode", void 0);
7476
7516
  __decorate([
7477
7517
  opacityType(1)
7478
- ], UI.prototype, "opacity", undefined);
7518
+ ], UI.prototype, "opacity", void 0);
7479
7519
  __decorate([
7480
7520
  visibleType(true)
7481
- ], UI.prototype, "visible", undefined);
7521
+ ], UI.prototype, "visible", void 0);
7482
7522
  __decorate([
7483
7523
  surfaceType(false)
7484
- ], UI.prototype, "locked", undefined);
7524
+ ], UI.prototype, "locked", void 0);
7485
7525
  __decorate([
7486
7526
  sortType(0)
7487
- ], UI.prototype, "zIndex", undefined);
7527
+ ], UI.prototype, "zIndex", void 0);
7488
7528
  __decorate([
7489
7529
  maskType(false)
7490
- ], UI.prototype, "mask", undefined);
7530
+ ], UI.prototype, "mask", void 0);
7491
7531
  __decorate([
7492
7532
  eraserType(false)
7493
- ], UI.prototype, "eraser", undefined);
7533
+ ], UI.prototype, "eraser", void 0);
7494
7534
  __decorate([
7495
7535
  positionType(0, true)
7496
- ], UI.prototype, "x", undefined);
7536
+ ], UI.prototype, "x", void 0);
7497
7537
  __decorate([
7498
7538
  positionType(0, true)
7499
- ], UI.prototype, "y", undefined);
7539
+ ], UI.prototype, "y", void 0);
7500
7540
  __decorate([
7501
7541
  boundsType(100, true)
7502
- ], UI.prototype, "width", undefined);
7542
+ ], UI.prototype, "width", void 0);
7503
7543
  __decorate([
7504
7544
  boundsType(100, true)
7505
- ], UI.prototype, "height", undefined);
7545
+ ], UI.prototype, "height", void 0);
7506
7546
  __decorate([
7507
7547
  scaleType(1, true)
7508
- ], UI.prototype, "scaleX", undefined);
7548
+ ], UI.prototype, "scaleX", void 0);
7509
7549
  __decorate([
7510
7550
  scaleType(1, true)
7511
- ], UI.prototype, "scaleY", undefined);
7551
+ ], UI.prototype, "scaleY", void 0);
7512
7552
  __decorate([
7513
7553
  rotationType(0, true)
7514
- ], UI.prototype, "rotation", undefined);
7554
+ ], UI.prototype, "rotation", void 0);
7515
7555
  __decorate([
7516
7556
  rotationType(0, true)
7517
- ], UI.prototype, "skewX", undefined);
7557
+ ], UI.prototype, "skewX", void 0);
7518
7558
  __decorate([
7519
7559
  rotationType(0, true)
7520
- ], UI.prototype, "skewY", undefined);
7560
+ ], UI.prototype, "skewY", void 0);
7521
7561
  __decorate([
7522
7562
  positionType(0, true)
7523
- ], UI.prototype, "offsetX", undefined);
7563
+ ], UI.prototype, "offsetX", void 0);
7524
7564
  __decorate([
7525
7565
  positionType(0, true)
7526
- ], UI.prototype, "offsetY", undefined);
7566
+ ], UI.prototype, "offsetY", void 0);
7527
7567
  __decorate([
7528
7568
  positionType(0, true)
7529
- ], UI.prototype, "scrollX", undefined);
7569
+ ], UI.prototype, "scrollX", void 0);
7530
7570
  __decorate([
7531
7571
  positionType(0, true)
7532
- ], UI.prototype, "scrollY", undefined);
7572
+ ], UI.prototype, "scrollY", void 0);
7533
7573
  __decorate([
7534
7574
  autoLayoutType()
7535
- ], UI.prototype, "origin", undefined);
7575
+ ], UI.prototype, "origin", void 0);
7536
7576
  __decorate([
7537
7577
  autoLayoutType()
7538
- ], UI.prototype, "around", undefined);
7578
+ ], UI.prototype, "around", void 0);
7539
7579
  __decorate([
7540
7580
  dataType(false)
7541
- ], UI.prototype, "lazy", undefined);
7581
+ ], UI.prototype, "lazy", void 0);
7542
7582
  __decorate([
7543
7583
  naturalBoundsType(1)
7544
- ], UI.prototype, "pixelRatio", undefined);
7584
+ ], UI.prototype, "pixelRatio", void 0);
7545
7585
  __decorate([
7546
7586
  pathInputType()
7547
- ], UI.prototype, "path", undefined);
7587
+ ], UI.prototype, "path", void 0);
7548
7588
  __decorate([
7549
7589
  pathType()
7550
- ], UI.prototype, "windingRule", undefined);
7590
+ ], UI.prototype, "windingRule", void 0);
7551
7591
  __decorate([
7552
7592
  pathType(true)
7553
- ], UI.prototype, "closed", undefined);
7593
+ ], UI.prototype, "closed", void 0);
7554
7594
  __decorate([
7555
7595
  boundsType(0)
7556
- ], UI.prototype, "padding", undefined);
7596
+ ], UI.prototype, "padding", void 0);
7557
7597
  __decorate([
7558
7598
  boundsType(false)
7559
- ], UI.prototype, "lockRatio", undefined);
7599
+ ], UI.prototype, "lockRatio", void 0);
7560
7600
  __decorate([
7561
7601
  boundsType()
7562
- ], UI.prototype, "widthRange", undefined);
7602
+ ], UI.prototype, "widthRange", void 0);
7563
7603
  __decorate([
7564
7604
  boundsType()
7565
- ], UI.prototype, "heightRange", undefined);
7605
+ ], UI.prototype, "heightRange", void 0);
7566
7606
  __decorate([
7567
7607
  dataType(false)
7568
- ], UI.prototype, "draggable", undefined);
7608
+ ], UI.prototype, "draggable", void 0);
7569
7609
  __decorate([
7570
7610
  dataType()
7571
- ], UI.prototype, "dragBounds", undefined);
7611
+ ], UI.prototype, "dragBounds", void 0);
7572
7612
  __decorate([
7573
7613
  dataType(false)
7574
- ], UI.prototype, "editable", undefined);
7614
+ ], UI.prototype, "editable", void 0);
7575
7615
  __decorate([
7576
7616
  hitType(true)
7577
- ], UI.prototype, "hittable", undefined);
7617
+ ], UI.prototype, "hittable", void 0);
7578
7618
  __decorate([
7579
7619
  hitType('path')
7580
- ], UI.prototype, "hitFill", undefined);
7620
+ ], UI.prototype, "hitFill", void 0);
7581
7621
  __decorate([
7582
7622
  strokeType('path')
7583
- ], UI.prototype, "hitStroke", undefined);
7623
+ ], UI.prototype, "hitStroke", void 0);
7584
7624
  __decorate([
7585
7625
  hitType(false)
7586
- ], UI.prototype, "hitBox", undefined);
7626
+ ], UI.prototype, "hitBox", void 0);
7587
7627
  __decorate([
7588
7628
  hitType(true)
7589
- ], UI.prototype, "hitChildren", undefined);
7629
+ ], UI.prototype, "hitChildren", void 0);
7590
7630
  __decorate([
7591
7631
  hitType(true)
7592
- ], UI.prototype, "hitSelf", undefined);
7632
+ ], UI.prototype, "hitSelf", void 0);
7593
7633
  __decorate([
7594
7634
  hitType()
7595
- ], UI.prototype, "hitRadius", undefined);
7635
+ ], UI.prototype, "hitRadius", void 0);
7596
7636
  __decorate([
7597
7637
  cursorType('')
7598
- ], UI.prototype, "cursor", undefined);
7638
+ ], UI.prototype, "cursor", void 0);
7599
7639
  __decorate([
7600
7640
  surfaceType()
7601
- ], UI.prototype, "fill", undefined);
7641
+ ], UI.prototype, "fill", void 0);
7602
7642
  __decorate([
7603
7643
  strokeType()
7604
- ], UI.prototype, "stroke", undefined);
7644
+ ], UI.prototype, "stroke", void 0);
7605
7645
  __decorate([
7606
7646
  strokeType('inside')
7607
- ], UI.prototype, "strokeAlign", undefined);
7647
+ ], UI.prototype, "strokeAlign", void 0);
7608
7648
  __decorate([
7609
7649
  strokeType(1)
7610
- ], UI.prototype, "strokeWidth", undefined);
7650
+ ], UI.prototype, "strokeWidth", void 0);
7611
7651
  __decorate([
7612
7652
  strokeType(false)
7613
- ], UI.prototype, "strokeWidthFixed", undefined);
7653
+ ], UI.prototype, "strokeWidthFixed", void 0);
7614
7654
  __decorate([
7615
7655
  strokeType('none')
7616
- ], UI.prototype, "strokeCap", undefined);
7656
+ ], UI.prototype, "strokeCap", void 0);
7617
7657
  __decorate([
7618
7658
  strokeType('miter')
7619
- ], UI.prototype, "strokeJoin", undefined);
7659
+ ], UI.prototype, "strokeJoin", void 0);
7620
7660
  __decorate([
7621
7661
  strokeType()
7622
- ], UI.prototype, "dashPattern", undefined);
7662
+ ], UI.prototype, "dashPattern", void 0);
7623
7663
  __decorate([
7624
7664
  strokeType()
7625
- ], UI.prototype, "dashOffset", undefined);
7665
+ ], UI.prototype, "dashOffset", void 0);
7626
7666
  __decorate([
7627
7667
  strokeType(10)
7628
- ], UI.prototype, "miterLimit", undefined);
7668
+ ], UI.prototype, "miterLimit", void 0);
7629
7669
  __decorate([
7630
7670
  pathType(0)
7631
- ], UI.prototype, "cornerRadius", undefined);
7671
+ ], UI.prototype, "cornerRadius", void 0);
7632
7672
  __decorate([
7633
7673
  pathType()
7634
- ], UI.prototype, "cornerSmoothing", undefined);
7674
+ ], UI.prototype, "cornerSmoothing", void 0);
7675
+ __decorate([
7676
+ effectType()
7677
+ ], UI.prototype, "shadow", void 0);
7635
7678
  __decorate([
7636
7679
  effectType()
7637
- ], UI.prototype, "shadow", undefined);
7680
+ ], UI.prototype, "innerShadow", void 0);
7638
7681
  __decorate([
7639
7682
  effectType()
7640
- ], UI.prototype, "innerShadow", undefined);
7683
+ ], UI.prototype, "blur", void 0);
7641
7684
  __decorate([
7642
7685
  effectType()
7643
- ], UI.prototype, "blur", undefined);
7686
+ ], UI.prototype, "backgroundBlur", void 0);
7644
7687
  __decorate([
7645
7688
  effectType()
7646
- ], UI.prototype, "backgroundBlur", undefined);
7689
+ ], UI.prototype, "grayscale", void 0);
7647
7690
  __decorate([
7648
7691
  effectType()
7649
- ], UI.prototype, "grayscale", undefined);
7692
+ ], UI.prototype, "filter", void 0);
7650
7693
  __decorate([
7651
7694
  dataType({})
7652
- ], UI.prototype, "data", undefined);
7695
+ ], UI.prototype, "data", void 0);
7653
7696
  __decorate([
7654
7697
  rewrite(Leaf.prototype.reset)
7655
7698
  ], UI.prototype, "reset", null);
@@ -7710,7 +7753,7 @@ let Group = class Group extends UI {
7710
7753
  };
7711
7754
  __decorate([
7712
7755
  dataProcessor(GroupData)
7713
- ], Group.prototype, "__", undefined);
7756
+ ], Group.prototype, "__", void 0);
7714
7757
  Group = __decorate([
7715
7758
  useModule(Branch),
7716
7759
  registerUI()
@@ -7723,7 +7766,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7723
7766
  get isApp() { return false; }
7724
7767
  get app() { return this.parent || this; }
7725
7768
  get isLeafer() { return true; }
7726
- get imageReady() { return this.viewReady && ImageManager.isComplete; }
7769
+ get imageReady() { return this.viewReady && Resource.isComplete; }
7727
7770
  get layoutLocked() { return !this.layouter.running; }
7728
7771
  get FPS() { return this.renderer ? this.renderer.FPS : 60; }
7729
7772
  get cursorPoint() { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 }; }
@@ -7934,13 +7977,13 @@ let Leafer = Leafer_1 = class Leafer extends Group {
7934
7977
  WaitHelper.run(this.__viewReadyWait);
7935
7978
  }
7936
7979
  __onLayoutEnd() {
7937
- const { grow, growWidth, growHeight } = this.config;
7980
+ const { grow, width: fixedWidth, height: fixedHeight } = this.config;
7938
7981
  if (grow) {
7939
7982
  let { width, height, pixelRatio } = this;
7940
7983
  const bounds = grow === 'box' ? this.worldBoxBounds : this.__world;
7941
- if (growWidth !== false)
7984
+ if (!fixedWidth)
7942
7985
  width = Math.max(1, bounds.x + bounds.width);
7943
- if (growHeight !== false)
7986
+ if (!fixedHeight)
7944
7987
  height = Math.max(1, bounds.y + bounds.height);
7945
7988
  this.__doResize({ width, height, pixelRatio });
7946
7989
  }
@@ -8018,7 +8061,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8018
8061
  list.push(item);
8019
8062
  this.requestRender();
8020
8063
  }
8021
- zoom(_zoomType, _padding, _fixedScale) {
8064
+ zoom(_zoomType, _padding, _fixedScale, _transition) {
8022
8065
  return Plugin.need('view');
8023
8066
  }
8024
8067
  getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
@@ -8083,10 +8126,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8083
8126
  Leafer.list = new LeafList();
8084
8127
  __decorate([
8085
8128
  dataProcessor(LeaferData)
8086
- ], Leafer.prototype, "__", undefined);
8129
+ ], Leafer.prototype, "__", void 0);
8087
8130
  __decorate([
8088
8131
  boundsType()
8089
- ], Leafer.prototype, "pixelRatio", undefined);
8132
+ ], Leafer.prototype, "pixelRatio", void 0);
8090
8133
  Leafer = Leafer_1 = __decorate([
8091
8134
  registerUI()
8092
8135
  ], Leafer);
@@ -8099,7 +8142,7 @@ let Rect = class Rect extends UI {
8099
8142
  };
8100
8143
  __decorate([
8101
8144
  dataProcessor(RectData)
8102
- ], Rect.prototype, "__", undefined);
8145
+ ], Rect.prototype, "__", void 0);
8103
8146
  Rect = __decorate([
8104
8147
  useModule(RectRender),
8105
8148
  rewriteAble(),
@@ -8190,13 +8233,13 @@ let Box = class Box extends Group {
8190
8233
  };
8191
8234
  __decorate([
8192
8235
  dataProcessor(BoxData)
8193
- ], Box.prototype, "__", undefined);
8236
+ ], Box.prototype, "__", void 0);
8194
8237
  __decorate([
8195
8238
  dataType(false)
8196
- ], Box.prototype, "resizeChildren", undefined);
8239
+ ], Box.prototype, "resizeChildren", void 0);
8197
8240
  __decorate([
8198
8241
  affectRenderBoundsType('show')
8199
- ], Box.prototype, "overflow", undefined);
8242
+ ], Box.prototype, "overflow", void 0);
8200
8243
  __decorate([
8201
8244
  rewrite(rect.__updateStrokeSpread)
8202
8245
  ], Box.prototype, "__updateStrokeSpread", null);
@@ -8235,13 +8278,13 @@ let Frame = class Frame extends Box {
8235
8278
  };
8236
8279
  __decorate([
8237
8280
  dataProcessor(FrameData)
8238
- ], Frame.prototype, "__", undefined);
8281
+ ], Frame.prototype, "__", void 0);
8239
8282
  __decorate([
8240
8283
  surfaceType('#FFFFFF')
8241
- ], Frame.prototype, "fill", undefined);
8284
+ ], Frame.prototype, "fill", void 0);
8242
8285
  __decorate([
8243
8286
  affectRenderBoundsType('hide')
8244
- ], Frame.prototype, "overflow", undefined);
8287
+ ], Frame.prototype, "overflow", void 0);
8245
8288
  Frame = __decorate([
8246
8289
  registerUI()
8247
8290
  ], Frame);
@@ -8288,16 +8331,16 @@ let Ellipse = class Ellipse extends UI {
8288
8331
  };
8289
8332
  __decorate([
8290
8333
  dataProcessor(EllipseData)
8291
- ], Ellipse.prototype, "__", undefined);
8334
+ ], Ellipse.prototype, "__", void 0);
8292
8335
  __decorate([
8293
8336
  pathType(0)
8294
- ], Ellipse.prototype, "innerRadius", undefined);
8337
+ ], Ellipse.prototype, "innerRadius", void 0);
8295
8338
  __decorate([
8296
8339
  pathType(0)
8297
- ], Ellipse.prototype, "startAngle", undefined);
8340
+ ], Ellipse.prototype, "startAngle", void 0);
8298
8341
  __decorate([
8299
8342
  pathType(0)
8300
- ], Ellipse.prototype, "endAngle", undefined);
8343
+ ], Ellipse.prototype, "endAngle", void 0);
8301
8344
  Ellipse = __decorate([
8302
8345
  registerUI()
8303
8346
  ], Ellipse);
@@ -8356,22 +8399,22 @@ let Line = class Line extends UI {
8356
8399
  };
8357
8400
  __decorate([
8358
8401
  dataProcessor(LineData)
8359
- ], Line.prototype, "__", undefined);
8402
+ ], Line.prototype, "__", void 0);
8360
8403
  __decorate([
8361
8404
  affectStrokeBoundsType('center')
8362
- ], Line.prototype, "strokeAlign", undefined);
8405
+ ], Line.prototype, "strokeAlign", void 0);
8363
8406
  __decorate([
8364
8407
  boundsType(0)
8365
- ], Line.prototype, "height", undefined);
8408
+ ], Line.prototype, "height", void 0);
8366
8409
  __decorate([
8367
8410
  pathType()
8368
- ], Line.prototype, "points", undefined);
8411
+ ], Line.prototype, "points", void 0);
8369
8412
  __decorate([
8370
8413
  pathType(0)
8371
- ], Line.prototype, "curve", undefined);
8414
+ ], Line.prototype, "curve", void 0);
8372
8415
  __decorate([
8373
8416
  pathType(false)
8374
- ], Line.prototype, "closed", undefined);
8417
+ ], Line.prototype, "closed", void 0);
8375
8418
  Line = __decorate([
8376
8419
  registerUI()
8377
8420
  ], Line);
@@ -8404,16 +8447,16 @@ let Polygon = class Polygon extends UI {
8404
8447
  };
8405
8448
  __decorate([
8406
8449
  dataProcessor(PolygonData)
8407
- ], Polygon.prototype, "__", undefined);
8450
+ ], Polygon.prototype, "__", void 0);
8408
8451
  __decorate([
8409
8452
  pathType(3)
8410
- ], Polygon.prototype, "sides", undefined);
8453
+ ], Polygon.prototype, "sides", void 0);
8411
8454
  __decorate([
8412
8455
  pathType()
8413
- ], Polygon.prototype, "points", undefined);
8456
+ ], Polygon.prototype, "points", void 0);
8414
8457
  __decorate([
8415
8458
  pathType(0)
8416
- ], Polygon.prototype, "curve", undefined);
8459
+ ], Polygon.prototype, "curve", void 0);
8417
8460
  __decorate([
8418
8461
  rewrite(line.__updateRenderPath)
8419
8462
  ], Polygon.prototype, "__updateRenderPath", null);
@@ -8445,13 +8488,13 @@ let Star = class Star extends UI {
8445
8488
  };
8446
8489
  __decorate([
8447
8490
  dataProcessor(StarData)
8448
- ], Star.prototype, "__", undefined);
8491
+ ], Star.prototype, "__", void 0);
8449
8492
  __decorate([
8450
8493
  pathType(5)
8451
- ], Star.prototype, "corners", undefined);
8494
+ ], Star.prototype, "corners", void 0);
8452
8495
  __decorate([
8453
8496
  pathType(0.382)
8454
- ], Star.prototype, "innerRadius", undefined);
8497
+ ], Star.prototype, "innerRadius", void 0);
8455
8498
  Star = __decorate([
8456
8499
  registerUI()
8457
8500
  ], Star);
@@ -8473,10 +8516,10 @@ let Image$1 = class Image extends Rect {
8473
8516
  };
8474
8517
  __decorate([
8475
8518
  dataProcessor(ImageData)
8476
- ], Image$1.prototype, "__", undefined);
8519
+ ], Image$1.prototype, "__", void 0);
8477
8520
  __decorate([
8478
8521
  boundsType('')
8479
- ], Image$1.prototype, "url", undefined);
8522
+ ], Image$1.prototype, "url", void 0);
8480
8523
  Image$1 = __decorate([
8481
8524
  registerUI()
8482
8525
  ], Image$1);
@@ -8539,25 +8582,25 @@ let Canvas = class Canvas extends Rect {
8539
8582
  };
8540
8583
  __decorate([
8541
8584
  dataProcessor(CanvasData)
8542
- ], Canvas.prototype, "__", undefined);
8585
+ ], Canvas.prototype, "__", void 0);
8543
8586
  __decorate([
8544
8587
  resizeType(100)
8545
- ], Canvas.prototype, "width", undefined);
8588
+ ], Canvas.prototype, "width", void 0);
8546
8589
  __decorate([
8547
8590
  resizeType(100)
8548
- ], Canvas.prototype, "height", undefined);
8591
+ ], Canvas.prototype, "height", void 0);
8549
8592
  __decorate([
8550
8593
  resizeType(1)
8551
- ], Canvas.prototype, "pixelRatio", undefined);
8594
+ ], Canvas.prototype, "pixelRatio", void 0);
8552
8595
  __decorate([
8553
8596
  resizeType(true)
8554
- ], Canvas.prototype, "smooth", undefined);
8597
+ ], Canvas.prototype, "smooth", void 0);
8555
8598
  __decorate([
8556
8599
  dataType(false)
8557
- ], Canvas.prototype, "safeResize", undefined);
8600
+ ], Canvas.prototype, "safeResize", void 0);
8558
8601
  __decorate([
8559
8602
  resizeType()
8560
- ], Canvas.prototype, "contextSettings", undefined);
8603
+ ], Canvas.prototype, "contextSettings", void 0);
8561
8604
  Canvas = __decorate([
8562
8605
  registerUI()
8563
8606
  ], Canvas);
@@ -8648,76 +8691,76 @@ let Text = class Text extends UI {
8648
8691
  };
8649
8692
  __decorate([
8650
8693
  dataProcessor(TextData)
8651
- ], Text.prototype, "__", undefined);
8694
+ ], Text.prototype, "__", void 0);
8652
8695
  __decorate([
8653
8696
  boundsType(0)
8654
- ], Text.prototype, "width", undefined);
8697
+ ], Text.prototype, "width", void 0);
8655
8698
  __decorate([
8656
8699
  boundsType(0)
8657
- ], Text.prototype, "height", undefined);
8700
+ ], Text.prototype, "height", void 0);
8658
8701
  __decorate([
8659
8702
  dataType(false)
8660
- ], Text.prototype, "resizeFontSize", undefined);
8703
+ ], Text.prototype, "resizeFontSize", void 0);
8661
8704
  __decorate([
8662
8705
  surfaceType('#000000')
8663
- ], Text.prototype, "fill", undefined);
8706
+ ], Text.prototype, "fill", void 0);
8664
8707
  __decorate([
8665
8708
  affectStrokeBoundsType('outside')
8666
- ], Text.prototype, "strokeAlign", undefined);
8709
+ ], Text.prototype, "strokeAlign", void 0);
8667
8710
  __decorate([
8668
8711
  hitType('all')
8669
- ], Text.prototype, "hitFill", undefined);
8712
+ ], Text.prototype, "hitFill", void 0);
8670
8713
  __decorate([
8671
8714
  boundsType('')
8672
- ], Text.prototype, "text", undefined);
8715
+ ], Text.prototype, "text", void 0);
8673
8716
  __decorate([
8674
8717
  boundsType('caption')
8675
- ], Text.prototype, "fontFamily", undefined);
8718
+ ], Text.prototype, "fontFamily", void 0);
8676
8719
  __decorate([
8677
8720
  boundsType(12)
8678
- ], Text.prototype, "fontSize", undefined);
8721
+ ], Text.prototype, "fontSize", void 0);
8679
8722
  __decorate([
8680
8723
  boundsType('normal')
8681
- ], Text.prototype, "fontWeight", undefined);
8724
+ ], Text.prototype, "fontWeight", void 0);
8682
8725
  __decorate([
8683
8726
  boundsType(false)
8684
- ], Text.prototype, "italic", undefined);
8727
+ ], Text.prototype, "italic", void 0);
8685
8728
  __decorate([
8686
8729
  boundsType('none')
8687
- ], Text.prototype, "textCase", undefined);
8730
+ ], Text.prototype, "textCase", void 0);
8688
8731
  __decorate([
8689
8732
  boundsType('none')
8690
- ], Text.prototype, "textDecoration", undefined);
8733
+ ], Text.prototype, "textDecoration", void 0);
8691
8734
  __decorate([
8692
8735
  boundsType(0)
8693
- ], Text.prototype, "letterSpacing", undefined);
8736
+ ], Text.prototype, "letterSpacing", void 0);
8694
8737
  __decorate([
8695
8738
  boundsType({ type: 'percent', value: 1.5 })
8696
- ], Text.prototype, "lineHeight", undefined);
8739
+ ], Text.prototype, "lineHeight", void 0);
8697
8740
  __decorate([
8698
8741
  boundsType(0)
8699
- ], Text.prototype, "paraIndent", undefined);
8742
+ ], Text.prototype, "paraIndent", void 0);
8700
8743
  __decorate([
8701
8744
  boundsType(0)
8702
- ], Text.prototype, "paraSpacing", undefined);
8745
+ ], Text.prototype, "paraSpacing", void 0);
8703
8746
  __decorate([
8704
8747
  boundsType('x')
8705
- ], Text.prototype, "writingMode", undefined);
8748
+ ], Text.prototype, "writingMode", void 0);
8706
8749
  __decorate([
8707
8750
  boundsType('left')
8708
- ], Text.prototype, "textAlign", undefined);
8751
+ ], Text.prototype, "textAlign", void 0);
8709
8752
  __decorate([
8710
8753
  boundsType('top')
8711
- ], Text.prototype, "verticalAlign", undefined);
8754
+ ], Text.prototype, "verticalAlign", void 0);
8712
8755
  __decorate([
8713
8756
  boundsType(true)
8714
- ], Text.prototype, "autoSizeAlign", undefined);
8757
+ ], Text.prototype, "autoSizeAlign", void 0);
8715
8758
  __decorate([
8716
8759
  boundsType('normal')
8717
- ], Text.prototype, "textWrap", undefined);
8760
+ ], Text.prototype, "textWrap", void 0);
8718
8761
  __decorate([
8719
8762
  boundsType('show')
8720
- ], Text.prototype, "textOverflow", undefined);
8763
+ ], Text.prototype, "textOverflow", void 0);
8721
8764
  Text = __decorate([
8722
8765
  registerUI()
8723
8766
  ], Text);
@@ -8730,10 +8773,10 @@ let Path = class Path extends UI {
8730
8773
  };
8731
8774
  __decorate([
8732
8775
  dataProcessor(PathData)
8733
- ], Path.prototype, "__", undefined);
8776
+ ], Path.prototype, "__", void 0);
8734
8777
  __decorate([
8735
8778
  affectStrokeBoundsType('center')
8736
- ], Path.prototype, "strokeAlign", undefined);
8779
+ ], Path.prototype, "strokeAlign", void 0);
8737
8780
  Path = __decorate([
8738
8781
  registerUI()
8739
8782
  ], Path);
@@ -8772,10 +8815,10 @@ let Pen = class Pen extends Group {
8772
8815
  };
8773
8816
  __decorate([
8774
8817
  dataProcessor(PenData)
8775
- ], Pen.prototype, "__", undefined);
8818
+ ], Pen.prototype, "__", void 0);
8776
8819
  __decorate([
8777
8820
  penPathType()
8778
- ], Pen.prototype, "path", undefined);
8821
+ ], Pen.prototype, "path", void 0);
8779
8822
  Pen = __decorate([
8780
8823
  useModule(PathCreator, ['set', 'path', 'paint']),
8781
8824
  registerUI()
@@ -9147,7 +9190,7 @@ function getPatternData(paint, box, image) {
9147
9190
  box = tempBox.set(box).shrink(paint.padding);
9148
9191
  if (paint.mode === 'strench')
9149
9192
  paint.mode = 'stretch';
9150
- const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
9193
+ const { opacity, mode, align, offset, scale, size, rotation, repeat, filters } = paint;
9151
9194
  const sameBox = box.width === width && box.height === height;
9152
9195
  const data = { mode };
9153
9196
  const swapSize = align !== 'center' && (rotation || 0) % 180 === 90;
@@ -9210,6 +9253,8 @@ function getPatternData(paint, box, image) {
9210
9253
  data.height = height;
9211
9254
  if (opacity)
9212
9255
  data.opacity = opacity;
9256
+ if (filters)
9257
+ data.filters = filters;
9213
9258
  if (repeat)
9214
9259
  data.repeat = typeof repeat === 'string' ? (repeat === 'x' ? 'repeat-x' : 'repeat-y') : 'repeat';
9215
9260
  return data;
@@ -9312,7 +9357,7 @@ function createPattern(ui, paint, pixelRatio) {
9312
9357
  scaleX = abs$1(scaleX);
9313
9358
  scaleY = abs$1(scaleY);
9314
9359
  const { image, data } = paint;
9315
- let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, opacity, transform, repeat } = data;
9360
+ let imageScale, imageMatrix, { width, height, scaleX: sx, scaleY: sy, transform, repeat } = data;
9316
9361
  if (sx) {
9317
9362
  imageMatrix = get$1();
9318
9363
  copy$1(imageMatrix, transform);
@@ -9355,7 +9400,7 @@ function createPattern(ui, paint, pixelRatio) {
9355
9400
  }
9356
9401
  scale(imageMatrix, 1 / scaleX, 1 / scaleY);
9357
9402
  }
9358
- const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, opacity);
9403
+ const canvas = image.getCanvas(ceil(width) || 1, ceil(height) || 1, data.opacity, data.filters);
9359
9404
  const pattern = image.getPattern(canvas, repeat || (Platform.origin.noRepeat || 'no-repeat'), imageMatrix, paint);
9360
9405
  paint.style = pattern;
9361
9406
  paint.patternId = id;
@@ -9399,7 +9444,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
9399
9444
  canvas.opacity *= data.opacity;
9400
9445
  if (data.transform)
9401
9446
  canvas.transform(data.transform);
9402
- canvas.drawImage(paint.image.view, 0, 0, data.width, data.height);
9447
+ canvas.drawImage(paint.image.getFull(data.filters), 0, 0, data.width, data.height);
9403
9448
  canvas.restore();
9404
9449
  return true;
9405
9450
  }
@@ -9409,7 +9454,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
9409
9454
  }
9410
9455
  else {
9411
9456
  if (!paint.patternTask) {
9412
- paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, undefined, undefined, function* () {
9457
+ paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
9413
9458
  paint.patternTask = null;
9414
9459
  if (canvas.bounds.hit(ui.__nowWorld))
9415
9460
  createPattern(ui, paint, pixelRatio);
@@ -10276,5 +10321,5 @@ Object.assign(Effect, EffectModule);
10276
10321
 
10277
10322
  useCanvas();
10278
10323
 
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 };
10324
+ 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
10325
  //# sourceMappingURL=web.module.js.map