leafer-ui 2.1.5 → 2.1.7

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.
@@ -292,7 +292,7 @@ const FourNumberHelper = {
292
292
  return to;
293
293
  },
294
294
  setTemp(top, right, bottom, left) {
295
- return set$2(tempFour, top, right, bottom, left);
295
+ return set$3(tempFour, top, right, bottom, left);
296
296
  },
297
297
  toTempAB(a, b, change) {
298
298
  tempTo = change ? isNumber(a) ? b : a : [];
@@ -332,22 +332,22 @@ const FourNumberHelper = {
332
332
  max(t, other, change) {
333
333
  if (isNumber(t) && isNumber(other)) return max$5(t, other);
334
334
  toTempAB(t, other, change);
335
- 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]));
335
+ return set$3(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]));
336
336
  },
337
337
  add(t, other, change) {
338
338
  if (isNumber(t) && isNumber(other)) return t + other;
339
339
  toTempAB(t, other, change);
340
- return set$2(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
340
+ return set$3(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
341
341
  },
342
342
  swapAndScale(t, scaleX, scaleY, change) {
343
343
  if (isNumber(t)) return scaleX === scaleY ? t * scaleX : [ t * scaleY, t * scaleX ];
344
344
  const to = change ? t : [];
345
345
  const [top, right, bottom, left] = t.length === 4 ? t : get$5(t);
346
- return set$2(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
346
+ return set$3(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
347
347
  }
348
348
  };
349
349
 
350
- const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
350
+ const {set: set$3, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
351
351
 
352
352
  const {round: round$3, pow: pow$1, max: max$4, floor: floor$2, PI: PI$3} = Math;
353
353
 
@@ -472,7 +472,7 @@ const {sin: sin$5, cos: cos$5, acos: acos, sqrt: sqrt$3} = Math;
472
472
 
473
473
  const {float: float$3} = MathHelper;
474
474
 
475
- const tempPoint$4 = {};
475
+ const tempPoint$5 = {};
476
476
 
477
477
  function getWorld() {
478
478
  return Object.assign(Object.assign(Object.assign({}, getMatrixData()), getBoundsData()), {
@@ -531,8 +531,8 @@ const MatrixHelper = {
531
531
  to.f = t.f * pixelRatio;
532
532
  },
533
533
  scaleOfOuter(t, origin, scaleX, scaleY) {
534
- M$6.toInnerPoint(t, origin, tempPoint$4);
535
- M$6.scaleOfInner(t, tempPoint$4, scaleX, scaleY);
534
+ M$6.toInnerPoint(t, origin, tempPoint$5);
535
+ M$6.scaleOfInner(t, tempPoint$5, scaleX, scaleY);
536
536
  },
537
537
  scaleOfInner(t, origin, scaleX, scaleY = scaleX) {
538
538
  M$6.translateInner(t, origin.x, origin.y);
@@ -550,8 +550,8 @@ const MatrixHelper = {
550
550
  t.d = c * sinR + d * cosR;
551
551
  },
552
552
  rotateOfOuter(t, origin, rotation) {
553
- M$6.toInnerPoint(t, origin, tempPoint$4);
554
- M$6.rotateOfInner(t, tempPoint$4, rotation);
553
+ M$6.toInnerPoint(t, origin, tempPoint$5);
554
+ M$6.rotateOfInner(t, tempPoint$5, rotation);
555
555
  },
556
556
  rotateOfInner(t, origin, rotation) {
557
557
  M$6.translateInner(t, origin.x, origin.y);
@@ -572,8 +572,8 @@ const MatrixHelper = {
572
572
  }
573
573
  },
574
574
  skewOfOuter(t, origin, skewX, skewY) {
575
- M$6.toInnerPoint(t, origin, tempPoint$4);
576
- M$6.skewOfInner(t, tempPoint$4, skewX, skewY);
575
+ M$6.toInnerPoint(t, origin, tempPoint$5);
576
+ M$6.skewOfInner(t, tempPoint$5, skewX, skewY);
577
577
  },
578
578
  skewOfInner(t, origin, skewX, skewY = 0) {
579
579
  M$6.translateInner(t, origin.x, origin.y);
@@ -774,7 +774,7 @@ const {float: float$2} = MathHelper;
774
774
 
775
775
  const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
776
776
 
777
- const {sin: sin$4, cos: cos$4, abs: abs$5, sqrt: sqrt$2, atan2: atan2$2, min: min$2, round: round$2} = Math;
777
+ const {sin: sin$4, cos: cos$4, abs: abs$6, sqrt: sqrt$2, atan2: atan2$2, min: min$2, round: round$2} = Math;
778
778
 
779
779
  const PointHelper = {
780
780
  defaultPoint: getPointData(),
@@ -811,15 +811,15 @@ const PointHelper = {
811
811
  t.x += (t.x - origin.x) * (scaleX - 1);
812
812
  t.y += (t.y - origin.y) * (scaleY - 1);
813
813
  },
814
- rotate(t, rotation, origin) {
814
+ rotate(t, rotation, origin, radiusX = 1, radiusY = 1) {
815
815
  if (!origin) origin = P$5.defaultPoint;
816
816
  rotation *= OneRadian;
817
817
  const cosR = cos$4(rotation);
818
818
  const sinR = sin$4(rotation);
819
- const rx = t.x - origin.x;
820
- const ry = t.y - origin.y;
821
- t.x = origin.x + rx * cosR - ry * sinR;
822
- t.y = origin.y + rx * sinR + ry * cosR;
819
+ const rx = (t.x - origin.x) / radiusX;
820
+ const ry = (t.y - origin.y) / radiusY;
821
+ t.x = origin.x + (rx * cosR - ry * sinR) * radiusX;
822
+ t.y = origin.y + (rx * sinR + ry * cosR) * radiusY;
823
823
  },
824
824
  tempToInnerOf(t, matrix) {
825
825
  const {tempPoint: temp} = P$5;
@@ -872,15 +872,15 @@ const PointHelper = {
872
872
  return getDistanceFrom(t.x, t.y, point.x, point.y);
873
873
  },
874
874
  getDistanceFrom(x1, y1, x2, y2) {
875
- const x = abs$5(x2 - x1);
876
- const y = abs$5(y2 - y1);
875
+ const x = abs$6(x2 - x1);
876
+ const y = abs$6(y2 - y1);
877
877
  return sqrt$2(x * x + y * y);
878
878
  },
879
879
  getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
880
880
  return min$2(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
881
881
  },
882
- getAngle(t, to) {
883
- return getAtan2(t, to) / OneRadian;
882
+ getAngle(t, to, radiusX, radiusY) {
883
+ return getAtan2(t, to, radiusX, radiusY) / OneRadian;
884
884
  },
885
885
  getRotation(t, origin, to, toOrigin) {
886
886
  if (!toOrigin) toOrigin = origin;
@@ -894,8 +894,8 @@ const PointHelper = {
894
894
  const d = toY - toOriginY;
895
895
  return Math.atan2(a * d - b * c, a * c + b * d);
896
896
  },
897
- getAtan2(t, to) {
898
- return atan2$2(to.y - t.y, to.x - t.x);
897
+ getAtan2(t, to, radiusX = 1, radiusY = 1) {
898
+ return atan2$2((to.y - t.y) / radiusY, (to.x - t.x) / radiusX);
899
899
  },
900
900
  getDistancePoint(t, to, distance, changeTo, fromTo) {
901
901
  const r = getAtan2(t, to);
@@ -995,7 +995,7 @@ class Point {
995
995
  }
996
996
  }
997
997
 
998
- const tempPoint$3 = new Point;
998
+ const tempPoint$4 = new Point;
999
999
 
1000
1000
  class Matrix {
1001
1001
  constructor(a, b, c, d, e, f) {
@@ -2702,15 +2702,15 @@ const RectHelper = {
2702
2702
  }
2703
2703
  };
2704
2704
 
2705
- const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil, abs: abs$4, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2705
+ const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil, abs: abs$5, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2706
2706
 
2707
2707
  const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
2708
2708
 
2709
- const {set: set$1, toNumberPoints: toNumberPoints} = PointHelper;
2709
+ const {set: set$2, toNumberPoints: toNumberPoints} = PointHelper;
2710
2710
 
2711
2711
  const {M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5} = PathCommandMap;
2712
2712
 
2713
- const tempPoint$2 = {};
2713
+ const tempPoint$3 = {};
2714
2714
 
2715
2715
  const BezierHelper = {
2716
2716
  points(data, originPoints, curve, close) {
@@ -2779,14 +2779,14 @@ const BezierHelper = {
2779
2779
  const lenCB = hypot(CBx, CBy);
2780
2780
  let totalRadian = endRadian - startRadian;
2781
2781
  if (totalRadian < 0) totalRadian += PI2;
2782
- if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$4(totalRadian - PI$2) < 1e-12) {
2782
+ if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$5(totalRadian - PI$2) < 1e-12) {
2783
2783
  if (data) data.push(L$6, x1, y1);
2784
2784
  if (setPointBounds) {
2785
2785
  setPoint$1(setPointBounds, fromX, fromY);
2786
2786
  addPoint$1(setPointBounds, x1, y1);
2787
2787
  }
2788
- if (setStartPoint) set$1(setStartPoint, fromX, fromY);
2789
- if (setEndPoint) set$1(setEndPoint, x1, y1);
2788
+ if (setStartPoint) set$2(setStartPoint, fromX, fromY);
2789
+ if (setEndPoint) set$2(setEndPoint, x1, y1);
2790
2790
  return;
2791
2791
  }
2792
2792
  const anticlockwise = BAx * CBy - CBx * BAy < 0;
@@ -2812,7 +2812,7 @@ const BezierHelper = {
2812
2812
  let totalRadian = endRadian - startRadian;
2813
2813
  if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
2814
2814
  if (anticlockwise) totalRadian -= PI2;
2815
- const parts = ceil(abs$4(totalRadian / PI_2));
2815
+ const parts = ceil(abs$5(totalRadian / PI_2));
2816
2816
  const partRadian = totalRadian / parts;
2817
2817
  const partRadian4Sin = sin$3(partRadian / 4);
2818
2818
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -2826,7 +2826,7 @@ const BezierHelper = {
2826
2826
  let fromX = cx + x, fromY = cy + y;
2827
2827
  if (data) data.push(data.length ? L$6 : M$5, fromX, fromY);
2828
2828
  if (setPointBounds) setPoint$1(setPointBounds, fromX, fromY);
2829
- if (setStartPoint) set$1(setStartPoint, fromX, fromY);
2829
+ if (setStartPoint) set$2(setStartPoint, fromX, fromY);
2830
2830
  for (let i = 0; i < parts; i++) {
2831
2831
  endCos = cos$3(endRadian);
2832
2832
  endSin = sin$3(endRadian);
@@ -2845,7 +2845,7 @@ const BezierHelper = {
2845
2845
  startRadian = endRadian;
2846
2846
  endRadian += partRadian;
2847
2847
  }
2848
- if (setEndPoint) set$1(setEndPoint, cx + x, cy + y);
2848
+ if (setEndPoint) set$2(setEndPoint, cx + x, cy + y);
2849
2849
  },
2850
2850
  quadraticCurveTo(data, fromX, fromY, x1, y1, toX, toY) {
2851
2851
  data.push(C$4, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
@@ -2881,8 +2881,8 @@ const BezierHelper = {
2881
2881
  addMode ? addPoint$1(pointBounds, fromX, fromY) : setPoint$1(pointBounds, fromX, fromY);
2882
2882
  addPoint$1(pointBounds, toX, toY);
2883
2883
  for (let i = 0, len = tList.length; i < len; i++) {
2884
- getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$2);
2885
- addPoint$1(pointBounds, tempPoint$2.x, tempPoint$2.y);
2884
+ getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$3);
2885
+ addPoint$1(pointBounds, tempPoint$3.x, tempPoint$3.y);
2886
2886
  }
2887
2887
  },
2888
2888
  getPointAndSet(t, fromX, fromY, x1, y1, x2, y2, toX, toY, setPoint) {
@@ -3321,7 +3321,7 @@ const {M: M$3, L: L$4, C: C$2, Q: Q$2, Z: Z$3, N: N$2, D: D$3, X: X$2, G: G$2, F
3321
3321
 
3322
3322
  const {getMinDistanceFrom: getMinDistanceFrom, getRadianFrom: getRadianFrom} = PointHelper;
3323
3323
 
3324
- const {tan: tan, min: min$1, abs: abs$3} = Math;
3324
+ const {tan: tan, min: min$1, abs: abs$4} = Math;
3325
3325
 
3326
3326
  const startPoint = {};
3327
3327
 
@@ -3381,7 +3381,7 @@ const PathCommandDataHelper = {
3381
3381
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY, fullRadius) {
3382
3382
  if (!isUndefined(lastX)) {
3383
3383
  const r = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2) / (fullRadius ? 1 : 2);
3384
- radius = min$1(radius, min$1(r, r * abs$3(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3384
+ radius = min$1(radius, min$1(r, r * abs$4(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3385
3385
  }
3386
3386
  data.push(U$2, x1, y1, x2, y2, radius);
3387
3387
  },
@@ -3722,7 +3722,7 @@ const {arcTo: arcTo} = PathCommandDataHelper;
3722
3722
 
3723
3723
  const PathCorner = {
3724
3724
  smooth(data, cornerRadius, _cornerSmoothing) {
3725
- let command, lastCommand, commandLen;
3725
+ let command, lastCommand, commandLen, startXIndex, startYIndex, smoothLen;
3726
3726
  let i = 0, x = 0, y = 0, startX = 0, startY = 0, secondX = 0, secondY = 0, lastX = 0, lastY = 0;
3727
3727
  if (isArray(cornerRadius)) cornerRadius = cornerRadius[0] || 0;
3728
3728
  const len = data.length, three = len === 9;
@@ -3731,6 +3731,11 @@ const PathCorner = {
3731
3731
  command = data[i];
3732
3732
  switch (command) {
3733
3733
  case M:
3734
+ smoothLen = smooth.length;
3735
+ if (smoothLen && lastCommand !== Z) {
3736
+ smooth[startXIndex] = startX;
3737
+ smooth[startYIndex] = startY;
3738
+ }
3734
3739
  startX = lastX = data[i + 1];
3735
3740
  startY = lastY = data[i + 2];
3736
3741
  i += 3;
@@ -3741,6 +3746,8 @@ const PathCorner = {
3741
3746
  } else {
3742
3747
  smooth.push(M, startX, startY);
3743
3748
  }
3749
+ startXIndex = smoothLen + 1;
3750
+ startYIndex = smoothLen + 2;
3744
3751
  break;
3745
3752
 
3746
3753
  case L$1:
@@ -3779,8 +3786,8 @@ const PathCorner = {
3779
3786
  lastCommand = command;
3780
3787
  }
3781
3788
  if (command !== Z) {
3782
- smooth[1] = startX;
3783
- smooth[2] = startY;
3789
+ smooth[startXIndex] = startX;
3790
+ smooth[startYIndex] = startY;
3784
3791
  }
3785
3792
  return smooth;
3786
3793
  }
@@ -6031,7 +6038,7 @@ const LeafDataProxy = {
6031
6038
 
6032
6039
  const {setLayout: setLayout, multiplyParent: multiplyParent$2, translateInner: translateInner, defaultWorld: defaultWorld} = MatrixHelper;
6033
6040
 
6034
- const {toPoint: toPoint$3, tempPoint: tempPoint$1} = AroundHelper;
6041
+ const {toPoint: toPoint$3, tempPoint: tempPoint$2} = AroundHelper;
6035
6042
 
6036
6043
  const LeafMatrix = {
6037
6044
  __updateWorldMatrix() {
@@ -6052,8 +6059,8 @@ const LeafMatrix = {
6052
6059
  local.e = data.x + data.offsetX;
6053
6060
  local.f = data.y + data.offsetY;
6054
6061
  if (data.around || data.origin) {
6055
- toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$1);
6056
- translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
6062
+ toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$2);
6063
+ translateInner(local, -tempPoint$2.x, -tempPoint$2.y, !data.around);
6057
6064
  }
6058
6065
  }
6059
6066
  this.__layout.matrixChanged = undefined;
@@ -6976,7 +6983,7 @@ class LeafLevelList {
6976
6983
  }
6977
6984
  }
6978
6985
 
6979
- const version = "2.1.5";
6986
+ const version = "2.1.7";
6980
6987
 
6981
6988
  const debug$5 = Debug.get("LeaferCanvas");
6982
6989
 
@@ -7827,7 +7834,7 @@ class Renderer {
7827
7834
 
7828
7835
  Renderer.clipSpread = 10;
7829
7836
 
7830
- const tempPoint = {};
7837
+ const tempPoint$1 = {};
7831
7838
 
7832
7839
  const {copyRadiusPoint: copyRadiusPoint$1} = PointHelper;
7833
7840
 
@@ -7962,7 +7969,7 @@ class Picker {
7962
7969
  for (let i = len - 1; i > -1; i--) {
7963
7970
  child = children[i], data = child.__;
7964
7971
  if (!data.visible || hitMask && !data.mask) continue;
7965
- hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint, point, data.hitRadius) : point);
7972
+ hit = hitRadiusPoint$1(child.__world, data.hitRadius ? copyRadiusPoint$1(tempPoint$1, point, data.hitRadius) : point);
7966
7973
  if (child.isBranch) {
7967
7974
  if (hit || child.__ignoreHitWorld) {
7968
7975
  if (child.isBranchLeaf && data.__clipAfterFill && !child.__hitWorld(point, true)) continue;
@@ -8736,6 +8743,7 @@ let UI = UI_1 = class UI extends Leaf {
8736
8743
  this.set(keyframe);
8737
8744
  return Plugin.need("animate");
8738
8745
  }
8746
+ killAnimate(_type, _nextStyle) {}
8739
8747
  export(_filename, _options) {
8740
8748
  return Plugin.need("export");
8741
8749
  }
@@ -9495,32 +9503,53 @@ __decorate([ affectRenderBoundsType("hide") ], Frame.prototype, "overflow", void
9495
9503
 
9496
9504
  Frame = __decorate([ registerUI() ], Frame);
9497
9505
 
9498
- const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper;
9506
+ const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper, {tempPoint: tempPoint, set: set$1, rotate: rotate$2} = PointHelper, {abs: abs$3} = Math, tempCenter = {};
9499
9507
 
9500
9508
  let Ellipse = class Ellipse extends UI {
9501
9509
  get __tag() {
9502
9510
  return "Ellipse";
9503
9511
  }
9504
9512
  __updatePath() {
9505
- const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = data;
9513
+ const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle, closed: closed} = data;
9506
9514
  const rx = width / 2, ry = height / 2;
9507
9515
  const path = data.path = [];
9508
- let open;
9516
+ let open, hasAngle, closedAngle;
9517
+ if (startAngle || endAngle) hasAngle = true;
9518
+ if (hasAngle) closedAngle = abs$3(endAngle - startAngle) === 360;
9509
9519
  if (innerRadius) {
9510
- if (startAngle || endAngle) {
9511
- if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9512
- ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9520
+ const drawInnerEllipse = innerRadius < 1 || closed;
9521
+ let outerStartAngle = startAngle, outerEndAngle = endAngle, outerAnticlockwise;
9522
+ if (hasAngle) {
9523
+ if (drawInnerEllipse) {
9524
+ ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle);
9525
+ if (closedAngle) {
9526
+ set$1(tempPoint, width, ry);
9527
+ set$1(tempCenter, rx, ry);
9528
+ rotate$2(tempPoint, endAngle, tempCenter, rx, ry);
9529
+ moveTo$3(path, tempPoint.x, tempPoint.y);
9530
+ }
9531
+ outerStartAngle = endAngle;
9532
+ outerEndAngle = startAngle;
9533
+ outerAnticlockwise = true;
9534
+ } else {
9535
+ if (!closedAngle) open = true;
9536
+ }
9513
9537
  } else {
9514
- if (innerRadius < 1) {
9538
+ if (drawInnerEllipse) {
9515
9539
  ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius);
9540
+ closePath$2(path);
9516
9541
  moveTo$3(path, width, ry);
9542
+ outerStartAngle = 360;
9543
+ outerAnticlockwise = true;
9544
+ } else {
9545
+ outerEndAngle = 360;
9517
9546
  }
9518
- ellipse(path, rx, ry, rx, ry, 0, 360, 0, true);
9519
9547
  }
9548
+ ellipse(path, rx, ry, rx, ry, 0, outerStartAngle, outerEndAngle, outerAnticlockwise);
9520
9549
  } else {
9521
- if (startAngle || endAngle) {
9522
- moveTo$3(path, rx, ry);
9523
- ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9550
+ if (hasAngle) {
9551
+ if (!closedAngle) moveTo$3(path, rx, ry);
9552
+ ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle);
9524
9553
  } else {
9525
9554
  ellipse(path, rx, ry, rx, ry);
9526
9555
  }
@@ -12236,6 +12265,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
12236
12265
  if (data.__autoSide) {
12237
12266
  ui.forceUpdate("width");
12238
12267
  LeafHelper.updateBounds(ui);
12268
+ ui.__layout.boundsChanged = true;
12239
12269
  if (ui.__proxyData) {
12240
12270
  ui.setProxyAttr("width", data.width);
12241
12271
  ui.setProxyAttr("height", data.height);
@@ -12243,7 +12273,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
12243
12273
  needUpdate = false;
12244
12274
  }
12245
12275
  }
12246
- if (paint.mode === "brush") PaintImage.brush(leafPaint, ui, attrName);
12276
+ if (paint.mode === "brush") PaintImage.brush(ui, attrName, leafPaint);
12247
12277
  if (!leafPaint.data) {
12248
12278
  PaintImage.createData(leafPaint, image, paint, boxBounds);
12249
12279
  const {transform: transform} = leafPaint.data, {opacity: opacity} = paint;
@@ -12338,8 +12368,9 @@ function getPatternData(paint, box, image) {
12338
12368
  break;
12339
12369
 
12340
12370
  case "repeat":
12341
- case "brush":
12342
12371
  if (!sameBox || scaleX || rotation || skew) PaintImage.repeatMode(data, box, width, height, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, align, paint.freeTransform);
12372
+
12373
+ case "brush":
12343
12374
  if (!repeat) data.repeat = "repeat";
12344
12375
  const count = isObject(repeat);
12345
12376
  if (gap || count) data.gap = getGapData(gap, count && repeat, tempImage.width, tempImage.height, box);
@@ -12350,7 +12381,7 @@ function getPatternData(paint, box, image) {
12350
12381
  default:
12351
12382
  if (scaleX) PaintImage.fillOrFitMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
12352
12383
  }
12353
- if (!data.transform) {
12384
+ if (!data.transform && mode !== "brush") {
12354
12385
  if (box.x || box.y) translate$1(data.transform = get$3(), box.x, box.y);
12355
12386
  }
12356
12387
  if (scaleX) {
@@ -12479,8 +12510,9 @@ function createPattern(paint, ui, canvas, renderOptions) {
12479
12510
  let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
12480
12511
  if (paint.patternId !== id && !ui.destroyed) {
12481
12512
  if (!(Platform.image.isLarge(paint.image, scaleX, scaleY) && !paint.data.repeat)) {
12482
- const {image: image, brush: brush, data: data} = paint, {opacity: opacity} = paint.originPaint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
12483
- let imageMatrix, xGap, yGap, {width: width, height: height} = image;
12513
+ const {image: image, brush: brush, data: data} = paint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
12514
+ let imageMatrix, xGap, yGap, {width: width, height: height} = image, {opacity: opacity} = paint.originPaint;
12515
+ if (brush || opacity === 1) opacity = undefined;
12484
12516
  if (fixScale) scaleX *= fixScale, scaleY *= fixScale;
12485
12517
  width *= scaleX;
12486
12518
  height *= scaleY;
@@ -13513,4 +13545,4 @@ Object.assign(Creator, {
13513
13545
 
13514
13546
  useCanvas();
13515
13547
 
13516
- 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, LeaferFilm, LeaferImage, LeaferVideo, 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, UnitConvertHelper, 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 };
13548
+ 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, LeaferFilm, LeaferImage, LeaferVideo, 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, UnitConvertHelper, 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$4 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };