leafer-ui 1.5.0 → 1.5.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.
@@ -116,8 +116,9 @@ const MathHelper = {
116
116
  if (!scaleData)
117
117
  scaleData = {};
118
118
  if (size) {
119
- scaleData.scaleX = (typeof size === 'number' ? size : size.width) / originSize.width;
120
- scaleData.scaleY = (typeof size === 'number' ? size : size.height) / originSize.height;
119
+ const scaleX = (typeof size === 'number' ? size : size.width || 0) / originSize.width, scaleY = (typeof size === 'number' ? size : size.height || 0) / originSize.height;
120
+ scaleData.scaleX = scaleX || scaleY || 1;
121
+ scaleData.scaleY = scaleY || scaleX || 1;
121
122
  }
122
123
  else if (scale)
123
124
  MathHelper.assignScale(scaleData, scale);
@@ -1690,6 +1691,9 @@ const emptyData = {};
1690
1691
  function isNull(value) {
1691
1692
  return value === undefined || value === null;
1692
1693
  }
1694
+ function isEmptyData(value) {
1695
+ return JSON.stringify(value) === '{}';
1696
+ }
1693
1697
 
1694
1698
  /******************************************************************************
1695
1699
  Copyright (c) Microsoft Corporation.
@@ -2029,13 +2033,11 @@ class LeaferCanvasBase extends Canvas$1 {
2029
2033
  this.worldTransform = {};
2030
2034
  if (!config)
2031
2035
  config = minSize;
2032
- if (!config.pixelRatio)
2033
- config.pixelRatio = Platform.devicePixelRatio;
2034
2036
  this.manager = manager;
2035
2037
  this.innerId = IncrementId.create(IncrementId.CNAVAS);
2036
2038
  const { width, height, pixelRatio } = config;
2037
2039
  this.autoLayout = !width || !height;
2038
- this.size.pixelRatio = pixelRatio;
2040
+ this.size.pixelRatio = pixelRatio | Platform.devicePixelRatio;
2039
2041
  this.config = config;
2040
2042
  this.init();
2041
2043
  }
@@ -2232,7 +2234,7 @@ class LeaferCanvasBase extends Canvas$1 {
2232
2234
  tempBounds$1.ceil();
2233
2235
  }
2234
2236
  isSameSize(size) {
2235
- return this.width === size.width && this.height === size.height && this.pixelRatio === size.pixelRatio;
2237
+ return this.width === size.width && this.height === size.height && (!size.pixelRatio || this.pixelRatio === size.pixelRatio);
2236
2238
  }
2237
2239
  getSameCanvas(useSameWorldTransform, useSameSmooth) {
2238
2240
  const canvas = this.manager ? this.manager.get(this.size) : Creator.canvas(Object.assign({}, this.size));
@@ -2347,7 +2349,7 @@ const RectHelper = {
2347
2349
  const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$3, PI: PI$2, sqrt: sqrt$1, pow } = Math;
2348
2350
  const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
2349
2351
  const { set, toNumberPoints } = PointHelper;
2350
- const { M: M$5, L: L$6, C: C$5, Q: Q$4, Z: Z$5 } = PathCommandMap;
2352
+ const { M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5 } = PathCommandMap;
2351
2353
  const tempPoint$2 = {};
2352
2354
  const BezierHelper = {
2353
2355
  points(data, originPoints, curve, close) {
@@ -2382,7 +2384,7 @@ const BezierHelper = {
2382
2384
  data.push(Q$4, c1X, c1Y, bX, bY);
2383
2385
  }
2384
2386
  else {
2385
- data.push(C$5, c2X, c2Y, c1X, c1Y, bX, bY);
2387
+ data.push(C$4, c2X, c2Y, c1X, c1Y, bX, bY);
2386
2388
  }
2387
2389
  c2X = bX + cb * cX;
2388
2390
  c2Y = bY + cb * cY;
@@ -2487,7 +2489,7 @@ const BezierHelper = {
2487
2489
  x2 = cx + x + control * (rotationCos * radiusX * endSin + rotationSin * radiusY * endCos);
2488
2490
  y2 = cy + y + control * (rotationSin * radiusX * endSin - rotationCos * radiusY * endCos);
2489
2491
  if (data)
2490
- data.push(C$5, x1, y1, x2, y2, cx + x, cy + y);
2492
+ data.push(C$4, x1, y1, x2, y2, cx + x, cy + y);
2491
2493
  if (setPointBounds)
2492
2494
  toTwoPointBounds$1(cx + startX, cy + startY, x1, y1, x2, y2, cx + x, cy + y, setPointBounds, true);
2493
2495
  startX = x;
@@ -2501,7 +2503,7 @@ const BezierHelper = {
2501
2503
  set(setEndPoint, cx + x, cy + y);
2502
2504
  },
2503
2505
  quadraticCurveTo(data, fromX, fromY, x1, y1, toX, toY) {
2504
- data.push(C$5, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
2506
+ data.push(C$4, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
2505
2507
  },
2506
2508
  toTwoPointBoundsByQuadraticCurve(fromX, fromY, x1, y1, toX, toY, pointBounds, addMode) {
2507
2509
  toTwoPointBounds$1(fromX, fromY, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY, pointBounds, addMode);
@@ -2609,7 +2611,7 @@ const EllipseHelper = {
2609
2611
  }
2610
2612
  };
2611
2613
 
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;
2614
+ const { M: M$4, m, L: L$5, l, H, h, V, v, C: C$3, 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
2615
  const { rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2614
2616
  const { ellipticalArc } = EllipseHelper;
2615
2617
  const debug$d = Debug.get('PathConvert');
@@ -2737,14 +2739,14 @@ const PathConvert = {
2737
2739
  old[i + 4] += y;
2738
2740
  command = S;
2739
2741
  case S:
2740
- smooth = (lastCommand === C$4) || (lastCommand === S);
2742
+ smooth = (lastCommand === C$3) || (lastCommand === S);
2741
2743
  x1 = smooth ? (x * 2 - controlX) : old[i + 1];
2742
2744
  y1 = smooth ? (y * 2 - controlY) : old[i + 2];
2743
2745
  controlX = old[i + 1];
2744
2746
  controlY = old[i + 2];
2745
2747
  x = old[i + 3];
2746
2748
  y = old[i + 4];
2747
- data.push(C$4, x1, y1, controlX, controlY, x, y);
2749
+ data.push(C$3, x1, y1, controlX, controlY, x, y);
2748
2750
  i += 5;
2749
2751
  break;
2750
2752
  case c:
@@ -2754,13 +2756,13 @@ const PathConvert = {
2754
2756
  old[i + 4] += y;
2755
2757
  old[i + 5] += x;
2756
2758
  old[i + 6] += y;
2757
- command = C$4;
2758
- case C$4:
2759
+ command = C$3;
2760
+ case C$3:
2759
2761
  controlX = old[i + 3];
2760
2762
  controlY = old[i + 4];
2761
2763
  x = old[i + 5];
2762
2764
  y = old[i + 6];
2763
- data.push(C$4, old[i + 1], old[i + 2], controlX, controlY, x, y);
2765
+ data.push(C$3, old[i + 1], old[i + 2], controlX, controlY, x, y);
2764
2766
  i += 7;
2765
2767
  break;
2766
2768
  case t:
@@ -2871,7 +2873,7 @@ const PathConvert = {
2871
2873
  data.push(L$5, item.x, item.y);
2872
2874
  break;
2873
2875
  case 'C':
2874
- data.push(C$4, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2876
+ data.push(C$3, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2875
2877
  break;
2876
2878
  case 'Q':
2877
2879
  data.push(Q$3, item.x1, item.y1, item.x, item.y);
@@ -2898,7 +2900,7 @@ const PathConvert = {
2898
2900
  };
2899
2901
  const { current, pushData, copyData } = PathConvert;
2900
2902
 
2901
- const { M: M$3, L: L$4, C: C$3, Q: Q$2, Z: Z$3, N: N$2, D: D$2, X: X$2, G: G$2, F: F$3, O: O$2, P: P$2, U: U$2 } = PathCommandMap;
2903
+ const { M: M$3, L: L$4, C: C$2, Q: Q$2, Z: Z$3, N: N$2, D: D$2, X: X$2, G: G$2, F: F$3, O: O$2, P: P$2, U: U$2 } = PathCommandMap;
2902
2904
  const { getMinDistanceFrom, getRadianFrom } = PointHelper;
2903
2905
  const { tan, min, abs: abs$2 } = Math;
2904
2906
  const startPoint = {};
@@ -2913,7 +2915,7 @@ const PathCommandDataHelper = {
2913
2915
  data.push(L$4, x, y);
2914
2916
  },
2915
2917
  bezierCurveTo(data, x1, y1, x2, y2, x, y) {
2916
- data.push(C$3, x1, y1, x2, y2, x, y);
2918
+ data.push(C$2, x1, y1, x2, y2, x, y);
2917
2919
  },
2918
2920
  quadraticCurveTo(data, x1, y1, x, y) {
2919
2921
  data.push(Q$2, x1, y1, x, y);
@@ -3075,7 +3077,7 @@ class PathCreator {
3075
3077
  paint() { }
3076
3078
  }
3077
3079
 
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;
3080
+ const { M: M$2, L: L$3, C: C$1, 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;
3079
3081
  const debug$c = Debug.get('PathDrawer');
3080
3082
  const PathDrawer = {
3081
3083
  drawPathByData(drawer, data) {
@@ -3094,7 +3096,7 @@ const PathDrawer = {
3094
3096
  drawer.lineTo(data[i + 1], data[i + 2]);
3095
3097
  i += 3;
3096
3098
  break;
3097
- case C$2:
3099
+ case C$1:
3098
3100
  drawer.bezierCurveTo(data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6]);
3099
3101
  i += 7;
3100
3102
  break;
@@ -3146,7 +3148,7 @@ const PathDrawer = {
3146
3148
  }
3147
3149
  };
3148
3150
 
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;
3151
+ const { M: M$1, L: L$2, C, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
3150
3152
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3151
3153
  const { addPointBounds, copy: copy$8, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3152
3154
  const debug$b = Debug.get('PathBounds');
@@ -3167,7 +3169,7 @@ const PathBounds = {
3167
3169
  while (i < len) {
3168
3170
  command = data[i];
3169
3171
  if (i === 0) {
3170
- if (command === Z$1 || command === C$1 || command === Q) {
3172
+ if (command === Z$1 || command === C || command === Q) {
3171
3173
  setPoint(setPointBounds, x, y);
3172
3174
  }
3173
3175
  else {
@@ -3182,7 +3184,7 @@ const PathBounds = {
3182
3184
  addPoint(setPointBounds, x, y);
3183
3185
  i += 3;
3184
3186
  break;
3185
- case C$1:
3187
+ case C:
3186
3188
  toX = data[i + 5];
3187
3189
  toY = data[i + 6];
3188
3190
  toTwoPointBounds(x, y, data[i + 1], data[i + 2], data[i + 3], data[i + 4], toX, toY, tempPointBounds);
@@ -3264,12 +3266,12 @@ const PathBounds = {
3264
3266
  }
3265
3267
  };
3266
3268
 
3267
- const { M, L: L$1, C, Z } = PathCommandMap;
3269
+ const { M, L: L$1, Z } = PathCommandMap;
3268
3270
  const { getCenterX, getCenterY } = PointHelper;
3269
3271
  const { arcTo } = PathCommandDataHelper;
3270
3272
  const PathCorner = {
3271
3273
  smooth(data, cornerRadius, _cornerSmoothing) {
3272
- let command;
3274
+ let command, commandLen;
3273
3275
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3274
3276
  const len = data.length;
3275
3277
  const smooth = [];
@@ -3306,15 +3308,16 @@ const PathCorner = {
3306
3308
  lastX = x;
3307
3309
  lastY = y;
3308
3310
  break;
3309
- case C:
3310
- smooth.push(C, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6]);
3311
- i += 7;
3312
- break;
3313
3311
  case Z:
3314
3312
  arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3315
3313
  smooth.push(Z);
3316
3314
  i += 1;
3317
3315
  break;
3316
+ default:
3317
+ commandLen = PathNumberCommandLengthMap[command];
3318
+ for (let j = 0; j < commandLen; j++)
3319
+ smooth.push(data[i + j]);
3320
+ i += commandLen;
3318
3321
  }
3319
3322
  }
3320
3323
  if (command !== Z) {
@@ -4073,33 +4076,45 @@ function defineDataProcessor(target, key, defaultValue) {
4073
4076
  else if (typeof defaultValue === 'function') {
4074
4077
  property.get = function () {
4075
4078
  let v = this[computedKey];
4076
- if (v === undefined)
4077
- this[computedKey] = v = defaultValue(this.__leaf);
4078
- return v;
4079
+ return v === undefined ? defaultValue(this.__leaf) : v;
4079
4080
  };
4080
4081
  }
4082
+ else if (typeof defaultValue === 'object') {
4083
+ const isEmpty = isEmptyData(defaultValue);
4084
+ property.get = function () {
4085
+ let v = this[computedKey];
4086
+ return v === undefined ? this[computedKey] = isEmpty ? {} : DataHelper.clone(defaultValue) : v;
4087
+ };
4088
+ }
4089
+ const isBox = target.isBranchLeaf;
4081
4090
  if (key === 'width') {
4082
4091
  property.get = function () {
4083
4092
  const v = this[computedKey];
4084
4093
  if (v === undefined) {
4085
- const t = this;
4086
- return t._height && t.__naturalWidth && t.__useNaturalRatio ? t._height * t.__naturalWidth / t.__naturalHeight : t.__naturalWidth || defaultValue;
4094
+ const t = this, naturalWidth = t.__naturalWidth, leaf = t.__leaf;
4095
+ if (!defaultValue || leaf.pathInputed)
4096
+ return leaf.boxBounds.width;
4097
+ if (naturalWidth)
4098
+ return t._height && t.__useNaturalRatio ? t._height * naturalWidth / t.__naturalHeight : naturalWidth;
4099
+ return (isBox && leaf.children.length) ? leaf.boxBounds.width : defaultValue;
4087
4100
  }
4088
- else {
4101
+ else
4089
4102
  return v;
4090
- }
4091
4103
  };
4092
4104
  }
4093
4105
  else if (key === 'height') {
4094
4106
  property.get = function () {
4095
4107
  const v = this[computedKey];
4096
4108
  if (v === undefined) {
4097
- const t = this;
4098
- return t._width && t.__naturalHeight && t.__useNaturalRatio ? t._width * t.__naturalHeight / t.__naturalWidth : t.__naturalHeight || defaultValue;
4109
+ const t = this, naturalHeight = t.__naturalHeight, leaf = t.__leaf;
4110
+ if (!defaultValue || leaf.pathInputed)
4111
+ return leaf.boxBounds.height;
4112
+ if (naturalHeight)
4113
+ return t._width && t.__useNaturalRatio ? t._width * naturalHeight / t.__naturalWidth : naturalHeight;
4114
+ return (isBox && leaf.children.length) ? leaf.boxBounds.height : defaultValue;
4099
4115
  }
4100
- else {
4116
+ else
4101
4117
  return v;
4102
- }
4103
4118
  };
4104
4119
  }
4105
4120
  let descriptor, find = data;
@@ -4526,7 +4541,12 @@ class LeafLayout {
4526
4541
  while (root.parent && !root.parent.leafer) {
4527
4542
  root = root.parent;
4528
4543
  }
4529
- Platform.layout(root);
4544
+ const r = root;
4545
+ if (r.__fullLayouting)
4546
+ return;
4547
+ r.__fullLayouting = true;
4548
+ Platform.layout(r);
4549
+ delete r.__fullLayouting;
4530
4550
  }
4531
4551
  }
4532
4552
  getTransform(relative = 'world') {
@@ -6051,7 +6071,7 @@ class LeafLevelList {
6051
6071
  }
6052
6072
  }
6053
6073
 
6054
- const version = "1.5.0";
6074
+ const version = "1.5.2";
6055
6075
 
6056
6076
  const debug$5 = Debug.get('LeaferCanvas');
6057
6077
  class LeaferCanvas extends LeaferCanvasBase {
@@ -6173,7 +6193,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6173
6193
  else {
6174
6194
  window.addEventListener('resize', this.windowListener = () => {
6175
6195
  const pixelRatio = Platform.devicePixelRatio;
6176
- if (this.pixelRatio !== pixelRatio) {
6196
+ if (!this.config.pixelRatio && this.pixelRatio !== pixelRatio) {
6177
6197
  const { width, height } = this;
6178
6198
  this.emitResize({ width, height, pixelRatio });
6179
6199
  }
@@ -6190,7 +6210,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6190
6210
  checkAutoBounds(parentSize) {
6191
6211
  const view = this.view;
6192
6212
  const { x, y, width, height } = this.autoBounds.getBoundsFrom(parentSize);
6193
- const size = { width, height, pixelRatio: Platform.devicePixelRatio };
6213
+ const size = { width, height, pixelRatio: this.config.pixelRatio ? this.pixelRatio : Platform.devicePixelRatio };
6194
6214
  if (!this.isSameSize(size)) {
6195
6215
  const { style } = view;
6196
6216
  style.marginLeft = x + 'px';
@@ -7822,7 +7842,7 @@ __decorate([
7822
7842
  strokeType()
7823
7843
  ], UI.prototype, "dashPattern", void 0);
7824
7844
  __decorate([
7825
- strokeType()
7845
+ strokeType(0)
7826
7846
  ], UI.prototype, "dashOffset", void 0);
7827
7847
  __decorate([
7828
7848
  strokeType(10)
@@ -7915,6 +7935,12 @@ let Group = class Group extends UI {
7915
7935
  __decorate([
7916
7936
  dataProcessor(GroupData)
7917
7937
  ], Group.prototype, "__", void 0);
7938
+ __decorate([
7939
+ boundsType(0)
7940
+ ], Group.prototype, "width", void 0);
7941
+ __decorate([
7942
+ boundsType(0)
7943
+ ], Group.prototype, "height", void 0);
7918
7944
  Group = __decorate([
7919
7945
  useModule(Branch),
7920
7946
  registerUI()
@@ -8330,7 +8356,7 @@ let Box = class Box extends Group {
8330
8356
  __updateRectBoxBounds() { }
8331
8357
  __updateBoxBounds(_secondLayout) {
8332
8358
  const data = this.__;
8333
- if (this.children.length) {
8359
+ if (this.children.length && !this.pathInputed) {
8334
8360
  if (data.__autoSide) {
8335
8361
  if (data.__hasSurface)
8336
8362
  this.__extraUpdate();
@@ -8399,6 +8425,12 @@ let Box = class Box extends Group {
8399
8425
  __decorate([
8400
8426
  dataProcessor(BoxData)
8401
8427
  ], Box.prototype, "__", void 0);
8428
+ __decorate([
8429
+ boundsType(100)
8430
+ ], Box.prototype, "width", void 0);
8431
+ __decorate([
8432
+ boundsType(100)
8433
+ ], Box.prototype, "height", void 0);
8402
8434
  __decorate([
8403
8435
  dataType(false)
8404
8436
  ], Box.prototype, "resizeChildren", void 0);
@@ -10593,16 +10625,20 @@ class Interaction extends InteractionBase {
10593
10625
  }
10594
10626
 
10595
10627
  function fillText(ui, canvas) {
10596
- let row;
10597
- const { rows, decorationY, decorationHeight } = ui.__.__textDrawData;
10628
+ let row, data = ui.__.__textDrawData;
10629
+ const { rows, decorationY } = data;
10598
10630
  for (let i = 0, len = rows.length; i < len; i++) {
10599
10631
  row = rows[i];
10600
10632
  if (row.text)
10601
10633
  canvas.fillText(row.text, row.x, row.y);
10602
10634
  else if (row.data)
10603
10635
  row.data.forEach(charData => { canvas.fillText(charData.char, charData.x, row.y); });
10604
- if (decorationY)
10605
- canvas.fillRect(row.x, row.y + decorationY, row.width, decorationHeight);
10636
+ }
10637
+ if (decorationY) {
10638
+ const { decorationColor, decorationHeight } = data;
10639
+ if (decorationColor)
10640
+ canvas.fillStyle = decorationColor;
10641
+ rows.forEach(row => decorationY.forEach(value => canvas.fillRect(row.x, row.y + value, row.width, decorationHeight)));
10606
10642
  }
10607
10643
  }
10608
10644
 
@@ -10673,16 +10709,18 @@ function drawAlignStroke(align, stroke, isStrokes, ui, canvas) {
10673
10709
  out.recycle(ui.__nowWorld);
10674
10710
  }
10675
10711
  function drawTextStroke(ui, canvas) {
10676
- let row;
10677
- const { rows, decorationY, decorationHeight } = ui.__.__textDrawData;
10712
+ let row, data = ui.__.__textDrawData;
10713
+ const { rows, decorationY } = data;
10678
10714
  for (let i = 0, len = rows.length; i < len; i++) {
10679
10715
  row = rows[i];
10680
10716
  if (row.text)
10681
10717
  canvas.strokeText(row.text, row.x, row.y);
10682
10718
  else if (row.data)
10683
10719
  row.data.forEach(charData => { canvas.strokeText(charData.char, charData.x, row.y); });
10684
- if (decorationY)
10685
- canvas.strokeRect(row.x, row.y + decorationY, row.width, decorationHeight);
10720
+ }
10721
+ if (decorationY) {
10722
+ const { decorationHeight } = data;
10723
+ rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
10686
10724
  }
10687
10725
  }
10688
10726
  function drawStrokesStyle(strokes, isText, ui, canvas) {
@@ -11248,6 +11286,8 @@ function recycleImage(attrName, data) {
11248
11286
  }
11249
11287
  image.unload(paints[i].loadId, !input.some((item) => item.url === url));
11250
11288
  }
11289
+ else
11290
+ paints[i].style = null;
11251
11291
  }
11252
11292
  }
11253
11293
  return recycleMap;
@@ -11980,14 +12020,25 @@ function toTextChar(row) {
11980
12020
  }
11981
12021
 
11982
12022
  function decorationText(drawData, style) {
11983
- const { fontSize } = style;
12023
+ let type;
12024
+ const { fontSize, textDecoration } = style;
11984
12025
  drawData.decorationHeight = fontSize / 11;
11985
- switch (style.textDecoration) {
12026
+ if (typeof textDecoration === 'object') {
12027
+ type = textDecoration.type;
12028
+ if (textDecoration.color)
12029
+ drawData.decorationColor = ColorConvert.string(textDecoration.color);
12030
+ }
12031
+ else
12032
+ type = textDecoration;
12033
+ switch (type) {
11986
12034
  case 'under':
11987
- drawData.decorationY = fontSize * 0.15;
12035
+ drawData.decorationY = [fontSize * 0.15];
11988
12036
  break;
11989
12037
  case 'delete':
11990
- drawData.decorationY = -fontSize * 0.35;
12038
+ drawData.decorationY = [-fontSize * 0.35];
12039
+ break;
12040
+ case 'under-delete':
12041
+ drawData.decorationY = [fontSize * 0.15, -fontSize * 0.35];
11991
12042
  }
11992
12043
  }
11993
12044
 
@@ -12088,5 +12139,5 @@ Object.assign(Creator, {
12088
12139
  });
12089
12140
  useCanvas();
12090
12141
 
12091
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
12142
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isEmptyData, 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 };
12092
12143
  //# sourceMappingURL=web.module.js.map