@leafer-draw/miniapp 1.9.7 → 1.9.8

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.
@@ -247,18 +247,34 @@ class LeafData {
247
247
  }
248
248
  }
249
249
 
250
- const {round: round$3, pow: pow$1, PI: PI$3} = Math;
251
-
252
- const MathHelper = {
253
- within(value, min, max) {
254
- if (isObject(min)) max = min.max, min = min.min;
255
- if (!isUndefined(min) && value < min) value = min;
256
- if (!isUndefined(max) && value > max) value = max;
257
- return value;
250
+ let tempA, tempB, tempTo;
251
+
252
+ const {max: max$4} = Math, tempFour = [ 0, 0, 0, 0 ];
253
+
254
+ const FourNumberHelper = {
255
+ zero: [ ...tempFour ],
256
+ tempFour: tempFour,
257
+ set(to, top, right, bottom, left) {
258
+ if (right === undefined) right = bottom = left = top;
259
+ to[0] = top;
260
+ to[1] = right;
261
+ to[2] = bottom;
262
+ to[3] = left;
263
+ return to;
264
+ },
265
+ setTemp(top, right, bottom, left) {
266
+ return set$1(tempFour, top, right, bottom, left);
258
267
  },
259
- fourNumber(num, maxValue) {
268
+ toTempAB(a, b, change) {
269
+ tempTo = change ? isNumber(a) ? b : a : [];
270
+ if (isNumber(a)) tempA = setTemp(a), tempB = b; else if (isNumber(b)) tempA = a,
271
+ tempB = setTemp(b); else tempA = a, tempB = b;
272
+ if (tempA.length !== 4) tempA = get$5(tempA);
273
+ if (tempB.length !== 4) tempB = get$5(tempB);
274
+ },
275
+ get(num, maxValue) {
260
276
  let data;
261
- if (isArray(num)) {
277
+ if (!isNumber(num)) {
262
278
  switch (num.length) {
263
279
  case 4:
264
280
  data = isUndefined(maxValue) ? num : [ ...num ];
@@ -281,9 +297,39 @@ const MathHelper = {
281
297
  }
282
298
  }
283
299
  if (!data) data = [ num, num, num, num ];
284
- if (maxValue) for (let i = 0; i < 4; i++) if (data[i] > maxValue) data[i] = maxValue;
300
+ if (!isUndefined(maxValue)) for (let i = 0; i < 4; i++) if (data[i] > maxValue) data[i] = maxValue;
285
301
  return data;
286
302
  },
303
+ max(t, other, change) {
304
+ if (isNumber(t) && isNumber(other)) return max$4(t, other);
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]));
307
+ },
308
+ add(t, other, change) {
309
+ if (isNumber(t) && isNumber(other)) return t + other;
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]);
312
+ },
313
+ swapAndScale(t, scaleX, scaleY, change) {
314
+ if (isNumber(t)) return scaleX === scaleY ? t * scaleX : [ t * scaleY, t * scaleX ];
315
+ const to = change ? t : [];
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);
318
+ }
319
+ };
320
+
321
+ const {set: set$1, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
322
+
323
+ const {round: round$3, pow: pow$1, PI: PI$3} = Math;
324
+
325
+ const MathHelper = {
326
+ within(value, min, max) {
327
+ if (isObject(min)) max = min.max, min = min.min;
328
+ if (!isUndefined(min) && value < min) value = min;
329
+ if (!isUndefined(max) && value > max) value = max;
330
+ return value;
331
+ },
332
+ fourNumber: FourNumberHelper.get,
287
333
  formatRotation(rotation, unsign) {
288
334
  rotation %= 360;
289
335
  if (unsign) {
@@ -1014,7 +1060,7 @@ class Matrix {
1014
1060
  }
1015
1061
  }
1016
1062
 
1017
- const tempMatrix$1 = new Matrix;
1063
+ const tempMatrix$2 = new Matrix;
1018
1064
 
1019
1065
  const TwoPointBoundsHelper = {
1020
1066
  tempPointBounds: {},
@@ -1164,10 +1210,10 @@ const point = {};
1164
1210
 
1165
1211
  const toPoint$4 = {};
1166
1212
 
1167
- const tempBounds$2 = {};
1213
+ const tempBounds$3 = {};
1168
1214
 
1169
1215
  const BoundsHelper = {
1170
- tempBounds: tempBounds$2,
1216
+ tempBounds: tempBounds$3,
1171
1217
  set(t, x = 0, y = 0, width = 0, height = 0) {
1172
1218
  t.x = x;
1173
1219
  t.y = y;
@@ -1218,19 +1264,11 @@ const BoundsHelper = {
1218
1264
  B.move(t, x, y);
1219
1265
  return t;
1220
1266
  },
1221
- toOffsetOutBounds(t, to, parent) {
1222
- if (!to) {
1223
- to = t;
1224
- } else {
1225
- copy$8(to, t);
1226
- }
1227
- if (parent) {
1228
- to.offsetX = -(B.maxX(parent) - t.x);
1229
- to.offsetY = -(B.maxY(parent) - t.y);
1230
- } else {
1231
- to.offsetX = t.x + t.width;
1232
- to.offsetY = t.y + t.height;
1233
- }
1267
+ toOffsetOutBounds(t, to, offsetBounds) {
1268
+ if (!to) to = t; else copy$8(to, t);
1269
+ if (!offsetBounds) offsetBounds = t;
1270
+ to.offsetX = B.maxX(offsetBounds);
1271
+ to.offsetY = B.maxY(offsetBounds);
1234
1272
  B.move(to, -to.offsetX, -to.offsetY);
1235
1273
  },
1236
1274
  scale(t, scaleX, scaleY = scaleX, onlySize) {
@@ -1244,9 +1282,9 @@ const BoundsHelper = {
1244
1282
  t.height *= scaleY;
1245
1283
  },
1246
1284
  tempToOuterOf(t, matrix) {
1247
- B.copy(tempBounds$2, t);
1248
- B.toOuterOf(tempBounds$2, matrix);
1249
- return tempBounds$2;
1285
+ B.copy(tempBounds$3, t);
1286
+ B.toOuterOf(tempBounds$3, matrix);
1287
+ return tempBounds$3;
1250
1288
  },
1251
1289
  getOuterOf(t, matrix) {
1252
1290
  t = Object.assign({}, t);
@@ -1304,9 +1342,9 @@ const BoundsHelper = {
1304
1342
  put(t, put, align = "center", putScale = 1, changeSize = true, to) {
1305
1343
  to || (to = put);
1306
1344
  if (isString(putScale)) putScale = B.getFitScale(t, put, putScale === "cover");
1307
- tempBounds$2.width = changeSize ? put.width *= putScale : put.width * putScale;
1308
- tempBounds$2.height = changeSize ? put.height *= putScale : put.height * putScale;
1309
- AlignHelper.toPoint(align, tempBounds$2, t, to, true, true);
1345
+ tempBounds$3.width = changeSize ? put.width *= putScale : put.width * putScale;
1346
+ tempBounds$3.height = changeSize ? put.height *= putScale : put.height * putScale;
1347
+ AlignHelper.toPoint(align, tempBounds$3, t, to, true, true);
1310
1348
  },
1311
1349
  getSpread(t, spread, side) {
1312
1350
  const n = {};
@@ -1376,7 +1414,7 @@ const BoundsHelper = {
1376
1414
  first = false;
1377
1415
  if (!addMode) copy$8(t, bounds);
1378
1416
  } else {
1379
- add$1(t, bounds);
1417
+ add$2(t, bounds);
1380
1418
  }
1381
1419
  }
1382
1420
  }
@@ -1390,7 +1428,7 @@ const BoundsHelper = {
1390
1428
  B.set(t, point.x, point.y);
1391
1429
  },
1392
1430
  addPoint(t, point) {
1393
- add$1(t, point, true);
1431
+ add$2(t, point, true);
1394
1432
  },
1395
1433
  getPoints(t) {
1396
1434
  const {x: x, y: y, width: width, height: height} = t;
@@ -1461,7 +1499,7 @@ const BoundsHelper = {
1461
1499
 
1462
1500
  const B = BoundsHelper;
1463
1501
 
1464
- const {add: add$1, copy: copy$8} = B;
1502
+ const {add: add$2, copy: copy$8} = B;
1465
1503
 
1466
1504
  class Bounds {
1467
1505
  get minX() {
@@ -1606,7 +1644,7 @@ class Bounds {
1606
1644
  }
1607
1645
  }
1608
1646
 
1609
- const tempBounds$1 = new Bounds;
1647
+ const tempBounds$2 = new Bounds;
1610
1648
 
1611
1649
  class AutoBounds {
1612
1650
  constructor(top, right, bottom, left, width, height) {
@@ -2261,7 +2299,7 @@ class LeaferCanvasBase extends Canvas$1 {
2261
2299
  const {pixelRatio: pixelRatio, pixelSnap: pixelSnap} = this, w = this.worldTransform;
2262
2300
  if (parentMatrix) multiplyParent$4(matrix, parentMatrix, w);
2263
2301
  pixelScale(matrix, pixelRatio, w);
2264
- if (pixelSnap) {
2302
+ if (pixelSnap && !matrix.ignorePixelSnap) {
2265
2303
  if (matrix.half && matrix.half * pixelRatio % 2) w.e = round$1(w.e - .5) + .5, w.f = round$1(w.f - .5) + .5; else w.e = round$1(w.e),
2266
2304
  w.f = round$1(w.f);
2267
2305
  }
@@ -3985,7 +4023,7 @@ const I = ImageManager;
3985
4023
 
3986
4024
  const {IMAGE: IMAGE, create: create$1} = IncrementId;
3987
4025
 
3988
- const {floor: floor$1, max: max$1} = Math;
4026
+ const {floor: floor$1, max: max$3} = Math;
3989
4027
 
3990
4028
  class LeaferImage {
3991
4029
  get url() {
@@ -4074,7 +4112,7 @@ class LeaferImage {
4074
4112
  }
4075
4113
  if (data) return data;
4076
4114
  }
4077
- const canvas = Platform.origin.createCanvas(max$1(floor$1(width + (xGap || 0)), 1), max$1(floor$1(height + (yGap || 0)), 1));
4115
+ const canvas = Platform.origin.createCanvas(max$3(floor$1(width + (xGap || 0)), 1), max$3(floor$1(height + (yGap || 0)), 1));
4078
4116
  const ctx = canvas.getContext("2d");
4079
4117
  if (opacity) ctx.globalAlpha = opacity;
4080
4118
  ctx.imageSmoothingEnabled = smooth === false ? false : true;
@@ -4868,7 +4906,7 @@ const WaitHelper = {
4868
4906
 
4869
4907
  const {getRelativeWorld: getRelativeWorld$1, updateBounds: updateBounds$2} = LeafHelper;
4870
4908
 
4871
- const {toOuterOf: toOuterOf$2, getPoints: getPoints, copy: copy$4} = BoundsHelper;
4909
+ const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$4} = BoundsHelper;
4872
4910
 
4873
4911
  const localContent = "_localContentBounds";
4874
4912
 
@@ -4891,7 +4929,7 @@ class LeafLayout {
4891
4929
  this._renderBounds = bounds;
4892
4930
  }
4893
4931
  get localContentBounds() {
4894
- toOuterOf$2(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {}));
4932
+ toOuterOf$3(this.contentBounds, this.leaf.__localMatrix, this[localContent] || (this[localContent] = {}));
4895
4933
  return this[localContent];
4896
4934
  }
4897
4935
  get localStrokeBounds() {
@@ -4901,15 +4939,15 @@ class LeafLayout {
4901
4939
  return this._localRenderBounds || this;
4902
4940
  }
4903
4941
  get worldContentBounds() {
4904
- toOuterOf$2(this.contentBounds, this.leaf.__world, this[worldContent] || (this[worldContent] = {}));
4942
+ toOuterOf$3(this.contentBounds, this.leaf.__world, this[worldContent] || (this[worldContent] = {}));
4905
4943
  return this[worldContent];
4906
4944
  }
4907
4945
  get worldBoxBounds() {
4908
- toOuterOf$2(this.boxBounds, this.leaf.__world, this[worldBox] || (this[worldBox] = {}));
4946
+ toOuterOf$3(this.boxBounds, this.leaf.__world, this[worldBox] || (this[worldBox] = {}));
4909
4947
  return this[worldBox];
4910
4948
  }
4911
4949
  get worldStrokeBounds() {
4912
- toOuterOf$2(this.strokeBounds, this.leaf.__world, this[worldStroke] || (this[worldStroke] = {}));
4950
+ toOuterOf$3(this.strokeBounds, this.leaf.__world, this[worldStroke] || (this[worldStroke] = {}));
4913
4951
  return this[worldStroke];
4914
4952
  }
4915
4953
  get a() {
@@ -5761,14 +5799,14 @@ const {updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2} = LeafH
5761
5799
 
5762
5800
  const {updateBounds: updateBounds$1} = BranchHelper;
5763
5801
 
5764
- const {toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$1, copy: copy$3} = BoundsHelper;
5802
+ const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$3} = BoundsHelper;
5765
5803
 
5766
5804
  const {toBounds: toBounds} = PathBounds;
5767
5805
 
5768
5806
  const LeafBounds = {
5769
5807
  __updateWorldBounds() {
5770
5808
  const layout = this.__layout;
5771
- toOuterOf$1(layout.renderBounds, this.__world, this.__world);
5809
+ toOuterOf$2(layout.renderBounds, this.__world, this.__world);
5772
5810
  if (layout.resized) {
5773
5811
  if (layout.resized === "inner") this.__onUpdateSize();
5774
5812
  if (this.__hasLocalEvent) BoundsEvent.emitLocal(this);
@@ -5824,13 +5862,13 @@ const LeafBounds = {
5824
5862
  __updateLocalBoxBounds() {
5825
5863
  if (this.__hasMotionPath) this.__updateMotionPath();
5826
5864
  if (this.__hasAutoLayout) this.__updateAutoLayout();
5827
- toOuterOf$1(this.__layout.boxBounds, this.__local, this.__local);
5865
+ toOuterOf$2(this.__layout.boxBounds, this.__local, this.__local);
5828
5866
  },
5829
5867
  __updateLocalStrokeBounds() {
5830
- toOuterOf$1(this.__layout.strokeBounds, this.__localMatrix, this.__layout.localStrokeBounds);
5868
+ toOuterOf$2(this.__layout.strokeBounds, this.__localMatrix, this.__layout.localStrokeBounds);
5831
5869
  },
5832
5870
  __updateLocalRenderBounds() {
5833
- toOuterOf$1(this.__layout.renderBounds, this.__localMatrix, this.__layout.localRenderBounds);
5871
+ toOuterOf$2(this.__layout.renderBounds, this.__localMatrix, this.__layout.localRenderBounds);
5834
5872
  },
5835
5873
  __updateBoxBounds(_secondLayout, _bounds) {
5836
5874
  const b = this.__layout.boxBounds;
@@ -5868,11 +5906,11 @@ const LeafBounds = {
5868
5906
  },
5869
5907
  __updateStrokeBounds(_bounds) {
5870
5908
  const layout = this.__layout;
5871
- copyAndSpread$1(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
5909
+ copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
5872
5910
  },
5873
5911
  __updateRenderBounds(_bounds) {
5874
- const layout = this.__layout;
5875
- layout.renderSpread > 0 ? copyAndSpread$1(layout.renderBounds, layout.boxBounds, layout.renderSpread) : copy$3(layout.renderBounds, layout.strokeBounds);
5912
+ const layout = this.__layout, {renderSpread: renderSpread} = layout;
5913
+ isNumber(renderSpread) && renderSpread <= 0 ? copy$3(layout.renderBounds, layout.strokeBounds) : copyAndSpread$2(layout.renderBounds, layout.boxBounds, renderSpread);
5876
5914
  }
5877
5915
  };
5878
5916
 
@@ -5970,11 +6008,13 @@ const tempScaleData$1 = {};
5970
6008
 
5971
6009
  const {LEAF: LEAF, create: create} = IncrementId;
5972
6010
 
6011
+ const {stintSet: stintSet$3} = DataHelper;
6012
+
5973
6013
  const {toInnerPoint: toInnerPoint, toOuterPoint: toOuterPoint, multiplyParent: multiplyParent$1} = MatrixHelper;
5974
6014
 
5975
- const {toOuterOf: toOuterOf} = BoundsHelper;
6015
+ const {toOuterOf: toOuterOf$1} = BoundsHelper;
5976
6016
 
5977
- const {copy: copy$2, move: move} = PointHelper;
6017
+ const {copy: copy$2, move: move$2} = PointHelper;
5978
6018
 
5979
6019
  const {moveLocal: moveLocal, zoomOfLocal: zoomOfLocal, rotateOfLocal: rotateOfLocal, skewOfLocal: skewOfLocal, moveWorld: moveWorld, zoomOfWorld: zoomOfWorld, rotateOfWorld: rotateOfWorld, skewOfWorld: skewOfWorld, transform: transform, transformWorld: transformWorld, setTransform: setTransform, getFlipTransform: getFlipTransform, getLocalOrigin: getLocalOrigin, getRelativeWorld: getRelativeWorld, drop: drop} = LeafHelper;
5980
6020
 
@@ -6250,8 +6290,9 @@ let Leaf = class Leaf {
6250
6290
  if (!this.__cameraWorld) this.__cameraWorld = {};
6251
6291
  const cameraWorld = this.__cameraWorld, world = this.__world;
6252
6292
  multiplyParent$1(world, options.matrix, cameraWorld, undefined, world);
6253
- toOuterOf(this.__layout.renderBounds, cameraWorld, cameraWorld);
6254
- cameraWorld.half !== world.half && (cameraWorld.half = world.half);
6293
+ toOuterOf$1(this.__layout.renderBounds, cameraWorld, cameraWorld);
6294
+ stintSet$3(cameraWorld, "half", world.half);
6295
+ stintSet$3(cameraWorld, "ignorePixelSnap", world.ignorePixelSnap);
6255
6296
  return cameraWorld;
6256
6297
  } else {
6257
6298
  return this.__world;
@@ -6285,7 +6326,7 @@ let Leaf = class Leaf {
6285
6326
  getWorldBounds(inner, relative, change) {
6286
6327
  const matrix = relative ? getRelativeWorld(this, relative) : this.worldTransform;
6287
6328
  const to = change ? inner : {};
6288
- toOuterOf(inner, matrix, to);
6329
+ toOuterOf$1(inner, matrix, to);
6289
6330
  return to;
6290
6331
  }
6291
6332
  worldToLocal(world, to, distance, relative) {
@@ -6318,7 +6359,7 @@ let Leaf = class Leaf {
6318
6359
  }
6319
6360
  getBoxPointByInner(inner, _relative, _distance, change) {
6320
6361
  const point = change ? inner : Object.assign({}, inner), {x: x, y: y} = this.boxBounds;
6321
- move(point, -x, -y);
6362
+ move$2(point, -x, -y);
6322
6363
  return point;
6323
6364
  }
6324
6365
  getInnerPoint(world, relative, distance, change) {
@@ -6328,7 +6369,7 @@ let Leaf = class Leaf {
6328
6369
  }
6329
6370
  getInnerPointByBox(box, _relative, _distance, change) {
6330
6371
  const point = change ? box : Object.assign({}, box), {x: x, y: y} = this.boxBounds;
6331
- move(point, x, y);
6372
+ move$2(point, x, y);
6332
6373
  return point;
6333
6374
  }
6334
6375
  getInnerPointByLocal(local, _relative, distance, change) {
@@ -6774,7 +6815,7 @@ class LeafLevelList {
6774
6815
  }
6775
6816
  }
6776
6817
 
6777
- const version = "1.9.7";
6818
+ const version = "1.9.8";
6778
6819
 
6779
6820
  class LeaferCanvas extends LeaferCanvasBase {
6780
6821
  get allowBackgroundColor() {
@@ -7352,6 +7393,7 @@ class Renderer {
7352
7393
  usePartRender: true,
7353
7394
  maxFPS: 120
7354
7395
  };
7396
+ this.frames = [];
7355
7397
  this.target = target;
7356
7398
  this.canvas = canvas;
7357
7399
  if (userConfig) this.config = DataHelper.default(userConfig, this.config);
@@ -7504,12 +7546,15 @@ class Renderer {
7504
7546
  const target = this.target;
7505
7547
  if (this.requestTime || !target) return;
7506
7548
  if (target.parentApp) return target.parentApp.requestRender(false);
7507
- const requestTime = this.requestTime = Date.now();
7549
+ this.requestTime = this.frameTime || Date.now();
7508
7550
  const render = () => {
7509
- const nowFPS = 1e3 / (Date.now() - requestTime);
7551
+ const nowFPS = 1e3 / ((this.frameTime = Date.now()) - this.requestTime);
7510
7552
  const {maxFPS: maxFPS} = this.config;
7511
- if (maxFPS && nowFPS > maxFPS - .5) return Platform.requestRender(render);
7512
- this.FPS = Math.min(120, Math.ceil(nowFPS));
7553
+ if (maxFPS && nowFPS > maxFPS) return Platform.requestRender(render);
7554
+ const {frames: frames} = this;
7555
+ if (frames.length > 30) frames.shift();
7556
+ frames.push(nowFPS);
7557
+ this.FPS = Math.round(frames.reduce((a, b) => a + b, 0) / frames.length);
7513
7558
  this.requestTime = 0;
7514
7559
  this.checkRender();
7515
7560
  };
@@ -7982,39 +8027,41 @@ class CanvasData extends RectData {
7982
8027
  }
7983
8028
  }
7984
8029
 
8030
+ const {max: max$2, add: add$1} = FourNumberHelper;
8031
+
7985
8032
  const UIBounds = {
7986
8033
  __updateStrokeSpread() {
7987
- let width = 0, boxWidth = 0;
8034
+ let spread = 0, boxSpread = 0;
7988
8035
  const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
7989
8036
  if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
7990
- boxWidth = width = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
8037
+ boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
7991
8038
  if (!data.__boxStroke) {
7992
- const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * width;
8039
+ const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
7993
8040
  const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
7994
- width += Math.max(miterLimitAddWidth, storkeCapAddWidth);
8041
+ spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
7995
8042
  }
7996
8043
  }
7997
- if (data.__useArrow) width += strokeWidth * 5;
8044
+ if (data.__useArrow) spread += strokeWidth * 5;
7998
8045
  if (box) {
7999
- width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width);
8000
- boxWidth = box.__layout.strokeBoxSpread;
8046
+ spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
8047
+ boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
8001
8048
  }
8002
- this.__layout.strokeBoxSpread = boxWidth;
8003
- return width;
8049
+ this.__layout.strokeBoxSpread = boxSpread;
8050
+ return spread;
8004
8051
  },
8005
8052
  __updateRenderSpread() {
8006
- let width = 0;
8007
- const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__;
8008
- if (shadow) width = Effect.getShadowSpread(this, shadow);
8009
- if (blur) width = Math.max(width, blur);
8010
- if (filter) width += Filter.getSpread(filter);
8011
- if (renderSpread) width += renderSpread;
8012
- let shapeWidth = width = Math.ceil(width);
8013
- if (innerShadow) innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5));
8014
- if (backgroundBlur) shapeWidth = Math.max(shapeWidth, backgroundBlur);
8015
- this.__layout.renderShapeSpread = shapeWidth;
8016
- width += this.__layout.strokeSpread || 0;
8017
- return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width;
8053
+ let spread = 0;
8054
+ const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
8055
+ if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
8056
+ if (blur) spread = max$2(spread, blur);
8057
+ if (filter) spread = add$1(spread, Filter.getSpread(filter));
8058
+ if (renderSpread) spread = add$1(spread, renderSpread);
8059
+ if (strokeSpread) spread = add$1(spread, strokeSpread);
8060
+ let shapeSpread = spread;
8061
+ if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
8062
+ if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
8063
+ this.__layout.renderShapeSpread = shapeSpread;
8064
+ return box ? max$2(box.__updateRenderSpread(), spread) : spread;
8018
8065
  }
8019
8066
  };
8020
8067
 
@@ -9325,7 +9372,7 @@ __decorate([ resizeType() ], Canvas.prototype, "contextSettings", void 0);
9325
9372
 
9326
9373
  Canvas = __decorate([ registerUI() ], Canvas);
9327
9374
 
9328
- const {copyAndSpread: copyAndSpread, includes: includes, spread: spread, setList: setList} = BoundsHelper;
9375
+ const {copyAndSpread: copyAndSpread$1, includes: includes, spread: spread, setList: setList} = BoundsHelper;
9329
9376
 
9330
9377
  let Text = class Text extends UI {
9331
9378
  get __tag() {
@@ -9372,13 +9419,13 @@ let Text = class Text extends UI {
9372
9419
  if (this.isOverflow) setList(data.__textBoxBounds = {}, [ b, contentBounds ]), layout.renderChanged = true; else data.__textBoxBounds = b;
9373
9420
  }
9374
9421
  __updateRenderSpread() {
9375
- let width = super.__updateRenderSpread();
9376
- if (!width) width = this.isOverflow ? 1 : 0;
9377
- return width;
9422
+ let spread = super.__updateRenderSpread();
9423
+ if (!spread) spread = this.isOverflow ? 1 : 0;
9424
+ return spread;
9378
9425
  }
9379
9426
  __updateRenderBounds() {
9380
9427
  const {renderBounds: renderBounds, renderSpread: renderSpread} = this.__layout;
9381
- copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
9428
+ copyAndSpread$1(renderBounds, this.__.__textBoxBounds, renderSpread);
9382
9429
  if (this.__box) this.__box.__layout.renderBounds = renderBounds;
9383
9430
  }
9384
9431
  __updateChange() {
@@ -9746,24 +9793,29 @@ function drawOutside(stroke, ui, canvas) {
9746
9793
  }
9747
9794
  }
9748
9795
 
9749
- const {getSpread: getSpread, getOuterOf: getOuterOf, getByMove: getByMove, getIntersectData: getIntersectData} = BoundsHelper;
9796
+ const {getSpread: getSpread, copyAndSpread: copyAndSpread, toOuterOf: toOuterOf, getOuterOf: getOuterOf, getByMove: getByMove, move: move$1, getIntersectData: getIntersectData} = BoundsHelper;
9797
+
9798
+ const tempBounds$1 = {};
9750
9799
 
9751
9800
  function shape(ui, current, options) {
9752
9801
  const canvas = current.getSameCanvas();
9753
- const nowWorld = ui.__nowWorld, currentBounds = current.bounds;
9754
- let bounds, matrix, fitMatrix, shapeBounds, worldCanvas;
9802
+ const currentBounds = current.bounds, nowWorld = ui.__nowWorld, layout = ui.__layout;
9803
+ const nowWorldShapeBounds = ui.__nowWorldShapeBounds || (ui.__nowWorldShapeBounds = {});
9804
+ toOuterOf(layout.strokeSpread ? (copyAndSpread(tempBounds$1, layout.boxBounds, layout.strokeSpread),
9805
+ tempBounds$1) : layout.boxBounds, nowWorld, nowWorldShapeBounds);
9806
+ let bounds, renderBounds, matrix, fitMatrix, shapeBounds, worldCanvas;
9755
9807
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
9756
- if (currentBounds.includes(nowWorld)) {
9808
+ if (currentBounds.includes(nowWorldShapeBounds)) {
9757
9809
  worldCanvas = canvas;
9758
- bounds = shapeBounds = nowWorld;
9810
+ bounds = shapeBounds = nowWorldShapeBounds;
9811
+ renderBounds = nowWorld;
9759
9812
  } else {
9760
- const {renderShapeSpread: spread} = ui.__layout;
9761
9813
  let worldClipBounds;
9762
9814
  if (Platform.fullImageShadow) {
9763
- worldClipBounds = nowWorld;
9815
+ worldClipBounds = nowWorldShapeBounds;
9764
9816
  } else {
9765
- const spreadBounds = spread ? getSpread(currentBounds, scaleX === scaleY ? spread * scaleX : [ spread * scaleY, spread * scaleX ]) : currentBounds;
9766
- worldClipBounds = getIntersectData(spreadBounds, nowWorld);
9817
+ const spreadBounds = layout.renderShapeSpread ? getSpread(currentBounds, FourNumberHelper.swapAndScale(layout.renderShapeSpread, scaleX, scaleY)) : currentBounds;
9818
+ worldClipBounds = getIntersectData(spreadBounds, nowWorldShapeBounds);
9767
9819
  }
9768
9820
  fitMatrix = currentBounds.getFitMatrix(worldClipBounds);
9769
9821
  let {a: fitScaleX, d: fitScaleY} = fitMatrix;
@@ -9773,8 +9825,10 @@ function shape(ui, current, options) {
9773
9825
  scaleX *= fitScaleX;
9774
9826
  scaleY *= fitScaleY;
9775
9827
  }
9776
- shapeBounds = getOuterOf(nowWorld, fitMatrix);
9828
+ shapeBounds = getOuterOf(nowWorldShapeBounds, fitMatrix);
9777
9829
  bounds = getByMove(shapeBounds, -fitMatrix.e, -fitMatrix.f);
9830
+ renderBounds = getOuterOf(nowWorld, fitMatrix);
9831
+ move$1(renderBounds, -fitMatrix.e, -fitMatrix.f);
9778
9832
  const userMatrix = options.matrix;
9779
9833
  if (userMatrix) {
9780
9834
  matrix = new Matrix(fitMatrix);
@@ -9793,6 +9847,7 @@ function shape(ui, current, options) {
9793
9847
  matrix: matrix,
9794
9848
  fitMatrix: fitMatrix,
9795
9849
  bounds: bounds,
9850
+ renderBounds: renderBounds,
9796
9851
  worldCanvas: worldCanvas,
9797
9852
  shapeBounds: shapeBounds,
9798
9853
  scaleX: scaleX,
@@ -9896,7 +9951,7 @@ const PaintModule = {
9896
9951
  shape: shape
9897
9952
  };
9898
9953
 
9899
- let origin = {}, tempMatrix = getMatrixData();
9954
+ let origin = {}, tempMatrix$1 = getMatrixData();
9900
9955
 
9901
9956
  const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
9902
9957
 
@@ -9911,12 +9966,12 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
9911
9966
  data.transform = transform;
9912
9967
  }
9913
9968
 
9914
- function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipSize) {
9969
+ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY) {
9915
9970
  const transform = get$3();
9916
9971
  layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
9917
- if (clipSize) {
9918
- tempMatrix.a = box.width / clipSize.width, tempMatrix.d = box.height / clipSize.height;
9919
- multiplyParent(transform, tempMatrix);
9972
+ if (clipScaleX) {
9973
+ tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
9974
+ multiplyParent(transform, tempMatrix$1);
9920
9975
  }
9921
9976
  data.transform = transform;
9922
9977
  }
@@ -10017,7 +10072,12 @@ function getPatternData(paint, box, image) {
10017
10072
 
10018
10073
  case "normal":
10019
10074
  case "clip":
10020
- if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew) clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, paint.clipSize);
10075
+ if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew) {
10076
+ let clipScaleX, clipScaleY;
10077
+ if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
10078
+ clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
10079
+ if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : scaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
10080
+ }
10021
10081
  break;
10022
10082
 
10023
10083
  case "repeat":
@@ -10175,7 +10235,7 @@ function ignoreRender(ui, value) {
10175
10235
 
10176
10236
  const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
10177
10237
 
10178
- const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
10238
+ const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
10179
10239
 
10180
10240
  function createPattern(ui, paint, pixelRatio) {
10181
10241
  let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
@@ -10224,8 +10284,8 @@ function createPattern(ui, paint, pixelRatio) {
10224
10284
  if (transform || scaleX !== 1 || scaleY !== 1) {
10225
10285
  const canvasWidth = width + (xGap || 0);
10226
10286
  const canvasHeight = height + (yGap || 0);
10227
- scaleX /= canvasWidth / max(floor(canvasWidth), 1);
10228
- scaleY /= canvasHeight / max(floor(canvasHeight), 1);
10287
+ scaleX /= canvasWidth / max$1(floor(canvasWidth), 1);
10288
+ scaleY /= canvasHeight / max$1(floor(canvasHeight), 1);
10229
10289
  if (!imageMatrix) {
10230
10290
  imageMatrix = get$1();
10231
10291
  if (transform) copy$1(imageMatrix, transform);
@@ -10251,17 +10311,15 @@ function checkImage(ui, canvas, paint, allowDraw) {
10251
10311
  if (allowDraw) {
10252
10312
  if (data.repeat) {
10253
10313
  allowDraw = false;
10254
- } else {
10255
- if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || Export.running)) {
10256
- let {width: width, height: height} = data;
10257
- width *= scaleX * pixelRatio;
10258
- height *= scaleY * pixelRatio;
10259
- if (data.scaleX) {
10260
- width *= data.scaleX;
10261
- height *= data.scaleY;
10262
- }
10263
- allowDraw = width * height > Platform.image.maxCacheSize;
10314
+ } else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || Export.running)) {
10315
+ let {width: width, height: height} = data;
10316
+ width *= scaleX * pixelRatio;
10317
+ height *= scaleY * pixelRatio;
10318
+ if (data.scaleX) {
10319
+ width *= data.scaleX;
10320
+ height *= data.scaleY;
10264
10321
  }
10322
+ allowDraw = width * height > Platform.image.maxCacheSize;
10265
10323
  }
10266
10324
  }
10267
10325
  if (allowDraw) {
@@ -10441,20 +10499,20 @@ const PaintGradientModule = {
10441
10499
  getTransform: getTransform
10442
10500
  };
10443
10501
 
10444
- const {copy: copy, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper;
10502
+ const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
10445
10503
 
10446
- const tempBounds = {};
10504
+ const tempBounds = {}, tempMatrix = new Matrix;
10447
10505
 
10448
10506
  const offsetOutBounds$1 = {};
10449
10507
 
10450
10508
  function shadow(ui, current, shape) {
10451
- let copyBounds, spreadScale;
10452
- const {__nowWorld: nowWorld, __layout: __layout} = ui;
10509
+ let copyBounds, transform;
10510
+ const {__nowWorld: nowWorld} = ui;
10453
10511
  const {shadow: shadow} = ui.__;
10454
- const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
10512
+ const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
10455
10513
  const other = current.getSameCanvas();
10456
10514
  const end = shadow.length - 1;
10457
- toOffsetOutBounds$1(bounds, offsetOutBounds$1);
10515
+ toOffsetOutBounds$1(bounds, offsetOutBounds$1, renderBounds);
10458
10516
  shadow.forEach((item, index) => {
10459
10517
  let otherScale = 1;
10460
10518
  if (item.scaleFixed) {
@@ -10462,54 +10520,61 @@ function shadow(ui, current, shape) {
10462
10520
  if (sx > 1) otherScale = 1 / sx;
10463
10521
  }
10464
10522
  other.setWorldShadow(offsetOutBounds$1.offsetX + item.x * scaleX * otherScale, offsetOutBounds$1.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale, ColorConvert.string(item.color));
10465
- spreadScale = item.spread ? 1 + item.spread * 2 / (__layout.boxBounds.width + (__layout.strokeBoxSpread || 0) * 2) * otherScale : 0;
10466
- drawWorldShadow(other, offsetOutBounds$1, spreadScale, shape);
10467
- copyBounds = bounds;
10523
+ transform = getShadowTransform(ui, other, shape, item, offsetOutBounds$1, otherScale);
10524
+ if (transform) other.setTransform(transform);
10525
+ drawWorldShadow(other, offsetOutBounds$1, shape);
10526
+ if (transform) other.resetTransform();
10527
+ copyBounds = renderBounds;
10468
10528
  if (item.box) {
10469
10529
  other.restore();
10470
10530
  other.save();
10471
10531
  if (worldCanvas) {
10472
- other.copyWorld(other, bounds, nowWorld, "copy");
10532
+ other.copyWorld(other, renderBounds, nowWorld, "copy");
10473
10533
  copyBounds = nowWorld;
10474
10534
  }
10475
10535
  worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, "destination-out") : other.copyWorld(shape.canvas, shapeBounds, bounds, "destination-out");
10476
10536
  }
10477
- if (Effect.isTransformShadow(item)) Effect.renderTransformShadow(ui, current, other, copyBounds, item); else LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
10537
+ LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
10478
10538
  if (end && index < end) other.clearWorld(copyBounds);
10479
10539
  });
10480
10540
  other.recycle(copyBounds);
10481
10541
  }
10482
10542
 
10483
- function getShadowSpread(_ui, shadow) {
10484
- let width = 0;
10485
- shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5));
10486
- return width;
10543
+ function getShadowRenderSpread(_ui, shadow) {
10544
+ let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
10545
+ shadow.forEach(item => {
10546
+ x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
10547
+ top = max(top, spread + blur - y);
10548
+ right = max(right, spread + blur + x);
10549
+ bottom = max(bottom, spread + blur + y);
10550
+ left = max(left, spread + blur - x);
10551
+ });
10552
+ return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
10553
+ }
10554
+
10555
+ function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
10556
+ if (shadow.spread) {
10557
+ const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
10558
+ tempMatrix.set().scaleOfOuter({
10559
+ x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
10560
+ y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
10561
+ }, spreadScale);
10562
+ return tempMatrix;
10563
+ }
10564
+ return undefined;
10487
10565
  }
10488
10566
 
10489
- function drawWorldShadow(canvas, outBounds, spreadScale, shape) {
10490
- const {bounds: bounds, shapeBounds: shapeBounds} = shape;
10567
+ function drawWorldShadow(canvas, outBounds, shape) {
10568
+ const {shapeBounds: shapeBounds} = shape;
10569
+ let from, to;
10491
10570
  if (Platform.fullImageShadow) {
10492
10571
  copy(tempBounds, canvas.bounds);
10493
- tempBounds.x += outBounds.x - shapeBounds.x;
10494
- tempBounds.y += outBounds.y - shapeBounds.y;
10495
- if (spreadScale) {
10496
- const {fitMatrix: fitMatrix} = shape;
10497
- tempBounds.x -= (bounds.x + (fitMatrix ? fitMatrix.e : 0) + bounds.width / 2) * (spreadScale - 1);
10498
- tempBounds.y -= (bounds.y + (fitMatrix ? fitMatrix.f : 0) + bounds.height / 2) * (spreadScale - 1);
10499
- tempBounds.width *= spreadScale;
10500
- tempBounds.height *= spreadScale;
10501
- }
10502
- canvas.copyWorld(shape.canvas, canvas.bounds, tempBounds);
10572
+ move(tempBounds, outBounds.x - shapeBounds.x, outBounds.y - shapeBounds.y);
10573
+ from = canvas.bounds, to = tempBounds;
10503
10574
  } else {
10504
- if (spreadScale) {
10505
- copy(tempBounds, outBounds);
10506
- tempBounds.x -= outBounds.width / 2 * (spreadScale - 1);
10507
- tempBounds.y -= outBounds.height / 2 * (spreadScale - 1);
10508
- tempBounds.width *= spreadScale;
10509
- tempBounds.height *= spreadScale;
10510
- }
10511
- canvas.copyWorld(shape.canvas, shapeBounds, spreadScale ? tempBounds : outBounds);
10575
+ from = shapeBounds, to = outBounds;
10512
10576
  }
10577
+ canvas.copyWorld(shape.canvas, from, to);
10513
10578
  }
10514
10579
 
10515
10580
  const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
@@ -10517,13 +10582,13 @@ const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
10517
10582
  const offsetOutBounds = {};
10518
10583
 
10519
10584
  function innerShadow(ui, current, shape) {
10520
- let copyBounds, spreadScale;
10521
- const {__nowWorld: nowWorld, __layout: __layout} = ui;
10585
+ let copyBounds, transform;
10586
+ const {__nowWorld: nowWorld} = ui;
10522
10587
  const {innerShadow: innerShadow} = ui.__;
10523
- const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
10588
+ const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
10524
10589
  const other = current.getSameCanvas();
10525
10590
  const end = innerShadow.length - 1;
10526
- toOffsetOutBounds(bounds, offsetOutBounds);
10591
+ toOffsetOutBounds(bounds, offsetOutBounds, renderBounds);
10527
10592
  innerShadow.forEach((item, index) => {
10528
10593
  let otherScale = 1;
10529
10594
  if (item.scaleFixed) {
@@ -10532,16 +10597,17 @@ function innerShadow(ui, current, shape) {
10532
10597
  }
10533
10598
  other.save();
10534
10599
  other.setWorldShadow(offsetOutBounds.offsetX + item.x * scaleX * otherScale, offsetOutBounds.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale);
10535
- spreadScale = item.spread ? 1 - item.spread * 2 / (__layout.boxBounds.width + (__layout.strokeBoxSpread || 0) * 2) * otherScale : 0;
10536
- drawWorldShadow(other, offsetOutBounds, spreadScale, shape);
10600
+ transform = getShadowTransform(ui, other, shape, item, offsetOutBounds, otherScale, true);
10601
+ if (transform) other.setTransform(transform);
10602
+ drawWorldShadow(other, offsetOutBounds, shape);
10537
10603
  other.restore();
10538
10604
  if (worldCanvas) {
10539
- other.copyWorld(other, bounds, nowWorld, "copy");
10605
+ other.copyWorld(other, renderBounds, nowWorld, "copy");
10540
10606
  other.copyWorld(worldCanvas, nowWorld, nowWorld, "source-out");
10541
10607
  copyBounds = nowWorld;
10542
10608
  } else {
10543
10609
  other.copyWorld(shape.canvas, shapeBounds, bounds, "source-out");
10544
- copyBounds = bounds;
10610
+ copyBounds = renderBounds;
10545
10611
  }
10546
10612
  other.fillWorld(copyBounds, ColorConvert.string(item.color), "source-in");
10547
10613
  LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
@@ -10550,6 +10616,8 @@ function innerShadow(ui, current, shape) {
10550
10616
  other.recycle(copyBounds);
10551
10617
  }
10552
10618
 
10619
+ const getInnerShadowSpread = getShadowRenderSpread;
10620
+
10553
10621
  function blur(ui, current, origin) {
10554
10622
  const {blur: blur} = ui.__;
10555
10623
  origin.setWorldBlur(blur * ui.__nowWorld.a);
@@ -10564,10 +10632,12 @@ const EffectModule = {
10564
10632
  innerShadow: innerShadow,
10565
10633
  blur: blur,
10566
10634
  backgroundBlur: backgroundBlur,
10567
- getShadowSpread: getShadowSpread,
10635
+ getShadowRenderSpread: getShadowRenderSpread,
10636
+ getShadowTransform: getShadowTransform,
10568
10637
  isTransformShadow(_shadow) {
10569
10638
  return undefined;
10570
- }
10639
+ },
10640
+ getInnerShadowSpread: getInnerShadowSpread
10571
10641
  };
10572
10642
 
10573
10643
  const {excludeRenderBounds: excludeRenderBounds} = LeafBoundsHelper;
@@ -10584,6 +10654,7 @@ Group.prototype.__renderMask = function(canvas, options) {
10584
10654
  maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity, undefined, true);
10585
10655
  maskCanvas = contentCanvas = null;
10586
10656
  }
10657
+ if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
10587
10658
  maskOpacity = child.__.opacity;
10588
10659
  usedGrayscaleAlpha = false;
10589
10660
  if (mask === "path" || mask === "clipping-path") {
@@ -10601,7 +10672,6 @@ Group.prototype.__renderMask = function(canvas, options) {
10601
10672
  if (!contentCanvas) contentCanvas = getCanvas(canvas);
10602
10673
  child.__render(maskCanvas, options);
10603
10674
  }
10604
- if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
10605
10675
  continue;
10606
10676
  }
10607
10677
  const childBlendMode = maskOpacity === 1 && child.__.__blendMode;
@@ -11193,4 +11263,4 @@ try {
11193
11263
  if (wx) useCanvas("miniapp", wx);
11194
11264
  } catch (_a) {}
11195
11265
 
11196
- export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, 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, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, 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, 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$1 as tempBounds, tempMatrix$1 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
11266
+ export { AlignHelper, Answer, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, 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, LeaferImage, Line, LineData, MathHelper, Matrix, MatrixHelper, MyImage, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, 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, 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 };