@leafer-ui/worker 1.9.9 → 1.9.11

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.
@@ -249,7 +249,7 @@ class LeafData {
249
249
 
250
250
  let tempA, tempB, tempTo;
251
251
 
252
- const {max: max$4} = Math, tempFour = [ 0, 0, 0, 0 ];
252
+ const {max: max$5} = Math, tempFour = [ 0, 0, 0, 0 ];
253
253
 
254
254
  const FourNumberHelper = {
255
255
  zero: [ ...tempFour ],
@@ -263,7 +263,7 @@ const FourNumberHelper = {
263
263
  return to;
264
264
  },
265
265
  setTemp(top, right, bottom, left) {
266
- return set$1(tempFour, top, right, bottom, left);
266
+ return set$2(tempFour, top, right, bottom, left);
267
267
  },
268
268
  toTempAB(a, b, change) {
269
269
  tempTo = change ? isNumber(a) ? b : a : [];
@@ -301,24 +301,24 @@ const FourNumberHelper = {
301
301
  return data;
302
302
  },
303
303
  max(t, other, change) {
304
- if (isNumber(t) && isNumber(other)) return max$4(t, other);
304
+ if (isNumber(t) && isNumber(other)) return max$5(t, other);
305
305
  toTempAB(t, other, change);
306
- return set$1(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]));
306
+ 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]));
307
307
  },
308
308
  add(t, other, change) {
309
309
  if (isNumber(t) && isNumber(other)) return t + other;
310
310
  toTempAB(t, other, change);
311
- return set$1(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
311
+ return set$2(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
312
312
  },
313
313
  swapAndScale(t, scaleX, scaleY, change) {
314
314
  if (isNumber(t)) return scaleX === scaleY ? t * scaleX : [ t * scaleY, t * scaleX ];
315
315
  const to = change ? t : [];
316
316
  const [top, right, bottom, left] = t.length === 4 ? t : get$5(t);
317
- return set$1(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
317
+ return set$2(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
318
318
  }
319
319
  };
320
320
 
321
- const {set: set$1, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
321
+ const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
322
322
 
323
323
  const {round: round$3, pow: pow$1, PI: PI$3} = Math;
324
324
 
@@ -720,7 +720,7 @@ const M$6 = MatrixHelper;
720
720
 
721
721
  const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
722
722
 
723
- const {sin: sin$4, cos: cos$4, abs: abs$3, sqrt: sqrt$2, atan2: atan2$2, min: min$1, round: round$2} = Math;
723
+ const {sin: sin$4, cos: cos$4, abs: abs$5, sqrt: sqrt$2, atan2: atan2$2, min: min$2, round: round$2} = Math;
724
724
 
725
725
  const PointHelper = {
726
726
  defaultPoint: getPointData(),
@@ -813,12 +813,12 @@ const PointHelper = {
813
813
  return getDistanceFrom(t.x, t.y, point.x, point.y);
814
814
  },
815
815
  getDistanceFrom(x1, y1, x2, y2) {
816
- const x = abs$3(x2 - x1);
817
- const y = abs$3(y2 - y1);
816
+ const x = abs$5(x2 - x1);
817
+ const y = abs$5(y2 - y1);
818
818
  return sqrt$2(x * x + y * y);
819
819
  },
820
820
  getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
821
- return min$1(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
821
+ return min$2(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
822
822
  },
823
823
  getAngle(t, to) {
824
824
  return getAtan2(t, to) / OneRadian;
@@ -2592,11 +2592,11 @@ const RectHelper = {
2592
2592
  }
2593
2593
  };
2594
2594
 
2595
- const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil$1, abs: abs$2, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2595
+ const {sin: sin$3, cos: cos$3, hypot: hypot, atan2: atan2$1, ceil: ceil$1, abs: abs$4, PI: PI$2, sqrt: sqrt$1, pow: pow} = Math;
2596
2596
 
2597
2597
  const {setPoint: setPoint$1, addPoint: addPoint$1} = TwoPointBoundsHelper;
2598
2598
 
2599
- const {set: set, toNumberPoints: toNumberPoints} = PointHelper;
2599
+ const {set: set$1, toNumberPoints: toNumberPoints} = PointHelper;
2600
2600
 
2601
2601
  const {M: M$5, L: L$6, C: C$4, Q: Q$4, Z: Z$5} = PathCommandMap;
2602
2602
 
@@ -2667,14 +2667,14 @@ const BezierHelper = {
2667
2667
  const lenCB = hypot(CBx, CBy);
2668
2668
  let totalRadian = endRadian - startRadian;
2669
2669
  if (totalRadian < 0) totalRadian += PI2;
2670
- if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$2(totalRadian - PI$2) < 1e-12) {
2670
+ if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$4(totalRadian - PI$2) < 1e-12) {
2671
2671
  if (data) data.push(L$6, x1, y1);
2672
2672
  if (setPointBounds) {
2673
2673
  setPoint$1(setPointBounds, fromX, fromY);
2674
2674
  addPoint$1(setPointBounds, x1, y1);
2675
2675
  }
2676
- if (setStartPoint) set(setStartPoint, fromX, fromY);
2677
- if (setEndPoint) set(setEndPoint, x1, y1);
2676
+ if (setStartPoint) set$1(setStartPoint, fromX, fromY);
2677
+ if (setEndPoint) set$1(setEndPoint, x1, y1);
2678
2678
  return;
2679
2679
  }
2680
2680
  const anticlockwise = BAx * CBy - CBx * BAy < 0;
@@ -2700,7 +2700,7 @@ const BezierHelper = {
2700
2700
  let totalRadian = endRadian - startRadian;
2701
2701
  if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
2702
2702
  if (anticlockwise) totalRadian -= PI2;
2703
- const parts = ceil$1(abs$2(totalRadian / PI_2));
2703
+ const parts = ceil$1(abs$4(totalRadian / PI_2));
2704
2704
  const partRadian = totalRadian / parts;
2705
2705
  const partRadian4Sin = sin$3(partRadian / 4);
2706
2706
  const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$3(partRadian / 2);
@@ -2714,7 +2714,7 @@ const BezierHelper = {
2714
2714
  let fromX = cx + x, fromY = cy + y;
2715
2715
  if (data) data.push(data.length ? L$6 : M$5, fromX, fromY);
2716
2716
  if (setPointBounds) setPoint$1(setPointBounds, fromX, fromY);
2717
- if (setStartPoint) set(setStartPoint, fromX, fromY);
2717
+ if (setStartPoint) set$1(setStartPoint, fromX, fromY);
2718
2718
  for (let i = 0; i < parts; i++) {
2719
2719
  endCos = cos$3(endRadian);
2720
2720
  endSin = sin$3(endRadian);
@@ -2733,7 +2733,7 @@ const BezierHelper = {
2733
2733
  startRadian = endRadian;
2734
2734
  endRadian += partRadian;
2735
2735
  }
2736
- if (setEndPoint) set(setEndPoint, cx + x, cy + y);
2736
+ if (setEndPoint) set$1(setEndPoint, cx + x, cy + y);
2737
2737
  },
2738
2738
  quadraticCurveTo(data, fromX, fromY, x1, y1, toX, toY) {
2739
2739
  data.push(C$4, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
@@ -3167,7 +3167,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
3167
3167
 
3168
3168
  const {getMinDistanceFrom: getMinDistanceFrom, getRadianFrom: getRadianFrom} = PointHelper;
3169
3169
 
3170
- const {tan: tan, min: min, abs: abs$1} = Math;
3170
+ const {tan: tan, min: min$1, abs: abs$3} = Math;
3171
3171
 
3172
3172
  const startPoint = {};
3173
3173
 
@@ -3225,7 +3225,7 @@ const PathCommandDataHelper = {
3225
3225
  arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
3226
3226
  if (!isUndefined(lastX)) {
3227
3227
  const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
3228
- radius = min(radius, min(d / 2, d / 2 * abs$1(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3228
+ radius = min$1(radius, min$1(d / 2, d / 2 * abs$3(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
3229
3229
  }
3230
3230
  data.push(U$2, x1, y1, x2, y2, radius);
3231
3231
  },
@@ -3840,7 +3840,12 @@ class TaskProcessor {
3840
3840
  runTask() {
3841
3841
  const task = this.list[this.index];
3842
3842
  if (!task) {
3843
- this.nextTask();
3843
+ this.timer = setTimeout(() => this.nextTask());
3844
+ return;
3845
+ }
3846
+ if (task.isCancel) {
3847
+ this.index++;
3848
+ this.runTask();
3844
3849
  return;
3845
3850
  }
3846
3851
  task.run().then(() => {
@@ -3871,16 +3876,15 @@ class TaskProcessor {
3871
3876
  }
3872
3877
  setParallelList() {
3873
3878
  let task;
3879
+ const {config: config, list: list, index: index} = this;
3874
3880
  this.parallelList = [];
3875
3881
  this.parallelSuccessNumber = 0;
3876
- let end = this.index + this.config.parallel;
3877
- if (end > this.list.length) end = this.list.length;
3878
- for (let i = this.index; i < end; i++) {
3879
- task = this.list[i];
3880
- if (task.parallel) {
3881
- this.parallelList.push(task);
3882
- } else {
3883
- break;
3882
+ let end = index + config.parallel;
3883
+ if (end > list.length) end = list.length;
3884
+ if (config.parallel > 1) {
3885
+ for (let i = index; i < end; i++) {
3886
+ task = list[i];
3887
+ if (task.parallel) this.parallelList.push(task); else break;
3884
3888
  }
3885
3889
  }
3886
3890
  }
@@ -4023,7 +4027,7 @@ const I$1 = ImageManager;
4023
4027
 
4024
4028
  const {IMAGE: IMAGE, create: create$1} = IncrementId;
4025
4029
 
4026
- const {floor: floor$1, max: max$3} = Math;
4030
+ const {floor: floor$1, max: max$4} = Math;
4027
4031
 
4028
4032
  class LeaferImage {
4029
4033
  get url() {
@@ -4112,7 +4116,7 @@ class LeaferImage {
4112
4116
  }
4113
4117
  if (data) return data;
4114
4118
  }
4115
- const canvas = Platform.origin.createCanvas(max$3(floor$1(width + (xGap || 0)), 1), max$3(floor$1(height + (yGap || 0)), 1));
4119
+ const canvas = Platform.origin.createCanvas(max$4(floor$1(width + (xGap || 0)), 1), max$4(floor$1(height + (yGap || 0)), 1));
4116
4120
  const ctx = canvas.getContext("2d");
4117
4121
  if (opacity) ctx.globalAlpha = opacity;
4118
4122
  ctx.imageSmoothingEnabled = smooth === false ? false : true;
@@ -6815,7 +6819,7 @@ class LeafLevelList {
6815
6819
  }
6816
6820
  }
6817
6821
 
6818
- const version = "1.9.9";
6822
+ const version = "1.9.11";
6819
6823
 
6820
6824
  class LeaferCanvas extends LeaferCanvasBase {
6821
6825
  get allowBackgroundColor() {
@@ -7481,7 +7485,7 @@ class Picker {
7481
7485
  children: [ target ]
7482
7486
  } : target);
7483
7487
  const {list: list} = this.findList;
7484
- const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable);
7488
+ const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable, !!options.findList);
7485
7489
  const path = ignoreHittable ? this.getPath(leaf) : this.getHitablePath(leaf);
7486
7490
  this.clear();
7487
7491
  return through ? {
@@ -7496,7 +7500,7 @@ class Picker {
7496
7500
  hitPoint(hitPoint, hitRadius, options) {
7497
7501
  return !!this.getByPoint(hitPoint, hitRadius, options).target;
7498
7502
  }
7499
- getBestMatchLeaf(list, bottomList, ignoreHittable) {
7503
+ getBestMatchLeaf(list, bottomList, ignoreHittable, allowNull) {
7500
7504
  const findList = this.findList = new LeafList;
7501
7505
  if (list.length) {
7502
7506
  let find;
@@ -7527,15 +7531,27 @@ class Picker {
7527
7531
  if (findList.length) return findList.list[0];
7528
7532
  }
7529
7533
  }
7534
+ if (allowNull) return null;
7530
7535
  return ignoreHittable ? list[0] : list.find(item => LeafHelper.worldHittable(item));
7531
7536
  }
7532
7537
  getPath(leaf) {
7533
- const path = new LeafList;
7538
+ const path = new LeafList, syncList = [], {target: target} = this;
7534
7539
  while (leaf) {
7540
+ if (leaf.syncEventer) syncList.push(leaf.syncEventer);
7535
7541
  path.add(leaf);
7536
7542
  leaf = leaf.parent;
7543
+ if (leaf === target) break;
7544
+ }
7545
+ if (syncList.length) {
7546
+ syncList.forEach(item => {
7547
+ while (item) {
7548
+ if (item.__.hittable) path.add(item);
7549
+ item = item.parent;
7550
+ if (item === target) break;
7551
+ }
7552
+ });
7537
7553
  }
7538
- if (this.target) path.add(this.target);
7554
+ if (target) path.add(target);
7539
7555
  return path;
7540
7556
  }
7541
7557
  getHitablePath(leaf) {
@@ -8033,12 +8049,12 @@ class ImageData extends RectData {
8033
8049
  }
8034
8050
  __getData() {
8035
8051
  const data = super.__getData();
8036
- delete data.fill;
8052
+ if (data.url) delete data.fill;
8037
8053
  return data;
8038
8054
  }
8039
8055
  __getInputData(names, options) {
8040
8056
  const data = super.__getInputData(names, options);
8041
- delete data.fill;
8057
+ if (data.url) delete data.fill;
8042
8058
  return data;
8043
8059
  }
8044
8060
  }
@@ -8057,7 +8073,7 @@ class CanvasData extends RectData {
8057
8073
  }
8058
8074
  }
8059
8075
 
8060
- const {max: max$2, add: add$1} = FourNumberHelper;
8076
+ const {max: max$3, add: add$1} = FourNumberHelper;
8061
8077
 
8062
8078
  const UIBounds = {
8063
8079
  __updateStrokeSpread() {
@@ -8073,7 +8089,7 @@ const UIBounds = {
8073
8089
  }
8074
8090
  if (data.__useArrow) spread += strokeWidth * 5;
8075
8091
  if (box) {
8076
- spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8092
+ spread = max$3(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8077
8093
  boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
8078
8094
  }
8079
8095
  this.__layout.strokeBoxSpread = boxSpread;
@@ -8083,86 +8099,18 @@ const UIBounds = {
8083
8099
  let spread = 0;
8084
8100
  const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
8085
8101
  if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
8086
- if (blur) spread = max$2(spread, blur);
8102
+ if (blur) spread = max$3(spread, blur);
8087
8103
  if (filter) spread = add$1(spread, Filter.getSpread(filter));
8088
8104
  if (renderSpread) spread = add$1(spread, renderSpread);
8089
8105
  if (strokeSpread) spread = add$1(spread, strokeSpread);
8090
8106
  let shapeSpread = spread;
8091
- if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8092
- if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
8107
+ if (innerShadow) shapeSpread = max$3(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8108
+ if (backgroundBlur) shapeSpread = max$3(shapeSpread, backgroundBlur);
8093
8109
  this.__layout.renderShapeSpread = shapeSpread;
8094
- return box ? max$2(box.__updateRenderSpread(), spread) : spread;
8095
- }
8096
- };
8097
-
8098
- const {float: float} = MathHelper;
8099
-
8100
- const tempContent = new Bounds, tempMerge = new Bounds, tempIntersect = new Bounds;
8101
-
8102
- const DragBoundsHelper = {
8103
- limitMove(leaf, move) {
8104
- const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
8105
- if (dragBounds) D.getValidMove(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, move, true);
8106
- D.axisMove(leaf, move);
8107
- },
8108
- limitScaleOf(leaf, origin, scale) {
8109
- const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
8110
- if (dragBounds) D.getValidScaleOf(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, true);
8111
- },
8112
- axisMove(leaf, move) {
8113
- const {draggable: draggable} = leaf;
8114
- if (draggable === "x") move.y = 0;
8115
- if (draggable === "y") move.x = 0;
8116
- },
8117
- getDragBounds(leaf) {
8118
- const {dragBounds: dragBounds} = leaf;
8119
- return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
8120
- },
8121
- isInnerMode(content, dragBounds, dragBoundsType, sideType) {
8122
- return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
8123
- },
8124
- getValidMove(content, dragBounds, dragBoundsType, move, change) {
8125
- const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
8126
- const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
8127
- if (!change) move = Object.assign({}, move);
8128
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
8129
- if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
8130
- } else {
8131
- if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
8132
- }
8133
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
8134
- if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
8135
- } else {
8136
- if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
8137
- }
8138
- move.x = float(move.x);
8139
- move.y = float(move.y);
8140
- return move;
8141
- },
8142
- getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, change) {
8143
- if (!change) scale = Object.assign({}, scale);
8144
- let fitScaleX, fitScaleY;
8145
- tempContent.set(content).scaleOf(origin, scale.x, scale.y).unsign();
8146
- tempMerge.set(tempContent).add(dragBounds);
8147
- tempIntersect.set(tempContent).intersect(dragBounds);
8148
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
8149
- fitScaleX = tempMerge.width / tempContent.width;
8150
- } else {
8151
- fitScaleX = tempIntersect.width / tempContent.width;
8152
- }
8153
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
8154
- fitScaleY = tempMerge.height / tempContent.height;
8155
- } else {
8156
- fitScaleY = tempIntersect.height / tempContent.height;
8157
- }
8158
- scale.x = float(tempIntersect.width) ? scale.x * fitScaleX : 1;
8159
- scale.y = float(tempIntersect.height) ? scale.y * fitScaleY : 1;
8160
- return scale;
8110
+ return box ? max$3(box.__updateRenderSpread(), spread) : spread;
8161
8111
  }
8162
8112
  };
8163
8113
 
8164
- const D = DragBoundsHelper;
8165
-
8166
8114
  const {stintSet: stintSet$1} = DataHelper;
8167
8115
 
8168
8116
  const UIRender = {
@@ -9828,6 +9776,106 @@ class UIEvent extends Event {
9828
9776
  }
9829
9777
  }
9830
9778
 
9779
+ const {min: min, max: max$2, abs: abs$2} = Math, {float: float, sign: sign} = MathHelper, {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = BoundsHelper;
9780
+
9781
+ const tempContent = new Bounds, tempDragBounds = new Bounds;
9782
+
9783
+ const DragBoundsHelper = {
9784
+ limitMove(leaf, move) {
9785
+ const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
9786
+ if (dragBounds) D.getValidMove(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, move, true);
9787
+ D.axisMove(leaf, move);
9788
+ },
9789
+ limitScaleOf(leaf, origin, scale, lockRatio) {
9790
+ const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
9791
+ if (dragBounds) D.getValidScaleOf(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, lockRatio, true);
9792
+ },
9793
+ axisMove(leaf, move) {
9794
+ const {draggable: draggable} = leaf;
9795
+ if (draggable === "x") move.y = 0;
9796
+ if (draggable === "y") move.x = 0;
9797
+ },
9798
+ getDragBounds(leaf) {
9799
+ const {dragBounds: dragBounds} = leaf;
9800
+ return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
9801
+ },
9802
+ isInnerMode(content, dragBounds, dragBoundsType, sideType) {
9803
+ return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
9804
+ },
9805
+ getValidMove(content, dragBounds, dragBoundsType, move, change) {
9806
+ const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
9807
+ const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
9808
+ if (!change) move = Object.assign({}, move);
9809
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
9810
+ if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
9811
+ } else {
9812
+ if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
9813
+ }
9814
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
9815
+ if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
9816
+ } else {
9817
+ if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
9818
+ }
9819
+ move.x = float(move.x);
9820
+ move.y = float(move.y);
9821
+ return move;
9822
+ },
9823
+ getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, lockRatio, change) {
9824
+ if (!change) scale = Object.assign({}, scale);
9825
+ tempDragBounds.set(dragBounds);
9826
+ tempContent.set(content).scaleOf(origin, scale.x, scale.y);
9827
+ const originLeftScale = (origin.x - content.x) / content.width, originRightScale = 1 - originLeftScale;
9828
+ const originTopScale = (origin.y - content.y) / content.height, originBottomScale = 1 - originTopScale;
9829
+ let correctScaleX = 1, correctScaleY = 1, aScale, bScale, aSize, bSize;
9830
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
9831
+ if (scale.x < 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9832
+ aSize = float(tempContent.minX - tempDragBounds.minX);
9833
+ bSize = float(tempDragBounds.maxX - tempContent.maxX);
9834
+ aScale = originLeftScale && aSize > 0 ? 1 + aSize / (originLeftScale * tempContent.width) : 1;
9835
+ bScale = originRightScale && bSize > 0 ? 1 + bSize / (originRightScale * tempContent.width) : 1;
9836
+ correctScaleX *= max$2(aScale, bScale);
9837
+ } else {
9838
+ if (scale.x < 0) {
9839
+ if (float(minX(content) - minX(dragBounds)) <= 0 || float(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9840
+ tempContent.unsign();
9841
+ }
9842
+ aSize = float(tempDragBounds.minX - tempContent.minX);
9843
+ bSize = float(tempContent.maxX - tempDragBounds.maxX);
9844
+ aScale = originLeftScale && aSize > 0 ? 1 - aSize / (originLeftScale * tempContent.width) : 1;
9845
+ bScale = originRightScale && bSize > 0 ? 1 - bSize / (originRightScale * tempContent.width) : 1;
9846
+ correctScaleX *= min(aScale, bScale);
9847
+ }
9848
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
9849
+ if (scale.y < 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
9850
+ aSize = float(tempContent.minY - tempDragBounds.minY);
9851
+ bSize = float(tempDragBounds.maxY - tempContent.maxY);
9852
+ aScale = originTopScale && aSize > 0 ? 1 + aSize / (originTopScale * tempContent.height) : 1;
9853
+ bScale = originBottomScale && bSize > 0 ? 1 + bSize / (originBottomScale * tempContent.height) : 1;
9854
+ correctScaleY *= max$2(aScale, bScale);
9855
+ if (lockRatio) {
9856
+ aScale = max$2(abs$2(correctScaleX), abs$2(correctScaleY));
9857
+ correctScaleX = sign(correctScaleX) * aScale;
9858
+ correctScaleY = sign(correctScaleY) * aScale;
9859
+ }
9860
+ } else {
9861
+ if (scale.y < 0) {
9862
+ if (float(minY(content) - minY(dragBounds)) <= 0 || float(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
9863
+ tempContent.unsign();
9864
+ }
9865
+ aSize = float(tempDragBounds.minY - tempContent.minY);
9866
+ bSize = float(tempContent.maxY - tempDragBounds.maxY);
9867
+ aScale = originTopScale && aSize > 0 ? 1 - aSize / (originTopScale * tempContent.height) : 1;
9868
+ bScale = originBottomScale && bSize > 0 ? 1 - bSize / (originBottomScale * tempContent.height) : 1;
9869
+ correctScaleY *= min(aScale, bScale);
9870
+ }
9871
+ scale.x *= isFinite(correctScaleX) ? correctScaleX : 1;
9872
+ scale.y *= isFinite(correctScaleY) ? correctScaleY : 1;
9873
+ return scale;
9874
+ }
9875
+ };
9876
+
9877
+ const D = DragBoundsHelper;
9878
+
9831
9879
  let PointerEvent = class PointerEvent extends UIEvent {};
9832
9880
 
9833
9881
  PointerEvent.POINTER = "pointer";
@@ -10898,9 +10946,9 @@ const ui$1 = UI.prototype;
10898
10946
 
10899
10947
  ui$1.__updateHitCanvas = function() {
10900
10948
  if (this.__box) this.__box.__updateHitCanvas();
10901
- const leafer = this.leafer || this.parent && this.parent.leafer;
10902
- if (!leafer) return;
10903
- const data = this.__, {hitCanvasManager: hitCanvasManager} = leafer;
10949
+ const {hitCanvasManager: hitCanvasManager} = this.leafer || this.parent && this.parent.leafer || {};
10950
+ if (!hitCanvasManager) return;
10951
+ const data = this.__;
10904
10952
  const isHitPixelFill = (data.__isAlphaPixelFill || data.__isCanvas) && data.hitFill === "pixel";
10905
10953
  const isHitPixelStroke = data.__isAlphaPixelStroke && data.hitStroke === "pixel";
10906
10954
  const isHitPixel = isHitPixelFill || isHitPixelStroke;
@@ -11372,7 +11420,14 @@ const PaintModule = {
11372
11420
 
11373
11421
  let origin = {}, tempMatrix$1 = getMatrixData();
11374
11422
 
11375
- const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
11423
+ const {get: get$3, set: set, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
11424
+
11425
+ function stretchMode(data, box, scaleX, scaleY) {
11426
+ const transform = get$3();
11427
+ translate$1(transform, box.x, box.y);
11428
+ if (scaleX) scaleHelper(transform, scaleX, scaleY);
11429
+ data.transform = transform;
11430
+ }
11376
11431
 
11377
11432
  function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
11378
11433
  const transform = get$3();
@@ -11389,8 +11444,11 @@ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, c
11389
11444
  const transform = get$3();
11390
11445
  layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
11391
11446
  if (clipScaleX) {
11392
- tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
11393
- multiplyParent(transform, tempMatrix$1);
11447
+ if (rotation || skew) {
11448
+ set(tempMatrix$1);
11449
+ scaleOfOuter$1(tempMatrix$1, box, clipScaleX, clipScaleY);
11450
+ multiplyParent(transform, tempMatrix$1);
11451
+ } else scaleOfOuter$1(transform, box, clipScaleX, clipScaleY);
11394
11452
  }
11395
11453
  data.transform = transform;
11396
11454
  }
@@ -11486,7 +11544,10 @@ function getPatternData(paint, box, image) {
11486
11544
  if (offset) PointHelper.move(tempImage, offset);
11487
11545
  switch (mode) {
11488
11546
  case "stretch":
11489
- if (!sameBox) width = box.width, height = box.height;
11547
+ if (!sameBox) {
11548
+ scaleX = box.width / width, scaleY = box.height / height;
11549
+ stretchMode(data, box, scaleX, scaleY);
11550
+ }
11490
11551
  break;
11491
11552
 
11492
11553
  case "normal":
@@ -11495,7 +11556,7 @@ function getPatternData(paint, box, image) {
11495
11556
  let clipScaleX, clipScaleY;
11496
11557
  if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
11497
11558
  clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
11498
- if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : scaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
11559
+ if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : clipScaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
11499
11560
  }
11500
11561
  break;
11501
11562
 
@@ -11512,17 +11573,14 @@ function getPatternData(paint, box, image) {
11512
11573
  if (scaleX) fillOrFitMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
11513
11574
  }
11514
11575
  if (!data.transform) {
11515
- if (box.x || box.y) {
11516
- data.transform = get$2();
11517
- translate(data.transform, box.x, box.y);
11518
- }
11576
+ if (box.x || box.y) translate(data.transform = get$2(), box.x, box.y);
11519
11577
  }
11520
- if (scaleX && mode !== "stretch") {
11578
+ data.width = width;
11579
+ data.height = height;
11580
+ if (scaleX) {
11521
11581
  data.scaleX = scaleX;
11522
11582
  data.scaleY = scaleY;
11523
11583
  }
11524
- data.width = width;
11525
- data.height = height;
11526
11584
  if (opacity) data.opacity = opacity;
11527
11585
  if (filters) data.filters = filters;
11528
11586
  if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
@@ -11654,7 +11712,7 @@ function ignoreRender(ui, value) {
11654
11712
 
11655
11713
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
11656
11714
 
11657
- const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
11715
+ const {floor: floor, ceil: ceil, max: max$1, abs: abs$1} = Math;
11658
11716
 
11659
11717
  function createPattern(ui, paint, pixelRatio) {
11660
11718
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
@@ -11665,8 +11723,8 @@ function createPattern(ui, paint, pixelRatio) {
11665
11723
  scaleX *= pixelRatio;
11666
11724
  scaleY *= pixelRatio;
11667
11725
  if (sx) {
11668
- sx = abs(sx);
11669
- sy = abs(sy);
11726
+ sx = abs$1(sx);
11727
+ sy = abs$1(sy);
11670
11728
  imageMatrix = get$1();
11671
11729
  copy$1(imageMatrix, transform);
11672
11730
  scale(imageMatrix, 1 / sx, 1 / sy);
@@ -11808,6 +11866,7 @@ const PaintImageModule = {
11808
11866
  recycleImage: recycleImage,
11809
11867
  createData: createData,
11810
11868
  getPatternData: getPatternData,
11869
+ stretchMode: stretchMode,
11811
11870
  fillOrFitMode: fillOrFitMode,
11812
11871
  clipMode: clipMode,
11813
11872
  repeatMode: repeatMode
@@ -11918,7 +11977,7 @@ const PaintGradientModule = {
11918
11977
  getTransform: getTransform
11919
11978
  };
11920
11979
 
11921
- const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
11980
+ const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max, abs: abs} = Math;
11922
11981
 
11923
11982
  const tempBounds = {}, tempMatrix = new Matrix;
11924
11983
 
@@ -11962,7 +12021,7 @@ function shadow(ui, current, shape) {
11962
12021
  function getShadowRenderSpread(_ui, shadow) {
11963
12022
  let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
11964
12023
  shadow.forEach(item => {
11965
- x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
12024
+ x = item.x || 0, y = item.y || 0, blur = (item.blur || 0) * 1.5, spread = abs(item.spread || 0);
11966
12025
  top = max(top, spread + blur - y);
11967
12026
  right = max(right, spread + blur + x);
11968
12027
  bottom = max(bottom, spread + blur + y);
@@ -11973,11 +12032,11 @@ function getShadowRenderSpread(_ui, shadow) {
11973
12032
 
11974
12033
  function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
11975
12034
  if (shadow.spread) {
11976
- const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
12035
+ const spread = shadow.spread * 2 * otherScale * (isInnerShaodw ? -1 : 1), {width: width, height: height} = ui.__layout.strokeBounds;
11977
12036
  tempMatrix.set().scaleOfOuter({
11978
12037
  x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
11979
12038
  y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
11980
- }, spreadScale);
12039
+ }, 1 + spread / width, 1 + spread / height);
11981
12040
  return tempMatrix;
11982
12041
  }
11983
12042
  return undefined;