@leafer-draw/worker 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$4(t, other);
334
334
  toTempAB(t, other, change);
335
- return set$2(tempTo, max$4(tempA[0], tempB[0]), max$4(tempA[1], tempB[1]), max$4(tempA[2], tempB[2]), max$4(tempA[3], tempB[3]));
335
+ return set$3(tempTo, max$4(tempA[0], tempB[0]), max$4(tempA[1], tempB[1]), max$4(tempA[2], tempB[2]), max$4(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$3, 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$2} = MathHelper;
474
474
 
475
- const tempPoint$3 = {};
475
+ const tempPoint$4 = {};
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$3);
535
- M$6.scaleOfInner(t, tempPoint$3, scaleX, scaleY);
534
+ M$6.toInnerPoint(t, origin, tempPoint$4);
535
+ M$6.scaleOfInner(t, tempPoint$4, 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$3);
554
- M$6.rotateOfInner(t, tempPoint$3, rotation);
553
+ M$6.toInnerPoint(t, origin, tempPoint$4);
554
+ M$6.rotateOfInner(t, tempPoint$4, 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$3);
576
- M$6.skewOfInner(t, tempPoint$3, skewX, skewY);
575
+ M$6.toInnerPoint(t, origin, tempPoint$4);
576
+ M$6.skewOfInner(t, tempPoint$4, 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$1} = 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$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2} = Math;
777
+ const {sin: sin$4, cos: cos$4, abs: abs$5, sqrt: sqrt$2, atan2: atan2$2, min: min$1, 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$4(x2 - x1);
876
- const y = abs$4(y2 - y1);
875
+ const x = abs$5(x2 - x1);
876
+ const y = abs$5(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$1(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$2 = new Point;
998
+ const tempPoint$3 = 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$3, 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$4, 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$1 = {};
2713
+ const tempPoint$2 = {};
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$3(totalRadian - PI$2) < 1e-12) {
2782
+ if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$4(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$3(totalRadian / PI_2));
2815
+ const parts = ceil(abs$4(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$1);
2885
- addPoint$1(pointBounds, tempPoint$1.x, tempPoint$1.y);
2884
+ getPointAndSet(tList[i], fromX, fromY, x1, y1, x2, y2, toX, toY, tempPoint$2);
2885
+ addPoint$1(pointBounds, tempPoint$2.x, tempPoint$2.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$2, 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, abs: abs$2} = Math;
3324
+ const {tan: tan, min: min, abs: abs$3} = 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(radius, min(r, r * abs$2(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3384
+ radius = min(radius, min(r, r * abs$3(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} = AroundHelper;
6041
+ const {toPoint: toPoint$3, tempPoint: tempPoint$1} = 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);
6056
- translateInner(local, -tempPoint.x, -tempPoint.y, !data.around);
6062
+ toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$1);
6063
+ translateInner(local, -tempPoint$1.x, -tempPoint$1.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
  class LeaferCanvas extends LeaferCanvasBase {
6982
6989
  get allowBackgroundColor() {
@@ -8342,6 +8349,7 @@ let UI = UI_1 = class UI extends Leaf {
8342
8349
  this.set(keyframe);
8343
8350
  return Plugin.need("animate");
8344
8351
  }
8352
+ killAnimate(_type, _nextStyle) {}
8345
8353
  export(_filename, _options) {
8346
8354
  return Plugin.need("export");
8347
8355
  }
@@ -9101,32 +9109,53 @@ __decorate([ affectRenderBoundsType("hide") ], Frame.prototype, "overflow", void
9101
9109
 
9102
9110
  Frame = __decorate([ registerUI() ], Frame);
9103
9111
 
9104
- const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper;
9112
+ const {moveTo: moveTo$3, closePath: closePath$2, ellipse: ellipse} = PathCommandDataHelper, {tempPoint: tempPoint, set: set$1, rotate: rotate$2} = PointHelper, {abs: abs$2} = Math, tempCenter = {};
9105
9113
 
9106
9114
  let Ellipse = class Ellipse extends UI {
9107
9115
  get __tag() {
9108
9116
  return "Ellipse";
9109
9117
  }
9110
9118
  __updatePath() {
9111
- const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle} = data;
9119
+ const data = this.__, {width: width, height: height, innerRadius: innerRadius, startAngle: startAngle, endAngle: endAngle, closed: closed} = data;
9112
9120
  const rx = width / 2, ry = height / 2;
9113
9121
  const path = data.path = [];
9114
- let open;
9122
+ let open, hasAngle, closedAngle;
9123
+ if (startAngle || endAngle) hasAngle = true;
9124
+ if (hasAngle) closedAngle = abs$2(endAngle - startAngle) === 360;
9115
9125
  if (innerRadius) {
9116
- if (startAngle || endAngle) {
9117
- if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false); else open = true;
9118
- ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true);
9126
+ const drawInnerEllipse = innerRadius < 1 || closed;
9127
+ let outerStartAngle = startAngle, outerEndAngle = endAngle, outerAnticlockwise;
9128
+ if (hasAngle) {
9129
+ if (drawInnerEllipse) {
9130
+ ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle);
9131
+ if (closedAngle) {
9132
+ set$1(tempPoint, width, ry);
9133
+ set$1(tempCenter, rx, ry);
9134
+ rotate$2(tempPoint, endAngle, tempCenter, rx, ry);
9135
+ moveTo$3(path, tempPoint.x, tempPoint.y);
9136
+ }
9137
+ outerStartAngle = endAngle;
9138
+ outerEndAngle = startAngle;
9139
+ outerAnticlockwise = true;
9140
+ } else {
9141
+ if (!closedAngle) open = true;
9142
+ }
9119
9143
  } else {
9120
- if (innerRadius < 1) {
9144
+ if (drawInnerEllipse) {
9121
9145
  ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius);
9146
+ closePath$2(path);
9122
9147
  moveTo$3(path, width, ry);
9148
+ outerStartAngle = 360;
9149
+ outerAnticlockwise = true;
9150
+ } else {
9151
+ outerEndAngle = 360;
9123
9152
  }
9124
- ellipse(path, rx, ry, rx, ry, 0, 360, 0, true);
9125
9153
  }
9154
+ ellipse(path, rx, ry, rx, ry, 0, outerStartAngle, outerEndAngle, outerAnticlockwise);
9126
9155
  } else {
9127
- if (startAngle || endAngle) {
9128
- moveTo$3(path, rx, ry);
9129
- ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false);
9156
+ if (hasAngle) {
9157
+ if (!closedAngle) moveTo$3(path, rx, ry);
9158
+ ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle);
9130
9159
  } else {
9131
9160
  ellipse(path, rx, ry, rx, ry);
9132
9161
  }
@@ -9993,6 +10022,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
9993
10022
  if (data.__autoSide) {
9994
10023
  ui.forceUpdate("width");
9995
10024
  LeafHelper.updateBounds(ui);
10025
+ ui.__layout.boundsChanged = true;
9996
10026
  if (ui.__proxyData) {
9997
10027
  ui.setProxyAttr("width", data.width);
9998
10028
  ui.setProxyAttr("height", data.height);
@@ -10000,7 +10030,7 @@ function checkSizeAndCreateData(ui, attrName, paint, image, leafPaint, boxBounds
10000
10030
  needUpdate = false;
10001
10031
  }
10002
10032
  }
10003
- if (paint.mode === "brush") PaintImage.brush(leafPaint, ui, attrName);
10033
+ if (paint.mode === "brush") PaintImage.brush(ui, attrName, leafPaint);
10004
10034
  if (!leafPaint.data) {
10005
10035
  PaintImage.createData(leafPaint, image, paint, boxBounds);
10006
10036
  const {transform: transform} = leafPaint.data, {opacity: opacity} = paint;
@@ -10095,8 +10125,9 @@ function getPatternData(paint, box, image) {
10095
10125
  break;
10096
10126
 
10097
10127
  case "repeat":
10098
- case "brush":
10099
10128
  if (!sameBox || scaleX || rotation || skew) PaintImage.repeatMode(data, box, width, height, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, align, paint.freeTransform);
10129
+
10130
+ case "brush":
10100
10131
  if (!repeat) data.repeat = "repeat";
10101
10132
  const count = isObject(repeat);
10102
10133
  if (gap || count) data.gap = getGapData(gap, count && repeat, tempImage.width, tempImage.height, box);
@@ -10107,7 +10138,7 @@ function getPatternData(paint, box, image) {
10107
10138
  default:
10108
10139
  if (scaleX) PaintImage.fillOrFitMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
10109
10140
  }
10110
- if (!data.transform) {
10141
+ if (!data.transform && mode !== "brush") {
10111
10142
  if (box.x || box.y) translate$1(data.transform = get$3(), box.x, box.y);
10112
10143
  }
10113
10144
  if (scaleX) {
@@ -10236,8 +10267,9 @@ function createPattern(paint, ui, canvas, renderOptions) {
10236
10267
  let {scaleX: scaleX, scaleY: scaleY} = PaintImage.getImageRenderScaleData(paint, ui, canvas, renderOptions), id = paint.film ? paint.nowIndex : scaleX + "-" + scaleY;
10237
10268
  if (paint.patternId !== id && !ui.destroyed) {
10238
10269
  if (!(Platform.image.isLarge(paint.image, scaleX, scaleY) && !paint.data.repeat)) {
10239
- const {image: image, brush: brush, data: data} = paint, {opacity: opacity} = paint.originPaint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
10240
- let imageMatrix, xGap, yGap, {width: width, height: height} = image;
10270
+ const {image: image, brush: brush, data: data} = paint, {transform: transform, gap: gap} = data, fixScale = PaintImage.getPatternFixScale(paint, scaleX, scaleY);
10271
+ let imageMatrix, xGap, yGap, {width: width, height: height} = image, {opacity: opacity} = paint.originPaint;
10272
+ if (brush || opacity === 1) opacity = undefined;
10241
10273
  if (fixScale) scaleX *= fixScale, scaleY *= fixScale;
10242
10274
  width *= scaleX;
10243
10275
  height *= scaleY;
@@ -11264,4 +11296,4 @@ Object.assign(Effect, EffectModule);
11264
11296
 
11265
11297
  useCanvas();
11266
11298
 
11267
- export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, MyImage, 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, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, 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 };
11299
+ export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, Image, ImageData, ImageEvent, ImageManager, IncrementId, 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, MyImage, 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, Platform, Plugin, Point, PointHelper, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, Run, Star, StarData, State, StringNumberMap, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIRender, UnitConvert, UnitConvertHelper, WaitHelper, WatchEvent, Watcher, 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 };