@leafer/worker 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.
@@ -260,7 +260,7 @@ const IncrementId = {
260
260
  RUNTIME: "runtime",
261
261
  LEAF: "leaf",
262
262
  TASK: "task",
263
- CNAVAS: "canvas",
263
+ CANVAS: "canvas",
264
264
  IMAGE: "image",
265
265
  types: {},
266
266
  create(typeName) {
@@ -472,7 +472,7 @@ const {sin: sin$6, cos: cos$6, acos: acos, sqrt: sqrt$5} = Math;
472
472
 
473
473
  const {float: float$6} = MathHelper;
474
474
 
475
- const tempPoint$5 = {};
475
+ const tempPoint$6 = {};
476
476
 
477
477
  function getWorld() {
478
478
  return Object.assign(Object.assign(Object.assign({}, getMatrixData()), getBoundsData()), {
@@ -531,8 +531,8 @@ const MatrixHelper = {
531
531
  to.f = t.f * pixelRatio;
532
532
  },
533
533
  scaleOfOuter(t, origin, scaleX, scaleY) {
534
- M$c.toInnerPoint(t, origin, tempPoint$5);
535
- M$c.scaleOfInner(t, tempPoint$5, scaleX, scaleY);
534
+ M$c.toInnerPoint(t, origin, tempPoint$6);
535
+ M$c.scaleOfInner(t, tempPoint$6, scaleX, scaleY);
536
536
  },
537
537
  scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
538
538
  M$c.translateInner(t, origin.x, origin.y);
@@ -550,8 +550,8 @@ const MatrixHelper = {
550
550
  t.d = c * sinR + d * cosR;
551
551
  },
552
552
  rotateOfOuter(t, origin, rotation) {
553
- M$c.toInnerPoint(t, origin, tempPoint$5);
554
- M$c.rotateOfInner(t, tempPoint$5, rotation);
553
+ M$c.toInnerPoint(t, origin, tempPoint$6);
554
+ M$c.rotateOfInner(t, tempPoint$6, rotation);
555
555
  },
556
556
  rotateOfInner(t, origin, rotation) {
557
557
  M$c.translateInner(t, origin.x, origin.y);
@@ -572,8 +572,8 @@ const MatrixHelper = {
572
572
  }
573
573
  },
574
574
  skewOfOuter(t, origin, skewX, skewY) {
575
- M$c.toInnerPoint(t, origin, tempPoint$5);
576
- M$c.skewOfInner(t, tempPoint$5, skewX, skewY);
575
+ M$c.toInnerPoint(t, origin, tempPoint$6);
576
+ M$c.skewOfInner(t, tempPoint$6, skewX, skewY);
577
577
  },
578
578
  skewOfInner(t, origin, skewX, skewY = 0) {
579
579
  M$c.translateInner(t, origin.x, origin.y);
@@ -772,7 +772,7 @@ const M$c = MatrixHelper;
772
772
 
773
773
  const {float: float$5} = MathHelper;
774
774
 
775
- const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
775
+ const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$4} = MatrixHelper;
776
776
 
777
777
  const {sin: sin$5, cos: cos$5, abs: abs$b, sqrt: sqrt$4, atan2: atan2$2, min: min$3, round: round$5} = Math;
778
778
 
@@ -830,7 +830,7 @@ const PointHelper = {
830
830
  tempToOuterOf(t, matrix) {
831
831
  const {tempPoint: temp} = P$7;
832
832
  copy$c(temp, t);
833
- toOuterPoint$3(matrix, temp, temp);
833
+ toOuterPoint$4(matrix, temp, temp);
834
834
  return temp;
835
835
  },
836
836
  tempToInnerRadiusPointOf(t, matrix) {
@@ -854,7 +854,7 @@ const PointHelper = {
854
854
  toInnerPoint$2(matrix, t, to);
855
855
  },
856
856
  toOuterOf(t, matrix, to) {
857
- toOuterPoint$3(matrix, t, to);
857
+ toOuterPoint$4(matrix, t, to);
858
858
  },
859
859
  getCenter(t, to) {
860
860
  return {
@@ -914,7 +914,7 @@ const PointHelper = {
914
914
  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);
915
915
  },
916
916
  reset(t) {
917
- P$7.reset(t);
917
+ t.x = t.y = 0;
918
918
  }
919
919
  };
920
920
 
@@ -995,7 +995,7 @@ class Point {
995
995
  }
996
996
  }
997
997
 
998
- const tempPoint$4 = new Point;
998
+ const tempPoint$5 = new Point;
999
999
 
1000
1000
  class Matrix {
1001
1001
  constructor(a, b, c, d, e, f) {
@@ -1123,6 +1123,7 @@ class Matrix {
1123
1123
  }
1124
1124
  reset() {
1125
1125
  MatrixHelper.reset(this);
1126
+ return this;
1126
1127
  }
1127
1128
  }
1128
1129
 
@@ -1264,7 +1265,7 @@ const AlignHelper = {
1264
1265
 
1265
1266
  const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$5, addPoint: addPoint$3, toBounds: toBounds$3} = TwoPointBoundsHelper;
1266
1267
 
1267
- const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1268
+ const {toOuterPoint: toOuterPoint$3} = MatrixHelper;
1268
1269
 
1269
1270
  const {float: float$4, fourNumber: fourNumber$1} = MathHelper;
1270
1271
 
@@ -1378,16 +1379,16 @@ const BoundsHelper = {
1378
1379
  } else {
1379
1380
  point$2.x = t.x;
1380
1381
  point$2.y = t.y;
1381
- toOuterPoint$2(matrix, point$2, toPoint$5);
1382
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1382
1383
  setPoint$5(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1383
1384
  point$2.x = t.x + t.width;
1384
- toOuterPoint$2(matrix, point$2, toPoint$5);
1385
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1385
1386
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1386
1387
  point$2.y = t.y + t.height;
1387
- toOuterPoint$2(matrix, point$2, toPoint$5);
1388
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1388
1389
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1389
1390
  point$2.x = t.x;
1390
- toOuterPoint$2(matrix, point$2, toPoint$5);
1391
+ toOuterPoint$3(matrix, point$2, toPoint$5);
1391
1392
  addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
1392
1393
  toBounds$3(tempPointBounds$1, to);
1393
1394
  }
@@ -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() {
@@ -7746,7 +7633,7 @@ class Renderer {
7746
7633
 
7747
7634
  Renderer.clipSpread = 10;
7748
7635
 
7749
- const tempPoint$1 = {};
7636
+ const tempPoint$2 = {};
7750
7637
 
7751
7638
  const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7752
7639
 
@@ -7881,7 +7768,7 @@ class Picker {
7881
7768
  for (let i = len - 1; i > -1; i--) {
7882
7769
  child = children[i], data = child.__;
7883
7770
  if (!data.visible || hitMask && !data.mask) continue;
7884
- hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7771
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$2, point, data.hitRadius) : point);
7885
7772
  if (child.isBranch) {
7886
7773
  if (hit || child.__ignoreHitWorld) {
7887
7774
  if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
@@ -8576,17 +8463,12 @@ let UI = UI_1 = class UI extends Leaf {
8576
8463
  if (!path) this.__drawPathByBox(pen);
8577
8464
  return pen;
8578
8465
  }
8579
- reset(_data) {}
8580
8466
  set(data, _transition) {
8581
8467
  if (data) Object.assign(this, data);
8582
8468
  }
8583
8469
  get(name) {
8584
8470
  return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name);
8585
8471
  }
8586
- createProxyData() {
8587
- return undefined;
8588
- }
8589
- clearProxyData() {}
8590
8472
  find(_condition, _options) {
8591
8473
  return Plugin.need("find");
8592
8474
  }
@@ -8624,6 +8506,7 @@ let UI = UI_1 = class UI extends Leaf {
8624
8506
  data.lazy && !this.__inLazyBounds && !Export.running ? data.__needComputePaint = true : data.__computePaint();
8625
8507
  }
8626
8508
  }
8509
+ __updatePath() {}
8627
8510
  __updateRenderPath(updateCache) {
8628
8511
  const data = this.__;
8629
8512
  if (data.path) {
@@ -8659,7 +8542,6 @@ let UI = UI_1 = class UI extends Leaf {
8659
8542
  this.set(keyframe);
8660
8543
  return Plugin.need("animate");
8661
8544
  }
8662
- killAnimate(_type, _nextStyle) {}
8663
8545
  export(_filename, _options) {
8664
8546
  return Plugin.need("export");
8665
8547
  }
@@ -8835,8 +8717,6 @@ __decorate([ dataType(100) ], UI.prototype, "placeholderDelay", void 0);
8835
8717
 
8836
8718
  __decorate([ dataType({}) ], UI.prototype, "data", void 0);
8837
8719
 
8838
- __decorate([ rewrite(Leaf.prototype.reset) ], UI.prototype, "reset", null);
8839
-
8840
8720
  UI = UI_1 = __decorate([ useModule(UIBounds), useModule(UIRender), rewriteAble() ], UI);
8841
8721
 
8842
8722
  let Group = class Group extends UI {
@@ -8873,9 +8753,6 @@ let Group = class Group extends UI {
8873
8753
  }
8874
8754
  return data;
8875
8755
  }
8876
- pick(_hitPoint, _options) {
8877
- return undefined;
8878
- }
8879
8756
  addAt(child, index) {
8880
8757
  this.add(child, index);
8881
8758
  }
@@ -8885,11 +8762,6 @@ let Group = class Group extends UI {
8885
8762
  addBefore(child, before) {
8886
8763
  this.add(child, this.children.indexOf(before));
8887
8764
  }
8888
- add(_child, _index) {}
8889
- addMany(..._children) {}
8890
- remove(_child, _destroy) {}
8891
- removeAll(_destroy) {}
8892
- clear() {}
8893
8765
  };
8894
8766
 
8895
8767
  __decorate([ dataProcessor(GroupData) ], Group.prototype, "__", void 0);
@@ -9429,7 +9301,7 @@ __decorate([ affectRenderBoundsType("hide") ], Frame.prototype, "overflow", void
9429
9301
 
9430
9302
  Frame = __decorate([ registerUI() ], Frame);
9431
9303
 
9432
- const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$2} = PathCommandDataHelper;
9304
+ const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse$1} = PathCommandDataHelper;
9433
9305
 
9434
9306
  let Ellipse = class Ellipse extends UI {
9435
9307
  get __tag() {
@@ -9442,21 +9314,21 @@ let Ellipse = class Ellipse extends UI {
9442
9314
  let open;
9443
9315
  if (innerRadius) {
9444
9316
  if (startAngle || endAngle) {
9445
- if (innerRadius < 1) ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9446
- ellipse$2(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9317
+ if (innerRadius < 1) ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9318
+ ellipse$1(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9447
9319
  } else {
9448
9320
  if (innerRadius < 1) {
9449
- ellipse$2(path, rx, ry, rx * innerRadius, ry * innerRadius);
9321
+ ellipse$1(path, rx, ry, rx * innerRadius, ry * innerRadius);
9450
9322
  moveTo$3(path, width, ry);
9451
9323
  }
9452
- ellipse$2(path, rx, ry, rx, ry, 0, 360, 0, true);
9324
+ ellipse$1(path, rx, ry, rx, ry, 0, 360, 0, true);
9453
9325
  }
9454
9326
  } else {
9455
9327
  if (startAngle || endAngle) {
9456
9328
  moveTo$3(path, rx, ry);
9457
- ellipse$2(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9329
+ ellipse$1(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9458
9330
  } else {
9459
- ellipse$2(path, rx, ry, rx, ry);
9331
+ ellipse$1(path, rx, ry, rx, ry);
9460
9332
  }
9461
9333
  }
9462
9334
  if (!open) closePath$2(path);
@@ -9863,51 +9735,6 @@ let Pen = class Pen extends Group {
9863
9735
  this.add(path);
9864
9736
  return this;
9865
9737
  }
9866
- beginPath() {
9867
- return this;
9868
- }
9869
- moveTo(_x, _y) {
9870
- return this;
9871
- }
9872
- lineTo(_x, _y) {
9873
- return this;
9874
- }
9875
- bezierCurveTo(_x1, _y1, _x2, _y2, _x, _y) {
9876
- return this;
9877
- }
9878
- quadraticCurveTo(_x1, _y1, _x, _y) {
9879
- return this;
9880
- }
9881
- closePath() {
9882
- return this;
9883
- }
9884
- rect(_x, _y, _width, _height) {
9885
- return this;
9886
- }
9887
- roundRect(_x, _y, _width, _height, _cornerRadius) {
9888
- return this;
9889
- }
9890
- ellipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
9891
- return this;
9892
- }
9893
- arc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
9894
- return this;
9895
- }
9896
- arcTo(_x1, _y1, _x2, _y2, _radius) {
9897
- return this;
9898
- }
9899
- drawEllipse(_x, _y, _radiusX, _radiusY, _rotation, _startAngle, _endAngle, _anticlockwise) {
9900
- return this;
9901
- }
9902
- drawArc(_x, _y, _radius, _startAngle, _endAngle, _anticlockwise) {
9903
- return this;
9904
- }
9905
- drawPoints(_points, _curve, _close) {
9906
- return this;
9907
- }
9908
- clearPath() {
9909
- return this;
9910
- }
9911
9738
  paint() {
9912
9739
  const {pathElement: pathElement} = this;
9913
9740
  if (!pathElement.__layout.boxChanged) pathElement.forceUpdate("path");
@@ -11889,7 +11716,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
11889
11716
  needUpdate = false;
11890
11717
  }
11891
11718
  }
11892
- if (paint.mode === "brush") PaintImage.brush(leafPaint, ui);
11719
+ if (paint.mode === "brush") PaintImage.brush(leafPaint, ui, attrName);
11893
11720
  if (!leafPaint.data) {
11894
11721
  PaintImage.createData(leafPaint, image, paint, boxBounds);
11895
11722
  const {transform: transform} = leafPaint.data, {opacity: opacity} = paint;
@@ -12105,7 +11932,7 @@ function layout$3(transform, box, x, y, scaleX, scaleY, rotation, skew) {
12105
11932
  translate(transform, box.x + x, box.y + y);
12106
11933
  }
12107
11934
 
12108
- const {get: get$1, scale: scale$2, copy: copy$4} = MatrixHelper;
11935
+ const {get: get$1, scale: scale$3, copy: copy$4} = MatrixHelper;
12109
11936
 
12110
11937
  const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$7} = Math;
12111
11938
 
@@ -12143,7 +11970,7 @@ function createPattern(paint, ui, canvas, renderOptions) {
12143
11970
  scaleY *= getFloorScale(height + (yGap || 0));
12144
11971
  imageMatrix = get$1();
12145
11972
  if (transform) copy$4(imageMatrix, transform);
12146
- scale$2(imageMatrix, 1 / scaleX, 1 / scaleY);
11973
+ scale$3(imageMatrix, 1 / scaleX, 1 / scaleY);
12147
11974
  }
12148
11975
  const imageCanvas = image.getCanvas(width, height, opacity, undefined, xGap, yGap, ui.leafer && ui.leafer.config.smooth, data.interlace);
12149
11976
  if (brush) {
@@ -13236,10 +13063,11 @@ function mergeConfigAttr() {
13236
13063
  if (innerEditor) innerEditor.editConfig && Object.assign(mergeConfig, innerEditor.editConfig); else if (editTool) editTool.editConfig && Object.assign(mergeConfig, editTool.editConfig);
13237
13064
  if (element && element.editConfig) {
13238
13065
  let {editConfig: editConfig} = element;
13239
- if (editConfig.hover || editConfig.hoverStyle) {
13066
+ if (editConfig.hover || editConfig.hoverStyle || editConfig.hoverPathType) {
13240
13067
  editConfig = Object.assign({}, editConfig);
13241
13068
  delete editConfig.hover;
13242
13069
  delete editConfig.hoverStyle;
13070
+ delete editConfig.hoverPathType;
13243
13071
  }
13244
13072
  Object.assign(mergeConfig, editConfig);
13245
13073
  }
@@ -13307,9 +13135,22 @@ class Stroker extends UI {
13307
13135
  matrix$1.half = strokeWidth % 2;
13308
13136
  canvas.setWorld(matrix$1, options.matrix);
13309
13137
  canvas.beginPath();
13310
- if (this.strokePathType === "path") {
13138
+ switch (this.strokePathType) {
13139
+ case "box":
13140
+ const {boxBounds: boxBounds} = leaf.__layout;
13141
+ canvas.rect(boxBounds.x, boxBounds.y, boxBounds.width, boxBounds.height);
13142
+ break;
13143
+
13144
+ case "stroke":
13145
+ const {strokeBounds: strokeBounds} = leaf.__layout;
13146
+ canvas.rect(strokeBounds.x, strokeBounds.y, strokeBounds.width, strokeBounds.height);
13147
+ break;
13148
+
13149
+ case "path":
13311
13150
  leaf.__drawPath(canvas);
13312
- } else {
13151
+ break;
13152
+
13153
+ default:
13313
13154
  if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13314
13155
  }
13315
13156
  data.strokeWidth = strokeWidth / Math.max(aScaleX, aScaleY);
@@ -13432,10 +13273,11 @@ class EditSelect extends Group {
13432
13273
  if (this.running && !this.dragging && !editor.dragging) {
13433
13274
  const {hoverTarget: hoverTarget, mergeConfig: mergeConfig} = editor, config = Object.assign({}, mergeConfig);
13434
13275
  if (hoverTarget && hoverTarget.editConfig) Object.assign(config, hoverTarget.editConfig);
13435
- const {stroke: stroke, strokeWidth: strokeWidth, hover: hover, hoverStyle: hoverStyle} = config;
13276
+ const {stroke: stroke, strokeWidth: strokeWidth, hover: hover, hoverStyle: hoverStyle, hoverPathType: hoverPathType} = config;
13436
13277
  this.hoverStroker.setTarget(hover ? hoverTarget : null, Object.assign({
13437
13278
  stroke: stroke,
13438
- strokeWidth: strokeWidth
13279
+ strokeWidth: strokeWidth,
13280
+ strokePathType: hoverPathType
13439
13281
  }, hoverStyle || {}));
13440
13282
  } else {
13441
13283
  this.hoverStroker.target = null;
@@ -13618,16 +13460,17 @@ const {topLeft: topLeft$1, top: top$1, topRight: topRight$1, right: right$2, bot
13618
13460
  const {toPoint: toPoint} = AroundHelper, {within: within$3, sign: sign$1} = MathHelper, {abs: abs$4} = Math;
13619
13461
 
13620
13462
  const EditDataHelper = {
13621
- getScaleData(target, startBounds, direction, totalMoveOrScale, lockRatio, around, flipable, scaleMode) {
13463
+ getScaleData(target, startBounds, direction, totalMoveOrScale, lockRatio, around, flipable, scaleMode, boundsType) {
13622
13464
  let align, origin = {}, scaleX = 1, scaleY = 1, lockScale;
13623
- const {boxBounds: boxBounds, widthRange: widthRange, heightRange: heightRange, dragBounds: dragBounds, worldBoxBounds: worldBoxBounds} = target;
13465
+ const {widthRange: widthRange, heightRange: heightRange, dragBounds: dragBounds, worldTransform: worldTransform, boxBounds: boxBounds} = target;
13624
13466
  const {width: width, height: height} = startBounds;
13467
+ const innerBounds = target.getBounds(boundsType, "inner");
13625
13468
  const originChangedScaleX = target.scaleX / startBounds.scaleX;
13626
13469
  const originChangedScaleY = target.scaleY / startBounds.scaleY;
13627
13470
  const signX = sign$1(originChangedScaleX);
13628
13471
  const signY = sign$1(originChangedScaleY);
13629
- const changedScaleX = scaleMode ? originChangedScaleX : signX * boxBounds.width / width;
13630
- const changedScaleY = scaleMode ? originChangedScaleY : signY * boxBounds.height / height;
13472
+ const changedScaleX = scaleMode ? originChangedScaleX : signX * innerBounds.width / width;
13473
+ const changedScaleY = scaleMode ? originChangedScaleY : signY * innerBounds.height / height;
13631
13474
  if (isNumber(totalMoveOrScale)) {
13632
13475
  scaleX = scaleY = Math.sqrt(totalMoveOrScale);
13633
13476
  } else {
@@ -13713,10 +13556,11 @@ const EditDataHelper = {
13713
13556
  if (useScaleY) scaleY /= changedScaleY;
13714
13557
  if (!flipable) {
13715
13558
  const {worldTransform: worldTransform} = target;
13716
- if (scaleX < 0) scaleX = 1 / boxBounds.width / worldTransform.scaleX;
13717
- if (scaleY < 0) scaleY = 1 / boxBounds.height / worldTransform.scaleY;
13559
+ if (scaleX < 0) scaleX = 1 / innerBounds.width / worldTransform.scaleX;
13560
+ if (scaleY < 0) scaleY = 1 / innerBounds.height / worldTransform.scaleY;
13718
13561
  }
13719
- toPoint(around || align, boxBounds, origin, true);
13562
+ toPoint(around || align, innerBounds, origin, true);
13563
+ this.checkOrigin(target, origin, boundsType);
13720
13564
  if (dragBounds) {
13721
13565
  const scaleData = {
13722
13566
  x: scaleX,
@@ -13727,15 +13571,20 @@ const EditDataHelper = {
13727
13571
  scaleY = scaleData.y;
13728
13572
  }
13729
13573
  if (useScaleX && widthRange) {
13730
- const nowWidth = boxBounds.width * target.scaleX;
13574
+ const nowWidth = innerBounds.width * target.scaleX;
13731
13575
  scaleX = within$3(nowWidth * scaleX, widthRange) / nowWidth;
13732
13576
  }
13733
13577
  if (useScaleY && heightRange) {
13734
- const nowHeight = boxBounds.height * target.scaleY;
13578
+ const nowHeight = innerBounds.height * target.scaleY;
13735
13579
  scaleY = within$3(nowHeight * scaleY, heightRange) / nowHeight;
13736
13580
  }
13737
- if (useScaleX && abs$4(scaleX * worldBoxBounds.width) < 1) scaleX = sign$1(scaleX) / worldBoxBounds.width;
13738
- if (useScaleY && abs$4(scaleY * worldBoxBounds.height) < 1) scaleY = sign$1(scaleY) / worldBoxBounds.height;
13581
+ let minWidth = 1 * abs$4(worldTransform.scaleX), minHeight = 1 * abs$4(worldTransform.scaleY);
13582
+ if (boundsType !== "box") {
13583
+ minWidth += innerBounds.width - boxBounds.width;
13584
+ minHeight += innerBounds.height - boxBounds.height;
13585
+ }
13586
+ if (useScaleX && abs$4(scaleX * innerBounds.width) < minWidth) scaleX = sign$1(scaleX) * minWidth / innerBounds.width;
13587
+ if (useScaleY && abs$4(scaleY * innerBounds.height) < minHeight) scaleY = sign$1(scaleY) * minHeight / innerBounds.height;
13739
13588
  if (lockRatio && scaleX !== scaleY) {
13740
13589
  lockScale = Math.min(abs$4(scaleX), abs$4(scaleY));
13741
13590
  scaleX = sign$1(scaleX) * lockScale;
@@ -13752,7 +13601,7 @@ const EditDataHelper = {
13752
13601
  around: around
13753
13602
  };
13754
13603
  },
13755
- getRotateData(target, direction, current, last, around) {
13604
+ getRotateData(target, direction, current, last, around, boundsType) {
13756
13605
  let align, origin = {};
13757
13606
  switch (direction) {
13758
13607
  case topLeft$1:
@@ -13774,13 +13623,14 @@ const EditDataHelper = {
13774
13623
  default:
13775
13624
  align = "center";
13776
13625
  }
13777
- toPoint(around || align, target.boxBounds, origin, true);
13626
+ toPoint(around || align, target.getBounds(boundsType, "inner"), origin, true);
13627
+ this.checkOrigin(target, origin, boundsType);
13778
13628
  return {
13779
13629
  origin: origin,
13780
13630
  rotation: PointHelper.getRotation(last, target.getWorldPointByBox(origin), current)
13781
13631
  };
13782
13632
  },
13783
- getSkewData(bounds, direction, move, around) {
13633
+ getSkewData(target, direction, move, around, boundsType) {
13784
13634
  let align, origin = {}, skewX = 0, skewY = 0;
13785
13635
  let last;
13786
13636
  switch (direction) {
@@ -13823,10 +13673,12 @@ const EditDataHelper = {
13823
13673
  align = "left";
13824
13674
  skewY = 1;
13825
13675
  }
13826
- const {width: width, height: height} = bounds;
13676
+ const innerBounds = target.getBounds(boundsType, "inner");
13677
+ const {width: width, height: height} = innerBounds;
13827
13678
  last.x = last.x * width;
13828
13679
  last.y = last.y * height;
13829
- toPoint(around || align, bounds, origin, true);
13680
+ toPoint(around || align, innerBounds, origin, true);
13681
+ this.checkOrigin(target, origin, boundsType);
13830
13682
  const rotation = PointHelper.getRotation(last, origin, {
13831
13683
  x: last.x + (skewX ? move.x : 0),
13832
13684
  y: last.y + (skewY ? move.y : 0)
@@ -13838,6 +13690,13 @@ const EditDataHelper = {
13838
13690
  skewY: skewY
13839
13691
  };
13840
13692
  },
13693
+ checkOrigin(target, origin, boundsType) {
13694
+ if (boundsType !== "box") {
13695
+ const {boxBounds: boxBounds} = target, innerBounds = target.getBounds(boundsType, "inner");
13696
+ origin.x += innerBounds.x - boxBounds.x;
13697
+ origin.y += innerBounds.y - boxBounds.y;
13698
+ }
13699
+ },
13841
13700
  getAround(around, altKey) {
13842
13701
  return altKey && !around ? "center" : around;
13843
13702
  },
@@ -14108,8 +13967,8 @@ class EditBox extends Group {
14108
13967
  updateMoveCursor(this);
14109
13968
  }
14110
13969
  update() {
14111
- const {editor: editor} = this;
14112
- 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);
13970
+ const {editor: editor, mergeConfig: mergeConfig} = this;
13971
+ 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);
14113
13972
  this.visible = !this.target.locked;
14114
13973
  this.set({
14115
13974
  x: x,
@@ -14132,9 +13991,9 @@ class EditBox extends Group {
14132
13991
  if (this.app) this.rect.syncEventer = this.app.interaction.bottomList = null;
14133
13992
  }
14134
13993
  updateBounds(bounds) {
14135
- const {editor: editor, mergeConfig: mergeConfig, single: single, rect: rect, circle: circle, buttons: buttons, resizePoints: resizePoints, rotatePoints: rotatePoints, resizeLines: resizeLines} = this;
13994
+ const {editor: editor, mergedConfig: mergedConfig, single: single, rect: rect, circle: circle, buttons: buttons, resizePoints: resizePoints, rotatePoints: rotatePoints, resizeLines: resizeLines} = this;
14136
13995
  const {editMask: editMask} = editor;
14137
- const {middlePoint: middlePoint, resizeable: resizeable, rotateable: rotateable, hideOnSmall: hideOnSmall, editBox: editBox, mask: mask, dimOthers: dimOthers, bright: bright, spread: spread, hideRotatePoints: hideRotatePoints, hideResizeLines: hideResizeLines} = mergeConfig;
13996
+ const {middlePoint: middlePoint, resizeable: resizeable, rotateable: rotateable, hideOnSmall: hideOnSmall, editBox: editBox, mask: mask, dimOthers: dimOthers, bright: bright, spread: spread, hideRotatePoints: hideRotatePoints, hideResizeLines: hideResizeLines} = mergedConfig;
14138
13997
  editMask.visible = mask ? true : 0;
14139
13998
  if (!isUndefined(dimOthers) || !isUndefined(bright)) {
14140
13999
  editor.setDimOthers(dimOthers);
@@ -14172,7 +14031,7 @@ class EditBox extends Group {
14172
14031
  }
14173
14032
  }
14174
14033
  }
14175
- circle.visible = showPoints && rotateable && !!(mergeConfig.circle || mergeConfig.rotatePoint);
14034
+ circle.visible = showPoints && rotateable && !!(mergedConfig.circle || mergedConfig.rotatePoint);
14176
14035
  if (circle.visible) this.layoutCircle();
14177
14036
  if (rect.path) rect.path = null;
14178
14037
  rect.set(Object.assign(Object.assign({}, bounds), {
@@ -14280,7 +14139,8 @@ class EditBox extends Group {
14280
14139
  this.dragPoint = null;
14281
14140
  }
14282
14141
  onTransformStart(e) {
14283
- if (this.moving || this.gesturing) this.editor.opacity = this.mergedConfig.hideOnMove ? 0 : 1;
14142
+ const {hideOnMove: hideOnMove, editBoxType: editBoxType} = this.mergedConfig;
14143
+ if (this.moving || this.gesturing) this.editor.opacity = hideOnMove ? 0 : 1;
14284
14144
  if (this.resizing) ResizeEvent.resizingKeys = this.editor.leafList.keys;
14285
14145
  const {dragStartData: dragStartData, target: target} = this;
14286
14146
  dragStartData.x = e.x;
@@ -14290,7 +14150,7 @@ class EditBox extends Group {
14290
14150
  x: target.x,
14291
14151
  y: target.y
14292
14152
  };
14293
- dragStartData.bounds = Object.assign({}, target.getLayoutBounds("box", "local"));
14153
+ dragStartData.bounds = Object.assign({}, target.getLayoutBounds(editBoxType, "local"));
14294
14154
  dragStartData.rotation = target.rotation;
14295
14155
  }
14296
14156
  onTransformEnd(e) {
@@ -14528,6 +14388,7 @@ const config$1 = {
14528
14388
  },
14529
14389
  selector: true,
14530
14390
  editBox: true,
14391
+ editBoxType: "box",
14531
14392
  hover: true,
14532
14393
  select: "press",
14533
14394
  openInner: "double",
@@ -14852,7 +14713,7 @@ class TransformTool {
14852
14713
  }
14853
14714
  onScale(e) {
14854
14715
  const {target: target, mergeConfig: mergeConfig, single: single, dragStartData: dragStartData} = this.editBox;
14855
- let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize} = mergeConfig, totalMove;
14716
+ let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize, editBoxType: editBoxType} = mergeConfig, totalMove;
14856
14717
  if (e instanceof ZoomEvent) {
14857
14718
  if (!around) around = target.getBoxPoint(e);
14858
14719
  totalMove = e.totalScale;
@@ -14861,7 +14722,7 @@ class TransformTool {
14861
14722
  }
14862
14723
  const {direction: direction} = e.current;
14863
14724
  if (e.shiftKey || target.lockRatio) lockRatio = true;
14864
- const data = EditDataHelper.getScaleData(target, dragStartData.bounds, direction, totalMove, lockRatio, EditDataHelper.getAround(around, e.altKey), flipable, !single || editSize === "scale");
14725
+ const data = EditDataHelper.getScaleData(target, dragStartData.bounds, direction, totalMove, lockRatio, EditDataHelper.getAround(around, e.altKey), flipable, !single || editSize === "scale", editBoxType);
14865
14726
  const targetX = target.x, targetY = target.y;
14866
14727
  if (e instanceof DragEvent && this.editTool && this.editTool.onScaleWithDrag) {
14867
14728
  data.drag = e;
@@ -14873,7 +14734,7 @@ class TransformTool {
14873
14734
  }
14874
14735
  onRotate(e) {
14875
14736
  const {target: target, mergeConfig: mergeConfig, dragStartData: dragStartData} = this.editBox;
14876
- const {around: around, rotateAround: rotateAround, rotateGap: rotateGap, diagonalRotateKey: diagonalRotateKey} = mergeConfig;
14737
+ const {around: around, rotateAround: rotateAround, rotateGap: rotateGap, diagonalRotateKey: diagonalRotateKey, editBoxType: editBoxType} = mergeConfig;
14877
14738
  const {direction: direction} = e.current;
14878
14739
  let origin, rotation;
14879
14740
  if (e instanceof RotateEvent) {
@@ -14881,7 +14742,7 @@ class TransformTool {
14881
14742
  origin = rotateAround ? AroundHelper.getPoint(rotateAround, target.boxBounds) : target.getBoxPoint(e);
14882
14743
  } else {
14883
14744
  const isDiagonalRotate = diagonalRotateKey ? e.isHoldKeys(diagonalRotateKey) : e.shiftKey;
14884
- const data = EditDataHelper.getRotateData(target, direction, e, dragStartData, isDiagonalRotate ? null : rotateAround || target.around || target.origin || around || "center");
14745
+ const data = EditDataHelper.getRotateData(target, direction, e, dragStartData, isDiagonalRotate ? null : rotateAround || target.around || target.origin || around || "center", editBoxType);
14885
14746
  rotation = dragStartData.rotation + data.rotation - target.rotation;
14886
14747
  origin = data.origin;
14887
14748
  }
@@ -14893,8 +14754,8 @@ class TransformTool {
14893
14754
  }
14894
14755
  onSkew(e) {
14895
14756
  const {target: target, mergeConfig: mergeConfig} = this.editBox;
14896
- const {around: around} = mergeConfig;
14897
- const {origin: origin, skewX: skewX, skewY: skewY} = EditDataHelper.getSkewData(target.boxBounds, e.current.direction, e.getInnerMove(target), EditDataHelper.getAround(around, e.altKey));
14757
+ const {around: around, editBoxType: editBoxType} = mergeConfig;
14758
+ const {origin: origin, skewX: skewX, skewY: skewY} = EditDataHelper.getSkewData(target, e.current.direction, e.getInnerMove(target), EditDataHelper.getAround(around, e.altKey), editBoxType);
14898
14759
  if (!skewX && !skewY) return;
14899
14760
  this.skewOf(origin, skewX, skewY);
14900
14761
  }
@@ -14955,7 +14816,7 @@ class TransformTool {
14955
14816
  scaleOf(origin, scaleX, scaleY = scaleX, _resize) {
14956
14817
  if (!this.checkTransform("resizeable")) return;
14957
14818
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
14958
- const {beforeScale: beforeScale} = mergeConfig;
14819
+ const {beforeScale: beforeScale, editBoxType: editBoxType} = mergeConfig;
14959
14820
  if (beforeScale) {
14960
14821
  const check = beforeScale({
14961
14822
  target: target,
@@ -14973,7 +14834,8 @@ class TransformTool {
14973
14834
  worldOrigin: worldOrigin,
14974
14835
  scaleX: scaleX,
14975
14836
  scaleY: scaleY,
14976
- transform: transform
14837
+ transform: transform,
14838
+ editBoxType: editBoxType
14977
14839
  };
14978
14840
  this.emitEvent(new EditorScaleEvent(EditorScaleEvent.BEFORE_SCALE, data));
14979
14841
  const event = new EditorScaleEvent(EditorScaleEvent.SCALE, data);
@@ -15001,7 +14863,7 @@ class TransformTool {
15001
14863
  rotateOf(origin, rotation) {
15002
14864
  if (!this.checkTransform("rotateable")) return;
15003
14865
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
15004
- const {beforeRotate: beforeRotate} = mergeConfig;
14866
+ const {beforeRotate: beforeRotate, editBoxType: editBoxType} = mergeConfig;
15005
14867
  if (beforeRotate) {
15006
14868
  const check = beforeRotate({
15007
14869
  target: target,
@@ -15017,7 +14879,8 @@ class TransformTool {
15017
14879
  editor: editor,
15018
14880
  worldOrigin: worldOrigin,
15019
14881
  rotation: rotation,
15020
- transform: transform
14882
+ transform: transform,
14883
+ editBoxType: editBoxType
15021
14884
  };
15022
14885
  this.emitEvent(new EditorRotateEvent(EditorRotateEvent.BEFORE_ROTATE, data));
15023
14886
  const event = new EditorRotateEvent(EditorRotateEvent.ROTATE, data);
@@ -15027,7 +14890,7 @@ class TransformTool {
15027
14890
  skewOf(origin, skewX, skewY = 0, _resize) {
15028
14891
  if (!this.checkTransform("skewable")) return;
15029
14892
  const {target: target, mergeConfig: mergeConfig, single: single, editor: editor} = this.editBox;
15030
- const {beforeSkew: beforeSkew} = mergeConfig;
14893
+ const {beforeSkew: beforeSkew, editBoxType: editBoxType} = mergeConfig;
15031
14894
  if (beforeSkew) {
15032
14895
  const check = beforeSkew({
15033
14896
  target: target,
@@ -15045,7 +14908,8 @@ class TransformTool {
15045
14908
  worldOrigin: worldOrigin,
15046
14909
  skewX: skewX,
15047
14910
  skewY: skewY,
15048
- transform: transform
14911
+ transform: transform,
14912
+ editBoxType: editBoxType
15049
14913
  };
15050
14914
  this.emitEvent(new EditorSkewEvent(EditorSkewEvent.BEFORE_SKEW, data));
15051
14915
  const event = new EditorSkewEvent(EditorSkewEvent.SKEW, data);
@@ -15494,32 +15358,32 @@ let EditTool = class EditTool extends InnerEditor {
15494
15358
  app.unlockLayout();
15495
15359
  }
15496
15360
  onScale(e) {
15497
- const {scaleX: scaleX, scaleY: scaleY, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15361
+ const {scaleX: scaleX, scaleY: scaleY, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15498
15362
  const {app: app, list: list} = editor;
15499
15363
  app.lockLayout();
15500
15364
  list.forEach(target => {
15501
15365
  const resize = editor.getEditSize(target) !== "scale";
15502
- if (transform) target.transformWorld(transform, resize); else target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize);
15366
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.scaleOfWorld(worldOrigin, scaleX, scaleY, resize, false, editBoxType);
15503
15367
  });
15504
15368
  app.unlockLayout();
15505
15369
  }
15506
15370
  onRotate(e) {
15507
- const {rotation: rotation, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15371
+ const {rotation: rotation, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15508
15372
  const {app: app, list: list} = editor;
15509
15373
  app.lockLayout();
15510
15374
  list.forEach(target => {
15511
15375
  const resize = editor.getEditSize(target) !== "scale";
15512
- if (transform) target.transformWorld(transform, resize); else target.rotateOfWorld(worldOrigin, rotation);
15376
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.rotateOfWorld(worldOrigin, rotation);
15513
15377
  });
15514
15378
  app.unlockLayout();
15515
15379
  }
15516
15380
  onSkew(e) {
15517
- const {skewX: skewX, skewY: skewY, transform: transform, worldOrigin: worldOrigin, editor: editor} = e;
15381
+ const {skewX: skewX, skewY: skewY, transform: transform, worldOrigin: worldOrigin, editor: editor, editBoxType: editBoxType} = e;
15518
15382
  const {app: app, list: list} = editor;
15519
15383
  app.lockLayout();
15520
15384
  list.forEach(target => {
15521
15385
  const resize = editor.getEditSize(target) !== "scale";
15522
- if (transform) target.transformWorld(transform, resize); else target.skewOfWorld(worldOrigin, skewX, skewY, resize);
15386
+ if (transform) target.transformWorld(transform, resize, false, editBoxType); else target.skewOfWorld(worldOrigin, skewX, skewY, resize);
15523
15387
  });
15524
15388
  app.unlockLayout();
15525
15389
  }
@@ -15816,16 +15680,27 @@ function scaleResizeGroup(group, scaleX, scaleY) {
15816
15680
  }
15817
15681
  }
15818
15682
 
15819
- const leaf = Leaf.prototype;
15683
+ const leaf = Leaf.prototype, tempPoint$1 = {}, {scale: scale$2, toOuterPoint: toOuterPoint} = MatrixHelper;
15820
15684
 
15821
- leaf.scaleResize = function(scaleX, scaleY = scaleX, noResize) {
15685
+ leaf.scaleResize = function(scaleX, scaleY = scaleX, noResize, boundsType) {
15822
15686
  const data = this;
15823
15687
  if (noResize || data.editConfig && data.editConfig.editSize === "scale") {
15824
15688
  data.scaleX *= scaleX;
15825
15689
  data.scaleY *= scaleY;
15826
15690
  } else {
15827
- if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX;
15828
- if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY;
15691
+ const local = this.__localMatrix;
15692
+ if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX, scale$2(local, -1, 1);
15693
+ if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY, scale$2(local, 1, -1);
15694
+ if (boundsType === "stroke") {
15695
+ const {boxBounds: boxBounds, strokeBounds: strokeBounds} = this.__layout, {x: x, y: y, width: width, height: height} = strokeBounds;
15696
+ tempPoint$1.x = (x - boxBounds.x) * (scaleX - 1);
15697
+ tempPoint$1.y = (y - boxBounds.y) * (scaleY - 1);
15698
+ toOuterPoint(local, tempPoint$1, tempPoint$1, true);
15699
+ this.x += tempPoint$1.x;
15700
+ this.y += tempPoint$1.y;
15701
+ scaleX = (width * scaleX - (width - boxBounds.width)) / boxBounds.width;
15702
+ scaleY = (height * scaleY - (height - boxBounds.height)) / boxBounds.height;
15703
+ }
15829
15704
  this.__scaleResize(scaleX, scaleY);
15830
15705
  }
15831
15706
  };
@@ -15906,7 +15781,8 @@ UI.addAttr("editConfig", undefined, dataType);
15906
15781
 
15907
15782
  UI.addAttr("editOuter", ui => {
15908
15783
  ui.updateLayout();
15909
- return ui.__.__isLinePath ? "LineEditTool" : "EditTool";
15784
+ const name = (ui.tag === "Line" ? "" : ui.tag) + "EditTool";
15785
+ return ui.__.__isLinePath ? "LineEditTool" : EditToolCreator.list[name] ? name : "EditTool";
15910
15786
  }, dataType);
15911
15787
 
15912
15788
  UI.addAttr("editInner", "PathEditor", dataType);
@@ -16192,8 +16068,9 @@ function addViewport(leafer, mergeConfig, custom) {
16192
16068
  addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig);
16193
16069
  if (leafer.isApp || custom) return;
16194
16070
  leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, e => {
16195
- const move = leafer.getValidMove(e.moveX, e.moveY, false);
16196
- if (getScrollType(leafer).includes("limit")) {
16071
+ const limit = getScrollType(leafer).includes("limit"), stopLimit = leafer.app.config.move.scrollLimit === "stop";
16072
+ const move = leafer.getValidMove(e.moveX, e.moveY, limit && stopLimit);
16073
+ if (limit && !stopLimit) {
16197
16074
  const testMove = leafer.getValidMove(0, 0);
16198
16075
  if (testMove.x || testMove.y) {
16199
16076
  const maxX = 100, maxY = 200, resistance = e.moveType === "drag" ? .3 : .05;
@@ -20834,7 +20711,7 @@ UI.addAttr("scaleFixed", undefined, scaleFixedType);
20834
20711
 
20835
20712
  class EllipseBoxData extends BoxData {}
20836
20713
 
20837
- const ellipse$1 = Ellipse.prototype;
20714
+ const ellipse = Ellipse.prototype;
20838
20715
 
20839
20716
  let EllipseBox = class EllipseBox extends Box {
20840
20717
  get __tag() {
@@ -20851,7 +20728,7 @@ __decorate([ pathType(0) ], EllipseBox.prototype, "startAngle", void 0);
20851
20728
 
20852
20729
  __decorate([ pathType(0) ], EllipseBox.prototype, "endAngle", void 0);
20853
20730
 
20854
- __decorate([ rewrite(ellipse$1.__updatePath) ], EllipseBox.prototype, "__updatePath", null);
20731
+ __decorate([ rewrite(ellipse.__updatePath) ], EllipseBox.prototype, "__updatePath", null);
20855
20732
 
20856
20733
  EllipseBox = __decorate([ rewriteAble(), registerUI() ], EllipseBox);
20857
20734
 
@@ -20884,7 +20761,7 @@ PolygonBox = __decorate([ rewriteAble(), registerUI() ], PolygonBox);
20884
20761
 
20885
20762
  class StarBoxData extends BoxData {}
20886
20763
 
20887
- const ellipse = Star.prototype;
20764
+ const star = Star.prototype;
20888
20765
 
20889
20766
  let StarBox = class StarBox extends Box {
20890
20767
  get __tag() {
@@ -20899,7 +20776,7 @@ __decorate([ pathType(.382) ], StarBox.prototype, "innerRadius", void 0);
20899
20776
 
20900
20777
  __decorate([ dataProcessor(StarBoxData) ], StarBox.prototype, "__", void 0);
20901
20778
 
20902
- __decorate([ rewrite(ellipse.__updatePath) ], StarBox.prototype, "__updatePath", null);
20779
+ __decorate([ rewrite(star.__updatePath) ], StarBox.prototype, "__updatePath", null);
20903
20780
 
20904
20781
  StarBox = __decorate([ rewriteAble(), registerUI() ], StarBox);
20905
20782
 
@@ -21255,4 +21132,4 @@ function isSame(a, b) {
21255
21132
 
21256
21133
  Plugin.add("corner");
21257
21134
 
21258
- 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, HTMLText, HTMLTextData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageBox, ImageBoxData, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, 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, TextEditor, 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 };
21135
+ 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, HTMLText, HTMLTextData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, ImageBox, ImageBoxData, ImageData, ImageEvent, ImageManager, IncrementId, InnerEditor, InnerEditorEvent, 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, TextEditor, 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 };