@leafer-ui/miniapp 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() {
@@ -7634,7 +7638,7 @@ class Picker {
7634
7638
  children: [ target ]
7635
7639
  } : target);
7636
7640
  const {list: list} = this.findList;
7637
- const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable);
7641
+ const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable, !!options.findList);
7638
7642
  const path = ignoreHittable ? this.getPath(leaf) : this.getHitablePath(leaf);
7639
7643
  this.clear();
7640
7644
  return through ? {
@@ -7649,7 +7653,7 @@ class Picker {
7649
7653
  hitPoint(hitPoint, hitRadius, options) {
7650
7654
  return !!this.getByPoint(hitPoint, hitRadius, options).target;
7651
7655
  }
7652
- getBestMatchLeaf(list, bottomList, ignoreHittable) {
7656
+ getBestMatchLeaf(list, bottomList, ignoreHittable, allowNull) {
7653
7657
  const findList = this.findList = new LeafList;
7654
7658
  if (list.length) {
7655
7659
  let find;
@@ -7680,15 +7684,27 @@ class Picker {
7680
7684
  if (findList.length) return findList.list[0];
7681
7685
  }
7682
7686
  }
7687
+ if (allowNull) return null;
7683
7688
  return ignoreHittable ? list[0] : list.find(item => LeafHelper.worldHittable(item));
7684
7689
  }
7685
7690
  getPath(leaf) {
7686
- const path = new LeafList;
7691
+ const path = new LeafList, syncList = [], {target: target} = this;
7687
7692
  while (leaf) {
7693
+ if (leaf.syncEventer) syncList.push(leaf.syncEventer);
7688
7694
  path.add(leaf);
7689
7695
  leaf = leaf.parent;
7696
+ if (leaf === target) break;
7697
+ }
7698
+ if (syncList.length) {
7699
+ syncList.forEach(item => {
7700
+ while (item) {
7701
+ if (item.__.hittable) path.add(item);
7702
+ item = item.parent;
7703
+ if (item === target) break;
7704
+ }
7705
+ });
7690
7706
  }
7691
- if (this.target) path.add(this.target);
7707
+ if (target) path.add(target);
7692
7708
  return path;
7693
7709
  }
7694
7710
  getHitablePath(leaf) {
@@ -8186,12 +8202,12 @@ class ImageData extends RectData {
8186
8202
  }
8187
8203
  __getData() {
8188
8204
  const data = super.__getData();
8189
- delete data.fill;
8205
+ if (data.url) delete data.fill;
8190
8206
  return data;
8191
8207
  }
8192
8208
  __getInputData(names, options) {
8193
8209
  const data = super.__getInputData(names, options);
8194
- delete data.fill;
8210
+ if (data.url) delete data.fill;
8195
8211
  return data;
8196
8212
  }
8197
8213
  }
@@ -8210,7 +8226,7 @@ class CanvasData extends RectData {
8210
8226
  }
8211
8227
  }
8212
8228
 
8213
- const {max: max$2, add: add$1} = FourNumberHelper;
8229
+ const {max: max$3, add: add$1} = FourNumberHelper;
8214
8230
 
8215
8231
  const UIBounds = {
8216
8232
  __updateStrokeSpread() {
@@ -8226,7 +8242,7 @@ const UIBounds = {
8226
8242
  }
8227
8243
  if (data.__useArrow) spread += strokeWidth * 5;
8228
8244
  if (box) {
8229
- spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8245
+ spread = max$3(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8230
8246
  boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
8231
8247
  }
8232
8248
  this.__layout.strokeBoxSpread = boxSpread;
@@ -8236,86 +8252,18 @@ const UIBounds = {
8236
8252
  let spread = 0;
8237
8253
  const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
8238
8254
  if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
8239
- if (blur) spread = max$2(spread, blur);
8255
+ if (blur) spread = max$3(spread, blur);
8240
8256
  if (filter) spread = add$1(spread, Filter.getSpread(filter));
8241
8257
  if (renderSpread) spread = add$1(spread, renderSpread);
8242
8258
  if (strokeSpread) spread = add$1(spread, strokeSpread);
8243
8259
  let shapeSpread = spread;
8244
- if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8245
- if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
8260
+ if (innerShadow) shapeSpread = max$3(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8261
+ if (backgroundBlur) shapeSpread = max$3(shapeSpread, backgroundBlur);
8246
8262
  this.__layout.renderShapeSpread = shapeSpread;
8247
- return box ? max$2(box.__updateRenderSpread(), spread) : spread;
8248
- }
8249
- };
8250
-
8251
- const {float: float} = MathHelper;
8252
-
8253
- const tempContent = new Bounds, tempMerge = new Bounds, tempIntersect = new Bounds;
8254
-
8255
- const DragBoundsHelper = {
8256
- limitMove(leaf, move) {
8257
- const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
8258
- if (dragBounds) D.getValidMove(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, move, true);
8259
- D.axisMove(leaf, move);
8260
- },
8261
- limitScaleOf(leaf, origin, scale) {
8262
- const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
8263
- if (dragBounds) D.getValidScaleOf(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, true);
8264
- },
8265
- axisMove(leaf, move) {
8266
- const {draggable: draggable} = leaf;
8267
- if (draggable === "x") move.y = 0;
8268
- if (draggable === "y") move.x = 0;
8269
- },
8270
- getDragBounds(leaf) {
8271
- const {dragBounds: dragBounds} = leaf;
8272
- return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
8273
- },
8274
- isInnerMode(content, dragBounds, dragBoundsType, sideType) {
8275
- return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
8276
- },
8277
- getValidMove(content, dragBounds, dragBoundsType, move, change) {
8278
- const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
8279
- const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
8280
- if (!change) move = Object.assign({}, move);
8281
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
8282
- if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
8283
- } else {
8284
- if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
8285
- }
8286
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
8287
- if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
8288
- } else {
8289
- if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
8290
- }
8291
- move.x = float(move.x);
8292
- move.y = float(move.y);
8293
- return move;
8294
- },
8295
- getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, change) {
8296
- if (!change) scale = Object.assign({}, scale);
8297
- let fitScaleX, fitScaleY;
8298
- tempContent.set(content).scaleOf(origin, scale.x, scale.y).unsign();
8299
- tempMerge.set(tempContent).add(dragBounds);
8300
- tempIntersect.set(tempContent).intersect(dragBounds);
8301
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
8302
- fitScaleX = tempMerge.width / tempContent.width;
8303
- } else {
8304
- fitScaleX = tempIntersect.width / tempContent.width;
8305
- }
8306
- if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
8307
- fitScaleY = tempMerge.height / tempContent.height;
8308
- } else {
8309
- fitScaleY = tempIntersect.height / tempContent.height;
8310
- }
8311
- scale.x = float(tempIntersect.width) ? scale.x * fitScaleX : 1;
8312
- scale.y = float(tempIntersect.height) ? scale.y * fitScaleY : 1;
8313
- return scale;
8263
+ return box ? max$3(box.__updateRenderSpread(), spread) : spread;
8314
8264
  }
8315
8265
  };
8316
8266
 
8317
- const D = DragBoundsHelper;
8318
-
8319
8267
  const {stintSet: stintSet$1} = DataHelper;
8320
8268
 
8321
8269
  const UIRender = {
@@ -9981,6 +9929,106 @@ class UIEvent extends Event {
9981
9929
  }
9982
9930
  }
9983
9931
 
9932
+ const {min: min, max: max$2, abs: abs$2} = Math, {float: float, sign: sign} = MathHelper, {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = BoundsHelper;
9933
+
9934
+ const tempContent = new Bounds, tempDragBounds = new Bounds;
9935
+
9936
+ const DragBoundsHelper = {
9937
+ limitMove(leaf, move) {
9938
+ const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
9939
+ if (dragBounds) D.getValidMove(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, move, true);
9940
+ D.axisMove(leaf, move);
9941
+ },
9942
+ limitScaleOf(leaf, origin, scale, lockRatio) {
9943
+ const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
9944
+ if (dragBounds) D.getValidScaleOf(leaf.__localBoxBounds, D.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, lockRatio, true);
9945
+ },
9946
+ axisMove(leaf, move) {
9947
+ const {draggable: draggable} = leaf;
9948
+ if (draggable === "x") move.y = 0;
9949
+ if (draggable === "y") move.x = 0;
9950
+ },
9951
+ getDragBounds(leaf) {
9952
+ const {dragBounds: dragBounds} = leaf;
9953
+ return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
9954
+ },
9955
+ isInnerMode(content, dragBounds, dragBoundsType, sideType) {
9956
+ return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
9957
+ },
9958
+ getValidMove(content, dragBounds, dragBoundsType, move, change) {
9959
+ const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
9960
+ const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
9961
+ if (!change) move = Object.assign({}, move);
9962
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
9963
+ if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
9964
+ } else {
9965
+ if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
9966
+ }
9967
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
9968
+ if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
9969
+ } else {
9970
+ if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
9971
+ }
9972
+ move.x = float(move.x);
9973
+ move.y = float(move.y);
9974
+ return move;
9975
+ },
9976
+ getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, lockRatio, change) {
9977
+ if (!change) scale = Object.assign({}, scale);
9978
+ tempDragBounds.set(dragBounds);
9979
+ tempContent.set(content).scaleOf(origin, scale.x, scale.y);
9980
+ const originLeftScale = (origin.x - content.x) / content.width, originRightScale = 1 - originLeftScale;
9981
+ const originTopScale = (origin.y - content.y) / content.height, originBottomScale = 1 - originTopScale;
9982
+ let correctScaleX = 1, correctScaleY = 1, aScale, bScale, aSize, bSize;
9983
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
9984
+ if (scale.x < 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9985
+ aSize = float(tempContent.minX - tempDragBounds.minX);
9986
+ bSize = float(tempDragBounds.maxX - tempContent.maxX);
9987
+ aScale = originLeftScale && aSize > 0 ? 1 + aSize / (originLeftScale * tempContent.width) : 1;
9988
+ bScale = originRightScale && bSize > 0 ? 1 + bSize / (originRightScale * tempContent.width) : 1;
9989
+ correctScaleX *= max$2(aScale, bScale);
9990
+ } else {
9991
+ if (scale.x < 0) {
9992
+ if (float(minX(content) - minX(dragBounds)) <= 0 || float(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
9993
+ tempContent.unsign();
9994
+ }
9995
+ aSize = float(tempDragBounds.minX - tempContent.minX);
9996
+ bSize = float(tempContent.maxX - tempDragBounds.maxX);
9997
+ aScale = originLeftScale && aSize > 0 ? 1 - aSize / (originLeftScale * tempContent.width) : 1;
9998
+ bScale = originRightScale && bSize > 0 ? 1 - bSize / (originRightScale * tempContent.width) : 1;
9999
+ correctScaleX *= min(aScale, bScale);
10000
+ }
10001
+ if (D.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
10002
+ if (scale.y < 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10003
+ aSize = float(tempContent.minY - tempDragBounds.minY);
10004
+ bSize = float(tempDragBounds.maxY - tempContent.maxY);
10005
+ aScale = originTopScale && aSize > 0 ? 1 + aSize / (originTopScale * tempContent.height) : 1;
10006
+ bScale = originBottomScale && bSize > 0 ? 1 + bSize / (originBottomScale * tempContent.height) : 1;
10007
+ correctScaleY *= max$2(aScale, bScale);
10008
+ if (lockRatio) {
10009
+ aScale = max$2(abs$2(correctScaleX), abs$2(correctScaleY));
10010
+ correctScaleX = sign(correctScaleX) * aScale;
10011
+ correctScaleY = sign(correctScaleY) * aScale;
10012
+ }
10013
+ } else {
10014
+ if (scale.y < 0) {
10015
+ if (float(minY(content) - minY(dragBounds)) <= 0 || float(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
10016
+ tempContent.unsign();
10017
+ }
10018
+ aSize = float(tempDragBounds.minY - tempContent.minY);
10019
+ bSize = float(tempContent.maxY - tempDragBounds.maxY);
10020
+ aScale = originTopScale && aSize > 0 ? 1 - aSize / (originTopScale * tempContent.height) : 1;
10021
+ bScale = originBottomScale && bSize > 0 ? 1 - bSize / (originBottomScale * tempContent.height) : 1;
10022
+ correctScaleY *= min(aScale, bScale);
10023
+ }
10024
+ scale.x *= isFinite(correctScaleX) ? correctScaleX : 1;
10025
+ scale.y *= isFinite(correctScaleY) ? correctScaleY : 1;
10026
+ return scale;
10027
+ }
10028
+ };
10029
+
10030
+ const D = DragBoundsHelper;
10031
+
9984
10032
  let PointerEvent = class PointerEvent extends UIEvent {};
9985
10033
 
9986
10034
  PointerEvent.POINTER = "pointer";
@@ -11051,9 +11099,9 @@ const ui$1 = UI.prototype;
11051
11099
 
11052
11100
  ui$1.__updateHitCanvas = function() {
11053
11101
  if (this.__box) this.__box.__updateHitCanvas();
11054
- const leafer = this.leafer || this.parent && this.parent.leafer;
11055
- if (!leafer) return;
11056
- const data = this.__, {hitCanvasManager: hitCanvasManager} = leafer;
11102
+ const {hitCanvasManager: hitCanvasManager} = this.leafer || this.parent && this.parent.leafer || {};
11103
+ if (!hitCanvasManager) return;
11104
+ const data = this.__;
11057
11105
  const isHitPixelFill = (data.__isAlphaPixelFill || data.__isCanvas) && data.hitFill === "pixel";
11058
11106
  const isHitPixelStroke = data.__isAlphaPixelStroke && data.hitStroke === "pixel";
11059
11107
  const isHitPixel = isHitPixelFill || isHitPixelStroke;
@@ -11637,7 +11685,14 @@ const PaintModule = {
11637
11685
 
11638
11686
  let origin = {}, tempMatrix$1 = getMatrixData();
11639
11687
 
11640
- const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
11688
+ const {get: get$3, set: set, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
11689
+
11690
+ function stretchMode(data, box, scaleX, scaleY) {
11691
+ const transform = get$3();
11692
+ translate$1(transform, box.x, box.y);
11693
+ if (scaleX) scaleHelper(transform, scaleX, scaleY);
11694
+ data.transform = transform;
11695
+ }
11641
11696
 
11642
11697
  function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
11643
11698
  const transform = get$3();
@@ -11654,8 +11709,11 @@ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, c
11654
11709
  const transform = get$3();
11655
11710
  layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
11656
11711
  if (clipScaleX) {
11657
- tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
11658
- multiplyParent(transform, tempMatrix$1);
11712
+ if (rotation || skew) {
11713
+ set(tempMatrix$1);
11714
+ scaleOfOuter$1(tempMatrix$1, box, clipScaleX, clipScaleY);
11715
+ multiplyParent(transform, tempMatrix$1);
11716
+ } else scaleOfOuter$1(transform, box, clipScaleX, clipScaleY);
11659
11717
  }
11660
11718
  data.transform = transform;
11661
11719
  }
@@ -11751,7 +11809,10 @@ function getPatternData(paint, box, image) {
11751
11809
  if (offset) PointHelper.move(tempImage, offset);
11752
11810
  switch (mode) {
11753
11811
  case "stretch":
11754
- if (!sameBox) width = box.width, height = box.height;
11812
+ if (!sameBox) {
11813
+ scaleX = box.width / width, scaleY = box.height / height;
11814
+ stretchMode(data, box, scaleX, scaleY);
11815
+ }
11755
11816
  break;
11756
11817
 
11757
11818
  case "normal":
@@ -11760,7 +11821,7 @@ function getPatternData(paint, box, image) {
11760
11821
  let clipScaleX, clipScaleY;
11761
11822
  if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
11762
11823
  clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
11763
- if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : scaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
11824
+ if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : clipScaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
11764
11825
  }
11765
11826
  break;
11766
11827
 
@@ -11777,17 +11838,14 @@ function getPatternData(paint, box, image) {
11777
11838
  if (scaleX) fillOrFitMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
11778
11839
  }
11779
11840
  if (!data.transform) {
11780
- if (box.x || box.y) {
11781
- data.transform = get$2();
11782
- translate(data.transform, box.x, box.y);
11783
- }
11841
+ if (box.x || box.y) translate(data.transform = get$2(), box.x, box.y);
11784
11842
  }
11785
- if (scaleX && mode !== "stretch") {
11843
+ data.width = width;
11844
+ data.height = height;
11845
+ if (scaleX) {
11786
11846
  data.scaleX = scaleX;
11787
11847
  data.scaleY = scaleY;
11788
11848
  }
11789
- data.width = width;
11790
- data.height = height;
11791
11849
  if (opacity) data.opacity = opacity;
11792
11850
  if (filters) data.filters = filters;
11793
11851
  if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
@@ -11919,7 +11977,7 @@ function ignoreRender(ui, value) {
11919
11977
 
11920
11978
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
11921
11979
 
11922
- const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
11980
+ const {floor: floor, ceil: ceil, max: max$1, abs: abs$1} = Math;
11923
11981
 
11924
11982
  function createPattern(ui, paint, pixelRatio) {
11925
11983
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
@@ -11930,8 +11988,8 @@ function createPattern(ui, paint, pixelRatio) {
11930
11988
  scaleX *= pixelRatio;
11931
11989
  scaleY *= pixelRatio;
11932
11990
  if (sx) {
11933
- sx = abs(sx);
11934
- sy = abs(sy);
11991
+ sx = abs$1(sx);
11992
+ sy = abs$1(sy);
11935
11993
  imageMatrix = get$1();
11936
11994
  copy$1(imageMatrix, transform);
11937
11995
  scale(imageMatrix, 1 / sx, 1 / sy);
@@ -12073,6 +12131,7 @@ const PaintImageModule = {
12073
12131
  recycleImage: recycleImage,
12074
12132
  createData: createData,
12075
12133
  getPatternData: getPatternData,
12134
+ stretchMode: stretchMode,
12076
12135
  fillOrFitMode: fillOrFitMode,
12077
12136
  clipMode: clipMode,
12078
12137
  repeatMode: repeatMode
@@ -12183,7 +12242,7 @@ const PaintGradientModule = {
12183
12242
  getTransform: getTransform
12184
12243
  };
12185
12244
 
12186
- const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
12245
+ const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max, abs: abs} = Math;
12187
12246
 
12188
12247
  const tempBounds = {}, tempMatrix = new Matrix;
12189
12248
 
@@ -12227,7 +12286,7 @@ function shadow(ui, current, shape) {
12227
12286
  function getShadowRenderSpread(_ui, shadow) {
12228
12287
  let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
12229
12288
  shadow.forEach(item => {
12230
- x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
12289
+ x = item.x || 0, y = item.y || 0, blur = (item.blur || 0) * 1.5, spread = abs(item.spread || 0);
12231
12290
  top = max(top, spread + blur - y);
12232
12291
  right = max(right, spread + blur + x);
12233
12292
  bottom = max(bottom, spread + blur + y);
@@ -12238,11 +12297,11 @@ function getShadowRenderSpread(_ui, shadow) {
12238
12297
 
12239
12298
  function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
12240
12299
  if (shadow.spread) {
12241
- const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
12300
+ const spread = shadow.spread * 2 * otherScale * (isInnerShaodw ? -1 : 1), {width: width, height: height} = ui.__layout.strokeBounds;
12242
12301
  tempMatrix.set().scaleOfOuter({
12243
12302
  x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
12244
12303
  y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
12245
- }, spreadScale);
12304
+ }, 1 + spread / width, 1 + spread / height);
12246
12305
  return tempMatrix;
12247
12306
  }
12248
12307
  return undefined;