@leafer/miniapp 2.1.3 → 2.1.5

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.
@@ -221,7 +221,7 @@ const IncrementId = {
221
221
  RUNTIME: "runtime",
222
222
  LEAF: "leaf",
223
223
  TASK: "task",
224
- CNAVAS: "canvas",
224
+ CANVAS: "canvas",
225
225
  IMAGE: "image",
226
226
  types: {},
227
227
  create(typeName) {
@@ -433,7 +433,7 @@ const {sin: sin$6, cos: cos$6, acos: acos, sqrt: sqrt$5} = Math;
433
433
 
434
434
  const {float: float$6} = MathHelper;
435
435
 
436
- const tempPoint$5 = {};
436
+ const tempPoint$6 = {};
437
437
 
438
438
  function getWorld() {
439
439
  return Object.assign(Object.assign(Object.assign({}, getMatrixData()), getBoundsData()), {
@@ -492,8 +492,8 @@ const MatrixHelper = {
492
492
  to.f = t.f * pixelRatio;
493
493
  },
494
494
  scaleOfOuter(t, origin, scaleX, scaleY) {
495
- M$c.toInnerPoint(t, origin, tempPoint$5);
496
- M$c.scaleOfInner(t, tempPoint$5, scaleX, scaleY);
495
+ M$c.toInnerPoint(t, origin, tempPoint$6);
496
+ M$c.scaleOfInner(t, tempPoint$6, scaleX, scaleY);
497
497
  },
498
498
  scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
499
499
  M$c.translateInner(t, origin.x, origin.y);
@@ -511,8 +511,8 @@ const MatrixHelper = {
511
511
  t.d = c * sinR + d * cosR;
512
512
  },
513
513
  rotateOfOuter(t, origin, rotation) {
514
- M$c.toInnerPoint(t, origin, tempPoint$5);
515
- M$c.rotateOfInner(t, tempPoint$5, rotation);
514
+ M$c.toInnerPoint(t, origin, tempPoint$6);
515
+ M$c.rotateOfInner(t, tempPoint$6, rotation);
516
516
  },
517
517
  rotateOfInner(t, origin, rotation) {
518
518
  M$c.translateInner(t, origin.x, origin.y);
@@ -533,8 +533,8 @@ const MatrixHelper = {
533
533
  }
534
534
  },
535
535
  skewOfOuter(t, origin, skewX, skewY) {
536
- M$c.toInnerPoint(t, origin, tempPoint$5);
537
- M$c.skewOfInner(t, tempPoint$5, skewX, skewY);
536
+ M$c.toInnerPoint(t, origin, tempPoint$6);
537
+ M$c.skewOfInner(t, tempPoint$6, skewX, skewY);
538
538
  },
539
539
  skewOfInner(t, origin, skewX, skewY = 0) {
540
540
  M$c.translateInner(t, origin.x, origin.y);
@@ -733,7 +733,7 @@ const M$c = MatrixHelper;
733
733
 
734
734
  const {float: float$5} = MathHelper;
735
735
 
736
- const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
736
+ const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$4} = MatrixHelper;
737
737
 
738
738
  const {sin: sin$5, cos: cos$5, abs: abs$b, sqrt: sqrt$4, atan2: atan2$2, min: min$3, round: round$5} = Math;
739
739
 
@@ -791,7 +791,7 @@ const PointHelper = {
791
791
  tempToOuterOf(t, matrix) {
792
792
  const {tempPoint: temp} = P$7;
793
793
  copy$c(temp, t);
794
- toOuterPoint$3(matrix, temp, temp);
794
+ toOuterPoint$4(matrix, temp, temp);
795
795
  return temp;
796
796
  },
797
797
  tempToInnerRadiusPointOf(t, matrix) {
@@ -815,7 +815,7 @@ const PointHelper = {
815
815
  toInnerPoint$2(matrix, t, to);
816
816
  },
817
817
  toOuterOf(t, matrix, to) {
818
- toOuterPoint$3(matrix, t, to);
818
+ toOuterPoint$4(matrix, t, to);
819
819
  },
820
820
  getCenter(t, to) {
821
821
  return {
@@ -875,7 +875,7 @@ const PointHelper = {
875
875
  return quick ? t.x === point.x && t.y === point.y : float$5(t.x) === float$5(point.x) && float$5(t.y) === float$5(point.y);
876
876
  },
877
877
  reset(t) {
878
- P$7.reset(t);
878
+ t.x = t.y = 0;
879
879
  }
880
880
  };
881
881
 
@@ -956,7 +956,7 @@ class Point {
956
956
  }
957
957
  }
958
958
 
959
- const tempPoint$4 = new Point;
959
+ const tempPoint$5 = new Point;
960
960
 
961
961
  class Matrix {
962
962
  constructor(a, b, c, d, e, f) {
@@ -1084,6 +1084,7 @@ class Matrix {
1084
1084
  }
1085
1085
  reset() {
1086
1086
  MatrixHelper.reset(this);
1087
+ return this;
1087
1088
  }
1088
1089
  }
1089
1090
 
@@ -1225,7 +1226,7 @@ const AlignHelper = {
1225
1226
 
1226
1227
  const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$5, addPoint: addPoint$3, toBounds: toBounds$3} = TwoPointBoundsHelper;
1227
1228
 
1228
- const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1229
+ const {toOuterPoint: toOuterPoint$3} = MatrixHelper;
1229
1230
 
1230
1231
  const {float: float$4, fourNumber: fourNumber$1} = MathHelper;
1231
1232
 
@@ -1339,16 +1340,16 @@ const BoundsHelper = {
1339
1340
  } else {
1340
1341
  point$2.x = t.x;
1341
1342
  point$2.y = t.y;
1342
- toOuterPoint$2(matrix, point$2, toPoint$5);
1343
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1343
1344
  setPoint$5(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1344
1345
  point$2.x = t.x + t.width;
1345
- toOuterPoint$2(matrix, point$2, toPoint$5);
1346
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1346
1347
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1347
1348
  point$2.y = t.y + t.height;
1348
- toOuterPoint$2(matrix, point$2, toPoint$5);
1349
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1349
1350
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1350
1351
  point$2.x = t.x;
1351
- toOuterPoint$2(matrix, point$2, toPoint$5);
1352
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1352
1353
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1353
1354
  toBounds$3(tempPointBounds$1, to);
1354
1355
  }
@@ -2346,7 +2347,7 @@ class LeaferCanvasBase extends Canvas$1 {
2346
2347
  this.worldTransform = {};
2347
2348
  if (!config) config = minSize;
2348
2349
  this.manager = manager;
2349
- this.innerId = IncrementId.create(IncrementId.CNAVAS);
2350
+ this.innerId = IncrementId.create(IncrementId.CANVAS);
2350
2351
  const {width: width, height: height, pixelRatio: pixelRatio} = config;
2351
2352
  this.autoLayout = !width || !height;
2352
2353
  this.size.pixelRatio = pixelRatio || Platform.devicePixelRatio;
@@ -2496,6 +2497,7 @@ class LeaferCanvasBase extends Canvas$1 {
2496
2497
  }
2497
2498
  useGrayscaleAlpha(bounds) {
2498
2499
  this.setTempPixelBounds(bounds, true, true);
2500
+ if (!tempPixelBounds.width || !tempPixelBounds.height) return;
2499
2501
  let alpha, pixel;
2500
2502
  const {context: context} = this, imageData = context.getImageData(tempPixelBounds.x, tempPixelBounds.y, tempPixelBounds.width, tempPixelBounds.height), {data: data} = imageData;
2501
2503
  for (let i = 0, len = data.length; i < len; i += 4) {
@@ -2708,7 +2710,7 @@ const {set: set$1, toNumberPoints: toNumberPoints$1} = PointHelper;
2708
2710
 
2709
2711
  const {M: M$b, L: L$b, C: C$9, Q: Q$7, Z: Z$9} = PathCommandMap;
2710
2712
 
2711
- const tempPoint$3 = {};
2713
+ const tempPoint$4 = {};
2712
2714
 
2713
2715
  const BezierHelper = {
2714
2716
  points(data, originPoints, curve, close) {
@@ -2794,10 +2796,10 @@ const BezierHelper = {
2794
2796
  const centerY = y1 + c * sin$4(startRadian + totalRadian / 2 + PI_2 * sign);
2795
2797
  startRadian -= PI_2 * sign;
2796
2798
  endRadian -= PI_2 * sign;
2797
- return ellipse$8(data, centerX, centerY, radius, radius, 0, startRadian / OneRadian, endRadian / OneRadian, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2799
+ return ellipse$7(data, centerX, centerY, radius, radius, 0, startRadian / OneRadian, endRadian / OneRadian, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2798
2800
  },
2799
2801
  arc(data, x, y, radius, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint) {
2800
- return ellipse$8(data, x, y, radius, radius, 0, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2802
+ return ellipse$7(data, x, y, radius, radius, 0, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint);
2801
2803
  },
2802
2804
  ellipse(data, cx, cy, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise, setPointBounds, setEndPoint, setStartPoint) {
2803
2805
  const rotationRadian = rotation * OneRadian;
@@ -2879,8 +2881,8 @@ const BezierHelper = {
2879
2881
  addMode ? addPoint$2(pointBounds, fromX, fromY) : setPoint$4(pointBounds, fromX, fromY);
2880
2882
  addPoint$2(pointBounds, toX, toY);
2881
2883
  for (let i = 0, len = tList.length; i < len; i++) {
2882
- getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$3);
2883
- addPoint$2(pointBounds, tempPoint$3.x, tempPoint$3.y);
2884
+ getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$4);
2885
+ addPoint$2(pointBounds, tempPoint$4.x, tempPoint$4.y);
2884
2886
  }
2885
2887
  },
2886
2888
  getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
@@ -2925,11 +2927,11 @@ const BezierHelper = {
2925
2927
  }
2926
2928
  };
2927
2929
 
2928
- const {getPointAndSet: getPointAndSet, toTwoPointBounds: toTwoPointBounds$1, ellipse: ellipse$8} = BezierHelper;
2930
+ const {getPointAndSet: getPointAndSet, toTwoPointBounds: toTwoPointBounds$1, ellipse: ellipse$7} = BezierHelper;
2929
2931
 
2930
2932
  const {sin: sin$3, cos: cos$3, sqrt: sqrt$2, atan2: atan2} = Math;
2931
2933
 
2932
- const {ellipse: ellipse$7} = BezierHelper;
2934
+ const {ellipse: ellipse$6} = BezierHelper;
2933
2935
 
2934
2936
  const EllipseHelper = {
2935
2937
  ellipticalArc(data, fromX, fromY, radiusX, radiusY, rotation, largeFlag, sweepFlag, toX, toY, curveMode) {
@@ -2967,7 +2969,7 @@ const EllipseHelper = {
2967
2969
  const centerY = fromY + halfY + rotationSin * cx + rotationCos * cy;
2968
2970
  const anticlockwise = totalRadian < 0 ? 1 : 0;
2969
2971
  if (curveMode || Platform.ellipseToCurve) {
2970
- ellipse$7(data, centerX, centerY, radiusX, radiusY, rotation, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
2972
+ ellipse$6(data, centerX, centerY, radiusX, radiusY, rotation, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
2971
2973
  } else {
2972
2974
  if (radiusX === radiusY && !rotation) {
2973
2975
  data.push(PathCommandMap.O, centerX, centerY, radiusX, startRadian / OneRadian, endRadian / OneRadian, anticlockwise);
@@ -2989,7 +2991,7 @@ const PathCommandNodeHelper = {
2989
2991
 
2990
2992
  const {M: M$a, m: m, L: L$a, l: l, H: H, h: h, V: V, v: v, C: C$8, c: c, S: S$1, s: s, Q: Q$6, q: q, T: T, t: t, A: A, a: a, Z: Z$8, z: z, N: N$5, D: D$6, X: X$5, G: G$5, F: F$6, O: O$6, P: P$5, U: U$5} = PathCommandMap;
2991
2993
 
2992
- const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$4, arc: arc$3, ellipse: ellipse$6, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
2994
+ const {rect: rect$3, roundRect: roundRect$2, arcTo: arcTo$4, arc: arc$3, ellipse: ellipse$5, quadraticCurveTo: quadraticCurveTo$1} = BezierHelper;
2993
2995
 
2994
2996
  const {ellipticalArc: ellipticalArc} = EllipseHelper;
2995
2997
 
@@ -3048,7 +3050,8 @@ const PathConvert = {
3048
3050
  current.length = PathCommandLengthMap[char];
3049
3051
  current.index = 0;
3050
3052
  pushData(data, current.name);
3051
- if (char === "m") current.name = PathCommandMap["l"]; else if (char === "M") current.name = PathCommandMap["L"]; else if (!needConvert && convertCommand[char]) needConvert = true;
3053
+ if (char === "m") current.name = PathCommandMap["l"]; else if (char === "M") current.name = PathCommandMap["L"];
3054
+ if (!needConvert && convertCommand[char]) needConvert = true;
3052
3055
  } else {
3053
3056
  if (char === "-" || char === "+") {
3054
3057
  if (lastChar === "e" || lastChar === "E") {
@@ -3124,8 +3127,8 @@ const PathConvert = {
3124
3127
 
3125
3128
  case S$1:
3126
3129
  smooth = lastCommand === C$8 || lastCommand === S$1;
3127
- x1 = smooth ? x * 2 - controlX : old[i + 1];
3128
- y1 = smooth ? y * 2 - controlY : old[i + 2];
3130
+ x1 = smooth ? x * 2 - controlX : x;
3131
+ y1 = smooth ? y * 2 - controlY : y;
3129
3132
  controlX = old[i + 1];
3130
3133
  controlY = old[i + 2];
3131
3134
  x = old[i + 3];
@@ -3159,8 +3162,8 @@ const PathConvert = {
3159
3162
 
3160
3163
  case T:
3161
3164
  smooth = lastCommand === Q$6 || lastCommand === T;
3162
- controlX = smooth ? x * 2 - controlX : old[i + 1];
3163
- controlY = smooth ? y * 2 - controlY : old[i + 2];
3165
+ controlX = smooth ? x * 2 - controlX : x;
3166
+ controlY = smooth ? y * 2 - controlY : y;
3164
3167
  curveMode ? quadraticCurveTo$1(data, x, y, controlX, controlY, old[i + 1], old[i + 2]) : data.push(Q$6, controlX, controlY, old[i + 1], old[i + 2]);
3165
3168
  x = old[i + 1];
3166
3169
  y = old[i + 2];
@@ -3224,14 +3227,14 @@ const PathConvert = {
3224
3227
  break;
3225
3228
 
3226
3229
  case G$5:
3227
- ellipse$6(curveMode ? data : copyData(data, old, i, 9), old[i + 1], old[i + 2], old[i + 3], old[i + 4], old[i + 5], old[i + 6], old[i + 7], old[i + 8], null, setEndPoint$1);
3230
+ ellipse$5(curveMode ? data : copyData(data, old, i, 9), old[i + 1], old[i + 2], old[i + 3], old[i + 4], old[i + 5], old[i + 6], old[i + 7], old[i + 8], null, setEndPoint$1);
3228
3231
  x = setEndPoint$1.x;
3229
3232
  y = setEndPoint$1.y;
3230
3233
  i += 9;
3231
3234
  break;
3232
3235
 
3233
3236
  case F$6:
3234
- curveMode ? ellipse$6(data, old[i + 1], old[i + 2], old[i + 3], old[i + 4], 0, 0, 360, false) : copyData(data, old, i, 5);
3237
+ curveMode ? ellipse$5(data, old[i + 1], old[i + 2], old[i + 3], old[i + 4], 0, 0, 360, false) : copyData(data, old, i, 5);
3235
3238
  x = old[i + 1] + old[i + 3];
3236
3239
  y = old[i + 2];
3237
3240
  i += 5;
@@ -3385,7 +3388,7 @@ const PathCommandDataHelper = {
3385
3388
  drawEllipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
3386
3389
  BezierHelper.ellipse(null, x, y, radiusX, radiusY, isNull(rotation) ? 0 : rotation, isNull(startAngle) ? 0 : startAngle, isNull(endAngle) ? 360 : endAngle, anticlockwise, null, null, startPoint);
3387
3390
  data.push(M$9, startPoint.x, startPoint.y);
3388
- ellipse$5(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3391
+ ellipse$4(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3389
3392
  },
3390
3393
  drawArc(data, x, y, radius, startAngle, endAngle, anticlockwise) {
3391
3394
  BezierHelper.arc(null, x, y, radius, isNull(startAngle) ? 0 : startAngle, isNull(endAngle) ? 360 : endAngle, anticlockwise, null, null, startPoint);
@@ -3397,9 +3400,9 @@ const PathCommandDataHelper = {
3397
3400
  }
3398
3401
  };
3399
3402
 
3400
- const {ellipse: ellipse$5, arc: arc$2} = PathCommandDataHelper;
3403
+ const {ellipse: ellipse$4, arc: arc$2} = PathCommandDataHelper;
3401
3404
 
3402
- const {moveTo: moveTo$4, lineTo: lineTo$3, quadraticCurveTo: quadraticCurveTo, bezierCurveTo: bezierCurveTo, closePath: closePath$3, beginPath: beginPath, rect: rect$2, roundRect: roundRect$1, ellipse: ellipse$4, arc: arc$1, arcTo: arcTo$3, drawEllipse: drawEllipse, drawArc: drawArc, drawPoints: drawPoints$2} = PathCommandDataHelper;
3405
+ const {moveTo: moveTo$4, lineTo: lineTo$3, quadraticCurveTo: quadraticCurveTo, bezierCurveTo: bezierCurveTo, closePath: closePath$3, beginPath: beginPath, rect: rect$2, roundRect: roundRect$1, ellipse: ellipse$3, arc: arc$1, arcTo: arcTo$3, drawEllipse: drawEllipse, drawArc: drawArc, drawPoints: drawPoints$2} = PathCommandDataHelper;
3403
3406
 
3404
3407
  class PathCreator {
3405
3408
  set path(value) {
@@ -3456,7 +3459,7 @@ class PathCreator {
3456
3459
  return this;
3457
3460
  }
3458
3461
  ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
3459
- ellipse$4(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3462
+ ellipse$3(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
3460
3463
  this.paint();
3461
3464
  return this;
3462
3465
  }
@@ -3578,7 +3581,7 @@ const PathDrawer = {
3578
3581
 
3579
3582
  const {M: M$7, L: L$7, C: C$5, Q: Q$3, Z: Z$5, N: N$2, D: D$3, X: X$2, G: G$2, F: F$3, O: O$3, P: P$2, U: U$2} = PathCommandMap;
3580
3583
 
3581
- const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$2, arc: arc, ellipse: ellipse$3} = BezierHelper;
3584
+ const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$2, arc: arc, ellipse: ellipse$2} = BezierHelper;
3582
3585
 
3583
3586
  const {addPointBounds: addPointBounds, copy: copy$9, addPoint: addPoint$1, setPoint: setPoint$3, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3584
3587
 
@@ -3661,7 +3664,7 @@ const PathBounds = {
3661
3664
  break;
3662
3665
 
3663
3666
  case G$2:
3664
- ellipse$3(null, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6], data[i + 7], data[i + 8], tempPointBounds, setEndPoint);
3667
+ ellipse$2(null, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6], data[i + 7], data[i + 8], tempPointBounds, setEndPoint);
3665
3668
  i === 0 ? copy$9(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3666
3669
  x = setEndPoint.x;
3667
3670
  y = setEndPoint.y;
@@ -4769,7 +4772,7 @@ function registerUIEvent() {
4769
4772
  };
4770
4773
  }
4771
4774
 
4772
- const {copy: copy$8, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter: skewOfOuter, multiplyParent: multiplyParent$3, divideParent: divideParent, getLayout: getLayout} = MatrixHelper;
4775
+ const {copy: copy$8, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$2, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter: skewOfOuter, multiplyParent: multiplyParent$3, divideParent: divideParent, getLayout: getLayout} = MatrixHelper;
4773
4776
 
4774
4777
  const matrix$3 = {}, {round: round$3} = Math;
4775
4778
 
@@ -4852,7 +4855,7 @@ const LeafHelper = {
4852
4855
  x: x,
4853
4856
  y: y
4854
4857
  };
4855
- isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : t.parent && toInnerPoint$1(t.parent.scrollWorldTransform, local, local, true);
4858
+ isInnerPoint ? toOuterPoint$2(t.localTransform, local, local, true) : t.parent && toInnerPoint$1(t.parent.scrollWorldTransform, local, local, true);
4856
4859
  L$5.moveLocal(t, local.x, local.y, transition);
4857
4860
  },
4858
4861
  moveLocal(t, x, y = 0, transition) {
@@ -4865,10 +4868,10 @@ const LeafHelper = {
4865
4868
  y: y
4866
4869
  }, transition) : (t.x = x, t.y = y);
4867
4870
  },
4868
- zoomOfWorld(t, origin, scaleX, scaleY, resize, transition) {
4869
- L$5.zoomOfLocal(t, getTempLocal(t, origin), scaleX, scaleY, resize, transition);
4871
+ zoomOfWorld(t, origin, scaleX, scaleY, resize, transition, boundsType) {
4872
+ L$5.zoomOfLocal(t, getTempLocal(t, origin), scaleX, scaleY, resize, transition, boundsType);
4870
4873
  },
4871
- zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize, transition) {
4874
+ zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize, transition, boundsType) {
4872
4875
  const o = t.__localMatrix;
4873
4876
  if (!isNumber(scaleY)) {
4874
4877
  if (scaleY) transition = scaleY;
@@ -4877,7 +4880,7 @@ const LeafHelper = {
4877
4880
  copy$8(matrix$3, o);
4878
4881
  scaleOfOuter$2(matrix$3, origin, scaleX, scaleY);
4879
4882
  if (L$5.hasHighPosition(t)) {
4880
- L$5.setTransform(t, matrix$3, resize, transition);
4883
+ L$5.setTransform(t, matrix$3, resize, transition, boundsType);
4881
4884
  } else {
4882
4885
  const x = t.x + matrix$3.e - o.e, y = t.y + matrix$3.f - o.f;
4883
4886
  if (transition && !resize) t.animate({
@@ -4885,7 +4888,7 @@ const LeafHelper = {
4885
4888
  y: y,
4886
4889
  scaleX: t.scaleX * scaleX,
4887
4890
  scaleY: t.scaleY * scaleY
4888
- }, transition); else t.x = x, t.y = y, t.scaleResize(scaleX, scaleY, resize !== true);
4891
+ }, transition); else t.x = x, t.y = y, t.scaleResize(scaleX, scaleY, resize !== true, boundsType);
4889
4892
  }
4890
4893
  },
4891
4894
  rotateOfWorld(t, origin, angle, transition) {
@@ -4909,18 +4912,18 @@ const LeafHelper = {
4909
4912
  skewOfOuter(matrix$3, origin, skewX, skewY);
4910
4913
  L$5.setTransform(t, matrix$3, resize, transition);
4911
4914
  },
4912
- transformWorld(t, transform, resize, transition) {
4915
+ transformWorld(t, transform, resize, transition, boundsType) {
4913
4916
  copy$8(matrix$3, t.worldTransform);
4914
4917
  multiplyParent$3(matrix$3, transform);
4915
4918
  if (t.parent) divideParent(matrix$3, t.parent.scrollWorldTransform);
4916
- L$5.setTransform(t, matrix$3, resize, transition);
4919
+ L$5.setTransform(t, matrix$3, resize, transition, boundsType);
4917
4920
  },
4918
- transform(t, transform, resize, transition) {
4921
+ transform(t, transform, resize, transition, boundsType) {
4919
4922
  copy$8(matrix$3, t.localTransform);
4920
4923
  multiplyParent$3(matrix$3, transform);
4921
- L$5.setTransform(t, matrix$3, resize, transition);
4924
+ L$5.setTransform(t, matrix$3, resize, transition, boundsType);
4922
4925
  },
4923
- setTransform(t, transform, resize, transition) {
4926
+ setTransform(t, transform, resize, transition, boundsType) {
4924
4927
  const data = t.__, originPoint = data.origin && L$5.getInnerOrigin(t, data.origin);
4925
4928
  const layout = getLayout(transform, originPoint, data.around && L$5.getInnerOrigin(t, data.around));
4926
4929
  if (L$5.hasOffset(t)) {
@@ -4936,7 +4939,7 @@ const LeafHelper = {
4936
4939
  PointHelper.move(layout, originPoint.x - changedPoint.x, originPoint.y - changedPoint.y);
4937
4940
  }
4938
4941
  t.set(layout);
4939
- t.scaleResize(scaleX, scaleY, false);
4942
+ t.scaleResize(scaleX, scaleY, false, boundsType);
4940
4943
  } else t.set(layout, transition);
4941
4944
  },
4942
4945
  getFlipTransform(t, axis) {
@@ -5146,12 +5149,12 @@ const BranchHelper = {
5146
5149
  w.height *= scaleY;
5147
5150
  w.scaleX *= scaleX;
5148
5151
  w.scaleY *= scaleY;
5149
- if (branch.isBranch) scale$3(branch, x, y, scaleX, scaleY, a, b);
5152
+ if (branch.isBranch) scale$4(branch, x, y, scaleX, scaleY, a, b);
5150
5153
  }
5151
5154
  }
5152
5155
  };
5153
5156
 
5154
- const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack, move: move$9, scale: scale$3} = BranchHelper;
5157
+ const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack, move: move$9, scale: scale$4} = BranchHelper;
5155
5158
 
5156
5159
  const WaitHelper = {
5157
5160
  run(wait) {
@@ -5518,6 +5521,7 @@ class LeafLayout {
5518
5521
  this.renderChanged = true;
5519
5522
  this.renderSpread || (this.renderSpread = 1);
5520
5523
  this.boundsChanged = true;
5524
+ this.hitCanvasChanged = true;
5521
5525
  }
5522
5526
  scaleChange() {
5523
5527
  this.scaleChanged = true;
@@ -6027,7 +6031,7 @@ const LeafDataProxy = {
6027
6031
 
6028
6032
  const {setLayout: setLayout, multiplyParent: multiplyParent$2, translateInner: translateInner, defaultWorld: defaultWorld} = MatrixHelper;
6029
6033
 
6030
- const {toPoint: toPoint$4, tempPoint: tempPoint$2} = AroundHelper;
6034
+ const {toPoint: toPoint$4, tempPoint: tempPoint$3} = AroundHelper;
6031
6035
 
6032
6036
  const LeafMatrix = {
6033
6037
  __updateWorldMatrix() {
@@ -6048,8 +6052,8 @@ const LeafMatrix = {
6048
6052
  local.e = data.x + data.offsetX;
6049
6053
  local.f = data.y + data.offsetY;
6050
6054
  if (data.around || data.origin) {
6051
- toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$2);
6052
- translateInner(local, -tempPoint$2.x, -tempPoint$2.y, !data.around);
6055
+ toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$3);
6056
+ translateInner(local, -tempPoint$3.x, -tempPoint$3.y, !data.around);
6053
6057
  }
6054
6058
  }
6055
6059
  this.__layout.matrixChanged = undefined;
@@ -6281,7 +6285,7 @@ const {LEAF: LEAF, create: create} = IncrementId;
6281
6285
 
6282
6286
  const {stintSet: stintSet$6} = DataHelper;
6283
6287
 
6284
- const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: multiplyParent$1} = MatrixHelper;
6288
+ const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint$1, multiplyParent: multiplyParent$1} = MatrixHelper;
6285
6289
 
6286
6290
  const {toOuterOf: toOuterOf$1} = BoundsHelper;
6287
6291
 
@@ -6458,10 +6462,6 @@ let Leaf = class Leaf {
6458
6462
  }
6459
6463
  }
6460
6464
  }
6461
- set(_data, _isTemp) {}
6462
- get(_name) {
6463
- return undefined;
6464
- }
6465
6465
  setAttr(name, value) {
6466
6466
  this[name] = value;
6467
6467
  }
@@ -6478,37 +6478,10 @@ let Leaf = class Leaf {
6478
6478
  toString(options) {
6479
6479
  return JSON.stringify(this.toJSON(options));
6480
6480
  }
6481
- toSVG() {
6482
- return undefined;
6483
- }
6484
- __SVG(_data) {}
6485
- toHTML() {
6486
- return undefined;
6487
- }
6488
- __setAttr(_attrName, _newValue) {
6489
- return true;
6490
- }
6491
- __getAttr(_attrName) {
6492
- return undefined;
6493
- }
6494
- setProxyAttr(_attrName, _newValue) {}
6495
- getProxyAttr(_attrName) {
6496
- return undefined;
6497
- }
6498
- find(_condition, _options) {
6499
- return undefined;
6500
- }
6501
- findTag(_tag) {
6502
- return undefined;
6503
- }
6504
- findOne(_condition, _options) {
6505
- return undefined;
6506
- }
6507
- findId(_id) {
6508
- return undefined;
6481
+ scaleResize(scaleX, scaleY = scaleX, _noResize, _boundsType) {
6482
+ this.scaleX *= scaleX;
6483
+ this.scaleY *= scaleY;
6509
6484
  }
6510
- focus(_value) {}
6511
- updateState() {}
6512
6485
  updateLayout() {
6513
6486
  this.__layout.update();
6514
6487
  }
@@ -6524,27 +6497,6 @@ let Leaf = class Leaf {
6524
6497
  __extraUpdate() {
6525
6498
  if (this.leaferIsReady) this.leafer.layouter.addExtra(this);
6526
6499
  }
6527
- __updateWorldMatrix() {}
6528
- __updateLocalMatrix() {}
6529
- __updateWorldBounds() {}
6530
- __updateLocalBounds() {}
6531
- __updateLocalBoxBounds() {}
6532
- __updateLocalStrokeBounds() {}
6533
- __updateLocalRenderBounds() {}
6534
- __updateBoxBounds(_secondLayout, _bounds) {}
6535
- __updateContentBounds() {}
6536
- __updateStrokeBounds(_bounds) {}
6537
- __updateRenderBounds(_bounds) {}
6538
- __updateAutoLayout() {}
6539
- __updateFlowLayout() {}
6540
- __updateNaturalSize() {}
6541
- __updateStrokeSpread() {
6542
- return 0;
6543
- }
6544
- __updateRenderSpread() {
6545
- return 0;
6546
- }
6547
- __onUpdateSize() {}
6548
6500
  __updateEraser(value) {
6549
6501
  this.__hasEraser = value ? true : this.children.some(item => item.__.eraser);
6550
6502
  }
@@ -6558,7 +6510,6 @@ let Leaf = class Leaf {
6558
6510
  __updateMask(_value) {
6559
6511
  this.__hasMask = this.children.some(item => item.__.mask && item.__.visible && item.__.opacity);
6560
6512
  }
6561
- __renderMask(_canvas, _options) {}
6562
6513
  __getNowWorld(options) {
6563
6514
  if (options.matrix) {
6564
6515
  if (!this.__cameraWorld) this.__cameraWorld = {};
@@ -6620,7 +6571,7 @@ let Leaf = class Leaf {
6620
6571
  toInnerPoint(this.worldTransform, world, to, distance);
6621
6572
  }
6622
6573
  innerToWorld(inner, to, distance, relative) {
6623
- toOuterPoint(this.worldTransform, inner, to, distance);
6574
+ toOuterPoint$1(this.worldTransform, inner, to, distance);
6624
6575
  if (relative) relative.worldToInner(to ? to : inner, null, distance);
6625
6576
  }
6626
6577
  getBoxPoint(world, relative, distance, change) {
@@ -6675,11 +6626,11 @@ let Leaf = class Leaf {
6675
6626
  const layer = this.leafer ? this.leafer.zoomLayer : this;
6676
6627
  return layer.getWorldPoint(page, relative, distance, change);
6677
6628
  }
6678
- setTransform(matrix, resize, transition) {
6679
- setTransform(this, matrix, resize, transition);
6629
+ setTransform(matrix, resize, transition, boundsType) {
6630
+ setTransform(this, matrix, resize, transition, boundsType);
6680
6631
  }
6681
- transform(matrix, resize, transition) {
6682
- transform(this, matrix, resize, transition);
6632
+ transform(matrix, resize, transition, boundsType) {
6633
+ transform(this, matrix, resize, transition, boundsType);
6683
6634
  }
6684
6635
  move(x, y, transition) {
6685
6636
  moveLocal(this, x, y, transition);
@@ -6687,8 +6638,8 @@ let Leaf = class Leaf {
6687
6638
  moveInner(x, y, transition) {
6688
6639
  moveWorld(this, x, y, true, transition);
6689
6640
  }
6690
- scaleOf(origin, scaleX, scaleY, resize, transition) {
6691
- zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize, transition);
6641
+ scaleOf(origin, scaleX, scaleY, resize, transition, boundsType) {
6642
+ zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize, transition, boundsType);
6692
6643
  }
6693
6644
  rotateOf(origin, rotation, transition) {
6694
6645
  rotateOfLocal(this, getLocalOrigin(this, origin), rotation, transition);
@@ -6696,14 +6647,14 @@ let Leaf = class Leaf {
6696
6647
  skewOf(origin, skewX, skewY, resize, transition) {
6697
6648
  skewOfLocal(this, getLocalOrigin(this, origin), skewX, skewY, resize, transition);
6698
6649
  }
6699
- transformWorld(worldTransform, resize, transition) {
6700
- transformWorld(this, worldTransform, resize, transition);
6650
+ transformWorld(worldTransform, resize, transition, boundsType) {
6651
+ transformWorld(this, worldTransform, resize, transition, boundsType);
6701
6652
  }
6702
6653
  moveWorld(x, y, transition) {
6703
6654
  moveWorld(this, x, y, false, transition);
6704
6655
  }
6705
- scaleOfWorld(worldOrigin, scaleX, scaleY, resize, transition) {
6706
- zoomOfWorld(this, worldOrigin, scaleX, scaleY, resize, transition);
6656
+ scaleOfWorld(worldOrigin, scaleX, scaleY, resize, transition, boundsType) {
6657
+ zoomOfWorld(this, worldOrigin, scaleX, scaleY, resize, transition, boundsType);
6707
6658
  }
6708
6659
  rotateOfWorld(worldOrigin, rotation) {
6709
6660
  rotateOfWorld(this, worldOrigin, rotation);
@@ -6714,76 +6665,12 @@ let Leaf = class Leaf {
6714
6665
  flip(axis, transition) {
6715
6666
  transform(this, getFlipTransform(this, axis), false, transition);
6716
6667
  }
6717
- scaleResize(scaleX, scaleY = scaleX, _noResize) {
6718
- this.scaleX *= scaleX;
6719
- this.scaleY *= scaleY;
6720
- }
6721
- __scaleResize(_scaleX, _scaleY) {}
6722
- resizeWidth(_width) {}
6723
- resizeHeight(_height) {}
6724
- hit(_world, _hitRadius) {
6725
- return true;
6726
- }
6727
- __hitWorld(_point, _forceHitFill) {
6728
- return true;
6729
- }
6730
- __hit(_local, _forceHitFill) {
6731
- return true;
6732
- }
6733
- __hitFill(_inner) {
6734
- return true;
6735
- }
6736
- __hitStroke(_inner, _strokeWidth) {
6737
- return true;
6738
- }
6739
- __hitPixel(_inner) {
6740
- return true;
6741
- }
6742
- __drawHitPath(_canvas) {}
6743
- __updateHitCanvas() {}
6744
- __render(_canvas, _options) {}
6745
- __drawFast(_canvas, _options) {}
6746
- __draw(_canvas, _options, _originCanvas) {}
6747
- __clip(_canvas, _options) {}
6748
- __renderShape(_canvas, _options) {}
6749
- __drawShape(_canvas, _options) {}
6750
- __updateWorldOpacity() {}
6751
- __updateChange() {}
6752
- __drawPath(_canvas) {}
6753
- __drawRenderPath(_canvas) {}
6754
- __updatePath() {}
6755
- __updateRenderPath(_updateCache) {}
6756
- getMotionPathData() {
6757
- return Plugin.need("path");
6758
- }
6759
- getMotionPoint(_motionDistance) {
6760
- return Plugin.need("path");
6761
- }
6762
- getMotionTotal() {
6763
- return 0;
6764
- }
6765
- __updateMotionPath() {}
6766
- __runAnimation(_type, _complete) {}
6767
- __updateSortChildren() {}
6768
- add(_child, _index) {}
6769
6668
  remove(_child, destroy) {
6770
6669
  if (this.parent) this.parent.remove(this, destroy);
6771
6670
  }
6772
6671
  dropTo(parent, index, resize) {
6773
6672
  drop(this, parent, index, resize);
6774
6673
  }
6775
- on(_type, _listener, _options) {}
6776
- off(_type, _listener, _options) {}
6777
- on_(_type, _listener, _bind, _options) {
6778
- return undefined;
6779
- }
6780
- off_(_id) {}
6781
- once(_type, _listener, _captureOrBind, _capture) {}
6782
- emit(_type, _event, _capture) {}
6783
- emitEvent(_event, _capture) {}
6784
- hasEvent(_type, _capture) {
6785
- return false;
6786
- }
6787
6674
  static changeAttr(attrName, defaultValue, fn) {
6788
6675
  fn ? this.addAttr(attrName, defaultValue, fn) : defineDataProcessor(this.prototype, attrName, defaultValue);
6789
6676
  }
@@ -7089,7 +6976,7 @@ class LeafLevelList {
7089
6976
  }
7090
6977
  }
7091
6978
 
7092
- const version = "2.1.3";
6979
+ const version = "2.1.5";
7093
6980
 
7094
6981
  class LeaferCanvas extends LeaferCanvasBase {
7095
6982
  get allowBackgroundColor() {
@@ -7905,7 +7792,7 @@ class Renderer {
7905
7792
 
7906
7793
  Renderer.clipSpread = 10;
7907
7794
 
7908
- const tempPoint$1 = {};
7795
+ const tempPoint$2 = {};
7909
7796
 
7910
7797
  const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7911
7798
 
@@ -8040,7 +7927,7 @@ class Picker {
8040
7927
  for (let i = len - 1; i > -1; i--) {
8041
7928
  child = children[i], data = child.__;
8042
7929
  if (!data.visible || hitMask && !data.mask) continue;
8043
- hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7930
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$2, point, data.hitRadius) : point);
8044
7931
  if (child.isBranch) {
8045
7932
  if (hit || child.__ignoreHitWorld) {
8046
7933
  if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
@@ -8735,17 +8622,12 @@ let UI = UI_1 = class UI extends Leaf {
8735
8622
  if (!path) this.__drawPathByBox(pen);
8736
8623
  return pen;
8737
8624
  }
8738
- reset(_data) {}
8739
8625
  set(data, _transition) {
8740
8626
  if (data) Object.assign(this, data);
8741
8627
  }
8742
8628
  get(name) {
8743
8629
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
8744
8630
  }
8745
- createProxyData() {
8746
- return undefined;
8747
- }
8748
- clearProxyData() {}
8749
8631
  find(_condition, _options) {
8750
8632
  return Plugin.need("find");
8751
8633
  }
@@ -8783,6 +8665,7 @@ let UI = UI_1 = class UI extends Leaf {
8783
8665
  data.lazy && !this.__inLazyBounds && !Export.running ? data.__needComputePaint = true : data.__computePaint();
8784
8666
  }
8785
8667
  }
8668
+ __updatePath() {}
8786
8669
  __updateRenderPath(updateCache) {
8787
8670
  const data = this.__;
8788
8671
  if (data.path) {
@@ -8818,7 +8701,6 @@ let UI = UI_1 = class UI extends Leaf {
8818
8701
  this.set(keyframe);
8819
8702
  return Plugin.need("animate");
8820
8703
  }
8821
- killAnimate(_type, _nextStyle) {}
8822
8704
  export(_filename, _options) {
8823
8705
  return Plugin.need("export");
8824
8706
  }
@@ -8994,8 +8876,6 @@ __decorate([ dataType(100) ], UI.prototype, "placeholderDelay", void 0);
8994
8876
 
8995
8877
  __decorate([ dataType({}) ], UI.prototype, "data", void 0);
8996
8878
 
8997
- __decorate([ rewrite(Leaf.prototype.reset) ], UI.prototype, "reset", null);
8998
-
8999
8879
  UI = UI_1 = __decorate([ useModule(UIBounds), useModule(UIRender), rewriteAble() ], UI);
9000
8880
 
9001
8881
  let Group = class Group extends UI {
@@ -9032,9 +8912,6 @@ let Group = class Group extends UI {
9032
8912
  }
9033
8913
  return data;
9034
8914
  }
9035
- pick(_hitPoint, _options) {
9036
- return undefined;
9037
- }
9038
8915
  addAt(child, index) {
9039
8916
  this.add(child, index);
9040
8917
  }
@@ -9044,11 +8921,6 @@ let Group = class Group extends UI {
9044
8921
  addBefore(child, before) {
9045
8922
  this.add(child, this.children.indexOf(before));
9046
8923
  }
9047
- add(_child, _index) {}
9048
- addMany(..._children) {}
9049
- remove(_child, _destroy) {}
9050
- removeAll(_destroy) {}
9051
- clear() {}
9052
8924
  };
9053
8925
 
9054
8926
  __decorate([ dataProcessor(GroupData) ], Group.prototype, "__", void 0);
@@ -9588,7 +9460,7 @@ __decorate([ affectRenderBoundsType("hide") ], Frame.prototype, "overflow", void
9588
9460
 
9589
9461
  Frame = __decorate([ registerUI() ], Frame);
9590
9462
 
9591
- const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$2} = PathCommandDataHelper;
9463
+ const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$1} = PathCommandDataHelper;
9592
9464
 
9593
9465
  let Ellipse = class Ellipse extends UI {
9594
9466
  get __tag() {
@@ -9601,21 +9473,21 @@ let Ellipse = class Ellipse extends UI {
9601
9473
  let open;
9602
9474
  if (innerRadius) {
9603
9475
  if (startAngle || endAngle) {
9604
- if (innerRadius < 1) ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9605
- ellipse$2(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9476
+ if (innerRadius < 1) ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9477
+ ellipse$1(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9606
9478
  } else {
9607
9479
  if (innerRadius < 1) {
9608
- ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius);
9480
+ ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius);
9609
9481
  moveTo$3(path, width, ry);
9610
9482
  }
9611
- ellipse$2(path, rx, ry, rx, ry, 0, 360, 0, true);
9483
+ ellipse$1(path, rx, ry, rx, ry, 0, 360, 0, true);
9612
9484
  }
9613
9485
  } else {
9614
9486
  if (startAngle || endAngle) {
9615
9487
  moveTo$3(path, rx, ry);
9616
- ellipse$2(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9488
+ ellipse$1(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9617
9489
  } else {
9618
- ellipse$2(path, rx, ry, rx, ry);
9490
+ ellipse$1(path, rx, ry, rx, ry);
9619
9491
  }
9620
9492
  }
9621
9493
  if (!open) closePath$2(path);
@@ -10022,51 +9894,6 @@ let Pen = class Pen extends Group {
10022
9894
  this.add(path);
10023
9895
  return this;
10024
9896
  }
10025
- beginPath() {
10026
- return this;
10027
- }
10028
- moveTo(_x, _y) {
10029
- return this;
10030
- }
10031
- lineTo(_x, _y) {
10032
- return this;
10033
- }
10034
- bezierCurveTo(_x1, _y1, _x2, _y2, _x, _y) {
10035
- return this;
10036
- }
10037
- quadraticCurveTo(_x1, _y1, _x, _y) {
10038
- return this;
10039
- }
10040
- closePath() {
10041
- return this;
10042
- }
10043
- rect(_x, _y, _width, _height) {
10044
- return this;
10045
- }
10046
- roundRect(_x, _y, _width, _height, _cornerRadius) {
10047
- return this;
10048
- }
10049
- ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
10050
- return this;
10051
- }
10052
- arc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
10053
- return this;
10054
- }
10055
- arcTo(_x1, _y1, _x2, _y2, _radius) {
10056
- return this;
10057
- }
10058
- drawEllipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
10059
- return this;
10060
- }
10061
- drawArc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
10062
- return this;
10063
- }
10064
- drawPoints(_points, _curve, _close) {
10065
- return this;
10066
- }
10067
- clearPath() {
10068
- return this;
10069
- }
10070
9897
  paint() {
10071
9898
  const {pathElement: pathElement} = this;
10072
9899
  if (!pathElement.__layout.boxChanged) pathElement.forceUpdate("path");
@@ -12160,7 +11987,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
12160
11987
  needUpdate = false;
12161
11988
  }
12162
11989
  }
12163
- if (paint.mode === "brush") PaintImage.brush(leafPaint, ui);
11990
+ if (paint.mode === "brush") PaintImage.brush(leafPaint, ui, attrName);
12164
11991
  if (!leafPaint.data) {
12165
11992
  PaintImage.createData(leafPaint, image, paint, boxBounds);
12166
11993
  const {transform: transform} = leafPaint.data, {opacity: opacity} = paint;
@@ -12376,7 +12203,7 @@ function layout$3(transform, box, x, y, scaleX, scaleY, rotation, skew) {
12376
12203
  translate(transform, box.x + x, box.y + y);
12377
12204
  }
12378
12205
 
12379
- const {get: get$1, scale: scale$2, copy: copy$4} = MatrixHelper;
12206
+ const {get: get$1, scale: scale$3, copy: copy$4} = MatrixHelper;
12380
12207
 
12381
12208
  const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$7} = Math;
12382
12209
 
@@ -12414,7 +12241,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
12414
12241
  scaleY *= getFloorScale(height + (yGap || 0));
12415
12242
  imageMatrix = get$1();
12416
12243
  if (transform) copy$4(imageMatrix, transform);
12417
- scale$2(imageMatrix, 1 / scaleX, 1 / scaleY);
12244
+ scale$3(imageMatrix, 1 / scaleX, 1 / scaleY);
12418
12245
  }
12419
12246
  const imageCanvas = image.getCanvas(width, height, opacity, undefined, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
12420
12247
  if (brush) {
@@ -13513,10 +13340,11 @@ function mergeConfigAttr() {
13513
13340
  if (innerEditor) innerEditor.editConfig && Object.assign(mergeConfig, innerEditor.editConfig); else if (editTool) editTool.editConfig && Object.assign(mergeConfig, editTool.editConfig);
13514
13341
  if (element && element.editConfig) {
13515
13342
  let {editConfig: editConfig} = element;
13516
- if (editConfig.hover || editConfig.hoverStyle) {
13343
+ if (editConfig.hover || editConfig.hoverStyle || editConfig.hoverPathType) {
13517
13344
  editConfig = Object.assign({}, editConfig);
13518
13345
  delete editConfig.hover;
13519
13346
  delete editConfig.hoverStyle;
13347
+ delete editConfig.hoverPathType;
13520
13348
  }
13521
13349
  Object.assign(mergeConfig, editConfig);
13522
13350
  }
@@ -13584,9 +13412,22 @@ class Stroker extends UI {
13584
13412
  matrix$1.half = strokeWidth % 2;
13585
13413
  canvas.setWorld(matrix$1, options.matrix);
13586
13414
  canvas.beginPath();
13587
- if (this.strokePathType === "path") {
13415
+ switch (this.strokePathType) {
13416
+ case "box":
13417
+ const {boxBounds: boxBounds} = leaf.__layout;
13418
+ canvas.rect(boxBounds.x, boxBounds.y, boxBounds.width, boxBounds.height);
13419
+ break;
13420
+
13421
+ case "stroke":
13422
+ const {strokeBounds: strokeBounds} = leaf.__layout;
13423
+ canvas.rect(strokeBounds.x, strokeBounds.y, strokeBounds.width, strokeBounds.height);
13424
+ break;
13425
+
13426
+ case "path":
13588
13427
  leaf.__drawPath(canvas);
13589
- } else {
13428
+ break;
13429
+
13430
+ default:
13590
13431
  if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13591
13432
  }
13592
13433
  data.strokeWidth = strokeWidth / Math.max(aScaleX, aScaleY);
@@ -13709,10 +13550,11 @@ class EditSelect extends Group {
13709
13550
  if (this.running && !this.dragging && !editor.dragging) {
13710
13551
  const {hoverTarget: hoverTarget, mergeConfig: mergeConfig} = editor, config = Object.assign({}, mergeConfig);
13711
13552
  if (hoverTarget && hoverTarget.editConfig) Object.assign(config, hoverTarget.editConfig);
13712
- const {stroke: stroke, strokeWidth: strokeWidth, hover: hover, hoverStyle: hoverStyle} = config;
13553
+ const {stroke: stroke, strokeWidth: strokeWidth, hover: hover, hoverStyle: hoverStyle, hoverPathType: hoverPathType} = config;
13713
13554
  this.hoverStroker.setTarget(hover ? hoverTarget : null, Object.assign({
13714
13555
  stroke: stroke,
13715
- strokeWidth: strokeWidth
13556
+ strokeWidth: strokeWidth,
13557
+ strokePathType: hoverPathType
13716
13558
  }, hoverStyle || {}));
13717
13559
  } else {
13718
13560
  this.hoverStroker.target = null;
@@ -13895,16 +13737,17 @@ const {topLeft: topLeft$1, top: top$1, topRight: topRight$1, right: right$2, bot
13895
13737
  const {toPoint: toPoint} = AroundHelper, {within: within$3, sign: sign$1} = MathHelper, {abs: abs$4} = Math;
13896
13738
 
13897
13739
  const EditDataHelper = {
13898
- getScaleData(target, startBounds, direction, totalMoveOrScale, lockRatio, around, flipable, scaleMode) {
13740
+ getScaleData(target, startBounds, direction, totalMoveOrScale, lockRatio, around, flipable, scaleMode, boundsType) {
13899
13741
  let align, origin = {}, scaleX = 1, scaleY = 1, lockScale;
13900
- const {boxBounds: boxBounds, widthRange: widthRange, heightRange: heightRange, dragBounds: dragBounds, worldBoxBounds: worldBoxBounds} = target;
13742
+ const {widthRange: widthRange, heightRange: heightRange, dragBounds: dragBounds, worldTransform: worldTransform, boxBounds: boxBounds} = target;
13901
13743
  const {width: width, height: height} = startBounds;
13744
+ const innerBounds = target.getBounds(boundsType, "inner");
13902
13745
  const originChangedScaleX = target.scaleX / startBounds.scaleX;
13903
13746
  const originChangedScaleY = target.scaleY / startBounds.scaleY;
13904
13747
  const signX = sign$1(originChangedScaleX);
13905
13748
  const signY = sign$1(originChangedScaleY);
13906
- const changedScaleX = scaleMode ? originChangedScaleX : signX * boxBounds.width / width;
13907
- const changedScaleY = scaleMode ? originChangedScaleY : signY * boxBounds.height / height;
13749
+ const changedScaleX = scaleMode ? originChangedScaleX : signX * innerBounds.width / width;
13750
+ const changedScaleY = scaleMode ? originChangedScaleY : signY * innerBounds.height / height;
13908
13751
  if (isNumber(totalMoveOrScale)) {
13909
13752
  scaleX = scaleY = Math.sqrt(totalMoveOrScale);
13910
13753
  } else {
@@ -13990,10 +13833,11 @@ const EditDataHelper = {
13990
13833
  if (useScaleY) scaleY /= changedScaleY;
13991
13834
  if (!flipable) {
13992
13835
  const {worldTransform: worldTransform} = target;
13993
- if (scaleX < 0) scaleX = 1 / boxBounds.width / worldTransform.scaleX;
13994
- if (scaleY < 0) scaleY = 1 / boxBounds.height / worldTransform.scaleY;
13836
+ if (scaleX < 0) scaleX = 1 / innerBounds.width / worldTransform.scaleX;
13837
+ if (scaleY < 0) scaleY = 1 / innerBounds.height / worldTransform.scaleY;
13995
13838
  }
13996
- toPoint(around || align, boxBounds, origin, true);
13839
+ toPoint(around || align, innerBounds, origin, true);
13840
+ this.checkOrigin(target, origin, boundsType);
13997
13841
  if (dragBounds) {
13998
13842
  const scaleData = {
13999
13843
  x: scaleX,
@@ -14004,15 +13848,20 @@ const EditDataHelper = {
14004
13848
  scaleY = scaleData.y;
14005
13849
  }
14006
13850
  if (useScaleX && widthRange) {
14007
- const nowWidth = boxBounds.width * target.scaleX;
13851
+ const nowWidth = innerBounds.width * target.scaleX;
14008
13852
  scaleX = within$3(nowWidth * scaleX, widthRange) / nowWidth;
14009
13853
  }
14010
13854
  if (useScaleY && heightRange) {
14011
- const nowHeight = boxBounds.height * target.scaleY;
13855
+ const nowHeight = innerBounds.height * target.scaleY;
14012
13856
  scaleY = within$3(nowHeight * scaleY, heightRange) / nowHeight;
14013
13857
  }
14014
- if (useScaleX && abs$4(scaleX * worldBoxBounds.width) < 1) scaleX = sign$1(scaleX) / worldBoxBounds.width;
14015
- if (useScaleY && abs$4(scaleY * worldBoxBounds.height) < 1) scaleY = sign$1(scaleY) / worldBoxBounds.height;
13858
+ let minWidth = 1 * abs$4(worldTransform.scaleX), minHeight = 1 * abs$4(worldTransform.scaleY);
13859
+ if (boundsType !== "box") {
13860
+ minWidth += innerBounds.width - boxBounds.width;
13861
+ minHeight += innerBounds.height - boxBounds.height;
13862
+ }
13863
+ if (useScaleX && abs$4(scaleX * innerBounds.width) < minWidth) scaleX = sign$1(scaleX) * minWidth / innerBounds.width;
13864
+ if (useScaleY && abs$4(scaleY * innerBounds.height) < minHeight) scaleY = sign$1(scaleY) * minHeight / innerBounds.height;
14016
13865
  if (lockRatio && scaleX !== scaleY) {
14017
13866
  lockScale = Math.min(abs$4(scaleX), abs$4(scaleY));
14018
13867
  scaleX = sign$1(scaleX) * lockScale;
@@ -14029,7 +13878,7 @@ const EditDataHelper = {
14029
13878
  around: around
14030
13879
  };
14031
13880
  },
14032
- getRotateData(target, direction, current, last, around) {
13881
+ getRotateData(target, direction, current, last, around, boundsType) {
14033
13882
  let align, origin = {};
14034
13883
  switch (direction) {
14035
13884
  case topLeft$1:
@@ -14051,13 +13900,14 @@ const EditDataHelper = {
14051
13900
  default:
14052
13901
  align = "center";
14053
13902
  }
14054
- toPoint(around || align, target.boxBounds, origin, true);
13903
+ toPoint(around || align, target.getBounds(boundsType, "inner"), origin, true);
13904
+ this.checkOrigin(target, origin, boundsType);
14055
13905
  return {
14056
13906
  origin: origin,
14057
13907
  rotation: PointHelper.getRotation(last, target.getWorldPointByBox(origin), current)
14058
13908
  };
14059
13909
  },
14060
- getSkewData(bounds, direction, move, around) {
13910
+ getSkewData(target, direction, move, around, boundsType) {
14061
13911
  let align, origin = {}, skewX = 0, skewY = 0;
14062
13912
  let last;
14063
13913
  switch (direction) {
@@ -14100,10 +13950,12 @@ const EditDataHelper = {
14100
13950
  align = "left";
14101
13951
  skewY = 1;
14102
13952
  }
14103
- const {width: width, height: height} = bounds;
13953
+ const innerBounds = target.getBounds(boundsType, "inner");
13954
+ const {width: width, height: height} = innerBounds;
14104
13955
  last.x = last.x * width;
14105
13956
  last.y = last.y * height;
14106
- toPoint(around || align, bounds, origin, true);
13957
+ toPoint(around || align, innerBounds, origin, true);
13958
+ this.checkOrigin(target, origin, boundsType);
14107
13959
  const rotation = PointHelper.getRotation(last, origin, {
14108
13960
  x: last.x + (skewX ? move.x : 0),
14109
13961
  y: last.y + (skewY ? move.y : 0)
@@ -14115,6 +13967,13 @@ const EditDataHelper = {
14115
13967
  skewY: skewY
14116
13968
  };
14117
13969
  },
13970
+ checkOrigin(target, origin, boundsType) {
13971
+ if (boundsType !== "box") {
13972
+ const {boxBounds: boxBounds} = target, innerBounds = target.getBounds(boundsType, "inner");
13973
+ origin.x += innerBounds.x - boxBounds.x;
13974
+ origin.y += innerBounds.y - boxBounds.y;
13975
+ }
13976
+ },
14118
13977
  getAround(around, altKey) {
14119
13978
  return altKey && !around ? "center" : around;
14120
13979
  },
@@ -14385,8 +14244,8 @@ class EditBox extends Group {
14385
14244
  updateMoveCursor(this);
14386
14245
  }
14387
14246
  update() {
14388
- const {editor: editor} = this;
14389
- const {x: x, y: y, scaleX: scaleX, scaleY: scaleY, rotation: rotation, skewX: skewX, skewY: skewY, width: width, height: height} = this.target.getLayoutBounds("box", editor, true);
14247
+ const {editor: editor, mergeConfig: mergeConfig} = this;
14248
+ const {x: x, y: y, scaleX: scaleX, scaleY: scaleY, rotation: rotation, skewX: skewX, skewY: skewY, width: width, height: height} = this.target.getLayoutBounds(mergeConfig.editBoxType, editor, true);
14390
14249
  this.visible = !this.target.locked;
14391
14250
  this.set({
14392
14251
  x: x,
@@ -14409,9 +14268,9 @@ class EditBox extends Group {
14409
14268
  if (this.app) this.rect.syncEventer = this.app.interaction.bottomList = null;
14410
14269
  }
14411
14270
  updateBounds(bounds) {
14412
- const {editor: editor, mergeConfig: mergeConfig, single: single, rect: rect, circle: circle, buttons: buttons, resizePoints: resizePoints, rotatePoints: rotatePoints, resizeLines: resizeLines} = this;
14271
+ const {editor: editor, mergedConfig: mergedConfig, single: single, rect: rect, circle: circle, buttons: buttons, resizePoints: resizePoints, rotatePoints: rotatePoints, resizeLines: resizeLines} = this;
14413
14272
  const {editMask: editMask} = editor;
14414
- const {middlePoint: middlePoint, resizeable: resizeable, rotateable: rotateable, hideOnSmall: hideOnSmall, editBox: editBox, mask: mask, dimOthers: dimOthers, bright: bright, spread: spread, hideRotatePoints: hideRotatePoints, hideResizeLines: hideResizeLines} = mergeConfig;
14273
+ const {middlePoint: middlePoint, resizeable: resizeable, rotateable: rotateable, hideOnSmall: hideOnSmall, editBox: editBox, mask: mask, dimOthers: dimOthers, bright: bright, spread: spread, hideRotatePoints: hideRotatePoints, hideResizeLines: hideResizeLines} = mergedConfig;
14415
14274
  editMask.visible = mask ? true : 0;
14416
14275
  if (!isUndefined(dimOthers) || !isUndefined(bright)) {
14417
14276
  editor.setDimOthers(dimOthers);
@@ -14449,7 +14308,7 @@ class EditBox extends Group {
14449
14308
  }
14450
14309
  }
14451
14310
  }
14452
- circle.visible = showPoints && rotateable && !!(mergeConfig.circle || mergeConfig.rotatePoint);
14311
+ circle.visible = showPoints && rotateable && !!(mergedConfig.circle || mergedConfig.rotatePoint);
14453
14312
  if (circle.visible) this.layoutCircle();
14454
14313
  if (rect.path) rect.path = null;
14455
14314
  rect.set(Object.assign(Object.assign({}, bounds), {
@@ -14557,7 +14416,8 @@ class EditBox extends Group {
14557
14416
  this.dragPoint = null;
14558
14417
  }
14559
14418
  onTransformStart(e) {
14560
- if (this.moving || this.gesturing) this.editor.opacity = this.mergedConfig.hideOnMove ? 0 : 1;
14419
+ const {hideOnMove: hideOnMove, editBoxType: editBoxType} = this.mergedConfig;
14420
+ if (this.moving || this.gesturing) this.editor.opacity = hideOnMove ? 0 : 1;
14561
14421
  if (this.resizing) ResizeEvent.resizingKeys = this.editor.leafList.keys;
14562
14422
  const {dragStartData: dragStartData, target: target} = this;
14563
14423
  dragStartData.x = e.x;
@@ -14567,7 +14427,7 @@ class EditBox extends Group {
14567
14427
  x: target.x,
14568
14428
  y: target.y
14569
14429
  };
14570
- dragStartData.bounds = Object.assign({}, target.getLayoutBounds("box", "local"));
14430
+ dragStartData.bounds = Object.assign({}, target.getLayoutBounds(editBoxType, "local"));
14571
14431
  dragStartData.rotation = target.rotation;
14572
14432
  }
14573
14433
  onTransformEnd(e) {
@@ -14805,6 +14665,7 @@ const config$1 = {
14805
14665
  },
14806
14666
  selector: true,
14807
14667
  editBox: true,
14668
+ editBoxType: "box",
14808
14669
  hover: true,
14809
14670
  select: "press",
14810
14671
  openInner: "double",
@@ -15129,7 +14990,7 @@ class TransformTool {
15129
14990
  }
15130
14991
  onScale(e) {
15131
14992
  const {target: target, mergeConfig: mergeConfig, single: single, dragStartData: dragStartData} = this.editBox;
15132
- let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize} = mergeConfig, totalMove;
14993
+ let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize, editBoxType: editBoxType} = mergeConfig, totalMove;
15133
14994
  if (e instanceof ZoomEvent) {
15134
14995
  if (!around) around = target.getBoxPoint(e);
15135
14996
  totalMove = e.totalScale;
@@ -15138,7 +14999,7 @@ class TransformTool {
15138
14999
  }
15139
15000
  const {direction: direction} = e.current;
15140
15001
  if (e.shiftKey || target.lockRatio) lockRatio = true;
15141
- const data = EditDataHelper.getScaleData(target, dragStartData.bounds, direction, totalMove, lockRatio, EditDataHelper.getAround(around, e.altKey), flipable, !single || editSize === "scale");
15002
+ const data = EditDataHelper.getScaleData(target, dragStartData.bounds, direction, totalMove, lockRatio, EditDataHelper.getAround(around, e.altKey), flipable, !single || editSize === "scale", editBoxType);
15142
15003
  const targetX = target.x, targetY = target.y;
15143
15004
  if (e instanceof DragEvent && this.editTool && this.editTool.onScaleWithDrag) {
15144
15005
  data.drag = e;
@@ -15150,7 +15011,7 @@ class TransformTool {
15150
15011
  }
15151
15012
  onRotate(e) {
15152
15013
  const {target: target, mergeConfig: mergeConfig, dragStartData: dragStartData} = this.editBox;
15153
- const {around: around, rotateAround: rotateAround, rotateGap: rotateGap, diagonalRotateKey: diagonalRotateKey} = mergeConfig;
15014
+ const {around: around, rotateAround: rotateAround, rotateGap: rotateGap, diagonalRotateKey: diagonalRotateKey, editBoxType: editBoxType} = mergeConfig;
15154
15015
  const {direction: direction} = e.current;
15155
15016
  let origin, rotation;
15156
15017
  if (e instanceof RotateEvent) {
@@ -15158,7 +15019,7 @@ class TransformTool {
15158
15019
  origin = rotateAround ? AroundHelper.getPoint(rotateAround, target.boxBounds) : target.getBoxPoint(e);
15159
15020
  } else {
15160
15021
  const isDiagonalRotate = diagonalRotateKey ? e.isHoldKeys(diagonalRotateKey) : e.shiftKey;
15161
- const data = EditDataHelper.getRotateData(target, direction, e, dragStartData, isDiagonalRotate ? null : rotateAround || target.around || target.origin || around || "center");
15022
+ const data = EditDataHelper.getRotateData(target, direction, e, dragStartData, isDiagonalRotate ? null : rotateAround || target.around || target.origin || around || "center", editBoxType);
15162
15023
  rotation = dragStartData.rotation + data.rotation - target.rotation;
15163
15024
  origin = data.origin;
15164
15025
  }
@@ -15170,8 +15031,8 @@ class TransformTool {
15170
15031
  }
15171
15032
  onSkew(e) {
15172
15033
  const {target: target, mergeConfig: mergeConfig} = this.editBox;
15173
- const {around: around} = mergeConfig;
15174
- const {origin: origin, skewX: skewX, skewY: skewY} = EditDataHelper.getSkewData(target.boxBounds, e.current.direction, e.getInnerMove(target), EditDataHelper.getAround(around, e.altKey));
15034
+ const {around: around, editBoxType: editBoxType} = mergeConfig;
15035
+ const {origin: origin, skewX: skewX, skewY: skewY} = EditDataHelper.getSkewData(target, e.current.direction, e.getInnerMove(target), EditDataHelper.getAround(around, e.altKey), editBoxType);
15175
15036
  if (!skewX && !skewY) return;
15176
15037
  this.skewOf(origin, skewX, skewY);
15177
15038
  }
@@ -15232,7 +15093,7 @@ class TransformTool {
15232
15093
  scaleOf(origin, scaleX, scaleY = scaleX, _resize) {
15233
15094
  if (!this.checkTransform("resizeable")) return;
15234
15095
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
15235
- const {beforeScale: beforeScale} = mergeConfig;
15096
+ const {beforeScale: beforeScale, editBoxType: editBoxType} = mergeConfig;
15236
15097
  if (beforeScale) {
15237
15098
  const check = beforeScale({
15238
15099
  target: target,
@@ -15250,7 +15111,8 @@ class TransformTool {
15250
15111
  worldOrigin: worldOrigin,
15251
15112
  scaleX: scaleX,
15252
15113
  scaleY: scaleY,
15253
- transform: transform
15114
+ transform: transform,
15115
+ editBoxType: editBoxType
15254
15116
  };
15255
15117
  this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data));
15256
15118
  const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data);
@@ -15278,7 +15140,7 @@ class TransformTool {
15278
15140
  rotateOf(origin, rotation) {
15279
15141
  if (!this.checkTransform("rotateable")) return;
15280
15142
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
15281
- const {beforeRotate: beforeRotate} = mergeConfig;
15143
+ const {beforeRotate: beforeRotate, editBoxType: editBoxType} = mergeConfig;
15282
15144
  if (beforeRotate) {
15283
15145
  const check = beforeRotate({
15284
15146
  target: target,
@@ -15294,7 +15156,8 @@ class TransformTool {
15294
15156
  editor: editor,
15295
15157
  worldOrigin: worldOrigin,
15296
15158
  rotation: rotation,
15297
- transform: transform
15159
+ transform: transform,
15160
+ editBoxType: editBoxType
15298
15161
  };
15299
15162
  this.emitEvent(new EditorRotateEvent(EditorRotateEvent.BEFORE_ROTATE, data));
15300
15163
  const event = new EditorRotateEvent(EditorRotateEvent.ROTATE, data);
@@ -15304,7 +15167,7 @@ class TransformTool {
15304
15167
  skewOf(origin, skewX, skewY = 0, _resize) {
15305
15168
  if (!this.checkTransform("skewable")) return;
15306
15169
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
15307
- const {beforeSkew: beforeSkew} = mergeConfig;
15170
+ const {beforeSkew: beforeSkew, editBoxType: editBoxType} = mergeConfig;
15308
15171
  if (beforeSkew) {
15309
15172
  const check = beforeSkew({
15310
15173
  target: target,
@@ -15322,7 +15185,8 @@ class TransformTool {
15322
15185
  worldOrigin: worldOrigin,
15323
15186
  skewX: skewX,
15324
15187
  skewY: skewY,
15325
- transform: transform
15188
+ transform: transform,
15189
+ editBoxType: editBoxType
15326
15190
  };
15327
15191
  this.emitEvent(new EditorSkewEvent(EditorSkewEvent.BEFORE_SKEW, data));
15328
15192
  const event = new EditorSkewEvent(EditorSkewEvent.SKEW, data);
@@ -15771,32 +15635,32 @@ let EditTool = class EditTool extends InnerEditor {
15771
15635
  app.unlockLayout();
15772
15636
  }
15773
15637
  onScale(e) {
15774
- const {scaleX: scaleX, scaleY: scaleY, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15638
+ const {scaleX: scaleX, scaleY: scaleY, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15775
15639
  const {app: app, list: list} = editor;
15776
15640
  app.lockLayout();
15777
15641
  list.forEach(target => {
15778
15642
  const resize = editor.getEditSize(target) !== "scale";
15779
- if (transform) target.transformWorld(transform, resize); else target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize);
15643
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize, false, editBoxType);
15780
15644
  });
15781
15645
  app.unlockLayout();
15782
15646
  }
15783
15647
  onRotate(e) {
15784
- const {rotation: rotation, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15648
+ const {rotation: rotation, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15785
15649
  const {app: app, list: list} = editor;
15786
15650
  app.lockLayout();
15787
15651
  list.forEach(target => {
15788
15652
  const resize = editor.getEditSize(target) !== "scale";
15789
- if (transform) target.transformWorld(transform, resize); else target.rotateOfWorld(worldOrigin, rotation);
15653
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.rotateOfWorld(worldOrigin, rotation);
15790
15654
  });
15791
15655
  app.unlockLayout();
15792
15656
  }
15793
15657
  onSkew(e) {
15794
- const {skewX: skewX, skewY: skewY, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15658
+ const {skewX: skewX, skewY: skewY, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15795
15659
  const {app: app, list: list} = editor;
15796
15660
  app.lockLayout();
15797
15661
  list.forEach(target => {
15798
15662
  const resize = editor.getEditSize(target) !== "scale";
15799
- if (transform) target.transformWorld(transform, resize); else target.skewOfWorld(worldOrigin, skewX, skewY, resize);
15663
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.skewOfWorld(worldOrigin, skewX, skewY, resize);
15800
15664
  });
15801
15665
  app.unlockLayout();
15802
15666
  }
@@ -16093,16 +15957,27 @@ function scaleResizeGroup(group, scaleX, scaleY) {
16093
15957
  }
16094
15958
  }
16095
15959
 
16096
- const leaf = Leaf.prototype;
15960
+ const leaf = Leaf.prototype, tempPoint$1 = {}, {scale: scale$2, toOuterPoint: toOuterPoint} = MatrixHelper;
16097
15961
 
16098
- leaf.scaleResize = function(scaleX, scaleY = scaleX, noResize) {
15962
+ leaf.scaleResize = function(scaleX, scaleY = scaleX, noResize, boundsType) {
16099
15963
  const data = this;
16100
15964
  if (noResize || data.editConfig && data.editConfig.editSize === "scale") {
16101
15965
  data.scaleX *= scaleX;
16102
15966
  data.scaleY *= scaleY;
16103
15967
  } else {
16104
- if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX;
16105
- if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY;
15968
+ const local = this.__localMatrix;
15969
+ if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX, scale$2(local, -1, 1);
15970
+ if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY, scale$2(local, 1, -1);
15971
+ if (boundsType === "stroke") {
15972
+ const {boxBounds: boxBounds, strokeBounds: strokeBounds} = this.__layout, {x: x, y: y, width: width, height: height} = strokeBounds;
15973
+ tempPoint$1.x = (x - boxBounds.x) * (scaleX - 1);
15974
+ tempPoint$1.y = (y - boxBounds.y) * (scaleY - 1);
15975
+ toOuterPoint(local, tempPoint$1, tempPoint$1, true);
15976
+ this.x += tempPoint$1.x;
15977
+ this.y += tempPoint$1.y;
15978
+ scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width;
15979
+ scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height;
15980
+ }
16106
15981
  this.__scaleResize(scaleX, scaleY);
16107
15982
  }
16108
15983
  };
@@ -16183,7 +16058,8 @@ UI.addAttr("editConfig", undefined, dataType);
16183
16058
 
16184
16059
  UI.addAttr("editOuter", ui => {
16185
16060
  ui.updateLayout();
16186
- return ui.__.__isLinePath ? "LineEditTool" : "EditTool";
16061
+ const name = (ui.tag === "Line" ? "" : ui.tag) + "EditTool";
16062
+ return ui.__.__isLinePath ? "LineEditTool" : EditToolCreator.list[name] ? name : "EditTool";
16187
16063
  }, dataType);
16188
16064
 
16189
16065
  UI.addAttr("editInner", "PathEditor", dataType);
@@ -16213,8 +16089,9 @@ function addViewport(leafer, mergeConfig, custom) {
16213
16089
  addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig);
16214
16090
  if (leafer.isApp || custom) return;
16215
16091
  leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, e => {
16216
- const move = leafer.getValidMove(e.moveX, e.moveY, false);
16217
- if (getScrollType(leafer).includes("limit")) {
16092
+ const limit = getScrollType(leafer).includes("limit"), stopLimit = leafer.app.config.move.scrollLimit === "stop";
16093
+ const move = leafer.getValidMove(e.moveX, e.moveY, limit && stopLimit);
16094
+ if (limit && !stopLimit) {
16218
16095
  const testMove = leafer.getValidMove(0, 0);
16219
16096
  if (testMove.x || testMove.y) {
16220
16097
  const maxX = 100, maxY = 200, resistance = e.moveType === "drag" ? .3 : .05;
@@ -20716,7 +20593,7 @@ UI.addAttr("scaleFixed", undefined, scaleFixedType);
20716
20593
 
20717
20594
  class EllipseBoxData extends BoxData {}
20718
20595
 
20719
- const ellipse$1 = Ellipse.prototype;
20596
+ const ellipse = Ellipse.prototype;
20720
20597
 
20721
20598
  let EllipseBox = class EllipseBox extends Box {
20722
20599
  get __tag() {
@@ -20733,7 +20610,7 @@ __decorate([ pathType(0) ], EllipseBox.prototype, "startAngle", void 0);
20733
20610
 
20734
20611
  __decorate([ pathType(0) ], EllipseBox.prototype, "endAngle", void 0);
20735
20612
 
20736
- __decorate([ rewrite(ellipse$1.__updatePath) ], EllipseBox.prototype, "__updatePath", null);
20613
+ __decorate([ rewrite(ellipse.__updatePath) ], EllipseBox.prototype, "__updatePath", null);
20737
20614
 
20738
20615
  EllipseBox = __decorate([ rewriteAble(), registerUI() ], EllipseBox);
20739
20616
 
@@ -20766,7 +20643,7 @@ PolygonBox = __decorate([ rewriteAble(), registerUI() ], PolygonBox);
20766
20643
 
20767
20644
  class StarBoxData extends BoxData {}
20768
20645
 
20769
- const ellipse = Star.prototype;
20646
+ const star = Star.prototype;
20770
20647
 
20771
20648
  let StarBox = class StarBox extends Box {
20772
20649
  get __tag() {
@@ -20781,7 +20658,7 @@ __decorate([ pathType(.382) ], StarBox.prototype, "innerRadius", void 0);
20781
20658
 
20782
20659
  __decorate([ dataProcessor(StarBoxData) ], StarBox.prototype, "__", void 0);
20783
20660
 
20784
- __decorate([ rewrite(ellipse.__updatePath) ], StarBox.prototype, "__updatePath", null);
20661
+ __decorate([ rewrite(star.__updatePath) ], StarBox.prototype, "__updatePath", null);
20785
20662
 
20786
20663
  StarBox = __decorate([ rewriteAble(), registerUI() ], StarBox);
20787
20664
 
@@ -21137,4 +21014,4 @@ function isSame(a, b) {
21137
21014
 
21138
21015
  Plugin.add("corner");
21139
21016
 
21140
- export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, Arrow, ArrowData, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, EditBox, EditDataHelper, EditPoint, EditSelect, EditSelectHelper, EditTool, EditToolCreator, Editor, EditorEvent, EditorGroupEvent, EditorHelper, EditorMoveEvent, EditorRotateEvent, EditorScaleEvent, EditorSkewEvent, Effect, Ellipse, EllipseBox, EllipseBoxData, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageBox, ImageBoxData, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferTypeCreator, LeaferVideo, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathBox, PathBoxData, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonBox, PolygonBoxData, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, Scroller, SelectArea, Selector, Star, StarBox, StarBoxData, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, WheelEventHelper, ZoomEvent, addViewport, addViewportConfig, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite$1 as isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerEditTool, registerInnerEditor, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$3 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
21017
+ export { AlignHelper, Animate, AnimateEasing, AnimateEvent, AnimateList, Answer, App, AroundHelper, Arrow, ArrowData, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, EditBox, EditDataHelper, EditPoint, EditSelect, EditSelectHelper, EditTool, EditToolCreator, Editor, EditorEvent, EditorGroupEvent, EditorHelper, EditorMoveEvent, EditorRotateEvent, EditorScaleEvent, EditorSkewEvent, Effect, Ellipse, EllipseBox, EllipseBoxData, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageBox, ImageBoxData, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferFilm, LeaferImage, LeaferTypeCreator, LeaferVideo, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathBox, PathBoxData, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonBox, PolygonBoxData, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, Scroller, SelectArea, Selector, Star, StarBox, StarBoxData, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, WheelEventHelper, ZoomEvent, addViewport, addViewportConfig, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite$1 as isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, motionPathType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerEditTool, registerInnerEditor, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints, scaleType, scrollType, sortType, stateStyleType, stateType, strokeType, surfaceType, tempBounds$3 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$5 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };