leafer-ui 1.5.1 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web.js CHANGED
@@ -119,8 +119,9 @@ var LeaferUI = (function (exports) {
119
119
  if (!scaleData)
120
120
  scaleData = {};
121
121
  if (size) {
122
- scaleData.scaleX = (typeof size === 'number' ? size : size.width) / originSize.width;
123
- scaleData.scaleY = (typeof size === 'number' ? size : size.height) / originSize.height;
122
+ const scaleX = (typeof size === 'number' ? size : size.width || 0) / originSize.width, scaleY = (typeof size === 'number' ? size : size.height || 0) / originSize.height;
123
+ scaleData.scaleX = scaleX || scaleY || 1;
124
+ scaleData.scaleY = scaleY || scaleX || 1;
124
125
  }
125
126
  else if (scale)
126
127
  MathHelper.assignScale(scaleData, scale);
@@ -1693,6 +1694,9 @@ var LeaferUI = (function (exports) {
1693
1694
  function isNull(value) {
1694
1695
  return value === undefined || value === null;
1695
1696
  }
1697
+ function isEmptyData(value) {
1698
+ return JSON.stringify(value) === '{}';
1699
+ }
1696
1700
 
1697
1701
  /******************************************************************************
1698
1702
  Copyright (c) Microsoft Corporation.
@@ -2348,7 +2352,7 @@ var LeaferUI = (function (exports) {
2348
2352
  const { sin: sin$3, cos: cos$3, atan2: atan2$1, ceil: ceil$1, abs: abs$3, PI: PI$2, sqrt: sqrt$1, pow } = Math;
2349
2353
  const { setPoint: setPoint$1, addPoint: addPoint$1 } = TwoPointBoundsHelper;
2350
2354
  const { set, toNumberPoints } = PointHelper;
2351
- const { M: M$5, L: L$6, C: C$5, Q: Q$4, Z: Z$5 } = PathCommandMap;
2355
+ const { M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5 } = PathCommandMap;
2352
2356
  const tempPoint$2 = {};
2353
2357
  const BezierHelper = {
2354
2358
  points(data, originPoints, curve, close) {
@@ -2383,7 +2387,7 @@ var LeaferUI = (function (exports) {
2383
2387
  data.push(Q$4, c1X, c1Y, bX, bY);
2384
2388
  }
2385
2389
  else {
2386
- data.push(C$5, c2X, c2Y, c1X, c1Y, bX, bY);
2390
+ data.push(C$4, c2X, c2Y, c1X, c1Y, bX, bY);
2387
2391
  }
2388
2392
  c2X = bX + cb * cX;
2389
2393
  c2Y = bY + cb * cY;
@@ -2488,7 +2492,7 @@ var LeaferUI = (function (exports) {
2488
2492
  x2 = cx + x + control * (rotationCos * radiusX * endSin + rotationSin * radiusY * endCos);
2489
2493
  y2 = cy + y + control * (rotationSin * radiusX * endSin - rotationCos * radiusY * endCos);
2490
2494
  if (data)
2491
- data.push(C$5, x1, y1, x2, y2, cx + x, cy + y);
2495
+ data.push(C$4, x1, y1, x2, y2, cx + x, cy + y);
2492
2496
  if (setPointBounds)
2493
2497
  toTwoPointBounds$1(cx + startX, cy + startY, x1, y1, x2, y2, cx + x, cy + y, setPointBounds, true);
2494
2498
  startX = x;
@@ -2502,7 +2506,7 @@ var LeaferUI = (function (exports) {
2502
2506
  set(setEndPoint, cx + x, cy + y);
2503
2507
  },
2504
2508
  quadraticCurveTo(data, fromX, fromY, x1, y1, toX, toY) {
2505
- data.push(C$5, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
2509
+ data.push(C$4, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
2506
2510
  },
2507
2511
  toTwoPointBoundsByQuadraticCurve(fromX, fromY, x1, y1, toX, toY, pointBounds, addMode) {
2508
2512
  toTwoPointBounds$1(fromX, fromY, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY, pointBounds, addMode);
@@ -2610,7 +2614,7 @@ var LeaferUI = (function (exports) {
2610
2614
  }
2611
2615
  };
2612
2616
 
2613
- 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;
2617
+ 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;
2614
2618
  const { rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$3, arc: arc$3, ellipse: ellipse$4, quadraticCurveTo: quadraticCurveTo$1 } = BezierHelper;
2615
2619
  const { ellipticalArc } = EllipseHelper;
2616
2620
  const debug$d = Debug.get('PathConvert');
@@ -2738,14 +2742,14 @@ var LeaferUI = (function (exports) {
2738
2742
  old[i + 4] += y;
2739
2743
  command = S;
2740
2744
  case S:
2741
- smooth = (lastCommand === C$4) || (lastCommand === S);
2745
+ smooth = (lastCommand === C$3) || (lastCommand === S);
2742
2746
  x1 = smooth ? (x * 2 - controlX) : old[i + 1];
2743
2747
  y1 = smooth ? (y * 2 - controlY) : old[i + 2];
2744
2748
  controlX = old[i + 1];
2745
2749
  controlY = old[i + 2];
2746
2750
  x = old[i + 3];
2747
2751
  y = old[i + 4];
2748
- data.push(C$4, x1, y1, controlX, controlY, x, y);
2752
+ data.push(C$3, x1, y1, controlX, controlY, x, y);
2749
2753
  i += 5;
2750
2754
  break;
2751
2755
  case c:
@@ -2755,13 +2759,13 @@ var LeaferUI = (function (exports) {
2755
2759
  old[i + 4] += y;
2756
2760
  old[i + 5] += x;
2757
2761
  old[i + 6] += y;
2758
- command = C$4;
2759
- case C$4:
2762
+ command = C$3;
2763
+ case C$3:
2760
2764
  controlX = old[i + 3];
2761
2765
  controlY = old[i + 4];
2762
2766
  x = old[i + 5];
2763
2767
  y = old[i + 6];
2764
- data.push(C$4, old[i + 1], old[i + 2], controlX, controlY, x, y);
2768
+ data.push(C$3, old[i + 1], old[i + 2], controlX, controlY, x, y);
2765
2769
  i += 7;
2766
2770
  break;
2767
2771
  case t:
@@ -2872,7 +2876,7 @@ var LeaferUI = (function (exports) {
2872
2876
  data.push(L$5, item.x, item.y);
2873
2877
  break;
2874
2878
  case 'C':
2875
- data.push(C$4, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2879
+ data.push(C$3, item.x1, item.y1, item.x2, item.y2, item.x, item.y);
2876
2880
  break;
2877
2881
  case 'Q':
2878
2882
  data.push(Q$3, item.x1, item.y1, item.x, item.y);
@@ -2899,7 +2903,7 @@ var LeaferUI = (function (exports) {
2899
2903
  };
2900
2904
  const { current, pushData, copyData } = PathConvert;
2901
2905
 
2902
- 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;
2906
+ 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;
2903
2907
  const { getMinDistanceFrom, getRadianFrom } = PointHelper;
2904
2908
  const { tan, min, abs: abs$2 } = Math;
2905
2909
  const startPoint = {};
@@ -2914,7 +2918,7 @@ var LeaferUI = (function (exports) {
2914
2918
  data.push(L$4, x, y);
2915
2919
  },
2916
2920
  bezierCurveTo(data, x1, y1, x2, y2, x, y) {
2917
- data.push(C$3, x1, y1, x2, y2, x, y);
2921
+ data.push(C$2, x1, y1, x2, y2, x, y);
2918
2922
  },
2919
2923
  quadraticCurveTo(data, x1, y1, x, y) {
2920
2924
  data.push(Q$2, x1, y1, x, y);
@@ -3076,7 +3080,7 @@ var LeaferUI = (function (exports) {
3076
3080
  paint() { }
3077
3081
  }
3078
3082
 
3079
- 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;
3083
+ 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;
3080
3084
  const debug$c = Debug.get('PathDrawer');
3081
3085
  const PathDrawer = {
3082
3086
  drawPathByData(drawer, data) {
@@ -3095,7 +3099,7 @@ var LeaferUI = (function (exports) {
3095
3099
  drawer.lineTo(data[i + 1], data[i + 2]);
3096
3100
  i += 3;
3097
3101
  break;
3098
- case C$2:
3102
+ case C$1:
3099
3103
  drawer.bezierCurveTo(data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6]);
3100
3104
  i += 7;
3101
3105
  break;
@@ -3147,7 +3151,7 @@ var LeaferUI = (function (exports) {
3147
3151
  }
3148
3152
  };
3149
3153
 
3150
- 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;
3154
+ const { M: M$1, L: L$2, C, Q, Z: Z$1, N, D, X, G, F: F$1, O, P, U } = PathCommandMap;
3151
3155
  const { toTwoPointBounds, toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc, ellipse: ellipse$1 } = BezierHelper;
3152
3156
  const { addPointBounds, copy: copy$8, addPoint, setPoint, addBounds, toBounds: toBounds$2 } = TwoPointBoundsHelper;
3153
3157
  const debug$b = Debug.get('PathBounds');
@@ -3168,7 +3172,7 @@ var LeaferUI = (function (exports) {
3168
3172
  while (i < len) {
3169
3173
  command = data[i];
3170
3174
  if (i === 0) {
3171
- if (command === Z$1 || command === C$1 || command === Q) {
3175
+ if (command === Z$1 || command === C || command === Q) {
3172
3176
  setPoint(setPointBounds, x, y);
3173
3177
  }
3174
3178
  else {
@@ -3183,7 +3187,7 @@ var LeaferUI = (function (exports) {
3183
3187
  addPoint(setPointBounds, x, y);
3184
3188
  i += 3;
3185
3189
  break;
3186
- case C$1:
3190
+ case C:
3187
3191
  toX = data[i + 5];
3188
3192
  toY = data[i + 6];
3189
3193
  toTwoPointBounds(x, y, data[i + 1], data[i + 2], data[i + 3], data[i + 4], toX, toY, tempPointBounds);
@@ -3265,12 +3269,12 @@ var LeaferUI = (function (exports) {
3265
3269
  }
3266
3270
  };
3267
3271
 
3268
- const { M, L: L$1, C, Z } = PathCommandMap;
3272
+ const { M, L: L$1, Z } = PathCommandMap;
3269
3273
  const { getCenterX, getCenterY } = PointHelper;
3270
3274
  const { arcTo } = PathCommandDataHelper;
3271
3275
  const PathCorner = {
3272
3276
  smooth(data, cornerRadius, _cornerSmoothing) {
3273
- let command;
3277
+ let command, commandLen;
3274
3278
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3275
3279
  const len = data.length;
3276
3280
  const smooth = [];
@@ -3307,15 +3311,16 @@ var LeaferUI = (function (exports) {
3307
3311
  lastX = x;
3308
3312
  lastY = y;
3309
3313
  break;
3310
- case C:
3311
- smooth.push(C, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6]);
3312
- i += 7;
3313
- break;
3314
3314
  case Z:
3315
3315
  arcTo(smooth, startX, startY, secondX, secondY, cornerRadius, lastX, lastY);
3316
3316
  smooth.push(Z);
3317
3317
  i += 1;
3318
3318
  break;
3319
+ default:
3320
+ commandLen = PathNumberCommandLengthMap[command];
3321
+ for (let j = 0; j < commandLen; j++)
3322
+ smooth.push(data[i + j]);
3323
+ i += commandLen;
3319
3324
  }
3320
3325
  }
3321
3326
  if (command !== Z) {
@@ -4077,28 +4082,42 @@ var LeaferUI = (function (exports) {
4077
4082
  return v === undefined ? defaultValue(this.__leaf) : v;
4078
4083
  };
4079
4084
  }
4085
+ else if (typeof defaultValue === 'object') {
4086
+ const isEmpty = isEmptyData(defaultValue);
4087
+ property.get = function () {
4088
+ let v = this[computedKey];
4089
+ return v === undefined ? this[computedKey] = isEmpty ? {} : DataHelper.clone(defaultValue) : v;
4090
+ };
4091
+ }
4092
+ const isBox = target.isBranchLeaf;
4080
4093
  if (key === 'width') {
4081
4094
  property.get = function () {
4082
4095
  const v = this[computedKey];
4083
4096
  if (v === undefined) {
4084
- const t = this;
4085
- return t._height && t.__naturalWidth && t.__useNaturalRatio ? t._height * t.__naturalWidth / t.__naturalHeight : t.__naturalWidth || defaultValue;
4097
+ const t = this, naturalWidth = t.__naturalWidth, leaf = t.__leaf;
4098
+ if (!defaultValue || leaf.pathInputed)
4099
+ return leaf.boxBounds.width;
4100
+ if (naturalWidth)
4101
+ return t._height && t.__useNaturalRatio ? t._height * naturalWidth / t.__naturalHeight : naturalWidth;
4102
+ return (isBox && leaf.children.length) ? leaf.boxBounds.width : defaultValue;
4086
4103
  }
4087
- else {
4104
+ else
4088
4105
  return v;
4089
- }
4090
4106
  };
4091
4107
  }
4092
4108
  else if (key === 'height') {
4093
4109
  property.get = function () {
4094
4110
  const v = this[computedKey];
4095
4111
  if (v === undefined) {
4096
- const t = this;
4097
- return t._width && t.__naturalHeight && t.__useNaturalRatio ? t._width * t.__naturalHeight / t.__naturalWidth : t.__naturalHeight || defaultValue;
4112
+ const t = this, naturalHeight = t.__naturalHeight, leaf = t.__leaf;
4113
+ if (!defaultValue || leaf.pathInputed)
4114
+ return leaf.boxBounds.height;
4115
+ if (naturalHeight)
4116
+ return t._width && t.__useNaturalRatio ? t._width * naturalHeight / t.__naturalWidth : naturalHeight;
4117
+ return (isBox && leaf.children.length) ? leaf.boxBounds.height : defaultValue;
4098
4118
  }
4099
- else {
4119
+ else
4100
4120
  return v;
4101
- }
4102
4121
  };
4103
4122
  }
4104
4123
  let descriptor, find = data;
@@ -4525,7 +4544,12 @@ var LeaferUI = (function (exports) {
4525
4544
  while (root.parent && !root.parent.leafer) {
4526
4545
  root = root.parent;
4527
4546
  }
4528
- Platform.layout(root);
4547
+ const r = root;
4548
+ if (r.__fullLayouting)
4549
+ return;
4550
+ r.__fullLayouting = true;
4551
+ Platform.layout(r);
4552
+ delete r.__fullLayouting;
4529
4553
  }
4530
4554
  }
4531
4555
  getTransform(relative = 'world') {
@@ -6050,7 +6074,7 @@ var LeaferUI = (function (exports) {
6050
6074
  }
6051
6075
  }
6052
6076
 
6053
- const version = "1.5.1";
6077
+ const version = "1.5.3";
6054
6078
 
6055
6079
  const debug$5 = Debug.get('LeaferCanvas');
6056
6080
  class LeaferCanvas extends LeaferCanvasBase {
@@ -7821,7 +7845,7 @@ var LeaferUI = (function (exports) {
7821
7845
  strokeType()
7822
7846
  ], exports.UI.prototype, "dashPattern", void 0);
7823
7847
  __decorate([
7824
- strokeType()
7848
+ strokeType(0)
7825
7849
  ], exports.UI.prototype, "dashOffset", void 0);
7826
7850
  __decorate([
7827
7851
  strokeType(10)
@@ -7914,6 +7938,12 @@ var LeaferUI = (function (exports) {
7914
7938
  __decorate([
7915
7939
  dataProcessor(GroupData)
7916
7940
  ], exports.Group.prototype, "__", void 0);
7941
+ __decorate([
7942
+ boundsType(0)
7943
+ ], exports.Group.prototype, "width", void 0);
7944
+ __decorate([
7945
+ boundsType(0)
7946
+ ], exports.Group.prototype, "height", void 0);
7917
7947
  exports.Group = __decorate([
7918
7948
  useModule(exports.Branch),
7919
7949
  registerUI()
@@ -8329,7 +8359,7 @@ var LeaferUI = (function (exports) {
8329
8359
  __updateRectBoxBounds() { }
8330
8360
  __updateBoxBounds(_secondLayout) {
8331
8361
  const data = this.__;
8332
- if (this.children.length) {
8362
+ if (this.children.length && !this.pathInputed) {
8333
8363
  if (data.__autoSide) {
8334
8364
  if (data.__hasSurface)
8335
8365
  this.__extraUpdate();
@@ -8398,6 +8428,12 @@ var LeaferUI = (function (exports) {
8398
8428
  __decorate([
8399
8429
  dataProcessor(BoxData)
8400
8430
  ], exports.Box.prototype, "__", void 0);
8431
+ __decorate([
8432
+ boundsType(100)
8433
+ ], exports.Box.prototype, "width", void 0);
8434
+ __decorate([
8435
+ boundsType(100)
8436
+ ], exports.Box.prototype, "height", void 0);
8401
8437
  __decorate([
8402
8438
  dataType(false)
8403
8439
  ], exports.Box.prototype, "resizeChildren", void 0);
@@ -10592,16 +10628,20 @@ var LeaferUI = (function (exports) {
10592
10628
  }
10593
10629
 
10594
10630
  function fillText(ui, canvas) {
10595
- let row;
10596
- const { rows, decorationY, decorationHeight } = ui.__.__textDrawData;
10631
+ let row, data = ui.__.__textDrawData;
10632
+ const { rows, decorationY } = data;
10597
10633
  for (let i = 0, len = rows.length; i < len; i++) {
10598
10634
  row = rows[i];
10599
10635
  if (row.text)
10600
10636
  canvas.fillText(row.text, row.x, row.y);
10601
10637
  else if (row.data)
10602
10638
  row.data.forEach(charData => { canvas.fillText(charData.char, charData.x, row.y); });
10603
- if (decorationY)
10604
- canvas.fillRect(row.x, row.y + decorationY, row.width, decorationHeight);
10639
+ }
10640
+ if (decorationY) {
10641
+ const { decorationColor, decorationHeight } = data;
10642
+ if (decorationColor)
10643
+ canvas.fillStyle = decorationColor;
10644
+ rows.forEach(row => decorationY.forEach(value => canvas.fillRect(row.x, row.y + value, row.width, decorationHeight)));
10605
10645
  }
10606
10646
  }
10607
10647
 
@@ -10672,16 +10712,18 @@ var LeaferUI = (function (exports) {
10672
10712
  out.recycle(ui.__nowWorld);
10673
10713
  }
10674
10714
  function drawTextStroke(ui, canvas) {
10675
- let row;
10676
- const { rows, decorationY, decorationHeight } = ui.__.__textDrawData;
10715
+ let row, data = ui.__.__textDrawData;
10716
+ const { rows, decorationY } = data;
10677
10717
  for (let i = 0, len = rows.length; i < len; i++) {
10678
10718
  row = rows[i];
10679
10719
  if (row.text)
10680
10720
  canvas.strokeText(row.text, row.x, row.y);
10681
10721
  else if (row.data)
10682
10722
  row.data.forEach(charData => { canvas.strokeText(charData.char, charData.x, row.y); });
10683
- if (decorationY)
10684
- canvas.strokeRect(row.x, row.y + decorationY, row.width, decorationHeight);
10723
+ }
10724
+ if (decorationY) {
10725
+ const { decorationHeight } = data;
10726
+ rows.forEach(row => decorationY.forEach(value => canvas.strokeRect(row.x, row.y + value, row.width, decorationHeight)));
10685
10727
  }
10686
10728
  }
10687
10729
  function drawStrokesStyle(strokes, isText, ui, canvas) {
@@ -11247,6 +11289,8 @@ var LeaferUI = (function (exports) {
11247
11289
  }
11248
11290
  image.unload(paints[i].loadId, !input.some((item) => item.url === url));
11249
11291
  }
11292
+ else
11293
+ paints[i].style = null;
11250
11294
  }
11251
11295
  }
11252
11296
  return recycleMap;
@@ -11979,14 +12023,25 @@ var LeaferUI = (function (exports) {
11979
12023
  }
11980
12024
 
11981
12025
  function decorationText(drawData, style) {
11982
- const { fontSize } = style;
12026
+ let type;
12027
+ const { fontSize, textDecoration } = style;
11983
12028
  drawData.decorationHeight = fontSize / 11;
11984
- switch (style.textDecoration) {
12029
+ if (typeof textDecoration === 'object') {
12030
+ type = textDecoration.type;
12031
+ if (textDecoration.color)
12032
+ drawData.decorationColor = ColorConvert.string(textDecoration.color);
12033
+ }
12034
+ else
12035
+ type = textDecoration;
12036
+ switch (type) {
11985
12037
  case 'under':
11986
- drawData.decorationY = fontSize * 0.15;
12038
+ drawData.decorationY = [fontSize * 0.15];
11987
12039
  break;
11988
12040
  case 'delete':
11989
- drawData.decorationY = -fontSize * 0.35;
12041
+ drawData.decorationY = [-fontSize * 0.35];
12042
+ break;
12043
+ case 'under-delete':
12044
+ drawData.decorationY = [fontSize * 0.15, -fontSize * 0.35];
11990
12045
  }
11991
12046
  }
11992
12047
 
@@ -12229,6 +12284,7 @@ var LeaferUI = (function (exports) {
12229
12284
  exports.getMatrixData = getMatrixData;
12230
12285
  exports.getPointData = getPointData;
12231
12286
  exports.hitType = hitType;
12287
+ exports.isEmptyData = isEmptyData;
12232
12288
  exports.isNull = isNull;
12233
12289
  exports.layoutProcessor = layoutProcessor;
12234
12290
  exports.maskType = maskType;