leafer-ui 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/README.md +96 -85
- package/dist/web.cjs +110 -82
- package/dist/web.esm.js +111 -83
- package/dist/web.esm.min.js +1 -1
- package/dist/web.esm.min.js.map +1 -1
- package/dist/web.js +240 -177
- package/dist/web.min.cjs +1 -1
- package/dist/web.min.cjs.map +1 -1
- package/dist/web.min.js +1 -1
- package/dist/web.min.js.map +1 -1
- package/dist/web.module.js +248 -177
- package/dist/web.module.min.js +1 -1
- package/dist/web.module.min.js.map +1 -1
- package/package.json +11 -11
package/dist/web.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
|
const debug$5 = Debug.get("LeaferCanvas");
|
|
6780
6821
|
|
|
@@ -6809,7 +6850,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
6809
6850
|
}
|
|
6810
6851
|
if (Platform.syncDomFont && !this.parentView) {
|
|
6811
6852
|
style.display = "none";
|
|
6812
|
-
document.body.appendChild(this.view);
|
|
6853
|
+
if (document.body) document.body.appendChild(this.view);
|
|
6813
6854
|
}
|
|
6814
6855
|
this.__createContext();
|
|
6815
6856
|
if (!this.autoLayout) this.resize(config);
|
|
@@ -7405,6 +7446,7 @@ class Renderer {
|
|
|
7405
7446
|
usePartRender: true,
|
|
7406
7447
|
maxFPS: 120
|
|
7407
7448
|
};
|
|
7449
|
+
this.frames = [];
|
|
7408
7450
|
this.target = target;
|
|
7409
7451
|
this.canvas = canvas;
|
|
7410
7452
|
if (userConfig) this.config = DataHelper.default(userConfig, this.config);
|
|
@@ -7557,12 +7599,15 @@ class Renderer {
|
|
|
7557
7599
|
const target = this.target;
|
|
7558
7600
|
if (this.requestTime || !target) return;
|
|
7559
7601
|
if (target.parentApp) return target.parentApp.requestRender(false);
|
|
7560
|
-
|
|
7602
|
+
this.requestTime = this.frameTime || Date.now();
|
|
7561
7603
|
const render = () => {
|
|
7562
|
-
const nowFPS = 1e3 / (Date.now() - requestTime);
|
|
7604
|
+
const nowFPS = 1e3 / ((this.frameTime = Date.now()) - this.requestTime);
|
|
7563
7605
|
const {maxFPS: maxFPS} = this.config;
|
|
7564
|
-
if (maxFPS && nowFPS > maxFPS
|
|
7565
|
-
|
|
7606
|
+
if (maxFPS && nowFPS > maxFPS) return Platform.requestRender(render);
|
|
7607
|
+
const {frames: frames} = this;
|
|
7608
|
+
if (frames.length > 30) frames.shift();
|
|
7609
|
+
frames.push(nowFPS);
|
|
7610
|
+
this.FPS = Math.round(frames.reduce((a, b) => a + b, 0) / frames.length);
|
|
7566
7611
|
this.requestTime = 0;
|
|
7567
7612
|
this.checkRender();
|
|
7568
7613
|
};
|
|
@@ -8218,39 +8263,41 @@ class CanvasData extends RectData {
|
|
|
8218
8263
|
}
|
|
8219
8264
|
}
|
|
8220
8265
|
|
|
8266
|
+
const {max: max$2, add: add$1} = FourNumberHelper;
|
|
8267
|
+
|
|
8221
8268
|
const UIBounds = {
|
|
8222
8269
|
__updateStrokeSpread() {
|
|
8223
|
-
let
|
|
8270
|
+
let spread = 0, boxSpread = 0;
|
|
8224
8271
|
const data = this.__, {strokeAlign: strokeAlign, __maxStrokeWidth: strokeWidth} = data, box = this.__box;
|
|
8225
8272
|
if ((data.stroke || data.hitStroke === "all") && strokeWidth && strokeAlign !== "inside") {
|
|
8226
|
-
|
|
8273
|
+
boxSpread = spread = strokeAlign === "center" ? strokeWidth / 2 : strokeWidth;
|
|
8227
8274
|
if (!data.__boxStroke) {
|
|
8228
|
-
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 *
|
|
8275
|
+
const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * spread;
|
|
8229
8276
|
const storkeCapAddWidth = data.strokeCap === "none" ? 0 : strokeWidth;
|
|
8230
|
-
|
|
8277
|
+
spread += Math.max(miterLimitAddWidth, storkeCapAddWidth);
|
|
8231
8278
|
}
|
|
8232
8279
|
}
|
|
8233
|
-
if (data.__useArrow)
|
|
8280
|
+
if (data.__useArrow) spread += strokeWidth * 5;
|
|
8234
8281
|
if (box) {
|
|
8235
|
-
|
|
8236
|
-
|
|
8282
|
+
spread = max$2(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
|
|
8283
|
+
boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
|
|
8237
8284
|
}
|
|
8238
|
-
this.__layout.strokeBoxSpread =
|
|
8239
|
-
return
|
|
8285
|
+
this.__layout.strokeBoxSpread = boxSpread;
|
|
8286
|
+
return spread;
|
|
8240
8287
|
},
|
|
8241
8288
|
__updateRenderSpread() {
|
|
8242
|
-
let
|
|
8243
|
-
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__;
|
|
8244
|
-
if (shadow)
|
|
8245
|
-
if (blur)
|
|
8246
|
-
if (filter)
|
|
8247
|
-
if (renderSpread)
|
|
8248
|
-
|
|
8249
|
-
|
|
8250
|
-
if (
|
|
8251
|
-
|
|
8252
|
-
|
|
8253
|
-
return
|
|
8289
|
+
let spread = 0;
|
|
8290
|
+
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
|
|
8291
|
+
if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
|
|
8292
|
+
if (blur) spread = max$2(spread, blur);
|
|
8293
|
+
if (filter) spread = add$1(spread, Filter.getSpread(filter));
|
|
8294
|
+
if (renderSpread) spread = add$1(spread, renderSpread);
|
|
8295
|
+
if (strokeSpread) spread = add$1(spread, strokeSpread);
|
|
8296
|
+
let shapeSpread = spread;
|
|
8297
|
+
if (innerShadow) shapeSpread = max$2(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
|
|
8298
|
+
if (backgroundBlur) shapeSpread = max$2(shapeSpread, backgroundBlur);
|
|
8299
|
+
this.__layout.renderShapeSpread = shapeSpread;
|
|
8300
|
+
return box ? max$2(box.__updateRenderSpread(), spread) : spread;
|
|
8254
8301
|
}
|
|
8255
8302
|
};
|
|
8256
8303
|
|
|
@@ -9561,7 +9608,7 @@ __decorate([ resizeType() ], Canvas.prototype, "contextSettings", void 0);
|
|
|
9561
9608
|
|
|
9562
9609
|
Canvas = __decorate([ registerUI() ], Canvas);
|
|
9563
9610
|
|
|
9564
|
-
const {copyAndSpread: copyAndSpread, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9611
|
+
const {copyAndSpread: copyAndSpread$1, includes: includes, spread: spread, setList: setList} = BoundsHelper;
|
|
9565
9612
|
|
|
9566
9613
|
let Text = class Text extends UI {
|
|
9567
9614
|
get __tag() {
|
|
@@ -9608,13 +9655,13 @@ let Text = class Text extends UI {
|
|
|
9608
9655
|
if (this.isOverflow) setList(data.__textBoxBounds = {}, [ b, contentBounds ]), layout.renderChanged = true; else data.__textBoxBounds = b;
|
|
9609
9656
|
}
|
|
9610
9657
|
__updateRenderSpread() {
|
|
9611
|
-
let
|
|
9612
|
-
if (!
|
|
9613
|
-
return
|
|
9658
|
+
let spread = super.__updateRenderSpread();
|
|
9659
|
+
if (!spread) spread = this.isOverflow ? 1 : 0;
|
|
9660
|
+
return spread;
|
|
9614
9661
|
}
|
|
9615
9662
|
__updateRenderBounds() {
|
|
9616
9663
|
const {renderBounds: renderBounds, renderSpread: renderSpread} = this.__layout;
|
|
9617
|
-
copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9664
|
+
copyAndSpread$1(renderBounds, this.__.__textBoxBounds, renderSpread);
|
|
9618
9665
|
if (this.__box) this.__box.__layout.renderBounds = renderBounds;
|
|
9619
9666
|
}
|
|
9620
9667
|
__updateChange() {
|
|
@@ -10040,9 +10087,9 @@ let DragEvent$1 = class DragEvent extends PointerEvent$1 {
|
|
|
10040
10087
|
static setData(data) {
|
|
10041
10088
|
this.data = data;
|
|
10042
10089
|
}
|
|
10043
|
-
static getValidMove(leaf,
|
|
10044
|
-
const move = leaf.getLocalPoint(
|
|
10045
|
-
PointHelper.move(move,
|
|
10090
|
+
static getValidMove(leaf, localStart, worldTotal, checkLimit = true) {
|
|
10091
|
+
const move = leaf.getLocalPoint(worldTotal, null, true);
|
|
10092
|
+
PointHelper.move(move, localStart.x - leaf.x, localStart.y - leaf.y);
|
|
10046
10093
|
if (checkLimit) this.limitMove(leaf, move);
|
|
10047
10094
|
DragBoundsHelper.axisMove(leaf, move);
|
|
10048
10095
|
return move;
|
|
@@ -11072,8 +11119,8 @@ ui$1.__updateHitCanvas = function() {
|
|
|
11072
11119
|
if (isHitPixel) {
|
|
11073
11120
|
const {renderBounds: renderBounds} = this.__layout;
|
|
11074
11121
|
const size = Platform.image.hitCanvasSize;
|
|
11075
|
-
const scale = h.hitScale = tempBounds$
|
|
11076
|
-
const {x: x, y: y, width: width, height: height} = tempBounds$
|
|
11122
|
+
const scale = h.hitScale = tempBounds$2.set(0, 0, size, size).getFitMatrix(renderBounds).a;
|
|
11123
|
+
const {x: x, y: y, width: width, height: height} = tempBounds$2.set(renderBounds).scale(scale);
|
|
11077
11124
|
h.resize({
|
|
11078
11125
|
width: width,
|
|
11079
11126
|
height: height,
|
|
@@ -11170,8 +11217,8 @@ canvas.hitStroke = function(point, strokeWidth) {
|
|
|
11170
11217
|
canvas.hitPixel = function(radiusPoint, offset, scale = 1) {
|
|
11171
11218
|
let {x: x, y: y, radiusX: radiusX, radiusY: radiusY} = radiusPoint;
|
|
11172
11219
|
if (offset) x -= offset.x, y -= offset.y;
|
|
11173
|
-
tempBounds$
|
|
11174
|
-
const {data: data} = this.context.getImageData(tempBounds$
|
|
11220
|
+
tempBounds$2.set(x - radiusX, y - radiusY, radiusX * 2, radiusY * 2).scale(scale).ceil();
|
|
11221
|
+
const {data: data} = this.context.getImageData(tempBounds$2.x, tempBounds$2.y, tempBounds$2.width || 1, tempBounds$2.height || 1);
|
|
11175
11222
|
for (let i = 0, len = data.length; i < len; i += 4) {
|
|
11176
11223
|
if (data[i + 3] > 0) return true;
|
|
11177
11224
|
}
|
|
@@ -11699,24 +11746,29 @@ function drawOutside(stroke, ui, canvas) {
|
|
|
11699
11746
|
}
|
|
11700
11747
|
}
|
|
11701
11748
|
|
|
11702
|
-
const {getSpread: getSpread, getOuterOf: getOuterOf, getByMove: getByMove, getIntersectData: getIntersectData} = BoundsHelper;
|
|
11749
|
+
const {getSpread: getSpread, copyAndSpread: copyAndSpread, toOuterOf: toOuterOf, getOuterOf: getOuterOf, getByMove: getByMove, move: move$1, getIntersectData: getIntersectData} = BoundsHelper;
|
|
11750
|
+
|
|
11751
|
+
const tempBounds$1 = {};
|
|
11703
11752
|
|
|
11704
11753
|
function shape(ui, current, options) {
|
|
11705
11754
|
const canvas = current.getSameCanvas();
|
|
11706
|
-
const nowWorld = ui.__nowWorld,
|
|
11707
|
-
|
|
11755
|
+
const currentBounds = current.bounds, nowWorld = ui.__nowWorld, layout = ui.__layout;
|
|
11756
|
+
const nowWorldShapeBounds = ui.__nowWorldShapeBounds || (ui.__nowWorldShapeBounds = {});
|
|
11757
|
+
toOuterOf(layout.strokeSpread ? (copyAndSpread(tempBounds$1, layout.boxBounds, layout.strokeSpread),
|
|
11758
|
+
tempBounds$1) : layout.boxBounds, nowWorld, nowWorldShapeBounds);
|
|
11759
|
+
let bounds, renderBounds, matrix, fitMatrix, shapeBounds, worldCanvas;
|
|
11708
11760
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true);
|
|
11709
|
-
if (currentBounds.includes(
|
|
11761
|
+
if (currentBounds.includes(nowWorldShapeBounds)) {
|
|
11710
11762
|
worldCanvas = canvas;
|
|
11711
|
-
bounds = shapeBounds =
|
|
11763
|
+
bounds = shapeBounds = nowWorldShapeBounds;
|
|
11764
|
+
renderBounds = nowWorld;
|
|
11712
11765
|
} else {
|
|
11713
|
-
const {renderShapeSpread: spread} = ui.__layout;
|
|
11714
11766
|
let worldClipBounds;
|
|
11715
11767
|
if (Platform.fullImageShadow) {
|
|
11716
|
-
worldClipBounds =
|
|
11768
|
+
worldClipBounds = nowWorldShapeBounds;
|
|
11717
11769
|
} else {
|
|
11718
|
-
const spreadBounds =
|
|
11719
|
-
worldClipBounds = getIntersectData(spreadBounds,
|
|
11770
|
+
const spreadBounds = layout.renderShapeSpread ? getSpread(currentBounds, FourNumberHelper.swapAndScale(layout.renderShapeSpread, scaleX, scaleY)) : currentBounds;
|
|
11771
|
+
worldClipBounds = getIntersectData(spreadBounds, nowWorldShapeBounds);
|
|
11720
11772
|
}
|
|
11721
11773
|
fitMatrix = currentBounds.getFitMatrix(worldClipBounds);
|
|
11722
11774
|
let {a: fitScaleX, d: fitScaleY} = fitMatrix;
|
|
@@ -11726,8 +11778,10 @@ function shape(ui, current, options) {
|
|
|
11726
11778
|
scaleX *= fitScaleX;
|
|
11727
11779
|
scaleY *= fitScaleY;
|
|
11728
11780
|
}
|
|
11729
|
-
shapeBounds = getOuterOf(
|
|
11781
|
+
shapeBounds = getOuterOf(nowWorldShapeBounds, fitMatrix);
|
|
11730
11782
|
bounds = getByMove(shapeBounds, -fitMatrix.e, -fitMatrix.f);
|
|
11783
|
+
renderBounds = getOuterOf(nowWorld, fitMatrix);
|
|
11784
|
+
move$1(renderBounds, -fitMatrix.e, -fitMatrix.f);
|
|
11731
11785
|
const userMatrix = options.matrix;
|
|
11732
11786
|
if (userMatrix) {
|
|
11733
11787
|
matrix = new Matrix(fitMatrix);
|
|
@@ -11746,6 +11800,7 @@ function shape(ui, current, options) {
|
|
|
11746
11800
|
matrix: matrix,
|
|
11747
11801
|
fitMatrix: fitMatrix,
|
|
11748
11802
|
bounds: bounds,
|
|
11803
|
+
renderBounds: renderBounds,
|
|
11749
11804
|
worldCanvas: worldCanvas,
|
|
11750
11805
|
shapeBounds: shapeBounds,
|
|
11751
11806
|
scaleX: scaleX,
|
|
@@ -11849,7 +11904,7 @@ const PaintModule = {
|
|
|
11849
11904
|
shape: shape
|
|
11850
11905
|
};
|
|
11851
11906
|
|
|
11852
|
-
let origin = {}, tempMatrix = getMatrixData();
|
|
11907
|
+
let origin = {}, tempMatrix$1 = getMatrixData();
|
|
11853
11908
|
|
|
11854
11909
|
const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate, skew: skewHelper} = MatrixHelper;
|
|
11855
11910
|
|
|
@@ -11864,12 +11919,12 @@ function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
|
11864
11919
|
data.transform = transform;
|
|
11865
11920
|
}
|
|
11866
11921
|
|
|
11867
|
-
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew,
|
|
11922
|
+
function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY) {
|
|
11868
11923
|
const transform = get$3();
|
|
11869
11924
|
layout(transform, box, x, y, scaleX, scaleY, rotation, skew);
|
|
11870
|
-
if (
|
|
11871
|
-
tempMatrix.a =
|
|
11872
|
-
multiplyParent(transform, tempMatrix);
|
|
11925
|
+
if (clipScaleX) {
|
|
11926
|
+
tempMatrix$1.a = clipScaleX, tempMatrix$1.d = clipScaleY;
|
|
11927
|
+
multiplyParent(transform, tempMatrix$1);
|
|
11873
11928
|
}
|
|
11874
11929
|
data.transform = transform;
|
|
11875
11930
|
}
|
|
@@ -11970,7 +12025,12 @@ function getPatternData(paint, box, image) {
|
|
|
11970
12025
|
|
|
11971
12026
|
case "normal":
|
|
11972
12027
|
case "clip":
|
|
11973
|
-
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew)
|
|
12028
|
+
if (tempImage.x || tempImage.y || scaleX || clipSize || rotation || skew) {
|
|
12029
|
+
let clipScaleX, clipScaleY;
|
|
12030
|
+
if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
|
|
12031
|
+
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
|
|
12032
|
+
if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : scaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
|
|
12033
|
+
}
|
|
11974
12034
|
break;
|
|
11975
12035
|
|
|
11976
12036
|
case "repeat":
|
|
@@ -12128,7 +12188,7 @@ function ignoreRender(ui, value) {
|
|
|
12128
12188
|
|
|
12129
12189
|
const {get: get$1, scale: scale, copy: copy$1} = MatrixHelper;
|
|
12130
12190
|
|
|
12131
|
-
const {floor: floor, ceil: ceil, max: max, abs: abs} = Math;
|
|
12191
|
+
const {floor: floor, ceil: ceil, max: max$1, abs: abs} = Math;
|
|
12132
12192
|
|
|
12133
12193
|
function createPattern(ui, paint, pixelRatio) {
|
|
12134
12194
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -12177,8 +12237,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
12177
12237
|
if (transform || scaleX !== 1 || scaleY !== 1) {
|
|
12178
12238
|
const canvasWidth = width + (xGap || 0);
|
|
12179
12239
|
const canvasHeight = height + (yGap || 0);
|
|
12180
|
-
scaleX /= canvasWidth / max(floor(canvasWidth), 1);
|
|
12181
|
-
scaleY /= canvasHeight / max(floor(canvasHeight), 1);
|
|
12240
|
+
scaleX /= canvasWidth / max$1(floor(canvasWidth), 1);
|
|
12241
|
+
scaleY /= canvasHeight / max$1(floor(canvasHeight), 1);
|
|
12182
12242
|
if (!imageMatrix) {
|
|
12183
12243
|
imageMatrix = get$1();
|
|
12184
12244
|
if (transform) copy$1(imageMatrix, transform);
|
|
@@ -12204,17 +12264,15 @@ function checkImage(ui, canvas, paint, allowDraw) {
|
|
|
12204
12264
|
if (allowDraw) {
|
|
12205
12265
|
if (data.repeat) {
|
|
12206
12266
|
allowDraw = false;
|
|
12207
|
-
} else {
|
|
12208
|
-
|
|
12209
|
-
|
|
12210
|
-
|
|
12211
|
-
|
|
12212
|
-
|
|
12213
|
-
|
|
12214
|
-
height *= data.scaleY;
|
|
12215
|
-
}
|
|
12216
|
-
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
12267
|
+
} else if (!(paint.changeful || Platform.name === "miniapp" && ResizeEvent.isResizing(ui) || Export.running)) {
|
|
12268
|
+
let {width: width, height: height} = data;
|
|
12269
|
+
width *= scaleX * pixelRatio;
|
|
12270
|
+
height *= scaleY * pixelRatio;
|
|
12271
|
+
if (data.scaleX) {
|
|
12272
|
+
width *= data.scaleX;
|
|
12273
|
+
height *= data.scaleY;
|
|
12217
12274
|
}
|
|
12275
|
+
allowDraw = width * height > Platform.image.maxCacheSize;
|
|
12218
12276
|
}
|
|
12219
12277
|
}
|
|
12220
12278
|
if (allowDraw) {
|
|
@@ -12394,75 +12452,82 @@ const PaintGradientModule = {
|
|
|
12394
12452
|
getTransform: getTransform
|
|
12395
12453
|
};
|
|
12396
12454
|
|
|
12397
|
-
const {copy: copy, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper;
|
|
12455
|
+
const {copy: copy, move: move, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max} = Math;
|
|
12398
12456
|
|
|
12399
|
-
const tempBounds = {};
|
|
12457
|
+
const tempBounds = {}, tempMatrix = new Matrix;
|
|
12400
12458
|
|
|
12401
12459
|
const offsetOutBounds$1 = {};
|
|
12402
12460
|
|
|
12403
12461
|
function shadow(ui, current, shape) {
|
|
12404
|
-
let copyBounds,
|
|
12405
|
-
const {__nowWorld: nowWorld
|
|
12462
|
+
let copyBounds, transform;
|
|
12463
|
+
const {__nowWorld: nowWorld} = ui;
|
|
12406
12464
|
const {shadow: shadow} = ui.__;
|
|
12407
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
12465
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
12408
12466
|
const other = current.getSameCanvas();
|
|
12409
12467
|
const end = shadow.length - 1;
|
|
12410
|
-
toOffsetOutBounds$1(bounds, offsetOutBounds$1);
|
|
12468
|
+
toOffsetOutBounds$1(bounds, offsetOutBounds$1, renderBounds);
|
|
12411
12469
|
shadow.forEach((item, index) => {
|
|
12412
12470
|
let otherScale = 1;
|
|
12413
12471
|
if (item.scaleFixed) {
|
|
12414
12472
|
const sx = Math.abs(nowWorld.scaleX);
|
|
12415
12473
|
if (sx > 1) otherScale = 1 / sx;
|
|
12416
12474
|
}
|
|
12417
|
-
other.setWorldShadow(offsetOutBounds$1.offsetX + item.x * scaleX * otherScale, offsetOutBounds$1.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale, ColorConvert.string(item.color));
|
|
12418
|
-
|
|
12419
|
-
|
|
12420
|
-
|
|
12475
|
+
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));
|
|
12476
|
+
transform = Effect.getShadowTransform(ui, other, shape, item, offsetOutBounds$1, otherScale);
|
|
12477
|
+
if (transform) other.setTransform(transform);
|
|
12478
|
+
drawWorldShadow(other, offsetOutBounds$1, shape);
|
|
12479
|
+
if (transform) other.resetTransform();
|
|
12480
|
+
copyBounds = renderBounds;
|
|
12421
12481
|
if (item.box) {
|
|
12422
12482
|
other.restore();
|
|
12423
12483
|
other.save();
|
|
12424
12484
|
if (worldCanvas) {
|
|
12425
|
-
other.copyWorld(other,
|
|
12485
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
12426
12486
|
copyBounds = nowWorld;
|
|
12427
12487
|
}
|
|
12428
12488
|
worldCanvas ? other.copyWorld(worldCanvas, nowWorld, nowWorld, "destination-out") : other.copyWorld(shape.canvas, shapeBounds, bounds, "destination-out");
|
|
12429
12489
|
}
|
|
12430
|
-
|
|
12490
|
+
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
12431
12491
|
if (end && index < end) other.clearWorld(copyBounds);
|
|
12432
12492
|
});
|
|
12433
12493
|
other.recycle(copyBounds);
|
|
12434
12494
|
}
|
|
12435
12495
|
|
|
12436
|
-
function
|
|
12437
|
-
let
|
|
12438
|
-
shadow.forEach(item =>
|
|
12439
|
-
|
|
12496
|
+
function getShadowRenderSpread(_ui, shadow) {
|
|
12497
|
+
let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
|
|
12498
|
+
shadow.forEach(item => {
|
|
12499
|
+
x = item.x || 0, y = item.y || 0, spread = item.spread || 0, blur = (item.blur || 0) * 1.5;
|
|
12500
|
+
top = max(top, spread + blur - y);
|
|
12501
|
+
right = max(right, spread + blur + x);
|
|
12502
|
+
bottom = max(bottom, spread + blur + y);
|
|
12503
|
+
left = max(left, spread + blur - x);
|
|
12504
|
+
});
|
|
12505
|
+
return top === right && right === bottom && bottom === left ? top : [ top, right, bottom, left ];
|
|
12506
|
+
}
|
|
12507
|
+
|
|
12508
|
+
function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
|
|
12509
|
+
if (shadow.spread) {
|
|
12510
|
+
const spreadScale = 1 + shadow.spread * 2 / ui.__layout.strokeBounds.width * otherScale * (isInnerShaodw ? -1 : 1);
|
|
12511
|
+
tempMatrix.set().scaleOfOuter({
|
|
12512
|
+
x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
|
|
12513
|
+
y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
|
|
12514
|
+
}, spreadScale);
|
|
12515
|
+
return tempMatrix;
|
|
12516
|
+
}
|
|
12517
|
+
return undefined;
|
|
12440
12518
|
}
|
|
12441
12519
|
|
|
12442
|
-
function drawWorldShadow(canvas, outBounds,
|
|
12443
|
-
const {
|
|
12520
|
+
function drawWorldShadow(canvas, outBounds, shape) {
|
|
12521
|
+
const {shapeBounds: shapeBounds} = shape;
|
|
12522
|
+
let from, to;
|
|
12444
12523
|
if (Platform.fullImageShadow) {
|
|
12445
12524
|
copy(tempBounds, canvas.bounds);
|
|
12446
|
-
tempBounds.x
|
|
12447
|
-
|
|
12448
|
-
if (spreadScale) {
|
|
12449
|
-
const {fitMatrix: fitMatrix} = shape;
|
|
12450
|
-
tempBounds.x -= (bounds.x + (fitMatrix ? fitMatrix.e : 0) + bounds.width / 2) * (spreadScale - 1);
|
|
12451
|
-
tempBounds.y -= (bounds.y + (fitMatrix ? fitMatrix.f : 0) + bounds.height / 2) * (spreadScale - 1);
|
|
12452
|
-
tempBounds.width *= spreadScale;
|
|
12453
|
-
tempBounds.height *= spreadScale;
|
|
12454
|
-
}
|
|
12455
|
-
canvas.copyWorld(shape.canvas, canvas.bounds, tempBounds);
|
|
12525
|
+
move(tempBounds, outBounds.x - shapeBounds.x, outBounds.y - shapeBounds.y);
|
|
12526
|
+
from = canvas.bounds, to = tempBounds;
|
|
12456
12527
|
} else {
|
|
12457
|
-
|
|
12458
|
-
copy(tempBounds, outBounds);
|
|
12459
|
-
tempBounds.x -= outBounds.width / 2 * (spreadScale - 1);
|
|
12460
|
-
tempBounds.y -= outBounds.height / 2 * (spreadScale - 1);
|
|
12461
|
-
tempBounds.width *= spreadScale;
|
|
12462
|
-
tempBounds.height *= spreadScale;
|
|
12463
|
-
}
|
|
12464
|
-
canvas.copyWorld(shape.canvas, shapeBounds, spreadScale ? tempBounds : outBounds);
|
|
12528
|
+
from = shapeBounds, to = outBounds;
|
|
12465
12529
|
}
|
|
12530
|
+
canvas.copyWorld(shape.canvas, from, to);
|
|
12466
12531
|
}
|
|
12467
12532
|
|
|
12468
12533
|
const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
@@ -12470,13 +12535,13 @@ const {toOffsetOutBounds: toOffsetOutBounds} = BoundsHelper;
|
|
|
12470
12535
|
const offsetOutBounds = {};
|
|
12471
12536
|
|
|
12472
12537
|
function innerShadow(ui, current, shape) {
|
|
12473
|
-
let copyBounds,
|
|
12474
|
-
const {__nowWorld: nowWorld
|
|
12538
|
+
let copyBounds, transform;
|
|
12539
|
+
const {__nowWorld: nowWorld} = ui;
|
|
12475
12540
|
const {innerShadow: innerShadow} = ui.__;
|
|
12476
|
-
const {worldCanvas: worldCanvas, bounds: bounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
12541
|
+
const {worldCanvas: worldCanvas, bounds: bounds, renderBounds: renderBounds, shapeBounds: shapeBounds, scaleX: scaleX, scaleY: scaleY} = shape;
|
|
12477
12542
|
const other = current.getSameCanvas();
|
|
12478
12543
|
const end = innerShadow.length - 1;
|
|
12479
|
-
toOffsetOutBounds(bounds, offsetOutBounds);
|
|
12544
|
+
toOffsetOutBounds(bounds, offsetOutBounds, renderBounds);
|
|
12480
12545
|
innerShadow.forEach((item, index) => {
|
|
12481
12546
|
let otherScale = 1;
|
|
12482
12547
|
if (item.scaleFixed) {
|
|
@@ -12484,17 +12549,18 @@ function innerShadow(ui, current, shape) {
|
|
|
12484
12549
|
if (sx > 1) otherScale = 1 / sx;
|
|
12485
12550
|
}
|
|
12486
12551
|
other.save();
|
|
12487
|
-
other.setWorldShadow(offsetOutBounds.offsetX + item.x * scaleX * otherScale, offsetOutBounds.offsetY + item.y * scaleY * otherScale, item.blur * scaleX * otherScale);
|
|
12488
|
-
|
|
12489
|
-
|
|
12552
|
+
other.setWorldShadow(offsetOutBounds.offsetX + (item.x || 0) * scaleX * otherScale, offsetOutBounds.offsetY + (item.y || 0) * scaleY * otherScale, (item.blur || 0) * scaleX * otherScale);
|
|
12553
|
+
transform = Effect.getShadowTransform(ui, other, shape, item, offsetOutBounds, otherScale, true);
|
|
12554
|
+
if (transform) other.setTransform(transform);
|
|
12555
|
+
drawWorldShadow(other, offsetOutBounds, shape);
|
|
12490
12556
|
other.restore();
|
|
12491
12557
|
if (worldCanvas) {
|
|
12492
|
-
other.copyWorld(other,
|
|
12558
|
+
other.copyWorld(other, renderBounds, nowWorld, "copy");
|
|
12493
12559
|
other.copyWorld(worldCanvas, nowWorld, nowWorld, "source-out");
|
|
12494
12560
|
copyBounds = nowWorld;
|
|
12495
12561
|
} else {
|
|
12496
12562
|
other.copyWorld(shape.canvas, shapeBounds, bounds, "source-out");
|
|
12497
|
-
copyBounds =
|
|
12563
|
+
copyBounds = renderBounds;
|
|
12498
12564
|
}
|
|
12499
12565
|
other.fillWorld(copyBounds, ColorConvert.string(item.color), "source-in");
|
|
12500
12566
|
LeafHelper.copyCanvasByWorld(ui, current, other, copyBounds, item.blendMode);
|
|
@@ -12503,6 +12569,8 @@ function innerShadow(ui, current, shape) {
|
|
|
12503
12569
|
other.recycle(copyBounds);
|
|
12504
12570
|
}
|
|
12505
12571
|
|
|
12572
|
+
const getInnerShadowSpread = getShadowRenderSpread;
|
|
12573
|
+
|
|
12506
12574
|
function blur(ui, current, origin) {
|
|
12507
12575
|
const {blur: blur} = ui.__;
|
|
12508
12576
|
origin.setWorldBlur(blur * ui.__nowWorld.a);
|
|
@@ -12517,10 +12585,12 @@ const EffectModule = {
|
|
|
12517
12585
|
innerShadow: innerShadow,
|
|
12518
12586
|
blur: blur,
|
|
12519
12587
|
backgroundBlur: backgroundBlur,
|
|
12520
|
-
|
|
12588
|
+
getShadowRenderSpread: getShadowRenderSpread,
|
|
12589
|
+
getShadowTransform: getShadowTransform,
|
|
12521
12590
|
isTransformShadow(_shadow) {
|
|
12522
12591
|
return undefined;
|
|
12523
|
-
}
|
|
12592
|
+
},
|
|
12593
|
+
getInnerShadowSpread: getInnerShadowSpread
|
|
12524
12594
|
};
|
|
12525
12595
|
|
|
12526
12596
|
const {excludeRenderBounds: excludeRenderBounds} = LeafBoundsHelper;
|
|
@@ -12537,6 +12607,7 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
12537
12607
|
maskEnd(this, currentMask, canvas, contentCanvas, maskCanvas, maskOpacity, undefined, true);
|
|
12538
12608
|
maskCanvas = contentCanvas = null;
|
|
12539
12609
|
}
|
|
12610
|
+
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
12540
12611
|
maskOpacity = child.__.opacity;
|
|
12541
12612
|
usedGrayscaleAlpha = false;
|
|
12542
12613
|
if (mask === "path" || mask === "clipping-path") {
|
|
@@ -12554,7 +12625,6 @@ Group.prototype.__renderMask = function(canvas, options) {
|
|
|
12554
12625
|
if (!contentCanvas) contentCanvas = getCanvas(canvas);
|
|
12555
12626
|
child.__render(maskCanvas, options);
|
|
12556
12627
|
}
|
|
12557
|
-
if (mask === "clipping" || mask === "clipping-path") excludeRenderBounds(child, options) || child.__render(canvas, options);
|
|
12558
12628
|
continue;
|
|
12559
12629
|
}
|
|
12560
12630
|
const childBlendMode = maskOpacity === 1 && child.__.__blendMode;
|
|
@@ -13116,6 +13186,7 @@ const TextConvertModule = {
|
|
|
13116
13186
|
};
|
|
13117
13187
|
|
|
13118
13188
|
function string(color, opacity) {
|
|
13189
|
+
if (!color) return "#000";
|
|
13119
13190
|
const doOpacity = isNumber(opacity) && opacity < 1;
|
|
13120
13191
|
if (isString(color)) {
|
|
13121
13192
|
if (doOpacity && ColorConvert.object) color = ColorConvert.object(color); else return color;
|
|
@@ -13150,4 +13221,4 @@ Object.assign(Creator, {
|
|
|
13150
13221
|
|
|
13151
13222
|
useCanvas();
|
|
13152
13223
|
|
|
13153
|
-
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$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, 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$1 as 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$
|
|
13224
|
+
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$1 as DragEvent, Dragger, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Filter, FourNumberHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, 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$1 as 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 };
|