@leafer/miniapp 1.12.0 → 1.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,7 +216,7 @@ class LeafData {
216
216
  }
217
217
  }
218
218
 
219
- const {floor: floor$3, max: max$6} = Math;
219
+ const {floor: floor$3, max: max$7} = Math;
220
220
 
221
221
  const Platform = {
222
222
  toURL(text, fileType) {
@@ -242,7 +242,7 @@ const Platform = {
242
242
  return url;
243
243
  },
244
244
  resize(image, width, height, xGap, yGap, clip, smooth, opacity, _filters) {
245
- const canvas = Platform.origin.createCanvas(max$6(floor$3(width + (xGap || 0)), 1), max$6(floor$3(height + (yGap || 0)), 1));
245
+ const canvas = Platform.origin.createCanvas(max$7(floor$3(width + (xGap || 0)), 1), max$7(floor$3(height + (yGap || 0)), 1));
246
246
  const ctx = canvas.getContext("2d");
247
247
  if (opacity) ctx.globalAlpha = opacity;
248
248
  ctx.imageSmoothingEnabled = smooth === false ? false : true;
@@ -289,7 +289,7 @@ const I$2 = IncrementId;
289
289
 
290
290
  let tempA, tempB, tempTo;
291
291
 
292
- const {max: max$5} = Math, tempFour = [ 0, 0, 0, 0 ];
292
+ const {max: max$6} = Math, tempFour = [ 0, 0, 0, 0 ];
293
293
 
294
294
  const FourNumberHelper = {
295
295
  zero: [ ...tempFour ],
@@ -341,9 +341,9 @@ const FourNumberHelper = {
341
341
  return data;
342
342
  },
343
343
  max(t, other, change) {
344
- if (isNumber(t) && isNumber(other)) return max$5(t, other);
344
+ if (isNumber(t) && isNumber(other)) return max$6(t, other);
345
345
  toTempAB(t, other, change);
346
- return set$2(tempTo, max$5(tempA[0], tempB[0]), max$5(tempA[1], tempB[1]), max$5(tempA[2], tempB[2]), max$5(tempA[3], tempB[3]));
346
+ return set$2(tempTo, max$6(tempA[0], tempB[0]), max$6(tempA[1], tempB[1]), max$6(tempA[2], tempB[2]), max$6(tempA[3], tempB[3]));
347
347
  },
348
348
  add(t, other, change) {
349
349
  if (isNumber(t) && isNumber(other)) return t + other;
@@ -360,7 +360,7 @@ const FourNumberHelper = {
360
360
 
361
361
  const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
362
362
 
363
- const {round: round$6, pow: pow$2, max: max$4, floor: floor$2, PI: PI$4} = Math;
363
+ const {round: round$6, pow: pow$2, max: max$5, floor: floor$2, PI: PI$4} = Math;
364
364
 
365
365
  const MathHelper = {
366
366
  within(value, min, max) {
@@ -414,7 +414,7 @@ const MathHelper = {
414
414
  }
415
415
  },
416
416
  getFloorScale(num, min = 1) {
417
- return max$4(floor$2(num), min) / num;
417
+ return max$5(floor$2(num), min) / num;
418
418
  },
419
419
  randInt: randInt,
420
420
  randColor(opacity) {
@@ -461,9 +461,9 @@ function getMatrixData() {
461
461
 
462
462
  const {sin: sin$6, cos: cos$6, acos: acos, sqrt: sqrt$5} = Math;
463
463
 
464
- const {float: float$3} = MathHelper;
464
+ const {float: float$5} = MathHelper;
465
465
 
466
- const tempPoint$4 = {};
466
+ const tempPoint$5 = {};
467
467
 
468
468
  function getWorld() {
469
469
  return Object.assign(Object.assign(Object.assign({}, getMatrixData()), getBoundsData()), {
@@ -522,8 +522,8 @@ const MatrixHelper = {
522
522
  to.f = t.f * pixelRatio;
523
523
  },
524
524
  scaleOfOuter(t, origin, scaleX, scaleY) {
525
- M$b.toInnerPoint(t, origin, tempPoint$4);
526
- M$b.scaleOfInner(t, tempPoint$4, scaleX, scaleY);
525
+ M$b.toInnerPoint(t, origin, tempPoint$5);
526
+ M$b.scaleOfInner(t, tempPoint$5, scaleX, scaleY);
527
527
  },
528
528
  scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
529
529
  M$b.translateInner(t, origin.x, origin.y);
@@ -541,8 +541,8 @@ const MatrixHelper = {
541
541
  t.d = c * sinR + d * cosR;
542
542
  },
543
543
  rotateOfOuter(t, origin, rotation) {
544
- M$b.toInnerPoint(t, origin, tempPoint$4);
545
- M$b.rotateOfInner(t, tempPoint$4, rotation);
544
+ M$b.toInnerPoint(t, origin, tempPoint$5);
545
+ M$b.rotateOfInner(t, tempPoint$5, rotation);
546
546
  },
547
547
  rotateOfInner(t, origin, rotation) {
548
548
  M$b.translateInner(t, origin.x, origin.y);
@@ -563,8 +563,8 @@ const MatrixHelper = {
563
563
  }
564
564
  },
565
565
  skewOfOuter(t, origin, skewX, skewY) {
566
- M$b.toInnerPoint(t, origin, tempPoint$4);
567
- M$b.skewOfInner(t, tempPoint$4, skewX, skewY);
566
+ M$b.toInnerPoint(t, origin, tempPoint$5);
567
+ M$b.skewOfInner(t, tempPoint$5, skewX, skewY);
568
568
  },
569
569
  skewOfInner(t, origin, skewX, skewY = 0) {
570
570
  M$b.translateInner(t, origin.x, origin.y);
@@ -712,12 +712,12 @@ const MatrixHelper = {
712
712
  const cosR = c / scaleY;
713
713
  rotation = PI_2 - (d > 0 ? acos(-cosR) : -acos(cosR));
714
714
  }
715
- const cosR = float$3(cos$6(rotation));
715
+ const cosR = float$5(cos$6(rotation));
716
716
  const sinR = sin$6(rotation);
717
- scaleX = float$3(scaleX), scaleY = float$3(scaleY);
718
- skewX = cosR ? float$3((c / scaleY + sinR) / cosR / OneRadian, 9) : 0;
719
- skewY = cosR ? float$3((b / scaleX - sinR) / cosR / OneRadian, 9) : 0;
720
- rotation = float$3(rotation / OneRadian);
717
+ scaleX = float$5(scaleX), scaleY = float$5(scaleY);
718
+ skewX = cosR ? float$5((c / scaleY + sinR) / cosR / OneRadian, 9) : 0;
719
+ skewY = cosR ? float$5((b / scaleX - sinR) / cosR / OneRadian, 9) : 0;
720
+ rotation = float$5(rotation / OneRadian);
721
721
  } else {
722
722
  scaleX = a;
723
723
  scaleY = d;
@@ -761,9 +761,11 @@ const MatrixHelper = {
761
761
 
762
762
  const M$b = MatrixHelper;
763
763
 
764
+ const {float: float$4} = MathHelper;
765
+
764
766
  const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
765
767
 
766
- const {sin: sin$5, cos: cos$5, abs: abs$a, sqrt: sqrt$4, atan2: atan2$2, min: min$2, round: round$5} = Math;
768
+ const {sin: sin$5, cos: cos$5, abs: abs$a, sqrt: sqrt$4, atan2: atan2$2, min: min$3, round: round$5} = Math;
767
769
 
768
770
  const PointHelper = {
769
771
  defaultPoint: getPointData(),
@@ -812,22 +814,27 @@ const PointHelper = {
812
814
  },
813
815
  tempToInnerOf(t, matrix) {
814
816
  const {tempPoint: temp} = P$7;
815
- copy$d(temp, t);
817
+ copy$c(temp, t);
816
818
  toInnerPoint$2(matrix, temp, temp);
817
819
  return temp;
818
820
  },
819
821
  tempToOuterOf(t, matrix) {
820
822
  const {tempPoint: temp} = P$7;
821
- copy$d(temp, t);
823
+ copy$c(temp, t);
822
824
  toOuterPoint$3(matrix, temp, temp);
823
825
  return temp;
824
826
  },
825
827
  tempToInnerRadiusPointOf(t, matrix) {
826
828
  const {tempRadiusPoint: temp} = P$7;
827
- copy$d(temp, t);
829
+ copy$c(temp, t);
828
830
  P$7.toInnerRadiusPointOf(t, matrix, temp);
829
831
  return temp;
830
832
  },
833
+ copyRadiusPoint(t, point, x, y) {
834
+ copy$c(t, point);
835
+ setRadius(t, x, y);
836
+ return t;
837
+ },
831
838
  toInnerRadiusPointOf(t, matrix, to) {
832
839
  to || (to = t);
833
840
  toInnerPoint$2(matrix, t, to);
@@ -861,7 +868,7 @@ const PointHelper = {
861
868
  return sqrt$4(x * x + y * y);
862
869
  },
863
870
  getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
864
- return min$2(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
871
+ return min$3(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
865
872
  },
866
873
  getAngle(t, to) {
867
874
  return getAtan2(t, to) / OneRadian;
@@ -895,7 +902,7 @@ const PointHelper = {
895
902
  return points;
896
903
  },
897
904
  isSame(t, point) {
898
- return t.x === point.x && t.y === point.y;
905
+ return float$4(t.x) === float$4(point.x) && float$4(t.y) === float$4(point.y);
899
906
  },
900
907
  reset(t) {
901
908
  P$7.reset(t);
@@ -904,7 +911,7 @@ const PointHelper = {
904
911
 
905
912
  const P$7 = PointHelper;
906
913
 
907
- const {getDistanceFrom: getDistanceFrom, copy: copy$d, getAtan2: getAtan2} = P$7;
914
+ const {getDistanceFrom: getDistanceFrom, copy: copy$c, setRadius: setRadius, getAtan2: getAtan2} = P$7;
908
915
 
909
916
  class Point {
910
917
  constructor(x, y) {
@@ -979,7 +986,7 @@ class Point {
979
986
  }
980
987
  }
981
988
 
982
- const tempPoint$3 = new Point;
989
+ const tempPoint$4 = new Point;
983
990
 
984
991
  class Matrix {
985
992
  constructor(a, b, c, d, e, f) {
@@ -1250,7 +1257,7 @@ const {tempPointBounds: tempPointBounds$1, setPoint: setPoint$5, addPoint: addPo
1250
1257
 
1251
1258
  const {toOuterPoint: toOuterPoint$2} = MatrixHelper;
1252
1259
 
1253
- const {float: float$2, fourNumber: fourNumber$1} = MathHelper;
1260
+ const {float: float$3, fourNumber: fourNumber$1} = MathHelper;
1254
1261
 
1255
1262
  const {floor: floor$1, ceil: ceil$2} = Math;
1256
1263
 
@@ -1315,7 +1322,7 @@ const BoundsHelper = {
1315
1322
  return t;
1316
1323
  },
1317
1324
  toOffsetOutBounds(t, to, offsetBounds) {
1318
- if (!to) to = t; else copy$c(to, t);
1325
+ if (!to) to = t; else copy$b(to, t);
1319
1326
  if (!offsetBounds) offsetBounds = t;
1320
1327
  to.offsetX = B.maxX(offsetBounds);
1321
1328
  to.offsetY = B.maxY(offsetBounds);
@@ -1425,10 +1432,10 @@ const BoundsHelper = {
1425
1432
  }
1426
1433
  },
1427
1434
  float(t, maxLength) {
1428
- t.x = float$2(t.x, maxLength);
1429
- t.y = float$2(t.y, maxLength);
1430
- t.width = float$2(t.width, maxLength);
1431
- t.height = float$2(t.height, maxLength);
1435
+ t.x = float$3(t.x, maxLength);
1436
+ t.y = float$3(t.y, maxLength);
1437
+ t.width = float$3(t.width, maxLength);
1438
+ t.height = float$3(t.height, maxLength);
1432
1439
  },
1433
1440
  add(t, bounds, isPoint) {
1434
1441
  right$4 = t.x + t.width;
@@ -1462,7 +1469,7 @@ const BoundsHelper = {
1462
1469
  if (bounds && (bounds.width || bounds.height)) {
1463
1470
  if (first) {
1464
1471
  first = false;
1465
- if (!addMode) copy$c(t, bounds);
1472
+ if (!addMode) copy$b(t, bounds);
1466
1473
  } else {
1467
1474
  add$2(t, bounds);
1468
1475
  }
@@ -1549,7 +1556,7 @@ const BoundsHelper = {
1549
1556
 
1550
1557
  const B = BoundsHelper;
1551
1558
 
1552
- const {add: add$2, copy: copy$c} = B;
1559
+ const {add: add$2, copy: copy$b} = B;
1553
1560
 
1554
1561
  class Bounds {
1555
1562
  get minX() {
@@ -2247,7 +2254,7 @@ __decorate([ contextMethod() ], Canvas$1.prototype, "measureText", null);
2247
2254
 
2248
2255
  __decorate([ contextMethod() ], Canvas$1.prototype, "strokeText", null);
2249
2256
 
2250
- const {copy: copy$b, multiplyParent: multiplyParent$4, pixelScale: pixelScale} = MatrixHelper, {round: round$4} = Math, tempPixelBounds = new Bounds, tempPixelBounds2 = new Bounds;
2257
+ const {copy: copy$a, multiplyParent: multiplyParent$4, pixelScale: pixelScale} = MatrixHelper, {round: round$4} = Math, tempPixelBounds = new Bounds, tempPixelBounds2 = new Bounds;
2251
2258
 
2252
2259
  const minSize = {
2253
2260
  width: 1,
@@ -2407,7 +2414,7 @@ class LeaferCanvasBase extends Canvas$1 {
2407
2414
  const {pixelRatio: pixelRatio} = this;
2408
2415
  this.filter = `blur(${blur * pixelRatio}px)`;
2409
2416
  }
2410
- copyWorld(canvas, from, to, blendMode, ceilPixel = true) {
2417
+ copyWorld(canvas, from, to, blendMode, ceilPixel) {
2411
2418
  if (blendMode) this.blendMode = blendMode;
2412
2419
  if (from) {
2413
2420
  this.setTempPixelBounds(from, ceilPixel);
@@ -2418,7 +2425,7 @@ class LeaferCanvasBase extends Canvas$1 {
2418
2425
  }
2419
2426
  if (blendMode) this.blendMode = "source-over";
2420
2427
  }
2421
- copyWorldToInner(canvas, fromWorld, toInnerBounds, blendMode, ceilPixel = true) {
2428
+ copyWorldToInner(canvas, fromWorld, toInnerBounds, blendMode, ceilPixel) {
2422
2429
  if (fromWorld.b || fromWorld.c) {
2423
2430
  this.save();
2424
2431
  this.resetTransform();
@@ -2431,7 +2438,7 @@ class LeaferCanvasBase extends Canvas$1 {
2431
2438
  if (blendMode) this.blendMode = "source-over";
2432
2439
  }
2433
2440
  }
2434
- copyWorldByReset(canvas, from, to, blendMode, onlyResetTransform, ceilPixel = true) {
2441
+ copyWorldByReset(canvas, from, to, blendMode, onlyResetTransform, ceilPixel) {
2435
2442
  this.resetTransform();
2436
2443
  this.copyWorld(canvas, from, to, blendMode, ceilPixel);
2437
2444
  if (!onlyResetTransform) this.useWorldTransform();
@@ -2501,7 +2508,7 @@ class LeaferCanvasBase extends Canvas$1 {
2501
2508
  getSameCanvas(useSameWorldTransform, useSameSmooth) {
2502
2509
  const {size: size, pixelSnap: pixelSnap} = this, canvas = this.manager ? this.manager.get(size) : Creator.canvas(Object.assign({}, size));
2503
2510
  canvas.save();
2504
- if (useSameWorldTransform) copy$b(canvas.worldTransform, this.worldTransform), canvas.useWorldTransform();
2511
+ if (useSameWorldTransform) copy$a(canvas.worldTransform, this.worldTransform), canvas.useWorldTransform();
2505
2512
  if (useSameSmooth) canvas.smooth = this.smooth;
2506
2513
  canvas.pixelSnap !== pixelSnap && (canvas.pixelSnap = pixelSnap);
2507
2514
  return canvas;
@@ -2642,7 +2649,7 @@ const RectHelper = {
2642
2649
  }
2643
2650
  };
2644
2651
 
2645
- const {sin: sin$4, cos: cos$4, hypot: hypot, atan2: atan2$1, ceil: ceil$1, abs: abs$9, PI: PI$3, sqrt: sqrt$3, pow: pow$1} = Math;
2652
+ const {sin: sin$4, cos: cos$4, hypot: hypot$1, atan2: atan2$1, ceil: ceil$1, abs: abs$9, PI: PI$3, sqrt: sqrt$3, pow: pow$1} = Math;
2646
2653
 
2647
2654
  const {setPoint: setPoint$4, addPoint: addPoint$2} = TwoPointBoundsHelper;
2648
2655
 
@@ -2650,7 +2657,7 @@ const {set: set$1, toNumberPoints: toNumberPoints$1} = PointHelper;
2650
2657
 
2651
2658
  const {M: M$a, L: L$a, C: C$8, Q: Q$7, Z: Z$8} = PathCommandMap;
2652
2659
 
2653
- const tempPoint$2 = {};
2660
+ const tempPoint$3 = {};
2654
2661
 
2655
2662
  const BezierHelper = {
2656
2663
  points(data, originPoints, curve, close) {
@@ -2658,7 +2665,7 @@ const BezierHelper = {
2658
2665
  data.push(M$a, points[0], points[1]);
2659
2666
  if (curve && points.length > 5) {
2660
2667
  let aX, aY, bX, bY, cX, cY, c1X, c1Y, c2X, c2Y;
2661
- let ba, cb, d, len = points.length;
2668
+ let baX, baY, ba, cb, d, len = points.length;
2662
2669
  const t = curve === true ? .5 : curve;
2663
2670
  if (close) {
2664
2671
  points = [ points[len - 2], points[len - 1], ...points, points[0], points[1], points[2], points[3] ];
@@ -2671,7 +2678,9 @@ const BezierHelper = {
2671
2678
  bY = points[i + 1];
2672
2679
  cX = points[i + 2];
2673
2680
  cY = points[i + 3];
2674
- ba = sqrt$3(pow$1(bX - aX, 2) + pow$1(bY - aY, 2));
2681
+ baX = bX - aX;
2682
+ baY = bY - aY;
2683
+ ba = sqrt$3(pow$1(baX, 2) + pow$1(baY, 2));
2675
2684
  cb = sqrt$3(pow$1(cX - bX, 2) + pow$1(cY - bY, 2));
2676
2685
  if (!ba && !cb) continue;
2677
2686
  d = ba + cb;
@@ -2684,7 +2693,7 @@ const BezierHelper = {
2684
2693
  if (i === 2) {
2685
2694
  if (!close) data.push(Q$7, c1X, c1Y, bX, bY);
2686
2695
  } else {
2687
- data.push(C$8, c2X, c2Y, c1X, c1Y, bX, bY);
2696
+ if (baX || baY) data.push(C$8, c2X, c2Y, c1X, c1Y, bX, bY);
2688
2697
  }
2689
2698
  c2X = bX + cb * cX;
2690
2699
  c2Y = bY + cb * cY;
@@ -2713,8 +2722,8 @@ const BezierHelper = {
2713
2722
  const CBy = toY - y1;
2714
2723
  let startRadian = atan2$1(BAy, BAx);
2715
2724
  let endRadian = atan2$1(CBy, CBx);
2716
- const lenBA = hypot(BAx, BAy);
2717
- const lenCB = hypot(CBx, CBy);
2725
+ const lenBA = hypot$1(BAx, BAy);
2726
+ const lenCB = hypot$1(CBx, CBy);
2718
2727
  let totalRadian = endRadian - startRadian;
2719
2728
  if (totalRadian < 0) totalRadian += PI2;
2720
2729
  if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$9(totalRadian - PI$3) < 1e-12) {
@@ -2819,8 +2828,8 @@ const BezierHelper = {
2819
2828
  addMode ? addPoint$2(pointBounds, fromX, fromY) : setPoint$4(pointBounds, fromX, fromY);
2820
2829
  addPoint$2(pointBounds, toX, toY);
2821
2830
  for (let i = 0, len = tList.length; i < len; i++) {
2822
- getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$2);
2823
- addPoint$2(pointBounds, tempPoint$2.x, tempPoint$2.y);
2831
+ getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$3);
2832
+ addPoint$2(pointBounds, tempPoint$3.x, tempPoint$3.y);
2824
2833
  }
2825
2834
  },
2826
2835
  getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
@@ -3230,7 +3239,7 @@ const {M: M$8, L: L$8, C: C$6, Q: Q$5, Z: Z$6, N: N$4, D: D$5, X: X$4, G: G$4, F
3230
3239
 
3231
3240
  const {getMinDistanceFrom: getMinDistanceFrom, getRadianFrom: getRadianFrom} = PointHelper;
3232
3241
 
3233
- const {tan: tan, min: min$1, abs: abs$8} = Math;
3242
+ const {tan: tan, min: min$2, abs: abs$8} = Math;
3234
3243
 
3235
3244
  const startPoint = {};
3236
3245
 
@@ -3269,6 +3278,7 @@ const PathCommandDataHelper = {
3269
3278
  }
3270
3279
  },
3271
3280
  ellipse(data, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
3281
+ if (radiusX === radiusY) return arc$2(data, x, y, radiusX, startAngle, endAngle, anticlockwise);
3272
3282
  if (isNull(rotation)) {
3273
3283
  data.push(F$5, x, y, radiusX, radiusY);
3274
3284
  } else {
@@ -3281,6 +3291,7 @@ const PathCommandDataHelper = {
3281
3291
  if (isNull(startAngle)) {
3282
3292
  data.push(P$4, x, y, radius);
3283
3293
  } else {
3294
+ if (isNull(startAngle)) startAngle = 0;
3284
3295
  if (isNull(endAngle)) endAngle = 360;
3285
3296
  data.push(O$5, x, y, radius, startAngle, endAngle, anticlockwise ? 1 : 0);
3286
3297
  }
@@ -3288,7 +3299,7 @@ const PathCommandDataHelper = {
3288
3299
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
3289
3300
  if (!isUndefined(lastX)) {
3290
3301
  const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
3291
- radius = min$1(radius, min$1(d / 2, d / 2 * abs$8(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3302
+ radius = min$2(radius, min$2(d / 2, d / 2 * abs$8(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3292
3303
  }
3293
3304
  data.push(U$4, x1, y1, x2, y2, radius);
3294
3305
  },
@@ -3490,7 +3501,7 @@ const {M: M$6, L: L$6, C: C$4, Q: Q$3, Z: Z$4, N: N$2, D: D$3, X: X$2, G: G$2, F
3490
3501
 
3491
3502
  const {toTwoPointBounds: toTwoPointBounds, toTwoPointBoundsByQuadraticCurve: toTwoPointBoundsByQuadraticCurve, arcTo: arcTo$1, arc: arc, ellipse: ellipse$1} = BezierHelper;
3492
3503
 
3493
- const {addPointBounds: addPointBounds, copy: copy$a, addPoint: addPoint$1, setPoint: setPoint$3, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3504
+ const {addPointBounds: addPointBounds, copy: copy$9, addPoint: addPoint$1, setPoint: setPoint$3, addBounds: addBounds, toBounds: toBounds$2} = TwoPointBoundsHelper;
3494
3505
 
3495
3506
  const debug$d = Debug.get("PathBounds");
3496
3507
 
@@ -3572,7 +3583,7 @@ const PathBounds = {
3572
3583
 
3573
3584
  case G$2:
3574
3585
  ellipse$1(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);
3575
- i === 0 ? copy$a(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3586
+ i === 0 ? copy$9(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3576
3587
  x = setEndPoint.x;
3577
3588
  y = setEndPoint.y;
3578
3589
  i += 9;
@@ -3590,7 +3601,7 @@ const PathBounds = {
3590
3601
 
3591
3602
  case O$3:
3592
3603
  arc(null, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], data[i + 6], tempPointBounds, setEndPoint);
3593
- i === 0 ? copy$a(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3604
+ i === 0 ? copy$9(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3594
3605
  x = setEndPoint.x;
3595
3606
  y = setEndPoint.y;
3596
3607
  i += 7;
@@ -3607,7 +3618,7 @@ const PathBounds = {
3607
3618
 
3608
3619
  case U$2:
3609
3620
  arcTo$1(null, x, y, data[i + 1], data[i + 2], data[i + 3], data[i + 4], data[i + 5], tempPointBounds, setEndPoint);
3610
- i === 0 ? copy$a(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3621
+ i === 0 ? copy$9(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3611
3622
  x = setEndPoint.x;
3612
3623
  y = setEndPoint.y;
3613
3624
  i += 6;
@@ -3631,6 +3642,7 @@ const PathCorner = {
3631
3642
  smooth(data, cornerRadius, _cornerSmoothing) {
3632
3643
  let command, lastCommand, commandLen;
3633
3644
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3645
+ if (isArray(cornerRadius)) cornerRadius = cornerRadius[0] || 0;
3634
3646
  const len = data.length;
3635
3647
  const smooth = [];
3636
3648
  while (i < len) {
@@ -4046,7 +4058,9 @@ const R = Resource;
4046
4058
  const ImageManager = {
4047
4059
  maxRecycled: 10,
4048
4060
  recycledList: [],
4049
- patternTasker: new TaskProcessor,
4061
+ patternTasker: new TaskProcessor({
4062
+ parallel: 1
4063
+ }),
4050
4064
  get(config) {
4051
4065
  let image = Resource.get(config.url);
4052
4066
  if (!image) Resource.set(config.url, image = Creator.image(config));
@@ -4627,7 +4641,7 @@ function registerUIEvent() {
4627
4641
  };
4628
4642
  }
4629
4643
 
4630
- const {copy: copy$9, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter: skewOfOuter, multiplyParent: multiplyParent$3, divideParent: divideParent, getLayout: getLayout} = MatrixHelper;
4644
+ 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;
4631
4645
 
4632
4646
  const matrix$3 = {}, {round: round$3} = Math;
4633
4647
 
@@ -4725,7 +4739,7 @@ const LeafHelper = {
4725
4739
  if (scaleY) transition = scaleY;
4726
4740
  scaleY = scaleX;
4727
4741
  }
4728
- copy$9(matrix$3, o);
4742
+ copy$8(matrix$3, o);
4729
4743
  scaleOfOuter$2(matrix$3, origin, scaleX, scaleY);
4730
4744
  if (L$4.hasHighPosition(t)) {
4731
4745
  L$4.setTransform(t, matrix$3, resize, transition);
@@ -4744,7 +4758,7 @@ const LeafHelper = {
4744
4758
  },
4745
4759
  rotateOfLocal(t, origin, angle, transition) {
4746
4760
  const o = t.__localMatrix;
4747
- copy$9(matrix$3, o);
4761
+ copy$8(matrix$3, o);
4748
4762
  rotateOfOuter$2(matrix$3, origin, angle);
4749
4763
  if (L$4.hasHighPosition(t)) L$4.setTransform(t, matrix$3, false, transition); else t.set({
4750
4764
  x: t.x + matrix$3.e - o.e,
@@ -4756,18 +4770,18 @@ const LeafHelper = {
4756
4770
  L$4.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize, transition);
4757
4771
  },
4758
4772
  skewOfLocal(t, origin, skewX, skewY = 0, resize, transition) {
4759
- copy$9(matrix$3, t.__localMatrix);
4773
+ copy$8(matrix$3, t.__localMatrix);
4760
4774
  skewOfOuter(matrix$3, origin, skewX, skewY);
4761
4775
  L$4.setTransform(t, matrix$3, resize, transition);
4762
4776
  },
4763
4777
  transformWorld(t, transform, resize, transition) {
4764
- copy$9(matrix$3, t.worldTransform);
4778
+ copy$8(matrix$3, t.worldTransform);
4765
4779
  multiplyParent$3(matrix$3, transform);
4766
4780
  if (t.parent) divideParent(matrix$3, t.parent.scrollWorldTransform);
4767
4781
  L$4.setTransform(t, matrix$3, resize, transition);
4768
4782
  },
4769
4783
  transform(t, transform, resize, transition) {
4770
- copy$9(matrix$3, t.localTransform);
4784
+ copy$8(matrix$3, t.localTransform);
4771
4785
  multiplyParent$3(matrix$3, transform);
4772
4786
  L$4.setTransform(t, matrix$3, resize, transition);
4773
4787
  },
@@ -4805,7 +4819,7 @@ const LeafHelper = {
4805
4819
  return innerOrigin;
4806
4820
  },
4807
4821
  getRelativeWorld(t, relative, temp) {
4808
- copy$9(matrix$3, t.worldTransform);
4822
+ copy$8(matrix$3, t.worldTransform);
4809
4823
  divideParent(matrix$3, relative.scrollWorldTransform);
4810
4824
  return temp ? matrix$3 : Object.assign({}, matrix$3);
4811
4825
  },
@@ -4951,10 +4965,53 @@ const BranchHelper = {
4951
4965
  if (exclude && exclude === branch) continue;
4952
4966
  updateBounds$4(branch);
4953
4967
  }
4968
+ },
4969
+ move(branch, x, y) {
4970
+ let w;
4971
+ const {children: children} = branch;
4972
+ for (let i = 0, len = children.length; i < len; i++) {
4973
+ branch = children[i];
4974
+ w = branch.__world;
4975
+ w.e += x;
4976
+ w.f += y;
4977
+ w.x += x;
4978
+ w.y += y;
4979
+ if (branch.isBranch) move$9(branch, x, y);
4980
+ }
4981
+ },
4982
+ scale(branch, x, y, scaleX, scaleY, a, b) {
4983
+ let w;
4984
+ const {children: children} = branch;
4985
+ const changeScaleX = scaleX - 1;
4986
+ const changeScaleY = scaleY - 1;
4987
+ for (let i = 0, len = children.length; i < len; i++) {
4988
+ branch = children[i];
4989
+ w = branch.__world;
4990
+ w.a *= scaleX;
4991
+ w.d *= scaleY;
4992
+ if (w.b || w.c) {
4993
+ w.b *= scaleX;
4994
+ w.c *= scaleY;
4995
+ }
4996
+ if (w.e === w.x && w.f === w.y) {
4997
+ w.x = w.e += (w.e - a) * changeScaleX + x;
4998
+ w.y = w.f += (w.f - b) * changeScaleY + y;
4999
+ } else {
5000
+ w.e += (w.e - a) * changeScaleX + x;
5001
+ w.f += (w.f - b) * changeScaleY + y;
5002
+ w.x += (w.x - a) * changeScaleX + x;
5003
+ w.y += (w.y - b) * changeScaleY + y;
5004
+ }
5005
+ w.width *= scaleX;
5006
+ w.height *= scaleY;
5007
+ w.scaleX *= scaleX;
5008
+ w.scaleY *= scaleY;
5009
+ if (branch.isBranch) scale$2(branch, x, y, scaleX, scaleY, a, b);
5010
+ }
4954
5011
  }
4955
5012
  };
4956
5013
 
4957
- const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack} = BranchHelper;
5014
+ const {pushAllChildBranch: pushAllChildBranch$1, pushAllBranchStack: pushAllBranchStack, updateBoundsByBranchStack: updateBoundsByBranchStack, move: move$9, scale: scale$2} = BranchHelper;
4958
5015
 
4959
5016
  const WaitHelper = {
4960
5017
  run(wait) {
@@ -4970,7 +5027,7 @@ const WaitHelper = {
4970
5027
 
4971
5028
  const {getRelativeWorld: getRelativeWorld$1, updateBounds: updateBounds$3} = LeafHelper;
4972
5029
 
4973
- const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$8} = BoundsHelper;
5030
+ const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$7} = BoundsHelper;
4974
5031
 
4975
5032
  const localContent = "_localContentBounds";
4976
5033
 
@@ -5209,7 +5266,7 @@ class LeafLayout {
5209
5266
  matrix = getRelativeWorld$1(leaf, relative, true);
5210
5267
  }
5211
5268
  if (!layoutBounds) layoutBounds = MatrixHelper.getLayout(matrix);
5212
- copy$8(layoutBounds, bounds);
5269
+ copy$7(layoutBounds, bounds);
5213
5270
  PointHelper.copy(layoutBounds, point);
5214
5271
  if (unscale) {
5215
5272
  const {scaleX: scaleX, scaleY: scaleY} = layoutBounds;
@@ -5831,7 +5888,7 @@ const LeafDataProxy = {
5831
5888
 
5832
5889
  const {setLayout: setLayout, multiplyParent: multiplyParent$2, translateInner: translateInner, defaultWorld: defaultWorld} = MatrixHelper;
5833
5890
 
5834
- const {toPoint: toPoint$4, tempPoint: tempPoint$1} = AroundHelper;
5891
+ const {toPoint: toPoint$4, tempPoint: tempPoint$2} = AroundHelper;
5835
5892
 
5836
5893
  const LeafMatrix = {
5837
5894
  __updateWorldMatrix() {
@@ -5851,8 +5908,8 @@ const LeafMatrix = {
5851
5908
  local.e = data.x + data.offsetX;
5852
5909
  local.f = data.y + data.offsetY;
5853
5910
  if (data.around || data.origin) {
5854
- toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$1);
5855
- translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
5911
+ toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$2);
5912
+ translateInner(local, -tempPoint$2.x, -tempPoint$2.y, !data.around);
5856
5913
  }
5857
5914
  }
5858
5915
  this.__layout.matrixChanged = undefined;
@@ -5863,7 +5920,7 @@ const {updateMatrix: updateMatrix$3, updateAllMatrix: updateAllMatrix$3} = LeafH
5863
5920
 
5864
5921
  const {updateBounds: updateBounds$2} = BranchHelper;
5865
5922
 
5866
- const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$3, copy: copy$7} = BoundsHelper;
5923
+ const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$3, copy: copy$6} = BoundsHelper;
5867
5924
 
5868
5925
  const {toBounds: toBounds$1} = PathBounds;
5869
5926
 
@@ -5974,7 +6031,7 @@ const LeafBounds = {
5974
6031
  },
5975
6032
  __updateRenderBounds(_bounds) {
5976
6033
  const layout = this.__layout, {renderSpread: renderSpread} = layout;
5977
- isNumber(renderSpread) && renderSpread <= 0 ? copy$7(layout.renderBounds, layout.strokeBounds) : copyAndSpread$3(layout.renderBounds, layout.boxBounds, renderSpread);
6034
+ isNumber(renderSpread) && renderSpread <= 0 ? copy$6(layout.renderBounds, layout.strokeBounds) : copyAndSpread$3(layout.renderBounds, layout.boxBounds, renderSpread);
5978
6035
  }
5979
6036
  };
5980
6037
 
@@ -6079,7 +6136,7 @@ const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: m
6079
6136
 
6080
6137
  const {toOuterOf: toOuterOf$1} = BoundsHelper;
6081
6138
 
6082
- const {copy: copy$6, move: move$8} = PointHelper;
6139
+ const {copy: copy$5, move: move$8} = PointHelper;
6083
6140
 
6084
6141
  const {moveLocal: moveLocal, zoomOfLocal: zoomOfLocal, rotateOfLocal: rotateOfLocal, skewOfLocal: skewOfLocal, moveWorld: moveWorld, zoomOfWorld: zoomOfWorld, rotateOfWorld: rotateOfWorld, skewOfWorld: skewOfWorld, transform: transform, transformWorld: transformWorld, setTransform: setTransform, getFlipTransform: getFlipTransform, getLocalOrigin: getLocalOrigin, getRelativeWorld: getRelativeWorld, drop: drop} = LeafHelper;
6085
6142
 
@@ -6398,14 +6455,14 @@ let Leaf = class Leaf {
6398
6455
  if (this.parent) {
6399
6456
  this.parent.worldToInner(world, to, distance, relative);
6400
6457
  } else {
6401
- if (to) copy$6(to, world);
6458
+ if (to) copy$5(to, world);
6402
6459
  }
6403
6460
  }
6404
6461
  localToWorld(local, to, distance, relative) {
6405
6462
  if (this.parent) {
6406
6463
  this.parent.innerToWorld(local, to, distance, relative);
6407
6464
  } else {
6408
- if (to) copy$6(to, local);
6465
+ if (to) copy$5(to, local);
6409
6466
  }
6410
6467
  }
6411
6468
  worldToInner(world, to, distance, relative) {
@@ -6518,10 +6575,10 @@ let Leaf = class Leaf {
6518
6575
  hit(_world, _hitRadius) {
6519
6576
  return true;
6520
6577
  }
6521
- __hitWorld(_point) {
6578
+ __hitWorld(_point, _forceHitFill) {
6522
6579
  return true;
6523
6580
  }
6524
- __hit(_local) {
6581
+ __hit(_local, _forceHitFill) {
6525
6582
  return true;
6526
6583
  }
6527
6584
  __hitFill(_inner) {
@@ -6880,7 +6937,7 @@ class LeafLevelList {
6880
6937
  }
6881
6938
  }
6882
6939
 
6883
- const version = "1.12.0";
6940
+ const version = "1.12.2";
6884
6941
 
6885
6942
  class LeaferCanvas extends LeaferCanvasBase {
6886
6943
  get allowBackgroundColor() {
@@ -7682,6 +7739,10 @@ class Renderer {
7682
7739
 
7683
7740
  Renderer.clipSpread = 10;
7684
7741
 
7742
+ const tempPoint$1 = {};
7743
+
7744
+ const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7745
+
7685
7746
  const {hitRadiusPoint: hitRadiusPoint$1} = BoundsHelper;
7686
7747
 
7687
7748
  class Picker {
@@ -7808,15 +7869,15 @@ class Picker {
7808
7869
  this.eachFind(branch.children, branch.__onlyHitMask);
7809
7870
  }
7810
7871
  eachFind(children, hitMask) {
7811
- let child, hit;
7872
+ let child, hit, data;
7812
7873
  const {point: point} = this, len = children.length;
7813
7874
  for (let i = len - 1; i > -1; i--) {
7814
- child = children[i];
7815
- if (!child.__.visible || hitMask && !child.__.mask) continue;
7816
- hit = child.__.hitRadius ? true : hitRadiusPoint$1(child.__world, point);
7875
+ child = children[i], data = child.__;
7876
+ if (!data.visible || hitMask && !data.mask) continue;
7877
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7817
7878
  if (child.isBranch) {
7818
7879
  if (hit || child.__ignoreHitWorld) {
7819
- if (child.isBranchLeaf && child.__.__clipAfterFill && !child.__hitWorld(point)) continue;
7880
+ if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7820
7881
  if (child.topChildren) this.eachFind(child.topChildren, false);
7821
7882
  this.eachFind(child.children, child.__onlyHitMask);
7822
7883
  if (child.isBranchLeaf) this.hitChild(child, point);
@@ -8303,7 +8364,7 @@ class CanvasData extends RectData {
8303
8364
  }
8304
8365
  }
8305
8366
 
8306
- const {max: max$3, add: add$1} = FourNumberHelper;
8367
+ const {max: max$4, add: add$1} = FourNumberHelper;
8307
8368
 
8308
8369
  const UIBounds = {
8309
8370
  __updateStrokeSpread() {
@@ -8319,7 +8380,7 @@ const UIBounds = {
8319
8380
  }
8320
8381
  if (data.__useArrow) spread += strokeWidth * 5;
8321
8382
  if (box) {
8322
- spread = max$3(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8383
+ spread = max$4(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8323
8384
  boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
8324
8385
  }
8325
8386
  this.__layout.strokeBoxSpread = boxSpread;
@@ -8329,15 +8390,15 @@ const UIBounds = {
8329
8390
  let spread = 0;
8330
8391
  const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
8331
8392
  if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
8332
- if (blur) spread = max$3(spread, blur);
8393
+ if (blur) spread = max$4(spread, blur);
8333
8394
  if (filter) spread = add$1(spread, Filter.getSpread(filter));
8334
8395
  if (renderSpread) spread = add$1(spread, renderSpread);
8335
8396
  if (strokeSpread) spread = add$1(spread, strokeSpread);
8336
8397
  let shapeSpread = spread;
8337
- if (innerShadow) shapeSpread = max$3(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8338
- if (backgroundBlur) shapeSpread = max$3(shapeSpread, backgroundBlur);
8398
+ if (innerShadow) shapeSpread = max$4(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8399
+ if (backgroundBlur) shapeSpread = max$4(shapeSpread, backgroundBlur);
8339
8400
  this.__layout.renderShapeSpread = shapeSpread;
8340
- return box ? max$3(box.__updateRenderSpread(), spread) : spread;
8401
+ return box ? max$4(box.__updateRenderSpread(), spread) : spread;
8341
8402
  }
8342
8403
  };
8343
8404
 
@@ -8393,7 +8454,7 @@ const UIRender = {
8393
8454
  if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke, this, canvas, options) : Paint.stroke(stroke, this, canvas, options);
8394
8455
  }
8395
8456
  } else {
8396
- if (data.__pathInputed) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8457
+ if (data.__pathForRender) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8397
8458
  }
8398
8459
  },
8399
8460
  __drawShape(canvas, options) {
@@ -8517,7 +8578,7 @@ let UI = UI_1 = class UI extends Leaf {
8517
8578
  getPath(curve, pathForRender) {
8518
8579
  this.__layout.update();
8519
8580
  let path = pathForRender ? this.__.__pathForRender : this.__.path;
8520
- if (!path) pen.set(path = []), this.__drawPathByBox(pen);
8581
+ if (!path) pen.set(path = []), this.__drawPathByBox(pen, !pathForRender);
8521
8582
  return curve ? PathConvert.toCanvasData(path, true) : path;
8522
8583
  }
8523
8584
  getPathString(curve, pathForRender, floatLength) {
@@ -8545,17 +8606,18 @@ let UI = UI_1 = class UI extends Leaf {
8545
8606
  }
8546
8607
  __drawPath(canvas) {
8547
8608
  canvas.beginPath();
8548
- this.__drawPathByData(canvas, this.__.path);
8609
+ this.__drawPathByData(canvas, this.__.path, true);
8549
8610
  }
8550
- __drawPathByData(drawer, data) {
8551
- data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer);
8611
+ __drawPathByData(drawer, data, ignoreCornerRadius) {
8612
+ data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer, ignoreCornerRadius);
8552
8613
  }
8553
- __drawPathByBox(drawer) {
8614
+ __drawPathByBox(drawer, ignoreCornerRadius) {
8554
8615
  const {x: x, y: y, width: width, height: height} = this.__layout.boxBounds;
8555
- if (this.__.cornerRadius) {
8616
+ if (this.__.cornerRadius && !ignoreCornerRadius) {
8556
8617
  const {cornerRadius: cornerRadius} = this.__;
8557
8618
  drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [ cornerRadius ] : cornerRadius);
8558
8619
  } else drawer.rect(x, y, width, height);
8620
+ drawer.closePath();
8559
8621
  }
8560
8622
  drawImagePlaceholder(_paint, canvas, renderOptions) {
8561
8623
  Paint.fill(this.__.placeholderColor, this, canvas, renderOptions);
@@ -8824,6 +8886,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8824
8886
  get layoutLocked() {
8825
8887
  return !this.layouter.running;
8826
8888
  }
8889
+ get view() {
8890
+ return this.canvas && this.canvas.view;
8891
+ }
8827
8892
  get FPS() {
8828
8893
  return this.renderer ? this.renderer.FPS : 60;
8829
8894
  }
@@ -8875,7 +8940,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8875
8940
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
8876
8941
  if (this.isApp) this.__setApp();
8877
8942
  this.__checkAutoLayout();
8878
- this.view = canvas.view;
8879
8943
  if (!parentApp) {
8880
8944
  this.selector = Creator.selector(this);
8881
8945
  this.interaction = Creator.interaction(this, canvas, this.selector, config);
@@ -9155,7 +9219,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
9155
9219
  if (this.canvasManager) this.canvasManager.destroy();
9156
9220
  }
9157
9221
  if (this.canvas) this.canvas.destroy();
9158
- this.config.view = this.view = this.parentApp = null;
9222
+ this.config.view = this.parentApp = null;
9159
9223
  if (this.userConfig) this.userConfig.view = null;
9160
9224
  super.destroy();
9161
9225
  setTimeout(() => {
@@ -9339,7 +9403,6 @@ let Ellipse = class Ellipse extends UI {
9339
9403
  if (startAngle || endAngle) {
9340
9404
  if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
9341
9405
  ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9342
- if (innerRadius < 1) closePath$2(path);
9343
9406
  } else {
9344
9407
  if (innerRadius < 1) {
9345
9408
  ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius);
@@ -9347,16 +9410,16 @@ let Ellipse = class Ellipse extends UI {
9347
9410
  }
9348
9411
  ellipse(path, rx, ry, rx, ry, 0, 360, 0, true);
9349
9412
  }
9350
- if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9351
9413
  } else {
9352
9414
  if (startAngle || endAngle) {
9353
9415
  moveTo$3(path, rx, ry);
9354
9416
  ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9355
- closePath$2(path);
9356
9417
  } else {
9357
9418
  ellipse(path, rx, ry, rx, ry);
9358
9419
  }
9359
9420
  }
9421
+ closePath$2(path);
9422
+ if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9360
9423
  }
9361
9424
  };
9362
9425
 
@@ -10007,7 +10070,7 @@ class UIEvent extends Event {
10007
10070
  }
10008
10071
  }
10009
10072
 
10010
- const {min: min, max: max$2, abs: abs$7} = Math, {float: float$1, sign: sign$2} = MathHelper, {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = BoundsHelper;
10073
+ const {min: min$1, max: max$3, abs: abs$7} = Math, {float: float$2, sign: sign$2} = MathHelper, {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = BoundsHelper;
10011
10074
 
10012
10075
  const tempContent = new Bounds, tempDragBounds = new Bounds;
10013
10076
 
@@ -10047,8 +10110,8 @@ const DragBoundsHelper = {
10047
10110
  } else {
10048
10111
  if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
10049
10112
  }
10050
- move.x = float$1(move.x);
10051
- move.y = float$1(move.y);
10113
+ move.x = float$2(move.x);
10114
+ move.y = float$2(move.y);
10052
10115
  return move;
10053
10116
  },
10054
10117
  getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, lockRatio, change) {
@@ -10060,44 +10123,44 @@ const DragBoundsHelper = {
10060
10123
  let correctScaleX = 1, correctScaleY = 1, aScale, bScale, aSize, bSize;
10061
10124
  if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
10062
10125
  if (scale.x < 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
10063
- aSize = float$1(tempContent.minX - tempDragBounds.minX);
10064
- bSize = float$1(tempDragBounds.maxX - tempContent.maxX);
10126
+ aSize = float$2(tempContent.minX - tempDragBounds.minX);
10127
+ bSize = float$2(tempDragBounds.maxX - tempContent.maxX);
10065
10128
  aScale = originLeftScale && aSize > 0 ? 1 + aSize / (originLeftScale * tempContent.width) : 1;
10066
10129
  bScale = originRightScale && bSize > 0 ? 1 + bSize / (originRightScale * tempContent.width) : 1;
10067
- correctScaleX *= max$2(aScale, bScale);
10130
+ correctScaleX *= max$3(aScale, bScale);
10068
10131
  } else {
10069
10132
  if (scale.x < 0) {
10070
- if (float$1(minX(content) - minX(dragBounds)) <= 0 || float$1(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
10133
+ if (float$2(minX(content) - minX(dragBounds)) <= 0 || float$2(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
10071
10134
  tempContent.unsign();
10072
10135
  }
10073
- aSize = float$1(tempDragBounds.minX - tempContent.minX);
10074
- bSize = float$1(tempContent.maxX - tempDragBounds.maxX);
10136
+ aSize = float$2(tempDragBounds.minX - tempContent.minX);
10137
+ bSize = float$2(tempContent.maxX - tempDragBounds.maxX);
10075
10138
  aScale = originLeftScale && aSize > 0 ? 1 - aSize / (originLeftScale * tempContent.width) : 1;
10076
10139
  bScale = originRightScale && bSize > 0 ? 1 - bSize / (originRightScale * tempContent.width) : 1;
10077
- correctScaleX *= min(aScale, bScale);
10140
+ correctScaleX *= min$1(aScale, bScale);
10078
10141
  }
10079
10142
  if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
10080
10143
  if (scale.y < 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10081
- aSize = float$1(tempContent.minY - tempDragBounds.minY);
10082
- bSize = float$1(tempDragBounds.maxY - tempContent.maxY);
10144
+ aSize = float$2(tempContent.minY - tempDragBounds.minY);
10145
+ bSize = float$2(tempDragBounds.maxY - tempContent.maxY);
10083
10146
  aScale = originTopScale && aSize > 0 ? 1 + aSize / (originTopScale * tempContent.height) : 1;
10084
10147
  bScale = originBottomScale && bSize > 0 ? 1 + bSize / (originBottomScale * tempContent.height) : 1;
10085
- correctScaleY *= max$2(aScale, bScale);
10148
+ correctScaleY *= max$3(aScale, bScale);
10086
10149
  if (lockRatio) {
10087
- aScale = max$2(abs$7(correctScaleX), abs$7(correctScaleY));
10150
+ aScale = max$3(abs$7(correctScaleX), abs$7(correctScaleY));
10088
10151
  correctScaleX = sign$2(correctScaleX) * aScale;
10089
10152
  correctScaleY = sign$2(correctScaleY) * aScale;
10090
10153
  }
10091
10154
  } else {
10092
10155
  if (scale.y < 0) {
10093
- if (float$1(minY(content) - minY(dragBounds)) <= 0 || float$1(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10156
+ if (float$2(minY(content) - minY(dragBounds)) <= 0 || float$2(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10094
10157
  tempContent.unsign();
10095
10158
  }
10096
- aSize = float$1(tempDragBounds.minY - tempContent.minY);
10097
- bSize = float$1(tempContent.maxY - tempDragBounds.maxY);
10159
+ aSize = float$2(tempDragBounds.minY - tempContent.minY);
10160
+ bSize = float$2(tempContent.maxY - tempDragBounds.maxY);
10098
10161
  aScale = originTopScale && aSize > 0 ? 1 - aSize / (originTopScale * tempContent.height) : 1;
10099
10162
  bScale = originBottomScale && bSize > 0 ? 1 - bSize / (originBottomScale * tempContent.height) : 1;
10100
- correctScaleY *= min(aScale, bScale);
10163
+ correctScaleY *= min$1(aScale, bScale);
10101
10164
  }
10102
10165
  scale.x *= isFinite$1(correctScaleX) ? correctScaleX : 1;
10103
10166
  scale.y *= isFinite$1(correctScaleY) ? correctScaleY : 1;
@@ -10246,6 +10309,8 @@ MoveEvent.START = "move.start";
10246
10309
 
10247
10310
  MoveEvent.MOVE = "move";
10248
10311
 
10312
+ MoveEvent.DRAG_ANIMATE = "move.drag_animate";
10313
+
10249
10314
  MoveEvent.END = "move.end";
10250
10315
 
10251
10316
  MoveEvent = __decorate([ registerUIEvent() ], MoveEvent);
@@ -10344,6 +10409,7 @@ const InteractionHelper = {
10344
10409
  ctrlKey: e.ctrlKey,
10345
10410
  shiftKey: e.shiftKey,
10346
10411
  metaKey: e.metaKey,
10412
+ time: Date.now(),
10347
10413
  buttons: isUndefined(e.buttons) ? 1 : e.buttons === 0 ? pointerUpButtons : e.buttons,
10348
10414
  origin: e
10349
10415
  };
@@ -10379,6 +10445,7 @@ const {getDragEventData: getDragEventData, getDropEventData: getDropEventData, g
10379
10445
 
10380
10446
  class Dragger {
10381
10447
  constructor(interaction) {
10448
+ this.dragDataList = [];
10382
10449
  this.interaction = interaction;
10383
10450
  }
10384
10451
  setDragData(data) {
@@ -10441,6 +10508,7 @@ class Dragger {
10441
10508
  this.dragData = getDragEventData(downData, dragData, data);
10442
10509
  if (throughPath) this.dragData.throughPath = throughPath;
10443
10510
  this.dragData.path = path;
10511
+ this.dragDataList.push(this.dragData);
10444
10512
  if (this.moving) {
10445
10513
  data.moving = true;
10446
10514
  this.dragData.moveType = "drag";
@@ -10491,9 +10559,9 @@ class Dragger {
10491
10559
  interaction.emit(DragEvent.ENTER, data, path, dragEnterPath);
10492
10560
  this.dragEnterPath = path;
10493
10561
  }
10494
- dragEnd(data, speed) {
10562
+ dragEnd(data) {
10495
10563
  if (!this.dragging && !this.moving) return;
10496
- if (this.checkDragEndAnimate(data, speed)) return;
10564
+ if (this.checkDragEndAnimate(data)) return;
10497
10565
  this.dragEndReal(data);
10498
10566
  }
10499
10567
  dragEndReal(data) {
@@ -10535,11 +10603,13 @@ class Dragger {
10535
10603
  }
10536
10604
  dragReset() {
10537
10605
  DragEvent.list = DragEvent.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null;
10606
+ this.dragDataList = [];
10538
10607
  }
10539
10608
  checkDragEndAnimate(_data, _speed) {
10540
10609
  return false;
10541
10610
  }
10542
10611
  animate(_func, _off) {}
10612
+ stopAnimate() {}
10543
10613
  checkDragOut(_data) {}
10544
10614
  autoMoveOnDragOut(_data) {}
10545
10615
  autoMoveCancel() {}
@@ -10933,6 +11003,9 @@ class InteractionBase {
10933
11003
  this.pointerHover(hoverData);
10934
11004
  }
10935
11005
  }
11006
+ stopDragAnimate() {
11007
+ this.dragger.stopAnimate();
11008
+ }
10936
11009
  updateDownData(data, options, merge) {
10937
11010
  const {downData: downData} = this;
10938
11011
  if (!data && downData) data = downData;
@@ -11116,7 +11189,7 @@ Platform.getSelector = function(leaf) {
11116
11189
  return leaf.leafer ? leaf.leafer.selector : Platform.selector || (Platform.selector = Creator.selector());
11117
11190
  };
11118
11191
 
11119
- const {toInnerRadiusPointOf: toInnerRadiusPointOf, copy: copy$5, setRadius: setRadius} = PointHelper;
11192
+ const {toInnerRadiusPointOf: toInnerRadiusPointOf, copyRadiusPoint: copyRadiusPoint} = PointHelper;
11120
11193
 
11121
11194
  const {hitRadiusPoint: hitRadiusPoint, hitPoint: hitPoint} = BoundsHelper;
11122
11195
 
@@ -11126,8 +11199,7 @@ const leaf$1 = Leaf.prototype;
11126
11199
 
11127
11200
  leaf$1.hit = function(worldPoint, hitRadius = 0) {
11128
11201
  this.updateLayout();
11129
- copy$5(worldRadiusPoint, worldPoint);
11130
- setRadius(worldRadiusPoint, hitRadius);
11202
+ copyRadiusPoint(worldRadiusPoint, worldPoint, hitRadius);
11131
11203
  const world = this.__world;
11132
11204
  if (hitRadius ? !hitRadiusPoint(world, worldRadiusPoint) : !hitPoint(world, worldRadiusPoint)) return false;
11133
11205
  return this.isBranch ? Platform.getSelector(this).hitPoint(Object.assign({}, worldRadiusPoint), hitRadius, {
@@ -11135,14 +11207,14 @@ leaf$1.hit = function(worldPoint, hitRadius = 0) {
11135
11207
  }) : this.__hitWorld(worldRadiusPoint);
11136
11208
  };
11137
11209
 
11138
- leaf$1.__hitWorld = function(point) {
11210
+ leaf$1.__hitWorld = function(point, forceHitFill) {
11139
11211
  const data = this.__;
11140
11212
  if (!data.hitSelf) return false;
11141
11213
  const world = this.__world, layout = this.__layout;
11142
11214
  const isSmall = world.width < 10 && world.height < 10;
11143
11215
  if (data.hitRadius) {
11144
- copy$5(inner, point), point = inner;
11145
- setRadius(point, data.hitRadius);
11216
+ copyRadiusPoint(inner, point, data.hitRadius);
11217
+ point = inner;
11146
11218
  }
11147
11219
  toInnerRadiusPointOf(point, world, inner);
11148
11220
  if (data.hitBox || isSmall) {
@@ -11153,7 +11225,7 @@ leaf$1.__hitWorld = function(point) {
11153
11225
  this.__updateHitCanvas();
11154
11226
  if (!layout.boundsChanged) layout.hitCanvasChanged = false;
11155
11227
  }
11156
- return this.__hit(inner);
11228
+ return this.__hit(inner, forceHitFill);
11157
11229
  };
11158
11230
 
11159
11231
  leaf$1.__hitFill = function(inner) {
@@ -11220,12 +11292,12 @@ ui$5.__updateHitCanvas = function() {
11220
11292
  h.setStrokeOptions(data);
11221
11293
  };
11222
11294
 
11223
- ui$5.__hit = function(inner) {
11295
+ ui$5.__hit = function(inner, forceHitFill) {
11224
11296
  if (this.__box && this.__box.__hit(inner)) return true;
11225
11297
  const data = this.__;
11226
11298
  if (data.__isHitPixel && this.__hitPixel(inner)) return true;
11227
11299
  const {hitFill: hitFill} = data;
11228
- const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all";
11300
+ const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all" || forceHitFill;
11229
11301
  if (needHitFillPath && this.__hitFill(inner)) return true;
11230
11302
  const {hitStroke: hitStroke, __maxStrokeWidth: strokeWidth} = data;
11231
11303
  const needHitStrokePath = data.stroke && (hitStroke === "path" || hitStroke === "pixel" && !data.__isAlphaPixelStroke) || hitStroke === "all";
@@ -12062,10 +12134,12 @@ const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$6} = Math;
12062
12134
  function createPatternTask(paint, ui, canvas, renderOptions) {
12063
12135
  if (!paint.patternTask) {
12064
12136
  paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function*() {
12065
- paint.patternTask = null;
12066
- if (canvas.bounds.hit(ui.__nowWorld)) PaintImage.createPattern(paint, ui, canvas, renderOptions);
12137
+ PaintImage.createPattern(paint, ui, canvas, renderOptions);
12067
12138
  ui.forceUpdate("surface");
12068
- }), 300);
12139
+ }), 0, () => {
12140
+ paint.patternTask = null;
12141
+ return canvas.bounds.hit(ui.__nowWorld);
12142
+ });
12069
12143
  }
12070
12144
  }
12071
12145
 
@@ -12315,7 +12389,7 @@ const PaintGradientModule = {
12315
12389
  getTransform: getTransform
12316
12390
  };
12317
12391
 
12318
- const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$1, abs: abs$5} = Math;
12392
+ const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$2, abs: abs$5} = Math;
12319
12393
 
12320
12394
  const tempBounds = {}, tempMatrix = new Matrix;
12321
12395
 
@@ -12360,10 +12434,10 @@ function getShadowRenderSpread(_ui, shadow) {
12360
12434
  let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
12361
12435
  shadow.forEach(item => {
12362
12436
  x = item.x || 0, y = item.y || 0, blur = (item.blur || 0) * 1.5, spread = abs$5(item.spread || 0);
12363
- top = max$1(top, spread + blur - y);
12364
- right = max$1(right, spread + blur + x);
12365
- bottom = max$1(bottom, spread + blur + y);
12366
- left = max$1(left, spread + blur - x);
12437
+ top = max$2(top, spread + blur - y);
12438
+ right = max$2(right, spread + blur + x);
12439
+ bottom = max$2(bottom, spread + blur + y);
12440
+ left = max$2(left, spread + blur - x);
12367
12441
  });
12368
12442
  return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
12369
12443
  }
@@ -13248,7 +13322,11 @@ class Stroker extends UI {
13248
13322
  matrix$1.half = strokeWidth % 2;
13249
13323
  canvas.setWorld(matrix$1, options.matrix);
13250
13324
  canvas.beginPath();
13251
- if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13325
+ if (this.strokePathType === "path") {
13326
+ leaf.__drawPath(canvas);
13327
+ } else {
13328
+ if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13329
+ }
13252
13330
  data.strokeWidth = strokeWidth / Math.max(aScaleX, aScaleY);
13253
13331
  if (stroke) isString(stroke) ? Paint.stroke(stroke, this, canvas, options) : Paint.strokes(stroke, this, canvas, options);
13254
13332
  if (fill) isString(fill) ? Paint.fill(fill, this, canvas, options) : Paint.fills(fill, this, canvas, options);
@@ -13265,6 +13343,8 @@ class Stroker extends UI {
13265
13343
 
13266
13344
  __decorate([ targetAttr(onTarget$1) ], Stroker.prototype, "target", void 0);
13267
13345
 
13346
+ __decorate([ surfaceType("render-path") ], Stroker.prototype, "strokePathType", void 0);
13347
+
13268
13348
  function onTarget$1(stroker) {
13269
13349
  const value = stroker.target;
13270
13350
  stroker.list = value ? isArray(value) ? value : [ value ] : [];
@@ -13379,10 +13459,11 @@ class EditSelect extends Group {
13379
13459
  }
13380
13460
  update() {
13381
13461
  this.hoverStroker.update();
13382
- const {stroke: stroke, strokeWidth: strokeWidth, selectedStyle: selectedStyle} = this.editor.mergedConfig;
13462
+ const {stroke: stroke, strokeWidth: strokeWidth, selectedPathType: selectedPathType, selectedStyle: selectedStyle} = this.editor.mergedConfig;
13383
13463
  this.targetStroker.update(Object.assign({
13384
13464
  stroke: stroke,
13385
- strokeWidth: strokeWidth && Math.max(1, strokeWidth / 2)
13465
+ strokeWidth: strokeWidth && Math.max(1, strokeWidth / 2),
13466
+ strokePathType: selectedPathType
13386
13467
  }, selectedStyle || {}));
13387
13468
  }
13388
13469
  onPointerMove(e) {
@@ -14767,7 +14848,7 @@ class TransformTool {
14767
14848
  const {target: target, mergeConfig: mergeConfig, single: single, dragStartData: dragStartData} = this.editBox;
14768
14849
  let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize} = mergeConfig, totalMove;
14769
14850
  if (e instanceof ZoomEvent) {
14770
- around = target.getBoxPoint(e);
14851
+ if (!around) around = target.getBoxPoint(e);
14771
14852
  totalMove = e.totalScale;
14772
14853
  } else {
14773
14854
  totalMove = e.getInnerTotal(target);
@@ -15824,7 +15905,11 @@ function addViewport(leafer, mergeConfig, custom) {
15824
15905
  addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig);
15825
15906
  if (leafer.isApp || custom) return;
15826
15907
  leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, e => {
15827
- leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY, false));
15908
+ const move = leafer.getValidMove(e.moveX, e.moveY, false);
15909
+ leafer.zoomLayer.move(move);
15910
+ }), leafer.on_(MoveEvent.DRAG_ANIMATE, () => {
15911
+ const move = leafer.getValidMove(0, 0);
15912
+ if (move.x || move.y) leafer.interaction.stopDragAnimate();
15828
15913
  }), leafer.on_(MoveEvent.END, e => {
15829
15914
  LeafHelper.animateMove(leafer.zoomLayer, leafer.getValidMove(e.moveX, e.moveY));
15830
15915
  }), leafer.on_(ZoomEvent.BEFORE_ZOOM, e => {
@@ -15975,7 +16060,7 @@ const MultiTouchHelper = {
15975
16060
 
15976
16061
  const M$3 = MultiTouchHelper;
15977
16062
 
15978
- const {abs: abs$2, max: max} = Math, {sign: sign, within: within$2} = MathHelper;
16063
+ const {abs: abs$2, max: max$1} = Math, {sign: sign, within: within$2} = MathHelper;
15979
16064
 
15980
16065
  const WheelEventHelper = {
15981
16066
  getMove(event, config) {
@@ -15986,8 +16071,8 @@ const WheelEventHelper = {
15986
16071
  deltaY = 0;
15987
16072
  }
15988
16073
  const absX = abs$2(deltaX), absY = abs$2(deltaY);
15989
- if (absX > 50) deltaX = max(50, absX / 3) * sign(deltaX);
15990
- if (absY > 50) deltaY = max(50, absY / 3) * sign(deltaY);
16074
+ if (absX > 50) deltaX = max$1(50, absX / 3) * sign(deltaX);
16075
+ if (absY > 50) deltaY = max$1(50, absY / 3) * sign(deltaY);
15991
16076
  return {
15992
16077
  x: -deltaX * moveSpeed * 2,
15993
16078
  y: -deltaY * moveSpeed * 2
@@ -16137,7 +16222,7 @@ leafer.getValidMove = function(moveX, moveY, checkLimit = true) {
16137
16222
  if (type.includes("x")) move$4.y = 0; else if (type.includes("y")) move$4.x = 0; else Math.abs(move$4.x) > Math.abs(move$4.y) ? move$4.y = 0 : move$4.x = 0;
16138
16223
  if (checkLimit && type.includes("limit")) {
16139
16224
  bounds.set(this.__world).addPoint(this.zoomLayer);
16140
- DragBoundsHelper.getValidMove(bounds, this.canvas.bounds, "inner", move$4, true);
16225
+ DragBoundsHelper.getValidMove(bounds, this.canvas.bounds, "auto", move$4, true);
16141
16226
  if (type.includes("x")) move$4.y = 0; else if (type.includes("y")) move$4.x = 0;
16142
16227
  }
16143
16228
  }
@@ -16245,22 +16330,52 @@ interaction.multiTouch = function(data, list) {
16245
16330
 
16246
16331
  const dragger = Dragger.prototype;
16247
16332
 
16248
- const {abs: abs$1} = Math;
16333
+ const {abs: abs$1, min: min, max: max, hypot: hypot} = Math;
16249
16334
 
16250
- dragger.checkDragEndAnimate = function(data, speed) {
16251
- const {moveX: moveX, moveY: moveY} = this.dragData;
16252
- const absMoveX = abs$1(moveX), absMoveY = abs$1(moveY), minMove = speed ? 1 : .1;
16253
- const dragAnimate = this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove) && this.interaction.m.dragAnimate;
16335
+ dragger.checkDragEndAnimate = function(data) {
16336
+ const {interaction: interaction} = this;
16337
+ const dragAnimate = this.canAnimate && this.moving && interaction.m.dragAnimate;
16254
16338
  if (dragAnimate) {
16255
- const inertia = data.pointerType === "touch" ? 3 : 1, maxMove = 70;
16256
- speed = speed ? isNumber(dragAnimate) ? dragAnimate : .95 : inertia;
16257
- if (absMoveX * speed > maxMove) speed = maxMove / absMoveX; else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY;
16258
- data = Object.assign({}, data);
16259
- PointHelper.move(data, moveX * speed, moveY * speed);
16260
- this.drag(data);
16261
- this.animate(() => {
16262
- this.dragEnd(data, 1);
16263
- });
16339
+ const inertia = isNumber(dragAnimate) ? dragAnimate : .95;
16340
+ const stopMove = .15;
16341
+ const maxMove = 150;
16342
+ let moveX = 0, moveY = 0, flickSpeed = 0;
16343
+ let totalWeight = 0, weight, w = 3, s, frame;
16344
+ const {dragDataList: dragDataList} = this, len = dragDataList.length;
16345
+ for (let i = len - 1; i >= max(len - 3, 0); i--) {
16346
+ frame = dragDataList[i];
16347
+ if (frame.time && Date.now() - frame.time > 100) break;
16348
+ weight = w--;
16349
+ moveX += frame.moveX * weight;
16350
+ moveY += frame.moveY * weight;
16351
+ totalWeight += weight;
16352
+ s = hypot(frame.moveX, frame.moveY);
16353
+ if (s > flickSpeed) flickSpeed = s;
16354
+ }
16355
+ if (totalWeight) moveX /= totalWeight, moveY /= totalWeight;
16356
+ if (flickSpeed > 8) {
16357
+ const t = min((flickSpeed - 8) / 17, 1);
16358
+ const boost = 1.15 + t * (1.6 - 1.15);
16359
+ moveX *= boost;
16360
+ moveY *= boost;
16361
+ }
16362
+ const maxAbs = max(abs$1(moveX), abs$1(moveY));
16363
+ if (maxAbs > maxMove) {
16364
+ s = maxMove / maxAbs;
16365
+ moveX *= s;
16366
+ moveY *= s;
16367
+ }
16368
+ const step = () => {
16369
+ moveX *= inertia;
16370
+ moveY *= inertia;
16371
+ data = Object.assign({}, data);
16372
+ if (abs$1(moveX) < stopMove && abs$1(moveY) < stopMove) return this.dragEndReal(data);
16373
+ PointHelper.move(data, moveX, moveY);
16374
+ this.drag(data);
16375
+ this.animate(step);
16376
+ interaction.emit(MoveEvent.DRAG_ANIMATE, data);
16377
+ };
16378
+ this.animate(step);
16264
16379
  }
16265
16380
  return dragAnimate;
16266
16381
  };
@@ -16271,6 +16386,13 @@ dragger.animate = function(func, off) {
16271
16386
  this.animateWait = func;
16272
16387
  };
16273
16388
 
16389
+ dragger.stopAnimate = function() {
16390
+ this.animate(null, "off");
16391
+ this.interaction.target.nextRender(() => {
16392
+ if (this.dragData) this.dragEndReal(this.dragData);
16393
+ });
16394
+ };
16395
+
16274
16396
  dragger.checkDragOut = function(data) {
16275
16397
  const {interaction: interaction} = this;
16276
16398
  this.autoMoveCancel();
@@ -16342,7 +16464,6 @@ function getFixBounds(bounds, scaleBounds) {
16342
16464
  Plugin.add("view");
16343
16465
 
16344
16466
  Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition) {
16345
- this.killAnimate();
16346
16467
  let padding;
16347
16468
  if (isData(optionsOrPadding)) {
16348
16469
  padding = optionsOrPadding.padding;
@@ -16355,8 +16476,9 @@ Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition)
16355
16476
  x: limitBounds.x + limitBounds.width / 2,
16356
16477
  y: limitBounds.y + limitBounds.height / 2
16357
16478
  };
16479
+ zoomLayer.killAnimate();
16358
16480
  let changeScale;
16359
- const {x: x, y: y, scaleX: scaleX, scaleY: scaleY} = zoomLayer.__;
16481
+ const {x: x, y: y, scaleX: scaleX, scaleY: scaleY} = zoomLayer.__, {boxBounds: boxBounds} = zoomLayer;
16360
16482
  if (isString(zoomType)) {
16361
16483
  switch (zoomType) {
16362
16484
  case "in":
@@ -16368,16 +16490,16 @@ Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition)
16368
16490
  break;
16369
16491
 
16370
16492
  case "fit":
16371
- zoomType = this.boxBounds;
16493
+ zoomType = boxBounds;
16372
16494
  break;
16373
16495
 
16374
16496
  case "fit-width":
16375
- zoomType = new Bounds(this.boxBounds);
16497
+ zoomType = new Bounds(boxBounds);
16376
16498
  zoomType.height = 0;
16377
16499
  break;
16378
16500
 
16379
16501
  case "fit-height":
16380
- zoomType = new Bounds(this.boxBounds);
16502
+ zoomType = new Bounds(boxBounds);
16381
16503
  zoomType.width = 0;
16382
16504
  break;
16383
16505
  }
@@ -17640,6 +17762,8 @@ let Animate = class Animate extends Eventer {
17640
17762
  }
17641
17763
  constructor(target, keyframe, options, isTemp) {
17642
17764
  super();
17765
+ this.nowIndex = 0;
17766
+ this.playedTotalTime = 0;
17643
17767
  if (keyframe) {
17644
17768
  if (keyframe.keyframes) options = keyframe, keyframe = keyframe.keyframes; else if (keyframe.style) options = keyframe,
17645
17769
  keyframe = keyframe.style;
@@ -17686,7 +17810,7 @@ let Animate = class Animate extends Eventer {
17686
17810
  play() {
17687
17811
  if (this.destroyed) return;
17688
17812
  this.running = true;
17689
- if (!this.started) this.clearTimer(), this.start(); else if (!this.timer) this.requestAnimate();
17813
+ if (!this.started) this.clearTimer(), this.start(); else if (!this.timer) this.startRequestAnimate();
17690
17814
  this.emitType(AnimateEvent.PLAY);
17691
17815
  }
17692
17816
  pause() {
@@ -17700,14 +17824,28 @@ let Animate = class Animate extends Eventer {
17700
17824
  this.complete();
17701
17825
  this.emitType(AnimateEvent.STOP);
17702
17826
  }
17703
- seek(time) {
17827
+ seek(time, includeDelay) {
17704
17828
  if (this.destroyed) return;
17705
- if (isObject(time)) time = UnitConvert.number(time, this.duration);
17829
+ const {delay: delay} = this;
17830
+ if (isObject(time)) time = UnitConvert.number(time, this.duration + (includeDelay ? delay : 0));
17831
+ if (includeDelay) time -= delay;
17706
17832
  if (time) time /= this.speed;
17707
- if (!this.started || time < this.time) this.start(true);
17833
+ let waitBeginTime;
17834
+ if (time < 0) {
17835
+ waitBeginTime = -time;
17836
+ time = 0;
17837
+ }
17838
+ if (!this.started || time < this.time || !time) this.start(true);
17708
17839
  this.time = time;
17709
- this.animate(0, true);
17710
- this.clearTimer(() => this.requestAnimate());
17840
+ if (!waitBeginTime) this.animate(0, true);
17841
+ this.clearTimer(() => {
17842
+ if (waitBeginTime) {
17843
+ this.timer = setTimeout(() => {
17844
+ this.timer = 0;
17845
+ this.begin();
17846
+ }, waitBeginTime * 1e3);
17847
+ } else this.startRequestAnimate();
17848
+ });
17711
17849
  this.emitType(AnimateEvent.SEEK);
17712
17850
  }
17713
17851
  kill(complete = true, killStyle) {
@@ -17790,14 +17928,24 @@ let Animate = class Animate extends Eventer {
17790
17928
  }
17791
17929
  }
17792
17930
  }
17793
- requestAnimate() {
17931
+ startRequestAnimate() {
17794
17932
  this.requestAnimateTime = Date.now();
17933
+ this.requestAnimatePageTime = 0;
17934
+ if (!this.waitRequestRender) this.requestAnimate();
17935
+ }
17936
+ requestAnimate() {
17937
+ this.waitRequestRender = true;
17795
17938
  Platform.requestRender(this.animate.bind(this));
17796
17939
  }
17797
- animate(_runtime, seek) {
17940
+ animate(pageTime, seek) {
17798
17941
  if (!seek) {
17942
+ this.waitRequestRender = false;
17799
17943
  if (!this.running) return;
17800
- this.time += (Date.now() - this.requestAnimateTime) / 1e3;
17944
+ let frameTime;
17945
+ if (pageTime && this.requestAnimatePageTime) frameTime = pageTime - this.requestAnimatePageTime; else frameTime = Date.now() - this.requestAnimateTime;
17946
+ this.time += frameTime / 1e3;
17947
+ this.requestAnimatePageTime = pageTime;
17948
+ this.requestAnimateTime = Date.now();
17801
17949
  }
17802
17950
  const {duration: duration} = this, realTime = this.time * this.speed;
17803
17951
  if (realTime < duration) {
@@ -17838,21 +17986,24 @@ let Animate = class Animate extends Eventer {
17838
17986
  }
17839
17987
  start(seek) {
17840
17988
  this.requestAnimateTime = 1;
17841
- const {reverse: reverse} = this;
17989
+ const {reverse: reverse, jump: jump} = this;
17842
17990
  if (reverse || this.mainReverse) this.mainReverse = reverse;
17843
17991
  if (this.looped) this.looped = 0;
17844
17992
  if (seek) this.begin(true); else {
17845
17993
  const {delay: delay} = this;
17846
- if (delay) this.timer = setTimeout(() => {
17847
- this.timer = 0;
17848
- this.begin();
17849
- }, delay / this.speed * 1e3); else this.begin();
17994
+ if (delay) {
17995
+ if (jump) this.begin(true);
17996
+ this.timer = setTimeout(() => {
17997
+ this.timer = 0;
17998
+ this.begin();
17999
+ }, delay / this.speed * 1e3);
18000
+ } else this.begin();
17850
18001
  }
17851
18002
  }
17852
18003
  begin(seek) {
17853
18004
  this.playedTotalTime = this.time = 0;
17854
18005
  this.mainReverse ? this.setTo() : this.setFrom();
17855
- if (!seek) this.requestAnimate();
18006
+ if (!seek) this.startRequestAnimate();
17856
18007
  }
17857
18008
  end() {
17858
18009
  this.mainReverse ? this.setFrom() : this.setTo();
@@ -17968,6 +18119,8 @@ __decorate([ animateAttr(true) ], Animate.prototype, "autoplay", void 0);
17968
18119
 
17969
18120
  __decorate([ animateAttr() ], Animate.prototype, "join", void 0);
17970
18121
 
18122
+ __decorate([ animateAttr() ], Animate.prototype, "jump", void 0);
18123
+
17971
18124
  __decorate([ animateAttr() ], Animate.prototype, "attrs", void 0);
17972
18125
 
17973
18126
  Animate = __decorate([ useModule(LeafEventer) ], Animate);
@@ -18206,7 +18359,7 @@ const hslMatch = /^hsl\((\d+),\s*(\d+)%\s*,\s*(\d+)%/i;
18206
18359
 
18207
18360
  const hslaMatch = /^hsla\((\d+),\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d*\.?\d+)/i;
18208
18361
 
18209
- const int = parseInt, float = parseFloat, {round: round$1} = Math;
18362
+ const int = parseInt, float$1 = parseFloat, {round: round$1} = Math;
18210
18363
 
18211
18364
  let cache = {}, totalCache = 0;
18212
18365
 
@@ -18319,18 +18472,18 @@ function rgbaToRGBA(color) {
18319
18472
  r: int(match[1]),
18320
18473
  g: int(match[2]),
18321
18474
  b: int(match[3]),
18322
- a: float(match[4])
18475
+ a: float$1(match[4])
18323
18476
  };
18324
18477
  }
18325
18478
 
18326
18479
  function hslToRGBA(color) {
18327
18480
  const match = hslMatch.exec(color);
18328
- return hsla(float(match[1]), float(match[2]), float(match[3]), 1);
18481
+ return hsla(float$1(match[1]), float$1(match[2]), float$1(match[3]), 1);
18329
18482
  }
18330
18483
 
18331
18484
  function hslaToRGBA(color) {
18332
18485
  const match = hslaMatch.exec(color);
18333
- return hsla(float(match[1]), float(match[2]), float(match[3]), float(match[4]));
18486
+ return hsla(float$1(match[1]), float$1(match[2]), float$1(match[3]), float$1(match[4]));
18334
18487
  }
18335
18488
 
18336
18489
  const n1 = 1 / 6, n2 = .5, n3 = 2 / 3, n4 = 1 / 3;
@@ -18569,7 +18722,7 @@ const HighBezierHelper = {
18569
18722
 
18570
18723
  const {getDistance: getDistance} = HighBezierHelper;
18571
18724
 
18572
- const {M: M, L: L, C: C, Z: Z} = PathCommandMap;
18725
+ const {M: M, L: L, C: C, Z: Z} = PathCommandMap, {float: float} = MathHelper;
18573
18726
 
18574
18727
  const tempPoint = {}, tempFrom = {};
18575
18728
 
@@ -18706,7 +18859,7 @@ const HighCurveHelper = {
18706
18859
  getDistancePath(distanceData, motionDistance, motionPrecision) {
18707
18860
  const {segments: segments, data: data} = distanceData, path = [];
18708
18861
  motionDistance = UnitConvert.number(motionDistance, distanceData.total);
18709
- let total = 0, distance, to = {};
18862
+ let total = 0, distance, cutDistance, to = {};
18710
18863
  let i = 0, index = 0, x = 0, y = 0, toX, toY, command;
18711
18864
  let x1, y1, x2, y2, t;
18712
18865
  const len = data.length;
@@ -18718,14 +18871,17 @@ const HighCurveHelper = {
18718
18871
  toX = data[i + 1];
18719
18872
  toY = data[i + 2];
18720
18873
  distance = segments[index];
18721
- if (total + distance >= motionDistance || !distanceData.total) {
18874
+ if (total + distance > motionDistance || !distanceData.total) {
18722
18875
  if (!i) x = toX, y = toY;
18723
18876
  tempFrom.x = x;
18724
18877
  tempFrom.y = y;
18725
18878
  to.x = toX;
18726
18879
  to.y = toY;
18727
- PointHelper.getDistancePoint(tempFrom, to, motionDistance - total, true);
18728
- path.push(command, to.x, to.y);
18880
+ cutDistance = float(motionDistance - total);
18881
+ if (cutDistance) {
18882
+ PointHelper.getDistancePoint(tempFrom, to, cutDistance, true);
18883
+ path.push(command, to.x, to.y);
18884
+ }
18729
18885
  return path;
18730
18886
  }
18731
18887
  x = toX;
@@ -18739,9 +18895,12 @@ const HighCurveHelper = {
18739
18895
  toX = data[i + 5];
18740
18896
  toY = data[i + 6];
18741
18897
  distance = segments[index];
18742
- if (total + distance >= motionDistance) {
18743
- t = HighBezierHelper.getT(motionDistance - total, distance, x, y, x1, y1, x2, y2, toX, toY, motionPrecision);
18744
- HighBezierHelper.cut(path, t, x, y, x1, y1, x2, y2, toX, toY);
18898
+ if (total + distance > motionDistance) {
18899
+ cutDistance = float(motionDistance - total);
18900
+ if (cutDistance) {
18901
+ t = HighBezierHelper.getT(cutDistance, distance, x, y, x1, y1, x2, y2, toX, toY, motionPrecision);
18902
+ HighBezierHelper.cut(path, t, x, y, x1, y1, x2, y2, toX, toY);
18903
+ }
18745
18904
  return path;
18746
18905
  }
18747
18906
  x = toX;
@@ -19472,6 +19631,7 @@ class Finder {
19472
19631
  for (let i = 0, len = children.length; i < len; i++) {
19473
19632
  child = children[i];
19474
19633
  result = method(child, options);
19634
+ if (typeof result === "boolean") result = result ? 1 : 0;
19475
19635
  if (result === Yes || result === YesAndSkip) {
19476
19636
  if (list) {
19477
19637
  list.push(child);
@@ -19815,4 +19975,4 @@ Plugin.add("bright");
19815
19975
 
19816
19976
  UI.addAttr("bright", false, dimType);
19817
19977
 
19818
- 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, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, 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, LeaferImage, LeaferTypeCreator, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, SelectArea, Selector, Star, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, 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$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$3 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
19978
+ 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, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Finder, Flow, FourNumberHelper, Frame, FrameData, Group, GroupData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, 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, LeaferImage, LeaferTypeCreator, Line, LineData, LineEditTool, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathArrowModule, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathMatrixHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, PathScaler, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Robot, RobotData, RotateEvent, Run, ScrollBar, SelectArea, Selector, Star, StarData, State, StringNumberMap, Stroker, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, TransformTool, Transformer, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, 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$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };