@leafer/worker 1.12.1 → 1.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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));
@@ -4103,6 +4117,10 @@ class LeaferImage {
4103
4117
  get url() {
4104
4118
  return this.config.url;
4105
4119
  }
4120
+ get crossOrigin() {
4121
+ const {crossOrigin: crossOrigin} = this.config;
4122
+ return isUndefined(crossOrigin) ? Platform.image.crossOrigin : crossOrigin;
4123
+ }
4106
4124
  get completed() {
4107
4125
  return this.ready || !!this.error;
4108
4126
  }
@@ -4120,12 +4138,14 @@ class LeaferImage {
4120
4138
  ImageManager.isFormat("svg", config) && (this.isSVG = true);
4121
4139
  ImageManager.hasAlphaPixel(config) && (this.hasAlphaPixel = true);
4122
4140
  }
4123
- load(onSuccess, onError) {
4141
+ load(onSuccess, onError, thumbSize) {
4124
4142
  if (!this.loading) {
4125
4143
  this.loading = true;
4126
- const {crossOrigin: crossOrigin} = this.config;
4127
4144
  Resource.tasker.add(() => __awaiter(this, void 0, void 0, function*() {
4128
- return yield Platform.origin.loadImage(this.url, isUndefined(crossOrigin) ? Platform.image.crossOrigin : crossOrigin, this).then(img => this.setView(img)).catch(e => {
4145
+ return yield Platform.origin.loadImage(this.getLoadUrl(thumbSize), this.crossOrigin, this).then(img => {
4146
+ if (thumbSize) this.setThumbView(img);
4147
+ this.setView(img);
4148
+ }).catch(e => {
4129
4149
  this.error = e;
4130
4150
  this.onComplete(false);
4131
4151
  });
@@ -4146,9 +4166,11 @@ class LeaferImage {
4146
4166
  }
4147
4167
  setView(img) {
4148
4168
  this.ready = true;
4149
- this.width = img.naturalWidth || img.width;
4150
- this.height = img.naturalHeight || img.height;
4151
- this.view = img;
4169
+ if (!this.width) {
4170
+ this.width = img.width;
4171
+ this.height = img.height;
4172
+ this.view = img;
4173
+ }
4152
4174
  this.onComplete(true);
4153
4175
  }
4154
4176
  onComplete(isSuccess) {
@@ -4194,6 +4216,19 @@ class LeaferImage {
4194
4216
  Platform.image.setPatternTransform(pattern, transform, paint);
4195
4217
  return pattern;
4196
4218
  }
4219
+ getLoadUrl(_thumbSize) {
4220
+ return this.url;
4221
+ }
4222
+ setThumbView(_view) {}
4223
+ getThumbSize() {
4224
+ return undefined;
4225
+ }
4226
+ getMinLevel() {
4227
+ return undefined;
4228
+ }
4229
+ getLevelData(_level) {
4230
+ return undefined;
4231
+ }
4197
4232
  clearLevels(_checkUse) {}
4198
4233
  destroy() {
4199
4234
  this.clearLevels();
@@ -4627,7 +4662,7 @@ function registerUIEvent() {
4627
4662
  };
4628
4663
  }
4629
4664
 
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;
4665
+ 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
4666
 
4632
4667
  const matrix$3 = {}, {round: round$3} = Math;
4633
4668
 
@@ -4725,7 +4760,7 @@ const LeafHelper = {
4725
4760
  if (scaleY) transition = scaleY;
4726
4761
  scaleY = scaleX;
4727
4762
  }
4728
- copy$9(matrix$3, o);
4763
+ copy$8(matrix$3, o);
4729
4764
  scaleOfOuter$2(matrix$3, origin, scaleX, scaleY);
4730
4765
  if (L$4.hasHighPosition(t)) {
4731
4766
  L$4.setTransform(t, matrix$3, resize, transition);
@@ -4744,7 +4779,7 @@ const LeafHelper = {
4744
4779
  },
4745
4780
  rotateOfLocal(t, origin, angle, transition) {
4746
4781
  const o = t.__localMatrix;
4747
- copy$9(matrix$3, o);
4782
+ copy$8(matrix$3, o);
4748
4783
  rotateOfOuter$2(matrix$3, origin, angle);
4749
4784
  if (L$4.hasHighPosition(t)) L$4.setTransform(t, matrix$3, false, transition); else t.set({
4750
4785
  x: t.x + matrix$3.e - o.e,
@@ -4756,18 +4791,18 @@ const LeafHelper = {
4756
4791
  L$4.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize, transition);
4757
4792
  },
4758
4793
  skewOfLocal(t, origin, skewX, skewY = 0, resize, transition) {
4759
- copy$9(matrix$3, t.__localMatrix);
4794
+ copy$8(matrix$3, t.__localMatrix);
4760
4795
  skewOfOuter(matrix$3, origin, skewX, skewY);
4761
4796
  L$4.setTransform(t, matrix$3, resize, transition);
4762
4797
  },
4763
4798
  transformWorld(t, transform, resize, transition) {
4764
- copy$9(matrix$3, t.worldTransform);
4799
+ copy$8(matrix$3, t.worldTransform);
4765
4800
  multiplyParent$3(matrix$3, transform);
4766
4801
  if (t.parent) divideParent(matrix$3, t.parent.scrollWorldTransform);
4767
4802
  L$4.setTransform(t, matrix$3, resize, transition);
4768
4803
  },
4769
4804
  transform(t, transform, resize, transition) {
4770
- copy$9(matrix$3, t.localTransform);
4805
+ copy$8(matrix$3, t.localTransform);
4771
4806
  multiplyParent$3(matrix$3, transform);
4772
4807
  L$4.setTransform(t, matrix$3, resize, transition);
4773
4808
  },
@@ -4805,7 +4840,7 @@ const LeafHelper = {
4805
4840
  return innerOrigin;
4806
4841
  },
4807
4842
  getRelativeWorld(t, relative, temp) {
4808
- copy$9(matrix$3, t.worldTransform);
4843
+ copy$8(matrix$3, t.worldTransform);
4809
4844
  divideParent(matrix$3, relative.scrollWorldTransform);
4810
4845
  return temp ? matrix$3 : Object.assign({}, matrix$3);
4811
4846
  },
@@ -5013,7 +5048,7 @@ const WaitHelper = {
5013
5048
 
5014
5049
  const {getRelativeWorld: getRelativeWorld$1, updateBounds: updateBounds$3} = LeafHelper;
5015
5050
 
5016
- const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$8} = BoundsHelper;
5051
+ const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$7} = BoundsHelper;
5017
5052
 
5018
5053
  const localContent = "_localContentBounds";
5019
5054
 
@@ -5252,7 +5287,7 @@ class LeafLayout {
5252
5287
  matrix = getRelativeWorld$1(leaf, relative, true);
5253
5288
  }
5254
5289
  if (!layoutBounds) layoutBounds = MatrixHelper.getLayout(matrix);
5255
- copy$8(layoutBounds, bounds);
5290
+ copy$7(layoutBounds, bounds);
5256
5291
  PointHelper.copy(layoutBounds, point);
5257
5292
  if (unscale) {
5258
5293
  const {scaleX: scaleX, scaleY: scaleY} = layoutBounds;
@@ -5874,7 +5909,7 @@ const LeafDataProxy = {
5874
5909
 
5875
5910
  const {setLayout: setLayout, multiplyParent: multiplyParent$2, translateInner: translateInner, defaultWorld: defaultWorld} = MatrixHelper;
5876
5911
 
5877
- const {toPoint: toPoint$4, tempPoint: tempPoint$1} = AroundHelper;
5912
+ const {toPoint: toPoint$4, tempPoint: tempPoint$2} = AroundHelper;
5878
5913
 
5879
5914
  const LeafMatrix = {
5880
5915
  __updateWorldMatrix() {
@@ -5894,8 +5929,8 @@ const LeafMatrix = {
5894
5929
  local.e = data.x + data.offsetX;
5895
5930
  local.f = data.y + data.offsetY;
5896
5931
  if (data.around || data.origin) {
5897
- toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$1);
5898
- translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
5932
+ toPoint$4(data.around || data.origin, layout.boxBounds, tempPoint$2);
5933
+ translateInner(local, -tempPoint$2.x, -tempPoint$2.y, !data.around);
5899
5934
  }
5900
5935
  }
5901
5936
  this.__layout.matrixChanged = undefined;
@@ -5906,7 +5941,7 @@ const {updateMatrix: updateMatrix$3, updateAllMatrix: updateAllMatrix$3} = LeafH
5906
5941
 
5907
5942
  const {updateBounds: updateBounds$2} = BranchHelper;
5908
5943
 
5909
- const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$3, copy: copy$7} = BoundsHelper;
5944
+ const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$3, copy: copy$6} = BoundsHelper;
5910
5945
 
5911
5946
  const {toBounds: toBounds$1} = PathBounds;
5912
5947
 
@@ -6017,7 +6052,7 @@ const LeafBounds = {
6017
6052
  },
6018
6053
  __updateRenderBounds(_bounds) {
6019
6054
  const layout = this.__layout, {renderSpread: renderSpread} = layout;
6020
- isNumber(renderSpread) && renderSpread <= 0 ? copy$7(layout.renderBounds, layout.strokeBounds) : copyAndSpread$3(layout.renderBounds, layout.boxBounds, renderSpread);
6055
+ isNumber(renderSpread) && renderSpread <= 0 ? copy$6(layout.renderBounds, layout.strokeBounds) : copyAndSpread$3(layout.renderBounds, layout.boxBounds, renderSpread);
6021
6056
  }
6022
6057
  };
6023
6058
 
@@ -6122,7 +6157,7 @@ const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: m
6122
6157
 
6123
6158
  const {toOuterOf: toOuterOf$1} = BoundsHelper;
6124
6159
 
6125
- const {copy: copy$6, move: move$8} = PointHelper;
6160
+ const {copy: copy$5, move: move$8} = PointHelper;
6126
6161
 
6127
6162
  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;
6128
6163
 
@@ -6441,14 +6476,14 @@ let Leaf = class Leaf {
6441
6476
  if (this.parent) {
6442
6477
  this.parent.worldToInner(world, to, distance, relative);
6443
6478
  } else {
6444
- if (to) copy$6(to, world);
6479
+ if (to) copy$5(to, world);
6445
6480
  }
6446
6481
  }
6447
6482
  localToWorld(local, to, distance, relative) {
6448
6483
  if (this.parent) {
6449
6484
  this.parent.innerToWorld(local, to, distance, relative);
6450
6485
  } else {
6451
- if (to) copy$6(to, local);
6486
+ if (to) copy$5(to, local);
6452
6487
  }
6453
6488
  }
6454
6489
  worldToInner(world, to, distance, relative) {
@@ -6923,7 +6958,7 @@ class LeafLevelList {
6923
6958
  }
6924
6959
  }
6925
6960
 
6926
- const version = "1.12.1";
6961
+ const version = "1.12.3";
6927
6962
 
6928
6963
  class LeaferCanvas extends LeaferCanvasBase {
6929
6964
  get allowBackgroundColor() {
@@ -7572,6 +7607,10 @@ class Renderer {
7572
7607
 
7573
7608
  Renderer.clipSpread = 10;
7574
7609
 
7610
+ const tempPoint$1 = {};
7611
+
7612
+ const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7613
+
7575
7614
  const {hitRadiusPoint: hitRadiusPoint$1} = BoundsHelper;
7576
7615
 
7577
7616
  class Picker {
@@ -7698,15 +7737,15 @@ class Picker {
7698
7737
  this.eachFind(branch.children, branch.__onlyHitMask);
7699
7738
  }
7700
7739
  eachFind(children, hitMask) {
7701
- let child, hit;
7740
+ let child, hit, data;
7702
7741
  const {point: point} = this, len = children.length;
7703
7742
  for (let i = len - 1; i > -1; i--) {
7704
- child = children[i];
7705
- if (!child.__.visible || hitMask && !child.__.mask) continue;
7706
- hit = child.__.hitRadius ? true : hitRadiusPoint$1(child.__world, point);
7743
+ child = children[i], data = child.__;
7744
+ if (!data.visible || hitMask && !data.mask) continue;
7745
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7707
7746
  if (child.isBranch) {
7708
7747
  if (hit || child.__ignoreHitWorld) {
7709
- if (child.isBranchLeaf && child.__.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7748
+ if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7710
7749
  if (child.topChildren) this.eachFind(child.topChildren, false);
7711
7750
  this.eachFind(child.children, child.__onlyHitMask);
7712
7751
  if (child.isBranchLeaf) this.hitChild(child, point);
@@ -8193,7 +8232,7 @@ class CanvasData extends RectData {
8193
8232
  }
8194
8233
  }
8195
8234
 
8196
- const {max: max$3, add: add$1} = FourNumberHelper;
8235
+ const {max: max$4, add: add$1} = FourNumberHelper;
8197
8236
 
8198
8237
  const UIBounds = {
8199
8238
  __updateStrokeSpread() {
@@ -8209,7 +8248,7 @@ const UIBounds = {
8209
8248
  }
8210
8249
  if (data.__useArrow) spread += strokeWidth * 5;
8211
8250
  if (box) {
8212
- spread = max$3(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8251
+ spread = max$4(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8213
8252
  boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
8214
8253
  }
8215
8254
  this.__layout.strokeBoxSpread = boxSpread;
@@ -8219,15 +8258,15 @@ const UIBounds = {
8219
8258
  let spread = 0;
8220
8259
  const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
8221
8260
  if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
8222
- if (blur) spread = max$3(spread, blur);
8261
+ if (blur) spread = max$4(spread, blur);
8223
8262
  if (filter) spread = add$1(spread, Filter.getSpread(filter));
8224
8263
  if (renderSpread) spread = add$1(spread, renderSpread);
8225
8264
  if (strokeSpread) spread = add$1(spread, strokeSpread);
8226
8265
  let shapeSpread = spread;
8227
- if (innerShadow) shapeSpread = max$3(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8228
- if (backgroundBlur) shapeSpread = max$3(shapeSpread, backgroundBlur);
8266
+ if (innerShadow) shapeSpread = max$4(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8267
+ if (backgroundBlur) shapeSpread = max$4(shapeSpread, backgroundBlur);
8229
8268
  this.__layout.renderShapeSpread = shapeSpread;
8230
- return box ? max$3(box.__updateRenderSpread(), spread) : spread;
8269
+ return box ? max$4(box.__updateRenderSpread(), spread) : spread;
8231
8270
  }
8232
8271
  };
8233
8272
 
@@ -8283,7 +8322,7 @@ const UIRender = {
8283
8322
  if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke, this, canvas, options) : Paint.stroke(stroke, this, canvas, options);
8284
8323
  }
8285
8324
  } else {
8286
- if (data.__pathInputed) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8325
+ if (data.__pathForRender) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8287
8326
  }
8288
8327
  },
8289
8328
  __drawShape(canvas, options) {
@@ -8407,7 +8446,7 @@ let UI = UI_1 = class UI extends Leaf {
8407
8446
  getPath(curve, pathForRender) {
8408
8447
  this.__layout.update();
8409
8448
  let path = pathForRender ? this.__.__pathForRender : this.__.path;
8410
- if (!path) pen.set(path = []), this.__drawPathByBox(pen);
8449
+ if (!path) pen.set(path = []), this.__drawPathByBox(pen, !pathForRender);
8411
8450
  return curve ? PathConvert.toCanvasData(path, true) : path;
8412
8451
  }
8413
8452
  getPathString(curve, pathForRender, floatLength) {
@@ -8435,17 +8474,18 @@ let UI = UI_1 = class UI extends Leaf {
8435
8474
  }
8436
8475
  __drawPath(canvas) {
8437
8476
  canvas.beginPath();
8438
- this.__drawPathByData(canvas, this.__.path);
8477
+ this.__drawPathByData(canvas, this.__.path, true);
8439
8478
  }
8440
- __drawPathByData(drawer, data) {
8441
- data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer);
8479
+ __drawPathByData(drawer, data, ignoreCornerRadius) {
8480
+ data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer, ignoreCornerRadius);
8442
8481
  }
8443
- __drawPathByBox(drawer) {
8482
+ __drawPathByBox(drawer, ignoreCornerRadius) {
8444
8483
  const {x: x, y: y, width: width, height: height} = this.__layout.boxBounds;
8445
- if (this.__.cornerRadius) {
8484
+ if (this.__.cornerRadius && !ignoreCornerRadius) {
8446
8485
  const {cornerRadius: cornerRadius} = this.__;
8447
8486
  drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [ cornerRadius ] : cornerRadius);
8448
8487
  } else drawer.rect(x, y, width, height);
8488
+ drawer.closePath();
8449
8489
  }
8450
8490
  drawImagePlaceholder(_paint, canvas, renderOptions) {
8451
8491
  Paint.fill(this.__.placeholderColor, this, canvas, renderOptions);
@@ -8714,6 +8754,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8714
8754
  get layoutLocked() {
8715
8755
  return !this.layouter.running;
8716
8756
  }
8757
+ get view() {
8758
+ return this.canvas && this.canvas.view;
8759
+ }
8717
8760
  get FPS() {
8718
8761
  return this.renderer ? this.renderer.FPS : 60;
8719
8762
  }
@@ -8765,7 +8808,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8765
8808
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
8766
8809
  if (this.isApp) this.__setApp();
8767
8810
  this.__checkAutoLayout();
8768
- this.view = canvas.view;
8769
8811
  if (!parentApp) {
8770
8812
  this.selector = Creator.selector(this);
8771
8813
  this.interaction = Creator.interaction(this, canvas, this.selector, config);
@@ -9045,7 +9087,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
9045
9087
  if (this.canvasManager) this.canvasManager.destroy();
9046
9088
  }
9047
9089
  if (this.canvas) this.canvas.destroy();
9048
- this.config.view = this.view = this.parentApp = null;
9090
+ this.config.view = this.parentApp = null;
9049
9091
  if (this.userConfig) this.userConfig.view = null;
9050
9092
  super.destroy();
9051
9093
  setTimeout(() => {
@@ -9229,7 +9271,6 @@ let Ellipse = class Ellipse extends UI {
9229
9271
  if (startAngle || endAngle) {
9230
9272
  if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
9231
9273
  ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9232
- if (innerRadius < 1) closePath$2(path);
9233
9274
  } else {
9234
9275
  if (innerRadius < 1) {
9235
9276
  ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius);
@@ -9237,16 +9278,16 @@ let Ellipse = class Ellipse extends UI {
9237
9278
  }
9238
9279
  ellipse(path, rx, ry, rx, ry, 0, 360, 0, true);
9239
9280
  }
9240
- if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9241
9281
  } else {
9242
9282
  if (startAngle || endAngle) {
9243
9283
  moveTo$3(path, rx, ry);
9244
9284
  ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9245
- closePath$2(path);
9246
9285
  } else {
9247
9286
  ellipse(path, rx, ry, rx, ry);
9248
9287
  }
9249
9288
  }
9289
+ closePath$2(path);
9290
+ if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9250
9291
  }
9251
9292
  };
9252
9293
 
@@ -9897,7 +9938,7 @@ class UIEvent extends Event {
9897
9938
  }
9898
9939
  }
9899
9940
 
9900
- 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;
9941
+ 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;
9901
9942
 
9902
9943
  const tempContent = new Bounds, tempDragBounds = new Bounds;
9903
9944
 
@@ -9937,8 +9978,8 @@ const DragBoundsHelper = {
9937
9978
  } else {
9938
9979
  if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
9939
9980
  }
9940
- move.x = float$1(move.x);
9941
- move.y = float$1(move.y);
9981
+ move.x = float$2(move.x);
9982
+ move.y = float$2(move.y);
9942
9983
  return move;
9943
9984
  },
9944
9985
  getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, lockRatio, change) {
@@ -9950,44 +9991,44 @@ const DragBoundsHelper = {
9950
9991
  let correctScaleX = 1, correctScaleY = 1, aScale, bScale, aSize, bSize;
9951
9992
  if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
9952
9993
  if (scale.x < 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9953
- aSize = float$1(tempContent.minX - tempDragBounds.minX);
9954
- bSize = float$1(tempDragBounds.maxX - tempContent.maxX);
9994
+ aSize = float$2(tempContent.minX - tempDragBounds.minX);
9995
+ bSize = float$2(tempDragBounds.maxX - tempContent.maxX);
9955
9996
  aScale = originLeftScale && aSize > 0 ? 1 + aSize / (originLeftScale * tempContent.width) : 1;
9956
9997
  bScale = originRightScale && bSize > 0 ? 1 + bSize / (originRightScale * tempContent.width) : 1;
9957
- correctScaleX *= max$2(aScale, bScale);
9998
+ correctScaleX *= max$3(aScale, bScale);
9958
9999
  } else {
9959
10000
  if (scale.x < 0) {
9960
- if (float$1(minX(content) - minX(dragBounds)) <= 0 || float$1(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
10001
+ if (float$2(minX(content) - minX(dragBounds)) <= 0 || float$2(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9961
10002
  tempContent.unsign();
9962
10003
  }
9963
- aSize = float$1(tempDragBounds.minX - tempContent.minX);
9964
- bSize = float$1(tempContent.maxX - tempDragBounds.maxX);
10004
+ aSize = float$2(tempDragBounds.minX - tempContent.minX);
10005
+ bSize = float$2(tempContent.maxX - tempDragBounds.maxX);
9965
10006
  aScale = originLeftScale && aSize > 0 ? 1 - aSize / (originLeftScale * tempContent.width) : 1;
9966
10007
  bScale = originRightScale && bSize > 0 ? 1 - bSize / (originRightScale * tempContent.width) : 1;
9967
- correctScaleX *= min(aScale, bScale);
10008
+ correctScaleX *= min$1(aScale, bScale);
9968
10009
  }
9969
10010
  if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
9970
10011
  if (scale.y < 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
9971
- aSize = float$1(tempContent.minY - tempDragBounds.minY);
9972
- bSize = float$1(tempDragBounds.maxY - tempContent.maxY);
10012
+ aSize = float$2(tempContent.minY - tempDragBounds.minY);
10013
+ bSize = float$2(tempDragBounds.maxY - tempContent.maxY);
9973
10014
  aScale = originTopScale && aSize > 0 ? 1 + aSize / (originTopScale * tempContent.height) : 1;
9974
10015
  bScale = originBottomScale && bSize > 0 ? 1 + bSize / (originBottomScale * tempContent.height) : 1;
9975
- correctScaleY *= max$2(aScale, bScale);
10016
+ correctScaleY *= max$3(aScale, bScale);
9976
10017
  if (lockRatio) {
9977
- aScale = max$2(abs$7(correctScaleX), abs$7(correctScaleY));
10018
+ aScale = max$3(abs$7(correctScaleX), abs$7(correctScaleY));
9978
10019
  correctScaleX = sign$2(correctScaleX) * aScale;
9979
10020
  correctScaleY = sign$2(correctScaleY) * aScale;
9980
10021
  }
9981
10022
  } else {
9982
10023
  if (scale.y < 0) {
9983
- if (float$1(minY(content) - minY(dragBounds)) <= 0 || float$1(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10024
+ if (float$2(minY(content) - minY(dragBounds)) <= 0 || float$2(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
9984
10025
  tempContent.unsign();
9985
10026
  }
9986
- aSize = float$1(tempDragBounds.minY - tempContent.minY);
9987
- bSize = float$1(tempContent.maxY - tempDragBounds.maxY);
10027
+ aSize = float$2(tempDragBounds.minY - tempContent.minY);
10028
+ bSize = float$2(tempContent.maxY - tempDragBounds.maxY);
9988
10029
  aScale = originTopScale && aSize > 0 ? 1 - aSize / (originTopScale * tempContent.height) : 1;
9989
10030
  bScale = originBottomScale && bSize > 0 ? 1 - bSize / (originBottomScale * tempContent.height) : 1;
9990
- correctScaleY *= min(aScale, bScale);
10031
+ correctScaleY *= min$1(aScale, bScale);
9991
10032
  }
9992
10033
  scale.x *= isFinite$1(correctScaleX) ? correctScaleX : 1;
9993
10034
  scale.y *= isFinite$1(correctScaleY) ? correctScaleY : 1;
@@ -10136,8 +10177,14 @@ MoveEvent.START = "move.start";
10136
10177
 
10137
10178
  MoveEvent.MOVE = "move";
10138
10179
 
10180
+ MoveEvent.DRAG_ANIMATE = "move.drag_animate";
10181
+
10139
10182
  MoveEvent.END = "move.end";
10140
10183
 
10184
+ MoveEvent.PULL_DOWN = "move.pull_down";
10185
+
10186
+ MoveEvent.REACH_BOTTOM = "move.reach_bottom";
10187
+
10141
10188
  MoveEvent = __decorate([ registerUIEvent() ], MoveEvent);
10142
10189
 
10143
10190
  let TouchEvent = class TouchEvent extends UIEvent {};
@@ -10234,6 +10281,7 @@ const InteractionHelper = {
10234
10281
  ctrlKey: e.ctrlKey,
10235
10282
  shiftKey: e.shiftKey,
10236
10283
  metaKey: e.metaKey,
10284
+ time: Date.now(),
10237
10285
  buttons: isUndefined(e.buttons) ? 1 : e.buttons === 0 ? pointerUpButtons : e.buttons,
10238
10286
  origin: e
10239
10287
  };
@@ -10269,6 +10317,7 @@ const {getDragEventData: getDragEventData, getDropEventData: getDropEventData, g
10269
10317
 
10270
10318
  class Dragger {
10271
10319
  constructor(interaction) {
10320
+ this.dragDataList = [];
10272
10321
  this.interaction = interaction;
10273
10322
  }
10274
10323
  setDragData(data) {
@@ -10331,6 +10380,7 @@ class Dragger {
10331
10380
  this.dragData = getDragEventData(downData, dragData, data);
10332
10381
  if (throughPath) this.dragData.throughPath = throughPath;
10333
10382
  this.dragData.path = path;
10383
+ this.dragDataList.push(this.dragData);
10334
10384
  if (this.moving) {
10335
10385
  data.moving = true;
10336
10386
  this.dragData.moveType = "drag";
@@ -10381,9 +10431,9 @@ class Dragger {
10381
10431
  interaction.emit(DragEvent.ENTER, data, path, dragEnterPath);
10382
10432
  this.dragEnterPath = path;
10383
10433
  }
10384
- dragEnd(data, speed) {
10434
+ dragEnd(data) {
10385
10435
  if (!this.dragging && !this.moving) return;
10386
- if (this.checkDragEndAnimate(data, speed)) return;
10436
+ if (this.checkDragEndAnimate(data)) return;
10387
10437
  this.dragEndReal(data);
10388
10438
  }
10389
10439
  dragEndReal(data) {
@@ -10425,11 +10475,13 @@ class Dragger {
10425
10475
  }
10426
10476
  dragReset() {
10427
10477
  DragEvent.list = DragEvent.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null;
10478
+ this.dragDataList = [];
10428
10479
  }
10429
10480
  checkDragEndAnimate(_data, _speed) {
10430
10481
  return false;
10431
10482
  }
10432
10483
  animate(_func, _off) {}
10484
+ stopAnimate() {}
10433
10485
  checkDragOut(_data) {}
10434
10486
  autoMoveOnDragOut(_data) {}
10435
10487
  autoMoveCancel() {}
@@ -10823,6 +10875,9 @@ class InteractionBase {
10823
10875
  this.pointerHover(hoverData);
10824
10876
  }
10825
10877
  }
10878
+ stopDragAnimate() {
10879
+ this.dragger.stopAnimate();
10880
+ }
10826
10881
  updateDownData(data, options, merge) {
10827
10882
  const {downData: downData} = this;
10828
10883
  if (!data && downData) data = downData;
@@ -11006,7 +11061,7 @@ Platform.getSelector = function(leaf) {
11006
11061
  return leaf.leafer ? leaf.leafer.selector : Platform.selector || (Platform.selector = Creator.selector());
11007
11062
  };
11008
11063
 
11009
- const {toInnerRadiusPointOf: toInnerRadiusPointOf, copy: copy$5, setRadius: setRadius} = PointHelper;
11064
+ const {toInnerRadiusPointOf: toInnerRadiusPointOf, copyRadiusPoint: copyRadiusPoint} = PointHelper;
11010
11065
 
11011
11066
  const {hitRadiusPoint: hitRadiusPoint, hitPoint: hitPoint} = BoundsHelper;
11012
11067
 
@@ -11016,8 +11071,7 @@ const leaf$1 = Leaf.prototype;
11016
11071
 
11017
11072
  leaf$1.hit = function(worldPoint, hitRadius = 0) {
11018
11073
  this.updateLayout();
11019
- copy$5(worldRadiusPoint, worldPoint);
11020
- setRadius(worldRadiusPoint, hitRadius);
11074
+ copyRadiusPoint(worldRadiusPoint, worldPoint, hitRadius);
11021
11075
  const world = this.__world;
11022
11076
  if (hitRadius ? !hitRadiusPoint(world, worldRadiusPoint) : !hitPoint(world, worldRadiusPoint)) return false;
11023
11077
  return this.isBranch ? Platform.getSelector(this).hitPoint(Object.assign({}, worldRadiusPoint), hitRadius, {
@@ -11031,8 +11085,8 @@ leaf$1.__hitWorld = function(point, forceHitFill) {
11031
11085
  const world = this.__world, layout = this.__layout;
11032
11086
  const isSmall = world.width < 10 && world.height < 10;
11033
11087
  if (data.hitRadius) {
11034
- copy$5(inner, point), point = inner;
11035
- setRadius(point, data.hitRadius);
11088
+ copyRadiusPoint(inner, point, data.hitRadius);
11089
+ point = inner;
11036
11090
  }
11037
11091
  toInnerRadiusPointOf(point, world, inner);
11038
11092
  if (data.hitBox || isSmall) {
@@ -11600,7 +11654,7 @@ function image(ui, attrName, paint, boxBounds, firstUse) {
11600
11654
  ignoreRender(ui, false);
11601
11655
  onLoadError(ui, event, error);
11602
11656
  leafPaint.loadId = undefined;
11603
- });
11657
+ }, paint.lod && image.getThumbSize());
11604
11658
  if (ui.placeholderColor) {
11605
11659
  if (!ui.placeholderDelay) image.isPlacehold = true; else setTimeout(() => {
11606
11660
  if (!image.ready) {
@@ -11840,10 +11894,12 @@ const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$6} = Math;
11840
11894
  function createPatternTask(paint, ui, canvas, renderOptions) {
11841
11895
  if (!paint.patternTask) {
11842
11896
  paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function*() {
11843
- paint.patternTask = null;
11844
- if (canvas.bounds.hit(ui.__nowWorld)) PaintImage.createPattern(paint, ui, canvas, renderOptions);
11897
+ PaintImage.createPattern(paint, ui, canvas, renderOptions);
11845
11898
  ui.forceUpdate("surface");
11846
- }), 300);
11899
+ }), 0, () => {
11900
+ paint.patternTask = null;
11901
+ return canvas.bounds.hit(ui.__nowWorld);
11902
+ });
11847
11903
  }
11848
11904
  }
11849
11905
 
@@ -12093,7 +12149,7 @@ const PaintGradientModule = {
12093
12149
  getTransform: getTransform
12094
12150
  };
12095
12151
 
12096
- const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$1, abs: abs$5} = Math;
12152
+ const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$2, abs: abs$5} = Math;
12097
12153
 
12098
12154
  const tempBounds = {}, tempMatrix = new Matrix;
12099
12155
 
@@ -12138,10 +12194,10 @@ function getShadowRenderSpread(_ui, shadow) {
12138
12194
  let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
12139
12195
  shadow.forEach(item => {
12140
12196
  x = item.x || 0, y = item.y || 0, blur = (item.blur || 0) * 1.5, spread = abs$5(item.spread || 0);
12141
- top = max$1(top, spread + blur - y);
12142
- right = max$1(right, spread + blur + x);
12143
- bottom = max$1(bottom, spread + blur + y);
12144
- left = max$1(left, spread + blur - x);
12197
+ top = max$2(top, spread + blur - y);
12198
+ right = max$2(right, spread + blur + x);
12199
+ bottom = max$2(bottom, spread + blur + y);
12200
+ left = max$2(left, spread + blur - x);
12145
12201
  });
12146
12202
  return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
12147
12203
  }
@@ -13020,7 +13076,11 @@ class Stroker extends UI {
13020
13076
  matrix$1.half = strokeWidth % 2;
13021
13077
  canvas.setWorld(matrix$1, options.matrix);
13022
13078
  canvas.beginPath();
13023
- if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13079
+ if (this.strokePathType === "path") {
13080
+ leaf.__drawPath(canvas);
13081
+ } else {
13082
+ if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
13083
+ }
13024
13084
  data.strokeWidth = strokeWidth / Math.max(aScaleX, aScaleY);
13025
13085
  if (stroke) isString(stroke) ? Paint.stroke(stroke, this, canvas, options) : Paint.strokes(stroke, this, canvas, options);
13026
13086
  if (fill) isString(fill) ? Paint.fill(fill, this, canvas, options) : Paint.fills(fill, this, canvas, options);
@@ -13037,6 +13097,8 @@ class Stroker extends UI {
13037
13097
 
13038
13098
  __decorate([ targetAttr(onTarget$1) ], Stroker.prototype, "target", void 0);
13039
13099
 
13100
+ __decorate([ surfaceType("render-path") ], Stroker.prototype, "strokePathType", void 0);
13101
+
13040
13102
  function onTarget$1(stroker) {
13041
13103
  const value = stroker.target;
13042
13104
  stroker.list = value ? isArray(value) ? value : [ value ] : [];
@@ -13151,10 +13213,11 @@ class EditSelect extends Group {
13151
13213
  }
13152
13214
  update() {
13153
13215
  this.hoverStroker.update();
13154
- const {stroke: stroke, strokeWidth: strokeWidth, selectedStyle: selectedStyle} = this.editor.mergedConfig;
13216
+ const {stroke: stroke, strokeWidth: strokeWidth, selectedPathType: selectedPathType, selectedStyle: selectedStyle} = this.editor.mergedConfig;
13155
13217
  this.targetStroker.update(Object.assign({
13156
13218
  stroke: stroke,
13157
- strokeWidth: strokeWidth && Math.max(1, strokeWidth / 2)
13219
+ strokeWidth: strokeWidth && Math.max(1, strokeWidth / 2),
13220
+ strokePathType: selectedPathType
13158
13221
  }, selectedStyle || {}));
13159
13222
  }
13160
13223
  onPointerMove(e) {
@@ -14539,7 +14602,7 @@ class TransformTool {
14539
14602
  const {target: target, mergeConfig: mergeConfig, single: single, dragStartData: dragStartData} = this.editBox;
14540
14603
  let {around: around, lockRatio: lockRatio, flipable: flipable, editSize: editSize} = mergeConfig, totalMove;
14541
14604
  if (e instanceof ZoomEvent) {
14542
- around = target.getBoxPoint(e);
14605
+ if (!around) around = target.getBoxPoint(e);
14543
14606
  totalMove = e.totalScale;
14544
14607
  } else {
14545
14608
  totalMove = e.getInnerTotal(target);
@@ -15846,11 +15909,28 @@ TextEditor = __decorate([ registerInnerEditor() ], TextEditor);
15846
15909
 
15847
15910
  Plugin.add("text-editor", "editor");
15848
15911
 
15912
+ function getScrollType(leafer) {
15913
+ const {scroll: scroll, disabled: disabled} = leafer.app.config.move;
15914
+ return !scroll || disabled ? "" : scroll === true ? "free" : scroll;
15915
+ }
15916
+
15849
15917
  function addViewport(leafer, mergeConfig, custom) {
15850
15918
  addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig);
15851
15919
  if (leafer.isApp || custom) return;
15852
15920
  leafer.__eventIds.push(leafer.on_(MoveEvent.BEFORE_MOVE, e => {
15853
- leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY, false));
15921
+ const move = leafer.getValidMove(e.moveX, e.moveY, false);
15922
+ if (getScrollType(leafer).includes("limit")) {
15923
+ const testMove = leafer.getValidMove(0, 0);
15924
+ if (testMove.x || testMove.y) {
15925
+ const maxX = 100, maxY = 200, resistance = e.moveType === "drag" ? .3 : .05;
15926
+ if (Math.abs(testMove.x) > maxX) move.x = 0; else move.x *= resistance;
15927
+ if (Math.abs(testMove.y) > maxY) move.y = 0; else move.y *= resistance;
15928
+ }
15929
+ }
15930
+ leafer.zoomLayer.move(move);
15931
+ }), leafer.on_(MoveEvent.DRAG_ANIMATE, () => {
15932
+ const testMove = leafer.getValidMove(0, 0);
15933
+ if (testMove.x || testMove.y) leafer.interaction.stopDragAnimate();
15854
15934
  }), leafer.on_(MoveEvent.END, e => {
15855
15935
  LeafHelper.animateMove(leafer.zoomLayer, leafer.getValidMove(e.moveX, e.moveY));
15856
15936
  }), leafer.on_(ZoomEvent.BEFORE_ZOOM, e => {
@@ -16001,7 +16081,7 @@ const MultiTouchHelper = {
16001
16081
 
16002
16082
  const M$3 = MultiTouchHelper;
16003
16083
 
16004
- const {abs: abs$2, max: max} = Math, {sign: sign, within: within$2} = MathHelper;
16084
+ const {abs: abs$2, max: max$1} = Math, {sign: sign, within: within$2} = MathHelper;
16005
16085
 
16006
16086
  const WheelEventHelper = {
16007
16087
  getMove(event, config) {
@@ -16012,8 +16092,8 @@ const WheelEventHelper = {
16012
16092
  deltaY = 0;
16013
16093
  }
16014
16094
  const absX = abs$2(deltaX), absY = abs$2(deltaY);
16015
- if (absX > 50) deltaX = max(50, absX / 3) * sign(deltaX);
16016
- if (absY > 50) deltaY = max(50, absY / 3) * sign(deltaY);
16095
+ if (absX > 50) deltaX = max$1(50, absX / 3) * sign(deltaX);
16096
+ if (absY > 50) deltaY = max$1(50, absY / 3) * sign(deltaY);
16017
16097
  return {
16018
16098
  x: -deltaX * moveSpeed * 2,
16019
16099
  y: -deltaY * moveSpeed * 2
@@ -16156,15 +16236,15 @@ leafer.initType = function(type) {
16156
16236
  };
16157
16237
 
16158
16238
  leafer.getValidMove = function(moveX, moveY, checkLimit = true) {
16159
- const {scroll: scroll, disabled: disabled} = this.app.config.move;
16239
+ const {disabled: disabled} = this.app.config.move;
16160
16240
  move$4.set(moveX, moveY);
16161
- if (scroll) {
16162
- const type = scroll === true ? "" : scroll;
16163
- 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;
16164
- if (checkLimit && type.includes("limit")) {
16241
+ const scrollType = getScrollType(this);
16242
+ if (scrollType) {
16243
+ if (scrollType.includes("x")) move$4.y = 0; else if (scrollType.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;
16244
+ if (checkLimit && scrollType.includes("limit")) {
16165
16245
  bounds.set(this.__world).addPoint(this.zoomLayer);
16166
- DragBoundsHelper.getValidMove(bounds, this.canvas.bounds, "inner", move$4, true);
16167
- if (type.includes("x")) move$4.y = 0; else if (type.includes("y")) move$4.x = 0;
16246
+ DragBoundsHelper.getValidMove(bounds, this.canvas.bounds, "auto", move$4, true);
16247
+ if (scrollType.includes("x")) move$4.y = 0; else if (scrollType.includes("y")) move$4.x = 0;
16168
16248
  }
16169
16249
  }
16170
16250
  return {
@@ -16271,22 +16351,52 @@ interaction.multiTouch = function(data, list) {
16271
16351
 
16272
16352
  const dragger = Dragger.prototype;
16273
16353
 
16274
- const {abs: abs$1} = Math;
16354
+ const {abs: abs$1, min: min, max: max, hypot: hypot} = Math;
16275
16355
 
16276
- dragger.checkDragEndAnimate = function(data, speed) {
16277
- const {moveX: moveX, moveY: moveY} = this.dragData;
16278
- const absMoveX = abs$1(moveX), absMoveY = abs$1(moveY), minMove = speed ? 1 : .1;
16279
- const dragAnimate = this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove) && this.interaction.m.dragAnimate;
16356
+ dragger.checkDragEndAnimate = function(data) {
16357
+ const {interaction: interaction} = this;
16358
+ const dragAnimate = this.canAnimate && this.moving && interaction.m.dragAnimate;
16280
16359
  if (dragAnimate) {
16281
- const inertia = data.pointerType === "touch" ? 3 : 1, maxMove = 70;
16282
- speed = speed ? isNumber(dragAnimate) ? dragAnimate : .95 : inertia;
16283
- if (absMoveX * speed > maxMove) speed = maxMove / absMoveX; else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY;
16284
- data = Object.assign({}, data);
16285
- PointHelper.move(data, moveX * speed, moveY * speed);
16286
- this.drag(data);
16287
- this.animate(() => {
16288
- this.dragEnd(data, 1);
16289
- });
16360
+ const inertia = isNumber(dragAnimate) ? dragAnimate : .95;
16361
+ const stopMove = .15;
16362
+ const maxMove = 150;
16363
+ let moveX = 0, moveY = 0, flickSpeed = 0;
16364
+ let totalWeight = 0, weight, w = 3, s, frame;
16365
+ const {dragDataList: dragDataList} = this, len = dragDataList.length;
16366
+ for (let i = len - 1; i >= max(len - 3, 0); i--) {
16367
+ frame = dragDataList[i];
16368
+ if (frame.time && Date.now() - frame.time > 100) break;
16369
+ weight = w--;
16370
+ moveX += frame.moveX * weight;
16371
+ moveY += frame.moveY * weight;
16372
+ totalWeight += weight;
16373
+ s = hypot(frame.moveX, frame.moveY);
16374
+ if (s > flickSpeed) flickSpeed = s;
16375
+ }
16376
+ if (totalWeight) moveX /= totalWeight, moveY /= totalWeight;
16377
+ if (flickSpeed > 8) {
16378
+ const t = min((flickSpeed - 8) / 17, 1);
16379
+ const boost = 1.15 + t * (1.6 - 1.15);
16380
+ moveX *= boost;
16381
+ moveY *= boost;
16382
+ }
16383
+ const maxAbs = max(abs$1(moveX), abs$1(moveY));
16384
+ if (maxAbs > maxMove) {
16385
+ s = maxMove / maxAbs;
16386
+ moveX *= s;
16387
+ moveY *= s;
16388
+ }
16389
+ const step = () => {
16390
+ moveX *= inertia;
16391
+ moveY *= inertia;
16392
+ data = Object.assign({}, data);
16393
+ if (abs$1(moveX) < stopMove && abs$1(moveY) < stopMove) return this.dragEndReal(data);
16394
+ PointHelper.move(data, moveX, moveY);
16395
+ this.drag(data);
16396
+ this.animate(step);
16397
+ interaction.emit(MoveEvent.DRAG_ANIMATE, data);
16398
+ };
16399
+ this.animate(step);
16290
16400
  }
16291
16401
  return dragAnimate;
16292
16402
  };
@@ -16297,6 +16407,13 @@ dragger.animate = function(func, off) {
16297
16407
  this.animateWait = func;
16298
16408
  };
16299
16409
 
16410
+ dragger.stopAnimate = function() {
16411
+ this.animate(null, "off");
16412
+ this.interaction.target.nextRender(() => {
16413
+ if (this.dragData) this.dragEndReal(this.dragData);
16414
+ });
16415
+ };
16416
+
16300
16417
  dragger.checkDragOut = function(data) {
16301
16418
  const {interaction: interaction} = this;
16302
16419
  this.autoMoveCancel();
@@ -16368,7 +16485,6 @@ function getFixBounds(bounds, scaleBounds) {
16368
16485
  Plugin.add("view");
16369
16486
 
16370
16487
  Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition) {
16371
- this.killAnimate();
16372
16488
  let padding;
16373
16489
  if (isData(optionsOrPadding)) {
16374
16490
  padding = optionsOrPadding.padding;
@@ -16381,8 +16497,9 @@ Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition)
16381
16497
  x: limitBounds.x + limitBounds.width / 2,
16382
16498
  y: limitBounds.y + limitBounds.height / 2
16383
16499
  };
16500
+ zoomLayer.killAnimate();
16384
16501
  let changeScale;
16385
- const {x: x, y: y, scaleX: scaleX, scaleY: scaleY} = zoomLayer.__;
16502
+ const {x: x, y: y, scaleX: scaleX, scaleY: scaleY} = zoomLayer.__, {boxBounds: boxBounds} = zoomLayer;
16386
16503
  if (isString(zoomType)) {
16387
16504
  switch (zoomType) {
16388
16505
  case "in":
@@ -16394,16 +16511,16 @@ Leafer.prototype.zoom = function(zoomType, optionsOrPadding, scroll, transition)
16394
16511
  break;
16395
16512
 
16396
16513
  case "fit":
16397
- zoomType = this.boxBounds;
16514
+ zoomType = boxBounds;
16398
16515
  break;
16399
16516
 
16400
16517
  case "fit-width":
16401
- zoomType = new Bounds(this.boxBounds);
16518
+ zoomType = new Bounds(boxBounds);
16402
16519
  zoomType.height = 0;
16403
16520
  break;
16404
16521
 
16405
16522
  case "fit-height":
16406
- zoomType = new Bounds(this.boxBounds);
16523
+ zoomType = new Bounds(boxBounds);
16407
16524
  zoomType.width = 0;
16408
16525
  break;
16409
16526
  }
@@ -17805,6 +17922,8 @@ let Animate = class Animate extends Eventer {
17805
17922
  }
17806
17923
  constructor(target, keyframe, options, isTemp) {
17807
17924
  super();
17925
+ this.nowIndex = 0;
17926
+ this.playedTotalTime = 0;
17808
17927
  if (keyframe) {
17809
17928
  if (keyframe.keyframes) options = keyframe, keyframe = keyframe.keyframes; else if (keyframe.style) options = keyframe,
17810
17929
  keyframe = keyframe.style;
@@ -17851,7 +17970,7 @@ let Animate = class Animate extends Eventer {
17851
17970
  play() {
17852
17971
  if (this.destroyed) return;
17853
17972
  this.running = true;
17854
- if (!this.started) this.clearTimer(), this.start(); else if (!this.timer) this.requestAnimate();
17973
+ if (!this.started) this.clearTimer(), this.start(); else if (!this.timer) this.startRequestAnimate();
17855
17974
  this.emitType(AnimateEvent.PLAY);
17856
17975
  }
17857
17976
  pause() {
@@ -17865,14 +17984,28 @@ let Animate = class Animate extends Eventer {
17865
17984
  this.complete();
17866
17985
  this.emitType(AnimateEvent.STOP);
17867
17986
  }
17868
- seek(time) {
17987
+ seek(time, includeDelay) {
17869
17988
  if (this.destroyed) return;
17870
- if (isObject(time)) time = UnitConvert.number(time, this.duration);
17989
+ const {delay: delay} = this;
17990
+ if (isObject(time)) time = UnitConvert.number(time, this.duration + (includeDelay ? delay : 0));
17991
+ if (includeDelay) time -= delay;
17871
17992
  if (time) time /= this.speed;
17872
- if (!this.started || time < this.time) this.start(true);
17993
+ let waitBeginTime;
17994
+ if (time < 0) {
17995
+ waitBeginTime = -time;
17996
+ time = 0;
17997
+ }
17998
+ if (!this.started || time < this.time || !time) this.start(true);
17873
17999
  this.time = time;
17874
- this.animate(0, true);
17875
- this.clearTimer(() => this.requestAnimate());
18000
+ if (!waitBeginTime) this.animate(0, true);
18001
+ this.clearTimer(() => {
18002
+ if (waitBeginTime) {
18003
+ this.timer = setTimeout(() => {
18004
+ this.timer = 0;
18005
+ this.begin();
18006
+ }, waitBeginTime * 1e3);
18007
+ } else this.startRequestAnimate();
18008
+ });
17876
18009
  this.emitType(AnimateEvent.SEEK);
17877
18010
  }
17878
18011
  kill(complete = true, killStyle) {
@@ -17955,14 +18088,24 @@ let Animate = class Animate extends Eventer {
17955
18088
  }
17956
18089
  }
17957
18090
  }
17958
- requestAnimate() {
18091
+ startRequestAnimate() {
17959
18092
  this.requestAnimateTime = Date.now();
18093
+ this.requestAnimatePageTime = 0;
18094
+ if (!this.waitRequestRender) this.requestAnimate();
18095
+ }
18096
+ requestAnimate() {
18097
+ this.waitRequestRender = true;
17960
18098
  Platform.requestRender(this.animate.bind(this));
17961
18099
  }
17962
- animate(_runtime, seek) {
18100
+ animate(pageTime, seek) {
17963
18101
  if (!seek) {
18102
+ this.waitRequestRender = false;
17964
18103
  if (!this.running) return;
17965
- this.time += (Date.now() - this.requestAnimateTime) / 1e3;
18104
+ let frameTime;
18105
+ if (pageTime && this.requestAnimatePageTime) frameTime = pageTime - this.requestAnimatePageTime; else frameTime = Date.now() - this.requestAnimateTime;
18106
+ this.time += frameTime / 1e3;
18107
+ this.requestAnimatePageTime = pageTime;
18108
+ this.requestAnimateTime = Date.now();
17966
18109
  }
17967
18110
  const {duration: duration} = this, realTime = this.time * this.speed;
17968
18111
  if (realTime < duration) {
@@ -18003,21 +18146,24 @@ let Animate = class Animate extends Eventer {
18003
18146
  }
18004
18147
  start(seek) {
18005
18148
  this.requestAnimateTime = 1;
18006
- const {reverse: reverse} = this;
18149
+ const {reverse: reverse, jump: jump} = this;
18007
18150
  if (reverse || this.mainReverse) this.mainReverse = reverse;
18008
18151
  if (this.looped) this.looped = 0;
18009
18152
  if (seek) this.begin(true); else {
18010
18153
  const {delay: delay} = this;
18011
- if (delay) this.timer = setTimeout(() => {
18012
- this.timer = 0;
18013
- this.begin();
18014
- }, delay / this.speed * 1e3); else this.begin();
18154
+ if (delay) {
18155
+ if (jump) this.begin(true);
18156
+ this.timer = setTimeout(() => {
18157
+ this.timer = 0;
18158
+ this.begin();
18159
+ }, delay / this.speed * 1e3);
18160
+ } else this.begin();
18015
18161
  }
18016
18162
  }
18017
18163
  begin(seek) {
18018
18164
  this.playedTotalTime = this.time = 0;
18019
18165
  this.mainReverse ? this.setTo() : this.setFrom();
18020
- if (!seek) this.requestAnimate();
18166
+ if (!seek) this.startRequestAnimate();
18021
18167
  }
18022
18168
  end() {
18023
18169
  this.mainReverse ? this.setFrom() : this.setTo();
@@ -18133,6 +18279,8 @@ __decorate([ animateAttr(true) ], Animate.prototype, "autoplay", void 0);
18133
18279
 
18134
18280
  __decorate([ animateAttr() ], Animate.prototype, "join", void 0);
18135
18281
 
18282
+ __decorate([ animateAttr() ], Animate.prototype, "jump", void 0);
18283
+
18136
18284
  __decorate([ animateAttr() ], Animate.prototype, "attrs", void 0);
18137
18285
 
18138
18286
  Animate = __decorate([ useModule(LeafEventer) ], Animate);
@@ -18179,8 +18327,8 @@ let AnimateList = class AnimateList extends Animate {
18179
18327
  this.each(item => item.stop());
18180
18328
  this.emitType(AnimateEvent.STOP);
18181
18329
  }
18182
- seek(time) {
18183
- this.each(item => item.seek(time));
18330
+ seek(time, includeDelay) {
18331
+ this.each(item => item.seek(time, includeDelay));
18184
18332
  this.emitType(AnimateEvent.SEEK);
18185
18333
  }
18186
18334
  kill(complete, killStyle) {
@@ -18371,7 +18519,7 @@ const hslMatch = /^hsl\((\d+),\s*(\d+)%\s*,\s*(\d+)%/i;
18371
18519
 
18372
18520
  const hslaMatch = /^hsla\((\d+),\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d*\.?\d+)/i;
18373
18521
 
18374
- const int = parseInt, float = parseFloat, {round: round$1} = Math;
18522
+ const int = parseInt, float$1 = parseFloat, {round: round$1} = Math;
18375
18523
 
18376
18524
  let cache = {}, totalCache = 0;
18377
18525
 
@@ -18484,18 +18632,18 @@ function rgbaToRGBA(color) {
18484
18632
  r: int(match[1]),
18485
18633
  g: int(match[2]),
18486
18634
  b: int(match[3]),
18487
- a: float(match[4])
18635
+ a: float$1(match[4])
18488
18636
  };
18489
18637
  }
18490
18638
 
18491
18639
  function hslToRGBA(color) {
18492
18640
  const match = hslMatch.exec(color);
18493
- return hsla(float(match[1]), float(match[2]), float(match[3]), 1);
18641
+ return hsla(float$1(match[1]), float$1(match[2]), float$1(match[3]), 1);
18494
18642
  }
18495
18643
 
18496
18644
  function hslaToRGBA(color) {
18497
18645
  const match = hslaMatch.exec(color);
18498
- return hsla(float(match[1]), float(match[2]), float(match[3]), float(match[4]));
18646
+ return hsla(float$1(match[1]), float$1(match[2]), float$1(match[3]), float$1(match[4]));
18499
18647
  }
18500
18648
 
18501
18649
  const n1 = 1 / 6, n2 = .5, n3 = 2 / 3, n4 = 1 / 3;
@@ -18734,7 +18882,7 @@ const HighBezierHelper = {
18734
18882
 
18735
18883
  const {getDistance: getDistance} = HighBezierHelper;
18736
18884
 
18737
- const {M: M, L: L, C: C, Z: Z} = PathCommandMap;
18885
+ const {M: M, L: L, C: C, Z: Z} = PathCommandMap, {float: float} = MathHelper;
18738
18886
 
18739
18887
  const tempPoint = {}, tempFrom = {};
18740
18888
 
@@ -18871,7 +19019,7 @@ const HighCurveHelper = {
18871
19019
  getDistancePath(distanceData, motionDistance, motionPrecision) {
18872
19020
  const {segments: segments, data: data} = distanceData, path = [];
18873
19021
  motionDistance = UnitConvert.number(motionDistance, distanceData.total);
18874
- let total = 0, distance, to = {};
19022
+ let total = 0, distance, cutDistance, to = {};
18875
19023
  let i = 0, index = 0, x = 0, y = 0, toX, toY, command;
18876
19024
  let x1, y1, x2, y2, t;
18877
19025
  const len = data.length;
@@ -18883,14 +19031,17 @@ const HighCurveHelper = {
18883
19031
  toX = data[i + 1];
18884
19032
  toY = data[i + 2];
18885
19033
  distance = segments[index];
18886
- if (total + distance >= motionDistance || !distanceData.total) {
19034
+ if (total + distance > motionDistance || !distanceData.total) {
18887
19035
  if (!i) x = toX, y = toY;
18888
19036
  tempFrom.x = x;
18889
19037
  tempFrom.y = y;
18890
19038
  to.x = toX;
18891
19039
  to.y = toY;
18892
- PointHelper.getDistancePoint(tempFrom, to, motionDistance - total, true);
18893
- path.push(command, to.x, to.y);
19040
+ cutDistance = float(motionDistance - total);
19041
+ if (cutDistance) {
19042
+ PointHelper.getDistancePoint(tempFrom, to, cutDistance, true);
19043
+ path.push(command, to.x, to.y);
19044
+ }
18894
19045
  return path;
18895
19046
  }
18896
19047
  x = toX;
@@ -18904,9 +19055,12 @@ const HighCurveHelper = {
18904
19055
  toX = data[i + 5];
18905
19056
  toY = data[i + 6];
18906
19057
  distance = segments[index];
18907
- if (total + distance >= motionDistance) {
18908
- t = HighBezierHelper.getT(motionDistance - total, distance, x, y, x1, y1, x2, y2, toX, toY, motionPrecision);
18909
- HighBezierHelper.cut(path, t, x, y, x1, y1, x2, y2, toX, toY);
19058
+ if (total + distance > motionDistance) {
19059
+ cutDistance = float(motionDistance - total);
19060
+ if (cutDistance) {
19061
+ t = HighBezierHelper.getT(cutDistance, distance, x, y, x1, y1, x2, y2, toX, toY, motionPrecision);
19062
+ HighBezierHelper.cut(path, t, x, y, x1, y1, x2, y2, toX, toY);
19063
+ }
18910
19064
  return path;
18911
19065
  }
18912
19066
  x = toX;
@@ -19637,6 +19791,7 @@ class Finder {
19637
19791
  for (let i = 0, len = children.length; i < len; i++) {
19638
19792
  child = children[i];
19639
19793
  result = method(child, options);
19794
+ if (typeof result === "boolean") result = result ? 1 : 0;
19640
19795
  if (result === Yes || result === YesAndSkip) {
19641
19796
  if (list) {
19642
19797
  list.push(child);
@@ -19980,4 +20135,4 @@ Plugin.add("bright");
19980
20135
 
19981
20136
  UI.addAttr("bright", false, dimType);
19982
20137
 
19983
- 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, HTMLText, HTMLTextData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, 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, 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, TextEditor, 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 };
20138
+ 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, HTMLText, HTMLTextData, HighBezierHelper, HighCurveHelper, HitCanvasManager, Image, 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, 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, TextEditor, 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 };