@leafer-ui/worker 1.9.7 → 1.9.9
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.
- package/dist/worker.cjs +109 -81
- package/dist/worker.esm.js +110 -82
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.esm.min.js.map +1 -1
- package/dist/worker.js +239 -176
- package/dist/worker.min.cjs +1 -1
- package/dist/worker.min.cjs.map +1 -1
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +247 -176
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +11 -11
package/dist/worker.module.js
CHANGED
|
@@ -247,18 +247,34 @@ class LeafData {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
-
|
|
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 (
|
|
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$
|
|
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$
|
|
1213
|
+
const tempBounds$3 = {};
|
|
1168
1214
|
|
|
1169
1215
|
const BoundsHelper = {
|
|
1170
|
-
tempBounds: tempBounds$
|
|
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,
|
|
1222
|
-
if (!to)
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
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$9(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$
|
|
1248
|
-
B.toOuterOf(tempBounds$
|
|
1249
|
-
return tempBounds$
|
|
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$
|
|
1308
|
-
tempBounds$
|
|
1309
|
-
AlignHelper.toPoint(align, tempBounds$
|
|
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$9(t, bounds);
|
|
1378
1416
|
} else {
|
|
1379
|
-
add$
|
|
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$
|
|
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$
|
|
1502
|
+
const {add: add$2, copy: copy$9} = 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$
|
|
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$1 = ImageManager;
|
|
|
3985
4023
|
|
|
3986
4024
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
3987
4025
|
|
|
3988
|
-
const {floor: floor$1, max: max$
|
|
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$
|
|
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$
|
|
4909
|
+
const {toOuterOf: toOuterOf$3, getPoints: getPoints, copy: copy$5} = 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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
5802
|
+
const {toOuterOf: toOuterOf$2, copyAndSpread: copyAndSpread$2, copy: copy$4} = 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$
|
|
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$
|
|
5865
|
+
toOuterOf$2(this.__layout.boxBounds, this.__local, this.__local);
|
|
5828
5866
|
},
|
|
5829
5867
|
__updateLocalStrokeBounds() {
|
|
5830
|
-
toOuterOf$
|
|
5868
|
+
toOuterOf$2(this.__layout.strokeBounds, this.__localMatrix, this.__layout.localStrokeBounds);
|
|
5831
5869
|
},
|
|
5832
5870
|
__updateLocalRenderBounds() {
|
|
5833
|
-
toOuterOf$
|
|
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$
|
|
5909
|
+
copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
|
|
5872
5910
|
},
|
|
5873
5911
|
__updateRenderBounds(_bounds) {
|
|
5874
|
-
const layout = this.__layout;
|
|
5875
|
-
|
|
5912
|
+
const layout = this.__layout, {renderSpread: renderSpread} = layout;
|
|
5913
|
+
isNumber(renderSpread) && renderSpread <= 0 ? copy$4(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$3, move: move} = PointHelper;
|
|
6017
|
+
const {copy: copy$3, 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
|
|
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.
|
|
6818
|
+
const version = "1.9.9";
|
|
6778
6819
|
|
|
6779
6820
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6780
6821
|
get allowBackgroundColor() {
|
|
@@ -7199,6 +7240,7 @@ class Renderer {
|
|
|
7199
7240
|
usePartRender: true,
|
|
7200
7241
|
maxFPS: 120
|
|
7201
7242
|
};
|
|
7243
|
+
this.frames = [];
|
|
7202
7244
|
this.target = target;
|
|
7203
7245
|
this.canvas = canvas;
|
|
7204
7246
|
if (userConfig) this.config = DataHelper.default(userConfig, this.config);
|
|
@@ -7351,12 +7393,15 @@ class Renderer {
|
|
|
7351
7393
|
const target = this.target;
|
|
7352
7394
|
if (this.requestTime || !target) return;
|
|
7353
7395
|
if (target.parentApp) return target.parentApp.requestRender(false);
|
|
7354
|
-
|
|
7396
|
+
this.requestTime = this.frameTime || Date.now();
|
|
7355
7397
|
const render = () => {
|
|
7356
|
-
const nowFPS = 1e3 / (Date.now() - requestTime);
|
|
7398
|
+
const nowFPS = 1e3 / ((this.frameTime = Date.now()) - this.requestTime);
|
|
7357
7399
|
const {maxFPS: maxFPS} = this.config;
|
|
7358
|
-
if (maxFPS && nowFPS > maxFPS
|
|
7359
|
-
|
|
7400
|
+
if (maxFPS && nowFPS > maxFPS) return Platform.requestRender(render);
|
|
7401
|
+
const {frames: frames} = this;
|
|
7402
|
+
if (frames.length > 30) frames.shift();
|
|
7403
|
+
frames.push(nowFPS);
|
|
7404
|
+
this.FPS = Math.round(frames.reduce((a, b) => a + b, 0) / frames.length);
|
|
7360
7405
|
this.requestTime = 0;
|
|
7361
7406
|
this.checkRender();
|
|
7362
7407
|
};
|
|
@@ -8012,39 +8057,41 @@ class CanvasData extends RectData {
|
|
|
8012
8057
|
}
|
|
8013
8058
|
}
|
|
8014
8059
|
|
|
8060
|
+
const {max: max$2, add: add$1} = FourNumberHelper;
|
|
8061
|
+
|
|
8015
8062
|
const UIBounds = {
|
|
8016
8063
|
__updateStrokeSpread() {
|
|
8017
|
-
let
|
|
8064
|
+
let spread = 0, boxSpread = 0;
|
|
8018
8065
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8019
8066
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8020
|
-
|
|
8067
|
+
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8021
8068
|
if (!data.__boxStroke) {
|
|
8022
|
-
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 *
|
|
8069
|
+
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8023
8070
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8024
|
-
|
|
8071
|
+
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
8025
8072
|
}
|
|
8026
8073
|
}
|
|
8027
|
-
if (data.__useArrow)
|
|
8074
|
+
if (data.__useArrow) spread += strokeWidth * 5;
|
|
8028
8075
|
if (box) {
|
|
8029
|
-
|
|
8030
|
-
|
|
8076
|
+
spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
|
|
8077
|
+
boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
|
|
8031
8078
|
}
|
|
8032
|
-
this.__layout.strokeBoxSpread =
|
|
8033
|
-
return
|
|
8079
|
+
this.__layout.strokeBoxSpread = boxSpread;
|
|
8080
|
+
return spread;
|
|
8034
8081
|
},
|
|
8035
8082
|
__updateRenderSpread() {
|
|
8036
|
-
let
|
|
8037
|
-
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__;
|
|
8038
|
-
if (shadow)
|
|
8039
|
-
if (blur)
|
|
8040
|
-
if (filter)
|
|
8041
|
-
if (renderSpread)
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
if (
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
return
|
|
8083
|
+
let spread = 0;
|
|
8084
|
+
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
|
|
8085
|
+
if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
|
|
8086
|
+
if (blur) spread = max$2(spread, blur);
|
|
8087
|
+
if (filter) spread = add$1(spread, Filter.getSpread(filter));
|
|
8088
|
+
if (renderSpread) spread = add$1(spread, renderSpread);
|
|
8089
|
+
if (strokeSpread) spread = add$1(spread, strokeSpread);
|
|
8090
|
+
let shapeSpread = spread;
|
|
8091
|
+
if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
|
|
8092
|
+
if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
|
|
8093
|
+
this.__layout.renderShapeSpread = shapeSpread;
|
|
8094
|
+
return box ? max$2(box.__updateRenderSpread(), spread) : spread;
|
|
8048
8095
|
}
|
|
8049
8096
|
};
|
|
8050
8097
|
|
|
@@ -9355,7 +9402,7 @@ __decorate([ resizeType() ], Canvas.prototype, "contextSettings", void 0);
|
|
|
9355
9402
|
|
|
9356
9403
|
Canvas = __decorate([ registerUI() ], Canvas);
|
|
9357
9404
|
|
|
9358
|
-
const {copyAndSpread: copyAndSpread, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9405
|
+
const {copyAndSpread: copyAndSpread$1, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9359
9406
|
|
|
9360
9407
|
let Text = class Text extends UI {
|
|
9361
9408
|
get __tag() {
|
|
@@ -9402,13 +9449,13 @@ let Text = class Text extends UI {
|
|
|
9402
9449
|
if (this.isOverflow) setList(data.__textBoxBounds = {}, [ b, contentBounds ]), layout.renderChanged = true; else data.__textBoxBounds = b;
|
|
9403
9450
|
}
|
|
9404
9451
|
__updateRenderSpread() {
|
|
9405
|
-
let
|
|
9406
|
-
if (!
|
|
9407
|
-
return
|
|
9452
|
+
let spread = super.__updateRenderSpread();
|
|
9453
|
+
if (!spread) spread = this.isOverflow ? 1 : 0;
|
|
9454
|
+
return spread;
|
|
9408
9455
|
}
|
|
9409
9456
|
__updateRenderBounds() {
|
|
9410
9457
|
const {renderBounds: renderBounds, renderSpread: renderSpread} = this.__layout;
|
|
9411
|
-
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9458
|
+
copyAndSpread$1(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9412
9459
|
if (this.__box) this.__box.__layout.renderBounds = renderBounds;
|
|
9413
9460
|
}
|
|
9414
9461
|
__updateChange() {
|
|
@@ -9834,9 +9881,9 @@ let DragEvent = class DragEvent extends PointerEvent {
|
|
|
9834
9881
|
static setData(data) {
|
|
9835
9882
|
this.data = data;
|
|
9836
9883
|
}
|
|
9837
|
-
static getValidMove(leaf,
|
|
9838
|
-
const move = leaf.getLocalPoint(
|
|
9839
|
-
PointHelper.move(move,
|
|
9884
|
+
static getValidMove(leaf, localStart, worldTotal, checkLimit = true) {
|
|
9885
|
+
const move = leaf.getLocalPoint(worldTotal, null, true);
|
|
9886
|
+
PointHelper.move(move, localStart.x - leaf.x, localStart.y - leaf.y);
|
|
9840
9887
|
if (checkLimit) this.limitMove(leaf, move);
|
|
9841
9888
|
DragBoundsHelper.axisMove(leaf, move);
|
|
9842
9889
|
return move;
|
|
@@ -10866,8 +10913,8 @@ ui$1.__updateHitCanvas = function() {
|
|
|
10866
10913
|
if (isHitPixel) {
|
|
10867
10914
|
const {renderBounds: renderBounds} = this.__layout;
|
|
10868
10915
|
const size = Platform.image.hitCanvasSize;
|
|
10869
|
-
const scale = h.hitScale = tempBounds$
|
|
10870
|
-
const {x: x, y: y, width: width, height: height} = tempBounds$
|
|
10916
|
+
const scale = h.hitScale = tempBounds$2.set(0, 0, size, size).getFitMatrix(renderBounds).a;
|
|
10917
|
+
const {x: x, y: y, width: width, height: height} = tempBounds$2.set(renderBounds).scale(scale);
|
|
10871
10918
|
h.resize({
|
|
10872
10919
|
width: width,
|
|
10873
10920
|
height: height,
|
|
@@ -10964,8 +11011,8 @@ canvas.hitStroke = function(point, strokeWidth) {
|
|
|
10964
11011
|
canvas.hitPixel = function(radiusPoint, offset, scale = 1) {
|
|
10965
11012
|
let {x: x, y: y, radiusX: radiusX, radiusY: radiusY} = radiusPoint;
|
|
10966
11013
|
if (offset) x -= offset.x, y -= offset.y;
|
|
10967
|
-
tempBounds$
|
|
10968
|
-
const {data: data} = this.context.getImageData(tempBounds$
|
|
11014
|
+
tempBounds$2.set(x - radiusX, y - radiusY, radiusX * 2, radiusY * 2).scale(scale).ceil();
|
|
11015
|
+
const {data: data} = this.context.getImageData(tempBounds$2.x, tempBounds$2.y, tempBounds$2.width || 1, tempBounds$2.height || 1);
|
|
10969
11016
|
for (let i = 0, len = data.length; i < len; i += 4) {
|
|
10970
11017
|
if (data[i + 3] > 0) return true;
|
|
10971
11018
|
}
|
|
@@ -11165,24 +11212,29 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
11165
11212
|
}
|
|
11166
11213
|
}
|
|
11167
11214
|
|
|
11168
|
-
const {getSpread: getSpread, getOuterOf: getOuterOf, getByMove: getByMove, getIntersectData: getIntersectData} = BoundsHelper;
|
|
11215
|
+
const {getSpread: getSpread, copyAndSpread: copyAndSpread, toOuterOf: toOuterOf, getOuterOf: getOuterOf, getByMove: getByMove, move: move$1, getIntersectData: getIntersectData} = BoundsHelper;
|
|
11216
|
+
|
|
11217
|
+
const tempBounds$1 = {};
|
|
11169
11218
|
|
|
11170
11219
|
function shape(ui, current, options) {
|
|
11171
11220
|
const canvas = current.getSameCanvas();
|
|
11172
|
-
const nowWorld = ui.__nowWorld,
|
|
11173
|
-
|
|
11221
|
+
const currentBounds = current.bounds, nowWorld = ui.__nowWorld, layout = ui.__layout;
|
|
11222
|
+
const nowWorldShapeBounds = ui.__nowWorldShapeBounds || (ui.__nowWorldShapeBounds = {});
|
|
11223
|
+
toOuterOf(layout.strokeSpread ? (copyAndSpread(tempBounds$1, layout.boxBounds, layout.strokeSpread),
|
|
11224
|
+
tempBounds$1) : layout.boxBounds, nowWorld, nowWorldShapeBounds);
|
|
11225
|
+
let bounds, renderBounds, matrix, fitMatrix, shapeBounds, worldCanvas;
|
|
11174
11226
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
11175
|
-
if (currentBounds.includes(
|
|
11227
|
+
if (currentBounds.includes(nowWorldShapeBounds)) {
|
|
11176
11228
|
worldCanvas = canvas;
|
|
11177
|
-
bounds = shapeBounds =
|
|
11229
|
+
bounds = shapeBounds = nowWorldShapeBounds;
|
|
11230
|
+
renderBounds = nowWorld;
|
|
11178
11231
|
} else {
|
|
11179
|
-
const {renderShapeSpread: spread} = ui.__layout;
|
|
11180
11232
|
let worldClipBounds;
|
|
11181
11233
|
if (Platform.fullImageShadow) {
|
|
11182
|
-
worldClipBounds =
|
|
11234
|
+
worldClipBounds = nowWorldShapeBounds;
|
|
11183
11235
|
} else {
|
|
11184
|
-
const spreadBounds =
|
|
11185
|
-
worldClipBounds = getIntersectData(spreadBounds,
|
|
11236
|
+
const spreadBounds = layout.renderShapeSpread ? getSpread(currentBounds, FourNumberHelper.swapAndScale(layout.renderShapeSpread, scaleX, scaleY)) : currentBounds;
|
|
11237
|
+
worldClipBounds = getIntersectData(spreadBounds, nowWorldShapeBounds);
|
|
11186
11238
|
}
|
|
11187
11239
|
fitMatrix = currentBounds.getFitMatrix(worldClipBounds);
|
|
11188
11240
|
let {a: fitScaleX, d: fitScaleY} = fitMatrix;
|
|
@@ -11192,8 +11244,10 @@ function shape(ui, current, options) {
|
|
|
11192
11244
|
scaleX *= fitScaleX;
|
|
11193
11245
|
scaleY *= fitScaleY;
|
|
11194
11246
|
}
|
|
11195
|
-
shapeBounds = getOuterOf(
|
|
11247
|
+
shapeBounds = getOuterOf(nowWorldShapeBounds, fitMatrix);
|
|
11196
11248
|
bounds = getByMove(shapeBounds, -fitMatrix.e, -fitMatrix.f);
|
|
11249
|
+
renderBounds = getOuterOf(nowWorld, fitMatrix);
|
|
11250
|
+
move$1(renderBounds, -fitMatrix.e, -fitMatrix.f);
|
|
11197
11251
|
const userMatrix = options.matrix;
|
|
11198
11252
|
if (userMatrix) {
|
|
11199
11253
|
matrix = new Matrix(fitMatrix);
|
|
@@ -11212,6 +11266,7 @@ function shape(ui, current, options) {
|
|
|
11212
11266
|
matrix: matrix,
|
|
11213
11267
|
fitMatrix: fitMatrix,
|
|
11214
11268
|
bounds: bounds,
|
|
11269
|
+
renderBounds: renderBounds,
|
|
11215
11270
|
worldCanvas: worldCanvas,
|
|
11216
11271
|
shapeBounds: shapeBounds,
|
|
11217
11272
|
scaleX: scaleX,
|
|
@@ -11315,7 +11370,7 @@ const PaintModule = {
|
|
|
11315
11370
|
shape: shape
|
|
11316
11371
|
};
|
|
11317
11372
|
|
|
11318
|
-
let origin = {}, tempMatrix = getMatrixData();
|
|
11373
|
+
let origin = {}, tempMatrix$1 = getMatrixData();
|
|
11319
11374
|
|
|
11320
11375
|
const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
|
|
11321
11376
|
|
|
@@ -11330,12 +11385,12 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
11330
11385
|
data.transform = transform;
|
|
11331
11386
|
}
|
|
11332
11387
|
|
|
11333
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew,
|
|
11388
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY) {
|
|
11334
11389
|
const transform = get$3();
|
|
11335
11390
|
layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
|
|
11336
|
-
if (
|
|
11337
|
-
tempMatrix.a =
|
|
11338
|
-
multiplyParent(transform, tempMatrix);
|
|
11391
|
+
if (clipScaleX) {
|
|
11392
|
+
tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
|
|
11393
|
+
multiplyParent(transform, tempMatrix$1);
|
|
11339
11394
|
}
|
|
11340
11395
|
data.transform = transform;
|
|
11341
11396
|
}
|
|
@@ -11436,7 +11491,12 @@ function getPatternData(paint, box, image) {
|
|
|
11436
11491
|
|
|
11437
11492
|
case "normal":
|
|
11438
11493
|
case "clip":
|
|
11439
|
-
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
11494
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew) {
|
|
11495
|
+
let clipScaleX, clipScaleY;
|
|
11496
|
+
if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
|
|
11497
|
+
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;
|
|
11499
|
+
}
|
|
11440
11500
|
break;
|
|
11441
11501
|
|
|
11442
11502
|
case "repeat":
|
|
@@ -11594,7 +11654,7 @@ function ignoreRender(ui, value) {
|
|
|
11594
11654
|
|
|
11595
11655
|
const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
|
|
11596
11656
|
|
|
11597
|
-
const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
|
|
11657
|
+
const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
|
|
11598
11658
|
|
|
11599
11659
|
function createPattern(ui, paint, pixelRatio) {
|
|
11600
11660
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -11643,8 +11703,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11643
11703
|
if (transform || scaleX !== 1 || scaleY !== 1) {
|
|
11644
11704
|
const canvasWidth = width + (xGap || 0);
|
|
11645
11705
|
const canvasHeight = height + (yGap || 0);
|
|
11646
|
-
scaleX /= canvasWidth / max(floor(canvasWidth), 1);
|
|
11647
|
-
scaleY /= canvasHeight / max(floor(canvasHeight), 1);
|
|
11706
|
+
scaleX /= canvasWidth / max$1(floor(canvasWidth), 1);
|
|
11707
|
+
scaleY /= canvasHeight / max$1(floor(canvasHeight), 1);
|
|
11648
11708
|
if (!imageMatrix) {
|
|
11649
11709
|
imageMatrix = get$1();
|
|
11650
11710
|
if (transform) copy$1(imageMatrix, transform);
|
|
@@ -11670,17 +11730,15 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
11670
11730
|
if (allowDraw) {
|
|
11671
11731
|
if (data.repeat) {
|
|
11672
11732
|
allowDraw = false;
|
|
11673
|
-
} else {
|
|
11674
|
-
|
|
11675
|
-
|
|
11676
|
-
|
|
11677
|
-
|
|
11678
|
-
|
|
11679
|
-
|
|
11680
|
-
height *= data.scaleY;
|
|
11681
|
-
}
|
|
11682
|
-
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
11733
|
+
} else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || Export.running)) {
|
|
11734
|
+
let {width: width, height: height} = data;
|
|
11735
|
+
width *= scaleX * pixelRatio;
|
|
11736
|
+
height *= scaleY * pixelRatio;
|
|
11737
|
+
if (data.scaleX) {
|
|
11738
|
+
width *= data.scaleX;
|
|
11739
|
+
height *= data.scaleY;
|
|
11683
11740
|
}
|
|
11741
|
+
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
11684
11742
|
}
|
|
11685
11743
|
}
|
|
11686
11744
|
if (allowDraw) {
|
|
@@ -11860,75 +11918,82 @@ const PaintGradientModule = {
|
|
|
11860
11918
|
getTransform: getTransform
|
|
11861
11919
|
};
|
|
11862
11920
|
|
|
11863
|
-
const {copy: copy, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper;
|
|
11921
|
+
const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
|
|
11864
11922
|
|
|
11865
|
-
const tempBounds = {};
|
|
11923
|
+
const tempBounds = {}, tempMatrix = new Matrix;
|
|
11866
11924
|
|
|
11867
11925
|
const offsetOutBounds$1 = {};
|
|
11868
11926
|
|
|
11869
11927
|
function shadow(ui, current, shape) {
|
|
11870
|
-
let copyBounds,
|
|
11871
|
-
const {__nowWorld: nowWorld
|
|
11928
|
+
let copyBounds, transform;
|
|
11929
|
+
const {__nowWorld: nowWorld} = ui;
|
|
11872
11930
|
const {shadow: shadow} = ui.__;
|
|
11873
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
11931
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
11874
11932
|
const other = current.getSameCanvas();
|
|
11875
11933
|
const end = shadow.length - 1;
|
|
11876
|
-
toOffsetOutBounds$1(bounds, offsetOutBounds$1);
|
|
11934
|
+
toOffsetOutBounds$1(bounds, offsetOutBounds$1, renderBounds);
|
|
11877
11935
|
shadow.forEach((item, index) => {
|
|
11878
11936
|
let otherScale = 1;
|
|
11879
11937
|
if (item.scaleFixed) {
|
|
11880
11938
|
const sx = Math.abs(nowWorld.scaleX);
|
|
11881
11939
|
if (sx > 1) otherScale = 1 / sx;
|
|
11882
11940
|
}
|
|
11883
|
-
other.setWorldShadow(offsetOutBounds$1.offsetX + item.x * scaleX * otherScale, offsetOutBounds$1.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale, ColorConvert.string(item.color));
|
|
11884
|
-
|
|
11885
|
-
|
|
11886
|
-
|
|
11941
|
+
other.setWorldShadow(offsetOutBounds$1.offsetX + (item.x || 0) * scaleX * otherScale, offsetOutBounds$1.offsetY + (item.y || 0) * scaleY * otherScale, (item.blur || 0) * scaleX * otherScale, ColorConvert.string(item.color));
|
|
11942
|
+
transform = Effect.getShadowTransform(ui, other, shape, item, offsetOutBounds$1, otherScale);
|
|
11943
|
+
if (transform) other.setTransform(transform);
|
|
11944
|
+
drawWorldShadow(other, offsetOutBounds$1, shape);
|
|
11945
|
+
if (transform) other.resetTransform();
|
|
11946
|
+
copyBounds = renderBounds;
|
|
11887
11947
|
if (item.box) {
|
|
11888
11948
|
other.restore();
|
|
11889
11949
|
other.save();
|
|
11890
11950
|
if (worldCanvas) {
|
|
11891
|
-
other.copyWorld(other,
|
|
11951
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
11892
11952
|
copyBounds = nowWorld;
|
|
11893
11953
|
}
|
|
11894
11954
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, "destination-out") : other.copyWorld(shape.canvas, shapeBounds, bounds, "destination-out");
|
|
11895
11955
|
}
|
|
11896
|
-
|
|
11956
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
11897
11957
|
if (end && index < end) other.clearWorld(copyBounds);
|
|
11898
11958
|
});
|
|
11899
11959
|
other.recycle(copyBounds);
|
|
11900
11960
|
}
|
|
11901
11961
|
|
|
11902
|
-
function
|
|
11903
|
-
let
|
|
11904
|
-
shadow.forEach(item =>
|
|
11905
|
-
|
|
11962
|
+
function getShadowRenderSpread(_ui, shadow) {
|
|
11963
|
+
let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
|
|
11964
|
+
shadow.forEach(item => {
|
|
11965
|
+
x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
|
|
11966
|
+
top = max(top, spread + blur - y);
|
|
11967
|
+
right = max(right, spread + blur + x);
|
|
11968
|
+
bottom = max(bottom, spread + blur + y);
|
|
11969
|
+
left = max(left, spread + blur - x);
|
|
11970
|
+
});
|
|
11971
|
+
return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
|
|
11972
|
+
}
|
|
11973
|
+
|
|
11974
|
+
function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
|
|
11975
|
+
if (shadow.spread) {
|
|
11976
|
+
const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
|
|
11977
|
+
tempMatrix.set().scaleOfOuter({
|
|
11978
|
+
x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
|
|
11979
|
+
y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
|
|
11980
|
+
}, spreadScale);
|
|
11981
|
+
return tempMatrix;
|
|
11982
|
+
}
|
|
11983
|
+
return undefined;
|
|
11906
11984
|
}
|
|
11907
11985
|
|
|
11908
|
-
function drawWorldShadow(canvas, outBounds,
|
|
11909
|
-
const {
|
|
11986
|
+
function drawWorldShadow(canvas, outBounds, shape) {
|
|
11987
|
+
const {shapeBounds: shapeBounds} = shape;
|
|
11988
|
+
let from, to;
|
|
11910
11989
|
if (Platform.fullImageShadow) {
|
|
11911
11990
|
copy(tempBounds, canvas.bounds);
|
|
11912
|
-
tempBounds.x
|
|
11913
|
-
|
|
11914
|
-
if (spreadScale) {
|
|
11915
|
-
const {fitMatrix: fitMatrix} = shape;
|
|
11916
|
-
tempBounds.x -= (bounds.x + (fitMatrix ? fitMatrix.e : 0) + bounds.width / 2) * (spreadScale - 1);
|
|
11917
|
-
tempBounds.y -= (bounds.y + (fitMatrix ? fitMatrix.f : 0) + bounds.height / 2) * (spreadScale - 1);
|
|
11918
|
-
tempBounds.width *= spreadScale;
|
|
11919
|
-
tempBounds.height *= spreadScale;
|
|
11920
|
-
}
|
|
11921
|
-
canvas.copyWorld(shape.canvas, canvas.bounds, tempBounds);
|
|
11991
|
+
move(tempBounds, outBounds.x - shapeBounds.x, outBounds.y - shapeBounds.y);
|
|
11992
|
+
from = canvas.bounds, to = tempBounds;
|
|
11922
11993
|
} else {
|
|
11923
|
-
|
|
11924
|
-
copy(tempBounds, outBounds);
|
|
11925
|
-
tempBounds.x -= outBounds.width / 2 * (spreadScale - 1);
|
|
11926
|
-
tempBounds.y -= outBounds.height / 2 * (spreadScale - 1);
|
|
11927
|
-
tempBounds.width *= spreadScale;
|
|
11928
|
-
tempBounds.height *= spreadScale;
|
|
11929
|
-
}
|
|
11930
|
-
canvas.copyWorld(shape.canvas, shapeBounds, spreadScale ? tempBounds : outBounds);
|
|
11994
|
+
from = shapeBounds, to = outBounds;
|
|
11931
11995
|
}
|
|
11996
|
+
canvas.copyWorld(shape.canvas, from, to);
|
|
11932
11997
|
}
|
|
11933
11998
|
|
|
11934
11999
|
const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
@@ -11936,13 +12001,13 @@ const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
|
11936
12001
|
const offsetOutBounds = {};
|
|
11937
12002
|
|
|
11938
12003
|
function innerShadow(ui, current, shape) {
|
|
11939
|
-
let copyBounds,
|
|
11940
|
-
const {__nowWorld: nowWorld
|
|
12004
|
+
let copyBounds, transform;
|
|
12005
|
+
const {__nowWorld: nowWorld} = ui;
|
|
11941
12006
|
const {innerShadow: innerShadow} = ui.__;
|
|
11942
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
12007
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
11943
12008
|
const other = current.getSameCanvas();
|
|
11944
12009
|
const end = innerShadow.length - 1;
|
|
11945
|
-
toOffsetOutBounds(bounds, offsetOutBounds);
|
|
12010
|
+
toOffsetOutBounds(bounds, offsetOutBounds, renderBounds);
|
|
11946
12011
|
innerShadow.forEach((item, index) => {
|
|
11947
12012
|
let otherScale = 1;
|
|
11948
12013
|
if (item.scaleFixed) {
|
|
@@ -11950,17 +12015,18 @@ function innerShadow(ui, current, shape) {
|
|
|
11950
12015
|
if (sx > 1) otherScale = 1 / sx;
|
|
11951
12016
|
}
|
|
11952
12017
|
other.save();
|
|
11953
|
-
other.setWorldShadow(offsetOutBounds.offsetX + item.x * scaleX * otherScale, offsetOutBounds.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale);
|
|
11954
|
-
|
|
11955
|
-
|
|
12018
|
+
other.setWorldShadow(offsetOutBounds.offsetX + (item.x || 0) * scaleX * otherScale, offsetOutBounds.offsetY + (item.y || 0) * scaleY * otherScale, (item.blur || 0) * scaleX * otherScale);
|
|
12019
|
+
transform = Effect.getShadowTransform(ui, other, shape, item, offsetOutBounds, otherScale, true);
|
|
12020
|
+
if (transform) other.setTransform(transform);
|
|
12021
|
+
drawWorldShadow(other, offsetOutBounds, shape);
|
|
11956
12022
|
other.restore();
|
|
11957
12023
|
if (worldCanvas) {
|
|
11958
|
-
other.copyWorld(other,
|
|
12024
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
11959
12025
|
other.copyWorld(worldCanvas, nowWorld, nowWorld, "source-out");
|
|
11960
12026
|
copyBounds = nowWorld;
|
|
11961
12027
|
} else {
|
|
11962
12028
|
other.copyWorld(shape.canvas, shapeBounds, bounds, "source-out");
|
|
11963
|
-
copyBounds =
|
|
12029
|
+
copyBounds = renderBounds;
|
|
11964
12030
|
}
|
|
11965
12031
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), "source-in");
|
|
11966
12032
|
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
@@ -11969,6 +12035,8 @@ function innerShadow(ui, current, shape) {
|
|
|
11969
12035
|
other.recycle(copyBounds);
|
|
11970
12036
|
}
|
|
11971
12037
|
|
|
12038
|
+
const getInnerShadowSpread = getShadowRenderSpread;
|
|
12039
|
+
|
|
11972
12040
|
function blur(ui, current, origin) {
|
|
11973
12041
|
const {blur: blur} = ui.__;
|
|
11974
12042
|
origin.setWorldBlur(blur * ui.__nowWorld.a);
|
|
@@ -11983,10 +12051,12 @@ const EffectModule = {
|
|
|
11983
12051
|
innerShadow: innerShadow,
|
|
11984
12052
|
blur: blur,
|
|
11985
12053
|
backgroundBlur: backgroundBlur,
|
|
11986
|
-
|
|
12054
|
+
getShadowRenderSpread: getShadowRenderSpread,
|
|
12055
|
+
getShadowTransform: getShadowTransform,
|
|
11987
12056
|
isTransformShadow(_shadow) {
|
|
11988
12057
|
return undefined;
|
|
11989
|
-
}
|
|
12058
|
+
},
|
|
12059
|
+
getInnerShadowSpread: getInnerShadowSpread
|
|
11990
12060
|
};
|
|
11991
12061
|
|
|
11992
12062
|
const {excludeRenderBounds: excludeRenderBounds} = LeafBoundsHelper;
|
|
@@ -12003,6 +12073,7 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
12003
12073
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity, undefined, true);
|
|
12004
12074
|
maskCanvas = contentCanvas = null;
|
|
12005
12075
|
}
|
|
12076
|
+
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
12006
12077
|
maskOpacity = child.__.opacity;
|
|
12007
12078
|
usedGrayscaleAlpha = false;
|
|
12008
12079
|
if (mask === "path" || mask === "clipping-path") {
|
|
@@ -12020,7 +12091,6 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
12020
12091
|
if (!contentCanvas) contentCanvas = getCanvas(canvas);
|
|
12021
12092
|
child.__render(maskCanvas, options);
|
|
12022
12093
|
}
|
|
12023
|
-
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
12024
12094
|
continue;
|
|
12025
12095
|
}
|
|
12026
12096
|
const childBlendMode = maskOpacity === 1 && child.__.__blendMode;
|
|
@@ -12582,6 +12652,7 @@ const TextConvertModule = {
|
|
|
12582
12652
|
};
|
|
12583
12653
|
|
|
12584
12654
|
function string(color, opacity) {
|
|
12655
|
+
if (!color) return "#000";
|
|
12585
12656
|
const doOpacity = isNumber(opacity) && opacity < 1;
|
|
12586
12657
|
if (isString(color)) {
|
|
12587
12658
|
if (doOpacity && ColorConvert.object) color = ColorConvert.object(color); else return color;
|
|
@@ -12616,4 +12687,4 @@ Object.assign(Creator, {
|
|
|
12616
12687
|
|
|
12617
12688
|
useCanvas();
|
|
12618
12689
|
|
|
12619
|
-
export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, InteractionBase, InteractionHelper, KeyEvent, Keyboard, 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, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$
|
|
12690
|
+
export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsEvent, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragBoundsHelper, DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, InteractionBase, InteractionHelper, KeyEvent, Keyboard, 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, MoveEvent, MyDragEvent, MyImage, MyPointerEvent, NeedConvertToCanvasCommandMap, OneRadian, PI2, PI_2, Paint, PaintGradient, PaintImage, Path, PathArrow, PathBounds, PathCommandDataHelper, PathCommandMap, PathConvert, PathCorner, PathCreator, PathData, PathDrawer, PathHelper, PathNumberCommandLengthMap, PathNumberCommandMap, Pen, PenData, Picker, Platform, Plugin, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, Resource, RotateEvent, Run, Selector, Star, StarData, State, StringNumberMap, SwipeEvent, TaskItem, TaskProcessor, Text, TextConvert, TextData, Transition, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, createAttr, createDescriptor, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, dimType, doBoundsType, doStrokeType, effectType, emptyData, eraserType, extraPropertyEventMap, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isArray, isData, isEmptyData, isFinite, isNull, isNumber, isObject, isString, isUndefined, layoutProcessor, leaferTransformAttrMap, maskType, naturalBoundsType, opacityType, path, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, scrollType, sortType, strokeType, surfaceType, tempBounds$2 as tempBounds, tempMatrix$2 as tempMatrix, tempPoint$2 as tempPoint, tryToNumber, useCanvas, useModule, version, visibleType, zoomLayerType };
|