leafer-ui 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.
@@ -461,9 +461,9 @@ function getMatrixData() {
461
461
 
462
462
  const {sin: sin$5, cos: cos$5, acos: acos, sqrt: sqrt$3} = Math;
463
463
 
464
- const {float: float$2} = MathHelper;
464
+ const {float: float$3} = MathHelper;
465
465
 
466
- const tempPoint$3 = {};
466
+ const tempPoint$4 = {};
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$6.toInnerPoint(t, origin, tempPoint$3);
526
- M$6.scaleOfInner(t, tempPoint$3, scaleX, scaleY);
525
+ M$6.toInnerPoint(t, origin, tempPoint$4);
526
+ M$6.scaleOfInner(t, tempPoint$4, scaleX, scaleY);
527
527
  },
528
528
  scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
529
529
  M$6.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$6.toInnerPoint(t, origin, tempPoint$3);
545
- M$6.rotateOfInner(t, tempPoint$3, rotation);
544
+ M$6.toInnerPoint(t, origin, tempPoint$4);
545
+ M$6.rotateOfInner(t, tempPoint$4, rotation);
546
546
  },
547
547
  rotateOfInner(t, origin, rotation) {
548
548
  M$6.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$6.toInnerPoint(t, origin, tempPoint$3);
567
- M$6.skewOfInner(t, tempPoint$3, skewX, skewY);
566
+ M$6.toInnerPoint(t, origin, tempPoint$4);
567
+ M$6.skewOfInner(t, tempPoint$4, skewX, skewY);
568
568
  },
569
569
  skewOfInner(t, origin, skewX, skewY = 0) {
570
570
  M$6.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$2(cos$5(rotation));
715
+ const cosR = float$3(cos$5(rotation));
716
716
  const sinR = sin$5(rotation);
717
- scaleX = float$2(scaleX), scaleY = float$2(scaleY);
718
- skewX = cosR ? float$2((c / scaleY + sinR) / cosR / OneRadian, 9) : 0;
719
- skewY = cosR ? float$2((b / scaleX - sinR) / cosR / OneRadian, 9) : 0;
720
- rotation = float$2(rotation / OneRadian);
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);
721
721
  } else {
722
722
  scaleX = a;
723
723
  scaleY = d;
@@ -761,6 +761,8 @@ const MatrixHelper = {
761
761
 
762
762
  const M$6 = MatrixHelper;
763
763
 
764
+ const {float: float$2} = MathHelper;
765
+
764
766
  const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
765
767
 
766
768
  const {sin: sin$4, cos: cos$4, abs: abs$5, sqrt: sqrt$2, atan2: atan2$2, min: min$2, round: round$2} = Math;
@@ -812,22 +814,27 @@ const PointHelper = {
812
814
  },
813
815
  tempToInnerOf(t, matrix) {
814
816
  const {tempPoint: temp} = P$5;
815
- copy$a(temp, t);
817
+ copy$9(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$5;
821
- copy$a(temp, t);
823
+ copy$9(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$5;
827
- copy$a(temp, t);
829
+ copy$9(temp, t);
828
830
  P$5.toInnerRadiusPointOf(t, matrix, temp);
829
831
  return temp;
830
832
  },
833
+ copyRadiusPoint(t, point, x, y) {
834
+ copy$9(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);
@@ -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$2(t.x) === float$2(point.x) && float$2(t.y) === float$2(point.y);
899
906
  },
900
907
  reset(t) {
901
908
  P$5.reset(t);
@@ -904,7 +911,7 @@ const PointHelper = {
904
911
 
905
912
  const P$5 = PointHelper;
906
913
 
907
- const {getDistanceFrom: getDistanceFrom, copy: copy$a, getAtan2: getAtan2} = P$5;
914
+ const {getDistanceFrom: getDistanceFrom, copy: copy$9, setRadius: setRadius, getAtan2: getAtan2} = P$5;
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$2 = new Point;
989
+ const tempPoint$3 = new Point;
983
990
 
984
991
  class Matrix {
985
992
  constructor(a, b, c, d, e, f) {
@@ -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$9(to, t);
1325
+ if (!to) to = t; else copy$8(to, t);
1319
1326
  if (!offsetBounds) offsetBounds = t;
1320
1327
  to.offsetX = B.maxX(offsetBounds);
1321
1328
  to.offsetY = B.maxY(offsetBounds);
@@ -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$9(t, bounds);
1472
+ if (!addMode) copy$8(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$9} = B;
1559
+ const {add: add$2, copy: copy$8} = 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$8, multiplyParent: multiplyParent$4, pixelScale: pixelScale} = MatrixHelper, {round: round$1} = Math, tempPixelBounds = new Bounds, tempPixelBounds2 = new Bounds;
2257
+ const {copy: copy$7, multiplyParent: multiplyParent$4, pixelScale: pixelScale} = MatrixHelper, {round: round$1} = 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$8(canvas.worldTransform, this.worldTransform), canvas.useWorldTransform();
2511
+ if (useSameWorldTransform) copy$7(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;
@@ -2650,7 +2657,7 @@ const {set: set$1, toNumberPoints: toNumberPoints} = PointHelper;
2650
2657
 
2651
2658
  const {M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5} = PathCommandMap;
2652
2659
 
2653
- const tempPoint$1 = {};
2660
+ const tempPoint$2 = {};
2654
2661
 
2655
2662
  const BezierHelper = {
2656
2663
  points(data, originPoints, curve, close) {
@@ -2658,7 +2665,7 @@ const BezierHelper = {
2658
2665
  data.push(M$5, 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$1(pow(bX - aX, 2) + pow(bY - aY, 2));
2681
+ baX = bX - aX;
2682
+ baY = bY - aY;
2683
+ ba = sqrt$1(pow(baX, 2) + pow(baY, 2));
2675
2684
  cb = sqrt$1(pow(cX - bX, 2) + pow(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$4, c1X, c1Y, bX, bY);
2686
2695
  } else {
2687
- data.push(C$4, c2X, c2Y, c1X, c1Y, bX, bY);
2696
+ if (baX || baY) data.push(C$4, c2X, c2Y, c1X, c1Y, bX, bY);
2688
2697
  }
2689
2698
  c2X = bX + cb * cX;
2690
2699
  c2Y = bY + cb * cY;
@@ -2819,8 +2828,8 @@ const BezierHelper = {
2819
2828
  addMode ? addPoint$1(pointBounds, fromX, fromY) : setPoint$1(pointBounds, fromX, fromY);
2820
2829
  addPoint$1(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$1);
2823
- addPoint$1(pointBounds, tempPoint$1.x, tempPoint$1.y);
2831
+ getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$2);
2832
+ addPoint$1(pointBounds, tempPoint$2.x, tempPoint$2.y);
2824
2833
  }
2825
2834
  },
2826
2835
  getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
@@ -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$3, x, y, radiusX, radiusY);
3274
3284
  } else {
@@ -3281,6 +3291,7 @@ const PathCommandDataHelper = {
3281
3291
  if (isNull(startAngle)) {
3282
3292
  data.push(P$2, x, y, radius);
3283
3293
  } else {
3294
+ if (isNull(startAngle)) startAngle = 0;
3284
3295
  if (isNull(endAngle)) endAngle = 360;
3285
3296
  data.push(O$2, x, y, radius, startAngle, endAngle, anticlockwise ? 1 : 0);
3286
3297
  }
@@ -3490,7 +3501,7 @@ const {M: M$1, L: L$2, C: C, Q: Q, Z: Z$1, N: N, D: D$1, X: X, G: G, F: F$1, O:
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$7, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
3504
+ const {addPointBounds: addPointBounds, copy: copy$6, addPoint: addPoint, setPoint: setPoint, addBounds: addBounds, toBounds: toBounds$1} = TwoPointBoundsHelper;
3494
3505
 
3495
3506
  const debug$b = Debug.get("PathBounds");
3496
3507
 
@@ -3572,7 +3583,7 @@ const PathBounds = {
3572
3583
 
3573
3584
  case G:
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$7(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3586
+ i === 0 ? copy$6(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:
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$7(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3604
+ i === 0 ? copy$6(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:
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$7(setPointBounds, tempPointBounds) : addPointBounds(setPointBounds, tempPointBounds);
3621
+ i === 0 ? copy$6(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$6, 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$5, 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$1 = {}, {round: round} = Math;
4633
4647
 
@@ -4725,7 +4739,7 @@ const LeafHelper = {
4725
4739
  if (scaleY) transition = scaleY;
4726
4740
  scaleY = scaleX;
4727
4741
  }
4728
- copy$6(matrix$1, o);
4742
+ copy$5(matrix$1, o);
4729
4743
  scaleOfOuter$2(matrix$1, origin, scaleX, scaleY);
4730
4744
  if (L.hasHighPosition(t)) {
4731
4745
  L.setTransform(t, matrix$1, 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$6(matrix$1, o);
4761
+ copy$5(matrix$1, o);
4748
4762
  rotateOfOuter$2(matrix$1, origin, angle);
4749
4763
  if (L.hasHighPosition(t)) L.setTransform(t, matrix$1, false, transition); else t.set({
4750
4764
  x: t.x + matrix$1.e - o.e,
@@ -4756,18 +4770,18 @@ const LeafHelper = {
4756
4770
  L.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize, transition);
4757
4771
  },
4758
4772
  skewOfLocal(t, origin, skewX, skewY = 0, resize, transition) {
4759
- copy$6(matrix$1, t.__localMatrix);
4773
+ copy$5(matrix$1, t.__localMatrix);
4760
4774
  skewOfOuter(matrix$1, origin, skewX, skewY);
4761
4775
  L.setTransform(t, matrix$1, resize, transition);
4762
4776
  },
4763
4777
  transformWorld(t, transform, resize, transition) {
4764
- copy$6(matrix$1, t.worldTransform);
4778
+ copy$5(matrix$1, t.worldTransform);
4765
4779
  multiplyParent$3(matrix$1, transform);
4766
4780
  if (t.parent) divideParent(matrix$1, t.parent.scrollWorldTransform);
4767
4781
  L.setTransform(t, matrix$1, resize, transition);
4768
4782
  },
4769
4783
  transform(t, transform, resize, transition) {
4770
- copy$6(matrix$1, t.localTransform);
4784
+ copy$5(matrix$1, t.localTransform);
4771
4785
  multiplyParent$3(matrix$1, transform);
4772
4786
  L.setTransform(t, matrix$1, resize, transition);
4773
4787
  },
@@ -4805,7 +4819,7 @@ const LeafHelper = {
4805
4819
  return innerOrigin;
4806
4820
  },
4807
4821
  getRelativeWorld(t, relative, temp) {
4808
- copy$6(matrix$1, t.worldTransform);
4822
+ copy$5(matrix$1, t.worldTransform);
4809
4823
  divideParent(matrix$1, relative.scrollWorldTransform);
4810
4824
  return temp ? matrix$1 : Object.assign({}, matrix$1);
4811
4825
  },
@@ -4951,10 +4965,53 @@ const BranchHelper = {
4951
4965
  if (exclude && exclude === branch) continue;
4952
4966
  updateBounds$3(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$3(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$1(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$3, scale: scale$1} = 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$2} = LeafHelper;
4972
5029
 
4973
- const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$5} = BoundsHelper;
5030
+ const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$4} = 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$5(layoutBounds, bounds);
5269
+ copy$4(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$3, tempPoint: tempPoint} = AroundHelper;
5891
+ const {toPoint: toPoint$3, tempPoint: tempPoint$1} = 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$3(data.around || data.origin, layout.boxBounds, tempPoint);
5855
- translateInner(local, -tempPoint.x, -tempPoint.y, !data.around);
5911
+ toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$1);
5912
+ translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
5856
5913
  }
5857
5914
  }
5858
5915
  this.__layout.matrixChanged = undefined;
@@ -5863,7 +5920,7 @@ const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafH
5863
5920
 
5864
5921
  const {updateBounds: updateBounds$1} = BranchHelper;
5865
5922
 
5866
- const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$4} = BoundsHelper;
5923
+ const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$3} = BoundsHelper;
5867
5924
 
5868
5925
  const {toBounds: toBounds} = 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$4(layout.renderBounds, layout.strokeBounds) : copyAndSpread$2(layout.renderBounds, layout.boxBounds, renderSpread);
6034
+ isNumber(renderSpread) && renderSpread <= 0 ? copy$3(layout.renderBounds, layout.strokeBounds) : copyAndSpread$2(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$3, move: move$2} = PointHelper;
6139
+ const {copy: copy$2, move: move$2} = 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$3(to, world);
6458
+ if (to) copy$2(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$3(to, local);
6465
+ if (to) copy$2(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
  const debug$5 = Debug.get("LeaferCanvas");
6886
6943
 
@@ -6912,6 +6969,7 @@ class LeaferCanvas extends LeaferCanvasBase {
6912
6969
  if (this.parentView) {
6913
6970
  const pStyle = this.parentView.style;
6914
6971
  pStyle.webkitUserSelect = pStyle.userSelect = "none";
6972
+ this.view.classList.add("leafer-canvas-view");
6915
6973
  }
6916
6974
  if (Platform.syncDomFont && !this.parentView) {
6917
6975
  style.display = "none";
@@ -6971,19 +7029,9 @@ class LeaferCanvas extends LeaferCanvasBase {
6971
7029
  updateViewSize() {
6972
7030
  const {width: width, height: height, pixelRatio: pixelRatio} = this;
6973
7031
  const {style: style} = this.view;
6974
- if (this.unreal) {
6975
- const {config: config, autoWidthStr: autoWidthStr, autoHeightStr: autoHeightStr} = this;
6976
- if (config.width) {
6977
- if (isUndefined(autoWidthStr)) this.autoWidthStr = style.width || "";
6978
- style.width = config.width + "px";
6979
- } else if (!isUndefined(autoWidthStr)) style.width = autoWidthStr;
6980
- if (config.height) {
6981
- if (isUndefined(autoHeightStr)) this.autoHeightStr = style.height || "";
6982
- style.height = config.height + "px";
6983
- } else if (!isUndefined(autoHeightStr)) style.height = autoHeightStr;
6984
- } else {
6985
- style.width = width + "px";
6986
- style.height = height + "px";
7032
+ style.width = width + "px";
7033
+ style.height = height + "px";
7034
+ if (!this.unreal) {
6987
7035
  this.view.width = Math.ceil(width * pixelRatio);
6988
7036
  this.view.height = Math.ceil(height * pixelRatio);
6989
7037
  }
@@ -7071,20 +7119,20 @@ class LeaferCanvas extends LeaferCanvasBase {
7071
7119
  }
7072
7120
  unrealCanvas() {
7073
7121
  if (!this.unreal && this.parentView) {
7074
- const view = this.view;
7122
+ let view = this.view;
7075
7123
  if (view) view.remove();
7076
- this.view = this.parentView;
7124
+ view = this.view = document.createElement("div");
7125
+ this.parentView.appendChild(this.view);
7126
+ view.classList.add("leafer-app-view");
7077
7127
  this.unreal = true;
7078
7128
  }
7079
7129
  }
7080
7130
  destroy() {
7081
- if (this.view) {
7131
+ const {view: view} = this;
7132
+ if (view) {
7082
7133
  this.stopAutoLayout();
7083
7134
  this.stopListenPixelRatio();
7084
- if (!this.unreal) {
7085
- const view = this.view;
7086
- if (view.parentElement) view.remove();
7087
- }
7135
+ if (view.parentElement) view.remove();
7088
7136
  super.destroy();
7089
7137
  }
7090
7138
  }
@@ -7735,6 +7783,10 @@ class Renderer {
7735
7783
 
7736
7784
  Renderer.clipSpread = 10;
7737
7785
 
7786
+ const tempPoint = {};
7787
+
7788
+ const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7789
+
7738
7790
  const {hitRadiusPoint: hitRadiusPoint$1} = BoundsHelper;
7739
7791
 
7740
7792
  class Picker {
@@ -7861,15 +7913,15 @@ class Picker {
7861
7913
  this.eachFind(branch.children, branch.__onlyHitMask);
7862
7914
  }
7863
7915
  eachFind(children, hitMask) {
7864
- let child, hit;
7916
+ let child, hit, data;
7865
7917
  const {point: point} = this, len = children.length;
7866
7918
  for (let i = len - 1; i > -1; i--) {
7867
- child = children[i];
7868
- if (!child.__.visible || hitMask && !child.__.mask) continue;
7869
- hit = child.__.hitRadius ? true : hitRadiusPoint$1(child.__world, point);
7919
+ child = children[i], data = child.__;
7920
+ if (!data.visible || hitMask && !data.mask) continue;
7921
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint, point, data.hitRadius) : point);
7870
7922
  if (child.isBranch) {
7871
7923
  if (hit || child.__ignoreHitWorld) {
7872
- if (child.isBranchLeaf && child.__.__clipAfterFill && !child.__hitWorld(point)) continue;
7924
+ if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
7873
7925
  if (child.topChildren) this.eachFind(child.topChildren, false);
7874
7926
  this.eachFind(child.children, child.__onlyHitMask);
7875
7927
  if (child.isBranchLeaf) this.hitChild(child, point);
@@ -8446,7 +8498,7 @@ const UIRender = {
8446
8498
  if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke, this, canvas, options) : Paint.stroke(stroke, this, canvas, options);
8447
8499
  }
8448
8500
  } else {
8449
- if (data.__pathInputed) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8501
+ if (data.__pathForRender) drawFast(this, canvas, options); else this.__drawFast(canvas, options);
8450
8502
  }
8451
8503
  },
8452
8504
  __drawShape(canvas, options) {
@@ -8570,7 +8622,7 @@ let UI = UI_1 = class UI extends Leaf {
8570
8622
  getPath(curve, pathForRender) {
8571
8623
  this.__layout.update();
8572
8624
  let path = pathForRender ? this.__.__pathForRender : this.__.path;
8573
- if (!path) pen.set(path = []), this.__drawPathByBox(pen);
8625
+ if (!path) pen.set(path = []), this.__drawPathByBox(pen, !pathForRender);
8574
8626
  return curve ? PathConvert.toCanvasData(path, true) : path;
8575
8627
  }
8576
8628
  getPathString(curve, pathForRender, floatLength) {
@@ -8598,17 +8650,18 @@ let UI = UI_1 = class UI extends Leaf {
8598
8650
  }
8599
8651
  __drawPath(canvas) {
8600
8652
  canvas.beginPath();
8601
- this.__drawPathByData(canvas, this.__.path);
8653
+ this.__drawPathByData(canvas, this.__.path, true);
8602
8654
  }
8603
- __drawPathByData(drawer, data) {
8604
- data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer);
8655
+ __drawPathByData(drawer, data, ignoreCornerRadius) {
8656
+ data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer, ignoreCornerRadius);
8605
8657
  }
8606
- __drawPathByBox(drawer) {
8658
+ __drawPathByBox(drawer, ignoreCornerRadius) {
8607
8659
  const {x: x, y: y, width: width, height: height} = this.__layout.boxBounds;
8608
- if (this.__.cornerRadius) {
8660
+ if (this.__.cornerRadius && !ignoreCornerRadius) {
8609
8661
  const {cornerRadius: cornerRadius} = this.__;
8610
8662
  drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [ cornerRadius ] : cornerRadius);
8611
8663
  } else drawer.rect(x, y, width, height);
8664
+ drawer.closePath();
8612
8665
  }
8613
8666
  drawImagePlaceholder(_paint, canvas, renderOptions) {
8614
8667
  Paint.fill(this.__.placeholderColor, this, canvas, renderOptions);
@@ -8877,6 +8930,9 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8877
8930
  get layoutLocked() {
8878
8931
  return !this.layouter.running;
8879
8932
  }
8933
+ get view() {
8934
+ return this.canvas && this.canvas.view;
8935
+ }
8880
8936
  get FPS() {
8881
8937
  return this.renderer ? this.renderer.FPS : 60;
8882
8938
  }
@@ -8928,7 +8984,6 @@ let Leafer = Leafer_1 = class Leafer extends Group {
8928
8984
  this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
8929
8985
  if (this.isApp) this.__setApp();
8930
8986
  this.__checkAutoLayout();
8931
- this.view = canvas.view;
8932
8987
  if (!parentApp) {
8933
8988
  this.selector = Creator.selector(this);
8934
8989
  this.interaction = Creator.interaction(this, canvas, this.selector, config);
@@ -9208,7 +9263,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
9208
9263
  if (this.canvasManager) this.canvasManager.destroy();
9209
9264
  }
9210
9265
  if (this.canvas) this.canvas.destroy();
9211
- this.config.view = this.view = this.parentApp = null;
9266
+ this.config.view = this.parentApp = null;
9212
9267
  if (this.userConfig) this.userConfig.view = null;
9213
9268
  super.destroy();
9214
9269
  setTimeout(() => {
@@ -9392,7 +9447,6 @@ let Ellipse = class Ellipse extends UI {
9392
9447
  if (startAngle || endAngle) {
9393
9448
  if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false);
9394
9449
  ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9395
- if (innerRadius < 1) closePath$2(path);
9396
9450
  } else {
9397
9451
  if (innerRadius < 1) {
9398
9452
  ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius);
@@ -9400,16 +9454,16 @@ let Ellipse = class Ellipse extends UI {
9400
9454
  }
9401
9455
  ellipse(path, rx, ry, rx, ry, 0, 360, 0, true);
9402
9456
  }
9403
- if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9404
9457
  } else {
9405
9458
  if (startAngle || endAngle) {
9406
9459
  moveTo$3(path, rx, ry);
9407
9460
  ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9408
- closePath$2(path);
9409
9461
  } else {
9410
9462
  ellipse(path, rx, ry, rx, ry);
9411
9463
  }
9412
9464
  }
9465
+ closePath$2(path);
9466
+ if (Platform.ellipseToCurve) this.__.path = this.getPath(true);
9413
9467
  }
9414
9468
  };
9415
9469
 
@@ -10299,6 +10353,8 @@ MoveEvent.START = "move.start";
10299
10353
 
10300
10354
  MoveEvent.MOVE = "move";
10301
10355
 
10356
+ MoveEvent.DRAG_ANIMATE = "move.drag_animate";
10357
+
10302
10358
  MoveEvent.END = "move.end";
10303
10359
 
10304
10360
  MoveEvent = __decorate([ registerUIEvent() ], MoveEvent);
@@ -10397,6 +10453,7 @@ const InteractionHelper = {
10397
10453
  ctrlKey: e.ctrlKey,
10398
10454
  shiftKey: e.shiftKey,
10399
10455
  metaKey: e.metaKey,
10456
+ time: Date.now(),
10400
10457
  buttons: isUndefined(e.buttons) ? 1 : e.buttons === 0 ? pointerUpButtons : e.buttons,
10401
10458
  origin: e
10402
10459
  };
@@ -10432,6 +10489,7 @@ const {getDragEventData: getDragEventData, getDropEventData: getDropEventData, g
10432
10489
 
10433
10490
  class Dragger {
10434
10491
  constructor(interaction) {
10492
+ this.dragDataList = [];
10435
10493
  this.interaction = interaction;
10436
10494
  }
10437
10495
  setDragData(data) {
@@ -10494,6 +10552,7 @@ class Dragger {
10494
10552
  this.dragData = getDragEventData(downData, dragData, data);
10495
10553
  if (throughPath) this.dragData.throughPath = throughPath;
10496
10554
  this.dragData.path = path;
10555
+ this.dragDataList.push(this.dragData);
10497
10556
  if (this.moving) {
10498
10557
  data.moving = true;
10499
10558
  this.dragData.moveType = "drag";
@@ -10544,9 +10603,9 @@ class Dragger {
10544
10603
  interaction.emit(DragEvent$1.ENTER, data, path, dragEnterPath);
10545
10604
  this.dragEnterPath = path;
10546
10605
  }
10547
- dragEnd(data, speed) {
10606
+ dragEnd(data) {
10548
10607
  if (!this.dragging && !this.moving) return;
10549
- if (this.checkDragEndAnimate(data, speed)) return;
10608
+ if (this.checkDragEndAnimate(data)) return;
10550
10609
  this.dragEndReal(data);
10551
10610
  }
10552
10611
  dragEndReal(data) {
@@ -10588,11 +10647,13 @@ class Dragger {
10588
10647
  }
10589
10648
  dragReset() {
10590
10649
  DragEvent$1.list = DragEvent$1.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null;
10650
+ this.dragDataList = [];
10591
10651
  }
10592
10652
  checkDragEndAnimate(_data, _speed) {
10593
10653
  return false;
10594
10654
  }
10595
10655
  animate(_func, _off) {}
10656
+ stopAnimate() {}
10596
10657
  checkDragOut(_data) {}
10597
10658
  autoMoveOnDragOut(_data) {}
10598
10659
  autoMoveCancel() {}
@@ -10986,6 +11047,9 @@ class InteractionBase {
10986
11047
  this.pointerHover(hoverData);
10987
11048
  }
10988
11049
  }
11050
+ stopDragAnimate() {
11051
+ this.dragger.stopAnimate();
11052
+ }
10989
11053
  updateDownData(data, options, merge) {
10990
11054
  const {downData: downData} = this;
10991
11055
  if (!data && downData) data = downData;
@@ -11169,7 +11233,7 @@ Platform.getSelector = function(leaf) {
11169
11233
  return leaf.leafer ? leaf.leafer.selector : Platform.selector || (Platform.selector = Creator.selector());
11170
11234
  };
11171
11235
 
11172
- const {toInnerRadiusPointOf: toInnerRadiusPointOf, copy: copy$2, setRadius: setRadius} = PointHelper;
11236
+ const {toInnerRadiusPointOf: toInnerRadiusPointOf, copyRadiusPoint: copyRadiusPoint} = PointHelper;
11173
11237
 
11174
11238
  const {hitRadiusPoint: hitRadiusPoint, hitPoint: hitPoint} = BoundsHelper;
11175
11239
 
@@ -11179,8 +11243,7 @@ const leaf = Leaf.prototype;
11179
11243
 
11180
11244
  leaf.hit = function(worldPoint, hitRadius = 0) {
11181
11245
  this.updateLayout();
11182
- copy$2(worldRadiusPoint, worldPoint);
11183
- setRadius(worldRadiusPoint, hitRadius);
11246
+ copyRadiusPoint(worldRadiusPoint, worldPoint, hitRadius);
11184
11247
  const world = this.__world;
11185
11248
  if (hitRadius ? !hitRadiusPoint(world, worldRadiusPoint) : !hitPoint(world, worldRadiusPoint)) return false;
11186
11249
  return this.isBranch ? Platform.getSelector(this).hitPoint(Object.assign({}, worldRadiusPoint), hitRadius, {
@@ -11188,14 +11251,14 @@ leaf.hit = function(worldPoint, hitRadius = 0) {
11188
11251
  }) : this.__hitWorld(worldRadiusPoint);
11189
11252
  };
11190
11253
 
11191
- leaf.__hitWorld = function(point) {
11254
+ leaf.__hitWorld = function(point, forceHitFill) {
11192
11255
  const data = this.__;
11193
11256
  if (!data.hitSelf) return false;
11194
11257
  const world = this.__world, layout = this.__layout;
11195
11258
  const isSmall = world.width < 10 && world.height < 10;
11196
11259
  if (data.hitRadius) {
11197
- copy$2(inner, point), point = inner;
11198
- setRadius(point, data.hitRadius);
11260
+ copyRadiusPoint(inner, point, data.hitRadius);
11261
+ point = inner;
11199
11262
  }
11200
11263
  toInnerRadiusPointOf(point, world, inner);
11201
11264
  if (data.hitBox || isSmall) {
@@ -11206,7 +11269,7 @@ leaf.__hitWorld = function(point) {
11206
11269
  this.__updateHitCanvas();
11207
11270
  if (!layout.boundsChanged) layout.hitCanvasChanged = false;
11208
11271
  }
11209
- return this.__hit(inner);
11272
+ return this.__hit(inner, forceHitFill);
11210
11273
  };
11211
11274
 
11212
11275
  leaf.__hitFill = function(inner) {
@@ -11273,12 +11336,12 @@ ui$1.__updateHitCanvas = function() {
11273
11336
  h.setStrokeOptions(data);
11274
11337
  };
11275
11338
 
11276
- ui$1.__hit = function(inner) {
11339
+ ui$1.__hit = function(inner, forceHitFill) {
11277
11340
  if (this.__box && this.__box.__hit(inner)) return true;
11278
11341
  const data = this.__;
11279
11342
  if (data.__isHitPixel && this.__hitPixel(inner)) return true;
11280
11343
  const {hitFill: hitFill} = data;
11281
- const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all";
11344
+ const needHitFillPath = (data.fill || data.__isCanvas) && (hitFill === "path" || hitFill === "pixel" && !(data.__isAlphaPixelFill || data.__isCanvas)) || hitFill === "all" || forceHitFill;
11282
11345
  if (needHitFillPath && this.__hitFill(inner)) return true;
11283
11346
  const {hitStroke: hitStroke, __maxStrokeWidth: strokeWidth} = data;
11284
11347
  const needHitStrokePath = data.stroke && (hitStroke === "path" || hitStroke === "pixel" && !data.__isAlphaPixelStroke) || hitStroke === "all";
@@ -12331,10 +12394,12 @@ const {getFloorScale: getFloorScale} = MathHelper, {abs: abs$1} = Math;
12331
12394
  function createPatternTask(paint, ui, canvas, renderOptions) {
12332
12395
  if (!paint.patternTask) {
12333
12396
  paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function*() {
12334
- paint.patternTask = null;
12335
- if (canvas.bounds.hit(ui.__nowWorld)) PaintImage.createPattern(paint, ui, canvas, renderOptions);
12397
+ PaintImage.createPattern(paint, ui, canvas, renderOptions);
12336
12398
  ui.forceUpdate("surface");
12337
- }), 300);
12399
+ }), 0, () => {
12400
+ paint.patternTask = null;
12401
+ return canvas.bounds.hit(ui.__nowWorld);
12402
+ });
12338
12403
  }
12339
12404
  }
12340
12405
 
@@ -13363,4 +13428,4 @@ Object.assign(Creator, {
13363
13428
 
13364
13429
  useCanvas();
13365
13430
 
13366
- export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, 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, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
13431
+ export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, MyTouchEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathCommandNodeHelper, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNodeHandleType, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent$1 as PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, TouchEvent, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, 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, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$3 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };