@leafer/worker 1.9.9 → 1.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/worker.js +340 -180
- package/dist/worker.min.js +1 -1
- package/dist/worker.min.js.map +1 -1
- package/dist/worker.module.js +346 -185
- package/dist/worker.module.min.js +1 -1
- package/dist/worker.module.min.js.map +1 -1
- package/package.json +23 -23
package/dist/worker.module.js
CHANGED
|
@@ -249,7 +249,7 @@ class LeafData {
|
|
|
249
249
|
|
|
250
250
|
let tempA, tempB, tempTo;
|
|
251
251
|
|
|
252
|
-
const {max: max$
|
|
252
|
+
const {max: max$6} = Math, tempFour = [ 0, 0, 0, 0 ];
|
|
253
253
|
|
|
254
254
|
const FourNumberHelper = {
|
|
255
255
|
zero: [ ...tempFour ],
|
|
@@ -263,7 +263,7 @@ const FourNumberHelper = {
|
|
|
263
263
|
return to;
|
|
264
264
|
},
|
|
265
265
|
setTemp(top, right, bottom, left) {
|
|
266
|
-
return set$
|
|
266
|
+
return set$2(tempFour, top, right, bottom, left);
|
|
267
267
|
},
|
|
268
268
|
toTempAB(a, b, change) {
|
|
269
269
|
tempTo = change ? isNumber(a) ? b : a : [];
|
|
@@ -301,24 +301,24 @@ const FourNumberHelper = {
|
|
|
301
301
|
return data;
|
|
302
302
|
},
|
|
303
303
|
max(t, other, change) {
|
|
304
|
-
if (isNumber(t) && isNumber(other)) return max$
|
|
304
|
+
if (isNumber(t) && isNumber(other)) return max$6(t, other);
|
|
305
305
|
toTempAB(t, other, change);
|
|
306
|
-
return set$
|
|
306
|
+
return set$2(tempTo, max$6(tempA[0], tempB[0]), max$6(tempA[1], tempB[1]), max$6(tempA[2], tempB[2]), max$6(tempA[3], tempB[3]));
|
|
307
307
|
},
|
|
308
308
|
add(t, other, change) {
|
|
309
309
|
if (isNumber(t) && isNumber(other)) return t + other;
|
|
310
310
|
toTempAB(t, other, change);
|
|
311
|
-
return set$
|
|
311
|
+
return set$2(tempTo, tempA[0] + tempB[0], tempA[1] + tempB[1], tempA[2] + tempB[2], tempA[3] + tempB[3]);
|
|
312
312
|
},
|
|
313
313
|
swapAndScale(t, scaleX, scaleY, change) {
|
|
314
314
|
if (isNumber(t)) return scaleX === scaleY ? t * scaleX : [ t * scaleY, t * scaleX ];
|
|
315
315
|
const to = change ? t : [];
|
|
316
316
|
const [top, right, bottom, left] = t.length === 4 ? t : get$5(t);
|
|
317
|
-
return set$
|
|
317
|
+
return set$2(to, bottom * scaleY, left * scaleX, top * scaleY, right * scaleX);
|
|
318
318
|
}
|
|
319
319
|
};
|
|
320
320
|
|
|
321
|
-
const {set: set$
|
|
321
|
+
const {set: set$2, get: get$5, setTemp: setTemp, toTempAB: toTempAB} = FourNumberHelper;
|
|
322
322
|
|
|
323
323
|
const {round: round$6, pow: pow$2, PI: PI$4} = Math;
|
|
324
324
|
|
|
@@ -720,7 +720,7 @@ const M$b = MatrixHelper;
|
|
|
720
720
|
|
|
721
721
|
const {toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3} = MatrixHelper;
|
|
722
722
|
|
|
723
|
-
const {sin: sin$5, cos: cos$5, abs: abs$
|
|
723
|
+
const {sin: sin$5, cos: cos$5, abs: abs$a, sqrt: sqrt$4, atan2: atan2$2, min: min$2, round: round$5} = Math;
|
|
724
724
|
|
|
725
725
|
const PointHelper = {
|
|
726
726
|
defaultPoint: getPointData(),
|
|
@@ -813,12 +813,12 @@ const PointHelper = {
|
|
|
813
813
|
return getDistanceFrom(t.x, t.y, point.x, point.y);
|
|
814
814
|
},
|
|
815
815
|
getDistanceFrom(x1, y1, x2, y2) {
|
|
816
|
-
const x = abs$
|
|
817
|
-
const y = abs$
|
|
816
|
+
const x = abs$a(x2 - x1);
|
|
817
|
+
const y = abs$a(y2 - y1);
|
|
818
818
|
return sqrt$4(x * x + y * y);
|
|
819
819
|
},
|
|
820
820
|
getMinDistanceFrom(x1, y1, x2, y2, x3, y3) {
|
|
821
|
-
return min$
|
|
821
|
+
return min$2(getDistanceFrom(x1, y1, x2, y2), getDistanceFrom(x2, y2, x3, y3));
|
|
822
822
|
},
|
|
823
823
|
getAngle(t, to) {
|
|
824
824
|
return getAtan2(t, to) / OneRadian;
|
|
@@ -2592,11 +2592,11 @@ const RectHelper = {
|
|
|
2592
2592
|
}
|
|
2593
2593
|
};
|
|
2594
2594
|
|
|
2595
|
-
const {sin: sin$4, cos: cos$4, hypot: hypot, atan2: atan2$1, ceil: ceil$2, abs: abs$
|
|
2595
|
+
const {sin: sin$4, cos: cos$4, hypot: hypot, atan2: atan2$1, ceil: ceil$2, abs: abs$9, PI: PI$3, sqrt: sqrt$3, pow: pow$1} = Math;
|
|
2596
2596
|
|
|
2597
2597
|
const {setPoint: setPoint$4, addPoint: addPoint$2} = TwoPointBoundsHelper;
|
|
2598
2598
|
|
|
2599
|
-
const {set: set, toNumberPoints: toNumberPoints$1} = PointHelper;
|
|
2599
|
+
const {set: set$1, toNumberPoints: toNumberPoints$1} = PointHelper;
|
|
2600
2600
|
|
|
2601
2601
|
const {M: M$a, L: L$a, C: C$8, Q: Q$7, Z: Z$8} = PathCommandMap;
|
|
2602
2602
|
|
|
@@ -2667,14 +2667,14 @@ const BezierHelper = {
|
|
|
2667
2667
|
const lenCB = hypot(CBx, CBy);
|
|
2668
2668
|
let totalRadian = endRadian - startRadian;
|
|
2669
2669
|
if (totalRadian < 0) totalRadian += PI2;
|
|
2670
|
-
if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$
|
|
2670
|
+
if (lenBA < 1e-12 || lenCB < 1e-12 || totalRadian < 1e-12 || abs$9(totalRadian - PI$3) < 1e-12) {
|
|
2671
2671
|
if (data) data.push(L$a, x1, y1);
|
|
2672
2672
|
if (setPointBounds) {
|
|
2673
2673
|
setPoint$4(setPointBounds, fromX, fromY);
|
|
2674
2674
|
addPoint$2(setPointBounds, x1, y1);
|
|
2675
2675
|
}
|
|
2676
|
-
if (setStartPoint) set(setStartPoint, fromX, fromY);
|
|
2677
|
-
if (setEndPoint) set(setEndPoint, x1, y1);
|
|
2676
|
+
if (setStartPoint) set$1(setStartPoint, fromX, fromY);
|
|
2677
|
+
if (setEndPoint) set$1(setEndPoint, x1, y1);
|
|
2678
2678
|
return;
|
|
2679
2679
|
}
|
|
2680
2680
|
const anticlockwise = BAx * CBy - CBx * BAy < 0;
|
|
@@ -2700,7 +2700,7 @@ const BezierHelper = {
|
|
|
2700
2700
|
let totalRadian = endRadian - startRadian;
|
|
2701
2701
|
if (totalRadian < 0) totalRadian += PI2; else if (totalRadian > PI2) totalRadian -= PI2;
|
|
2702
2702
|
if (anticlockwise) totalRadian -= PI2;
|
|
2703
|
-
const parts = ceil$2(abs$
|
|
2703
|
+
const parts = ceil$2(abs$9(totalRadian / PI_2));
|
|
2704
2704
|
const partRadian = totalRadian / parts;
|
|
2705
2705
|
const partRadian4Sin = sin$4(partRadian / 4);
|
|
2706
2706
|
const control = 8 / 3 * partRadian4Sin * partRadian4Sin / sin$4(partRadian / 2);
|
|
@@ -2714,7 +2714,7 @@ const BezierHelper = {
|
|
|
2714
2714
|
let fromX = cx + x, fromY = cy + y;
|
|
2715
2715
|
if (data) data.push(data.length ? L$a : M$a, fromX, fromY);
|
|
2716
2716
|
if (setPointBounds) setPoint$4(setPointBounds, fromX, fromY);
|
|
2717
|
-
if (setStartPoint) set(setStartPoint, fromX, fromY);
|
|
2717
|
+
if (setStartPoint) set$1(setStartPoint, fromX, fromY);
|
|
2718
2718
|
for (let i = 0; i < parts; i++) {
|
|
2719
2719
|
endCos = cos$4(endRadian);
|
|
2720
2720
|
endSin = sin$4(endRadian);
|
|
@@ -2733,7 +2733,7 @@ const BezierHelper = {
|
|
|
2733
2733
|
startRadian = endRadian;
|
|
2734
2734
|
endRadian += partRadian;
|
|
2735
2735
|
}
|
|
2736
|
-
if (setEndPoint) set(setEndPoint, cx + x, cy + y);
|
|
2736
|
+
if (setEndPoint) set$1(setEndPoint, cx + x, cy + y);
|
|
2737
2737
|
},
|
|
2738
2738
|
quadraticCurveTo(data, fromX, fromY, x1, y1, toX, toY) {
|
|
2739
2739
|
data.push(C$8, (fromX + 2 * x1) / 3, (fromY + 2 * y1) / 3, (toX + 2 * x1) / 3, (toY + 2 * y1) / 3, toX, toY);
|
|
@@ -3167,7 +3167,7 @@ const {M: M$8, L: L$8, C: C$6, Q: Q$5, Z: Z$6, N: N$4, D: D$5, X: X$4, G: G$4, F
|
|
|
3167
3167
|
|
|
3168
3168
|
const {getMinDistanceFrom: getMinDistanceFrom, getRadianFrom: getRadianFrom} = PointHelper;
|
|
3169
3169
|
|
|
3170
|
-
const {tan: tan, min: min, abs: abs$
|
|
3170
|
+
const {tan: tan, min: min$1, abs: abs$8} = Math;
|
|
3171
3171
|
|
|
3172
3172
|
const startPoint = {};
|
|
3173
3173
|
|
|
@@ -3225,7 +3225,7 @@ const PathCommandDataHelper = {
|
|
|
3225
3225
|
arcTo(data, x1, y1, x2, y2, radius, lastX, lastY) {
|
|
3226
3226
|
if (!isUndefined(lastX)) {
|
|
3227
3227
|
const d = getMinDistanceFrom(lastX, lastY, x1, y1, x2, y2);
|
|
3228
|
-
radius = min(radius, min(d / 2, d / 2 * abs$
|
|
3228
|
+
radius = min$1(radius, min$1(d / 2, d / 2 * abs$8(tan(getRadianFrom(lastX, lastY, x1, y1, x2, y2) / 2))));
|
|
3229
3229
|
}
|
|
3230
3230
|
data.push(U$4, x1, y1, x2, y2, radius);
|
|
3231
3231
|
},
|
|
@@ -3840,7 +3840,12 @@ class TaskProcessor {
|
|
|
3840
3840
|
runTask() {
|
|
3841
3841
|
const task = this.list[this.index];
|
|
3842
3842
|
if (!task) {
|
|
3843
|
-
this.nextTask();
|
|
3843
|
+
this.timer = setTimeout(() => this.nextTask());
|
|
3844
|
+
return;
|
|
3845
|
+
}
|
|
3846
|
+
if (task.isCancel) {
|
|
3847
|
+
this.index++;
|
|
3848
|
+
this.runTask();
|
|
3844
3849
|
return;
|
|
3845
3850
|
}
|
|
3846
3851
|
task.run().then(() => {
|
|
@@ -3871,16 +3876,15 @@ class TaskProcessor {
|
|
|
3871
3876
|
}
|
|
3872
3877
|
setParallelList() {
|
|
3873
3878
|
let task;
|
|
3879
|
+
const {config: config, list: list, index: index} = this;
|
|
3874
3880
|
this.parallelList = [];
|
|
3875
3881
|
this.parallelSuccessNumber = 0;
|
|
3876
|
-
let end =
|
|
3877
|
-
if (end >
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
this.parallelList.push(task);
|
|
3882
|
-
} else {
|
|
3883
|
-
break;
|
|
3882
|
+
let end = index + config.parallel;
|
|
3883
|
+
if (end > list.length) end = list.length;
|
|
3884
|
+
if (config.parallel > 1) {
|
|
3885
|
+
for (let i = index; i < end; i++) {
|
|
3886
|
+
task = list[i];
|
|
3887
|
+
if (task.parallel) this.parallelList.push(task); else break;
|
|
3884
3888
|
}
|
|
3885
3889
|
}
|
|
3886
3890
|
}
|
|
@@ -4023,7 +4027,7 @@ const I$1 = ImageManager;
|
|
|
4023
4027
|
|
|
4024
4028
|
const {IMAGE: IMAGE, create: create$1} = IncrementId;
|
|
4025
4029
|
|
|
4026
|
-
const {floor: floor$2, max: max$
|
|
4030
|
+
const {floor: floor$2, max: max$5} = Math;
|
|
4027
4031
|
|
|
4028
4032
|
class LeaferImage {
|
|
4029
4033
|
get url() {
|
|
@@ -4112,7 +4116,7 @@ class LeaferImage {
|
|
|
4112
4116
|
}
|
|
4113
4117
|
if (data) return data;
|
|
4114
4118
|
}
|
|
4115
|
-
const canvas = Platform.origin.createCanvas(max$
|
|
4119
|
+
const canvas = Platform.origin.createCanvas(max$5(floor$2(width + (xGap || 0)), 1), max$5(floor$2(height + (yGap || 0)), 1));
|
|
4116
4120
|
const ctx = canvas.getContext("2d");
|
|
4117
4121
|
if (opacity) ctx.globalAlpha = opacity;
|
|
4118
4122
|
ctx.imageSmoothingEnabled = smooth === false ? false : true;
|
|
@@ -6815,7 +6819,7 @@ class LeafLevelList {
|
|
|
6815
6819
|
}
|
|
6816
6820
|
}
|
|
6817
6821
|
|
|
6818
|
-
const version = "1.9.
|
|
6822
|
+
const version = "1.9.11";
|
|
6819
6823
|
|
|
6820
6824
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
6821
6825
|
get allowBackgroundColor() {
|
|
@@ -7481,7 +7485,7 @@ class Picker {
|
|
|
7481
7485
|
children: [ target ]
|
|
7482
7486
|
} : target);
|
|
7483
7487
|
const {list: list} = this.findList;
|
|
7484
|
-
const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable);
|
|
7488
|
+
const leaf = this.getBestMatchLeaf(list, options.bottomList, ignoreHittable, !!options.findList);
|
|
7485
7489
|
const path = ignoreHittable ? this.getPath(leaf) : this.getHitablePath(leaf);
|
|
7486
7490
|
this.clear();
|
|
7487
7491
|
return through ? {
|
|
@@ -7496,7 +7500,7 @@ class Picker {
|
|
|
7496
7500
|
hitPoint(hitPoint, hitRadius, options) {
|
|
7497
7501
|
return !!this.getByPoint(hitPoint, hitRadius, options).target;
|
|
7498
7502
|
}
|
|
7499
|
-
getBestMatchLeaf(list, bottomList, ignoreHittable) {
|
|
7503
|
+
getBestMatchLeaf(list, bottomList, ignoreHittable, allowNull) {
|
|
7500
7504
|
const findList = this.findList = new LeafList;
|
|
7501
7505
|
if (list.length) {
|
|
7502
7506
|
let find;
|
|
@@ -7527,15 +7531,27 @@ class Picker {
|
|
|
7527
7531
|
if (findList.length) return findList.list[0];
|
|
7528
7532
|
}
|
|
7529
7533
|
}
|
|
7534
|
+
if (allowNull) return null;
|
|
7530
7535
|
return ignoreHittable ? list[0] : list.find(item => LeafHelper.worldHittable(item));
|
|
7531
7536
|
}
|
|
7532
7537
|
getPath(leaf) {
|
|
7533
|
-
const path = new LeafList;
|
|
7538
|
+
const path = new LeafList, syncList = [], {target: target} = this;
|
|
7534
7539
|
while (leaf) {
|
|
7540
|
+
if (leaf.syncEventer) syncList.push(leaf.syncEventer);
|
|
7535
7541
|
path.add(leaf);
|
|
7536
7542
|
leaf = leaf.parent;
|
|
7543
|
+
if (leaf === target) break;
|
|
7544
|
+
}
|
|
7545
|
+
if (syncList.length) {
|
|
7546
|
+
syncList.forEach(item => {
|
|
7547
|
+
while (item) {
|
|
7548
|
+
if (item.__.hittable) path.add(item);
|
|
7549
|
+
item = item.parent;
|
|
7550
|
+
if (item === target) break;
|
|
7551
|
+
}
|
|
7552
|
+
});
|
|
7537
7553
|
}
|
|
7538
|
-
if (
|
|
7554
|
+
if (target) path.add(target);
|
|
7539
7555
|
return path;
|
|
7540
7556
|
}
|
|
7541
7557
|
getHitablePath(leaf) {
|
|
@@ -8033,12 +8049,12 @@ class ImageData extends RectData {
|
|
|
8033
8049
|
}
|
|
8034
8050
|
__getData() {
|
|
8035
8051
|
const data = super.__getData();
|
|
8036
|
-
delete data.fill;
|
|
8052
|
+
if (data.url) delete data.fill;
|
|
8037
8053
|
return data;
|
|
8038
8054
|
}
|
|
8039
8055
|
__getInputData(names, options) {
|
|
8040
8056
|
const data = super.__getInputData(names, options);
|
|
8041
|
-
delete data.fill;
|
|
8057
|
+
if (data.url) delete data.fill;
|
|
8042
8058
|
return data;
|
|
8043
8059
|
}
|
|
8044
8060
|
}
|
|
@@ -8057,7 +8073,7 @@ class CanvasData extends RectData {
|
|
|
8057
8073
|
}
|
|
8058
8074
|
}
|
|
8059
8075
|
|
|
8060
|
-
const {max: max$
|
|
8076
|
+
const {max: max$4, add: add$1} = FourNumberHelper;
|
|
8061
8077
|
|
|
8062
8078
|
const UIBounds = {
|
|
8063
8079
|
__updateStrokeSpread() {
|
|
@@ -8073,7 +8089,7 @@ const UIBounds = {
|
|
|
8073
8089
|
}
|
|
8074
8090
|
if (data.__useArrow) spread += strokeWidth * 5;
|
|
8075
8091
|
if (box) {
|
|
8076
|
-
spread = max$
|
|
8092
|
+
spread = max$4(spread, box.__layout.strokeSpread = box.__updateStrokeSpread());
|
|
8077
8093
|
boxSpread = Math.max(boxSpread, box.__layout.strokeBoxSpread);
|
|
8078
8094
|
}
|
|
8079
8095
|
this.__layout.strokeBoxSpread = boxSpread;
|
|
@@ -8083,86 +8099,18 @@ const UIBounds = {
|
|
|
8083
8099
|
let spread = 0;
|
|
8084
8100
|
const {shadow: shadow, innerShadow: innerShadow, blur: blur, backgroundBlur: backgroundBlur, filter: filter, renderSpread: renderSpread} = this.__, {strokeSpread: strokeSpread} = this.__layout, box = this.__box;
|
|
8085
8101
|
if (shadow) spread = Effect.getShadowRenderSpread(this, shadow);
|
|
8086
|
-
if (blur) spread = max$
|
|
8102
|
+
if (blur) spread = max$4(spread, blur);
|
|
8087
8103
|
if (filter) spread = add$1(spread, Filter.getSpread(filter));
|
|
8088
8104
|
if (renderSpread) spread = add$1(spread, renderSpread);
|
|
8089
8105
|
if (strokeSpread) spread = add$1(spread, strokeSpread);
|
|
8090
8106
|
let shapeSpread = spread;
|
|
8091
|
-
if (innerShadow) shapeSpread = max$
|
|
8092
|
-
if (backgroundBlur) shapeSpread = max$
|
|
8107
|
+
if (innerShadow) shapeSpread = max$4(shapeSpread, Effect.getInnerShadowSpread(this, innerShadow));
|
|
8108
|
+
if (backgroundBlur) shapeSpread = max$4(shapeSpread, backgroundBlur);
|
|
8093
8109
|
this.__layout.renderShapeSpread = shapeSpread;
|
|
8094
|
-
return box ? max$
|
|
8110
|
+
return box ? max$4(box.__updateRenderSpread(), spread) : spread;
|
|
8095
8111
|
}
|
|
8096
8112
|
};
|
|
8097
8113
|
|
|
8098
|
-
const {float: float$1} = MathHelper;
|
|
8099
|
-
|
|
8100
|
-
const tempContent = new Bounds, tempMerge = new Bounds, tempIntersect = new Bounds;
|
|
8101
|
-
|
|
8102
|
-
const DragBoundsHelper = {
|
|
8103
|
-
limitMove(leaf, move) {
|
|
8104
|
-
const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
|
|
8105
|
-
if (dragBounds) D$2.getValidMove(leaf.__localBoxBounds, D$2.getDragBounds(leaf), dragBoundsType, move, true);
|
|
8106
|
-
D$2.axisMove(leaf, move);
|
|
8107
|
-
},
|
|
8108
|
-
limitScaleOf(leaf, origin, scale) {
|
|
8109
|
-
const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
|
|
8110
|
-
if (dragBounds) D$2.getValidScaleOf(leaf.__localBoxBounds, D$2.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, true);
|
|
8111
|
-
},
|
|
8112
|
-
axisMove(leaf, move) {
|
|
8113
|
-
const {draggable: draggable} = leaf;
|
|
8114
|
-
if (draggable === "x") move.y = 0;
|
|
8115
|
-
if (draggable === "y") move.x = 0;
|
|
8116
|
-
},
|
|
8117
|
-
getDragBounds(leaf) {
|
|
8118
|
-
const {dragBounds: dragBounds} = leaf;
|
|
8119
|
-
return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
|
|
8120
|
-
},
|
|
8121
|
-
isInnerMode(content, dragBounds, dragBoundsType, sideType) {
|
|
8122
|
-
return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
|
|
8123
|
-
},
|
|
8124
|
-
getValidMove(content, dragBounds, dragBoundsType, move, change) {
|
|
8125
|
-
const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
|
|
8126
|
-
const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
|
|
8127
|
-
if (!change) move = Object.assign({}, move);
|
|
8128
|
-
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
|
|
8129
|
-
if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
|
|
8130
|
-
} else {
|
|
8131
|
-
if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
|
|
8132
|
-
}
|
|
8133
|
-
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
|
|
8134
|
-
if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
|
|
8135
|
-
} else {
|
|
8136
|
-
if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
|
|
8137
|
-
}
|
|
8138
|
-
move.x = float$1(move.x);
|
|
8139
|
-
move.y = float$1(move.y);
|
|
8140
|
-
return move;
|
|
8141
|
-
},
|
|
8142
|
-
getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, change) {
|
|
8143
|
-
if (!change) scale = Object.assign({}, scale);
|
|
8144
|
-
let fitScaleX, fitScaleY;
|
|
8145
|
-
tempContent.set(content).scaleOf(origin, scale.x, scale.y).unsign();
|
|
8146
|
-
tempMerge.set(tempContent).add(dragBounds);
|
|
8147
|
-
tempIntersect.set(tempContent).intersect(dragBounds);
|
|
8148
|
-
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
|
|
8149
|
-
fitScaleX = tempMerge.width / tempContent.width;
|
|
8150
|
-
} else {
|
|
8151
|
-
fitScaleX = tempIntersect.width / tempContent.width;
|
|
8152
|
-
}
|
|
8153
|
-
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
|
|
8154
|
-
fitScaleY = tempMerge.height / tempContent.height;
|
|
8155
|
-
} else {
|
|
8156
|
-
fitScaleY = tempIntersect.height / tempContent.height;
|
|
8157
|
-
}
|
|
8158
|
-
scale.x = float$1(tempIntersect.width) ? scale.x * fitScaleX : 1;
|
|
8159
|
-
scale.y = float$1(tempIntersect.height) ? scale.y * fitScaleY : 1;
|
|
8160
|
-
return scale;
|
|
8161
|
-
}
|
|
8162
|
-
};
|
|
8163
|
-
|
|
8164
|
-
const D$2 = DragBoundsHelper;
|
|
8165
|
-
|
|
8166
8114
|
const {stintSet: stintSet$1} = DataHelper;
|
|
8167
8115
|
|
|
8168
8116
|
const UIRender = {
|
|
@@ -9828,6 +9776,106 @@ class UIEvent extends Event {
|
|
|
9828
9776
|
}
|
|
9829
9777
|
}
|
|
9830
9778
|
|
|
9779
|
+
const {min: min, max: max$3, abs: abs$7} = Math, {float: float$1, sign: sign$2} = MathHelper, {minX: minX, maxX: maxX, minY: minY, maxY: maxY} = BoundsHelper;
|
|
9780
|
+
|
|
9781
|
+
const tempContent = new Bounds, tempDragBounds = new Bounds;
|
|
9782
|
+
|
|
9783
|
+
const DragBoundsHelper = {
|
|
9784
|
+
limitMove(leaf, move) {
|
|
9785
|
+
const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
|
|
9786
|
+
if (dragBounds) D$2.getValidMove(leaf.__localBoxBounds, D$2.getDragBounds(leaf), dragBoundsType, move, true);
|
|
9787
|
+
D$2.axisMove(leaf, move);
|
|
9788
|
+
},
|
|
9789
|
+
limitScaleOf(leaf, origin, scale, lockRatio) {
|
|
9790
|
+
const {dragBounds: dragBounds, dragBoundsType: dragBoundsType} = leaf;
|
|
9791
|
+
if (dragBounds) D$2.getValidScaleOf(leaf.__localBoxBounds, D$2.getDragBounds(leaf), dragBoundsType, leaf.getLocalPointByInner(leaf.getInnerPointByBox(origin)), scale, lockRatio, true);
|
|
9792
|
+
},
|
|
9793
|
+
axisMove(leaf, move) {
|
|
9794
|
+
const {draggable: draggable} = leaf;
|
|
9795
|
+
if (draggable === "x") move.y = 0;
|
|
9796
|
+
if (draggable === "y") move.x = 0;
|
|
9797
|
+
},
|
|
9798
|
+
getDragBounds(leaf) {
|
|
9799
|
+
const {dragBounds: dragBounds} = leaf;
|
|
9800
|
+
return dragBounds === "parent" ? leaf.parent.boxBounds : dragBounds;
|
|
9801
|
+
},
|
|
9802
|
+
isInnerMode(content, dragBounds, dragBoundsType, sideType) {
|
|
9803
|
+
return dragBoundsType === "inner" || dragBoundsType === "auto" && content[sideType] > dragBounds[sideType];
|
|
9804
|
+
},
|
|
9805
|
+
getValidMove(content, dragBounds, dragBoundsType, move, change) {
|
|
9806
|
+
const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height;
|
|
9807
|
+
const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height;
|
|
9808
|
+
if (!change) move = Object.assign({}, move);
|
|
9809
|
+
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
|
|
9810
|
+
if (x > dragBounds.x) move.x += dragBounds.x - x; else if (right < boundsRight) move.x += boundsRight - right;
|
|
9811
|
+
} else {
|
|
9812
|
+
if (x < dragBounds.x) move.x += dragBounds.x - x; else if (right > boundsRight) move.x += boundsRight - right;
|
|
9813
|
+
}
|
|
9814
|
+
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
|
|
9815
|
+
if (y > dragBounds.y) move.y += dragBounds.y - y; else if (bottom < boundsBottom) move.y += boundsBottom - bottom;
|
|
9816
|
+
} else {
|
|
9817
|
+
if (y < dragBounds.y) move.y += dragBounds.y - y; else if (bottom > boundsBottom) move.y += boundsBottom - bottom;
|
|
9818
|
+
}
|
|
9819
|
+
move.x = float$1(move.x);
|
|
9820
|
+
move.y = float$1(move.y);
|
|
9821
|
+
return move;
|
|
9822
|
+
},
|
|
9823
|
+
getValidScaleOf(content, dragBounds, dragBoundsType, origin, scale, lockRatio, change) {
|
|
9824
|
+
if (!change) scale = Object.assign({}, scale);
|
|
9825
|
+
tempDragBounds.set(dragBounds);
|
|
9826
|
+
tempContent.set(content).scaleOf(origin, scale.x, scale.y);
|
|
9827
|
+
const originLeftScale = (origin.x - content.x) / content.width, originRightScale = 1 - originLeftScale;
|
|
9828
|
+
const originTopScale = (origin.y - content.y) / content.height, originBottomScale = 1 - originTopScale;
|
|
9829
|
+
let correctScaleX = 1, correctScaleY = 1, aScale, bScale, aSize, bSize;
|
|
9830
|
+
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "width")) {
|
|
9831
|
+
if (scale.x < 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
|
|
9832
|
+
aSize = float$1(tempContent.minX - tempDragBounds.minX);
|
|
9833
|
+
bSize = float$1(tempDragBounds.maxX - tempContent.maxX);
|
|
9834
|
+
aScale = originLeftScale && aSize > 0 ? 1 + aSize / (originLeftScale * tempContent.width) : 1;
|
|
9835
|
+
bScale = originRightScale && bSize > 0 ? 1 + bSize / (originRightScale * tempContent.width) : 1;
|
|
9836
|
+
correctScaleX *= max$3(aScale, bScale);
|
|
9837
|
+
} else {
|
|
9838
|
+
if (scale.x < 0) {
|
|
9839
|
+
if (float$1(minX(content) - minX(dragBounds)) <= 0 || float$1(maxX(dragBounds) - maxX(content)) <= 0) tempContent.scaleOf(origin, correctScaleX = 1 / scale.x, 1);
|
|
9840
|
+
tempContent.unsign();
|
|
9841
|
+
}
|
|
9842
|
+
aSize = float$1(tempDragBounds.minX - tempContent.minX);
|
|
9843
|
+
bSize = float$1(tempContent.maxX - tempDragBounds.maxX);
|
|
9844
|
+
aScale = originLeftScale && aSize > 0 ? 1 - aSize / (originLeftScale * tempContent.width) : 1;
|
|
9845
|
+
bScale = originRightScale && bSize > 0 ? 1 - bSize / (originRightScale * tempContent.width) : 1;
|
|
9846
|
+
correctScaleX *= min(aScale, bScale);
|
|
9847
|
+
}
|
|
9848
|
+
if (D$2.isInnerMode(content, dragBounds, dragBoundsType, "height")) {
|
|
9849
|
+
if (scale.y < 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
|
|
9850
|
+
aSize = float$1(tempContent.minY - tempDragBounds.minY);
|
|
9851
|
+
bSize = float$1(tempDragBounds.maxY - tempContent.maxY);
|
|
9852
|
+
aScale = originTopScale && aSize > 0 ? 1 + aSize / (originTopScale * tempContent.height) : 1;
|
|
9853
|
+
bScale = originBottomScale && bSize > 0 ? 1 + bSize / (originBottomScale * tempContent.height) : 1;
|
|
9854
|
+
correctScaleY *= max$3(aScale, bScale);
|
|
9855
|
+
if (lockRatio) {
|
|
9856
|
+
aScale = max$3(abs$7(correctScaleX), abs$7(correctScaleY));
|
|
9857
|
+
correctScaleX = sign$2(correctScaleX) * aScale;
|
|
9858
|
+
correctScaleY = sign$2(correctScaleY) * aScale;
|
|
9859
|
+
}
|
|
9860
|
+
} else {
|
|
9861
|
+
if (scale.y < 0) {
|
|
9862
|
+
if (float$1(minY(content) - minY(dragBounds)) <= 0 || float$1(maxY(dragBounds) - maxY(content)) <= 0) tempContent.scaleOf(origin, 1, correctScaleY = 1 / scale.y);
|
|
9863
|
+
tempContent.unsign();
|
|
9864
|
+
}
|
|
9865
|
+
aSize = float$1(tempDragBounds.minY - tempContent.minY);
|
|
9866
|
+
bSize = float$1(tempContent.maxY - tempDragBounds.maxY);
|
|
9867
|
+
aScale = originTopScale && aSize > 0 ? 1 - aSize / (originTopScale * tempContent.height) : 1;
|
|
9868
|
+
bScale = originBottomScale && bSize > 0 ? 1 - bSize / (originBottomScale * tempContent.height) : 1;
|
|
9869
|
+
correctScaleY *= min(aScale, bScale);
|
|
9870
|
+
}
|
|
9871
|
+
scale.x *= isFinite(correctScaleX) ? correctScaleX : 1;
|
|
9872
|
+
scale.y *= isFinite(correctScaleY) ? correctScaleY : 1;
|
|
9873
|
+
return scale;
|
|
9874
|
+
}
|
|
9875
|
+
};
|
|
9876
|
+
|
|
9877
|
+
const D$2 = DragBoundsHelper;
|
|
9878
|
+
|
|
9831
9879
|
let PointerEvent = class PointerEvent extends UIEvent {};
|
|
9832
9880
|
|
|
9833
9881
|
PointerEvent.POINTER = "pointer";
|
|
@@ -10898,9 +10946,9 @@ const ui$5 = UI.prototype;
|
|
|
10898
10946
|
|
|
10899
10947
|
ui$5.__updateHitCanvas = function() {
|
|
10900
10948
|
if (this.__box) this.__box.__updateHitCanvas();
|
|
10901
|
-
const
|
|
10902
|
-
if (!
|
|
10903
|
-
const data = this.__
|
|
10949
|
+
const {hitCanvasManager: hitCanvasManager} = this.leafer || this.parent && this.parent.leafer || {};
|
|
10950
|
+
if (!hitCanvasManager) return;
|
|
10951
|
+
const data = this.__;
|
|
10904
10952
|
const isHitPixelFill = (data.__isAlphaPixelFill || data.__isCanvas) && data.hitFill === "pixel";
|
|
10905
10953
|
const isHitPixelStroke = data.__isAlphaPixelStroke && data.hitStroke === "pixel";
|
|
10906
10954
|
const isHitPixel = isHitPixelFill || isHitPixelStroke;
|
|
@@ -11372,7 +11420,14 @@ const PaintModule = {
|
|
|
11372
11420
|
|
|
11373
11421
|
let origin$1 = {}, tempMatrix$1 = getMatrixData();
|
|
11374
11422
|
|
|
11375
|
-
const {get: get$3, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate$2, skew: skewHelper} = MatrixHelper;
|
|
11423
|
+
const {get: get$3, set: set, rotateOfOuter: rotateOfOuter$1, translate: translate$1, scaleOfOuter: scaleOfOuter$1, multiplyParent: multiplyParent, scale: scaleHelper, rotate: rotate$2, skew: skewHelper} = MatrixHelper;
|
|
11424
|
+
|
|
11425
|
+
function stretchMode(data, box, scaleX, scaleY) {
|
|
11426
|
+
const transform = get$3();
|
|
11427
|
+
translate$1(transform, box.x, box.y);
|
|
11428
|
+
if (scaleX) scaleHelper(transform, scaleX, scaleY);
|
|
11429
|
+
data.transform = transform;
|
|
11430
|
+
}
|
|
11376
11431
|
|
|
11377
11432
|
function fillOrFitMode(data, box, x, y, scaleX, scaleY, rotation) {
|
|
11378
11433
|
const transform = get$3();
|
|
@@ -11389,8 +11444,11 @@ function clipMode(data, box, x, y, scaleX, scaleY, rotation, skew, clipScaleX, c
|
|
|
11389
11444
|
const transform = get$3();
|
|
11390
11445
|
layout$3(transform, box, x, y, scaleX, scaleY, rotation, skew);
|
|
11391
11446
|
if (clipScaleX) {
|
|
11392
|
-
|
|
11393
|
-
|
|
11447
|
+
if (rotation || skew) {
|
|
11448
|
+
set(tempMatrix$1);
|
|
11449
|
+
scaleOfOuter$1(tempMatrix$1, box, clipScaleX, clipScaleY);
|
|
11450
|
+
multiplyParent(transform, tempMatrix$1);
|
|
11451
|
+
} else scaleOfOuter$1(transform, box, clipScaleX, clipScaleY);
|
|
11394
11452
|
}
|
|
11395
11453
|
data.transform = transform;
|
|
11396
11454
|
}
|
|
@@ -11486,7 +11544,10 @@ function getPatternData(paint, box, image) {
|
|
|
11486
11544
|
if (offset) PointHelper.move(tempImage, offset);
|
|
11487
11545
|
switch (mode) {
|
|
11488
11546
|
case "stretch":
|
|
11489
|
-
if (!sameBox)
|
|
11547
|
+
if (!sameBox) {
|
|
11548
|
+
scaleX = box.width / width, scaleY = box.height / height;
|
|
11549
|
+
stretchMode(data, box, scaleX, scaleY);
|
|
11550
|
+
}
|
|
11490
11551
|
break;
|
|
11491
11552
|
|
|
11492
11553
|
case "normal":
|
|
@@ -11495,7 +11556,7 @@ function getPatternData(paint, box, image) {
|
|
|
11495
11556
|
let clipScaleX, clipScaleY;
|
|
11496
11557
|
if (clipSize) clipScaleX = box.width / clipSize.width, clipScaleY = box.height / clipSize.height;
|
|
11497
11558
|
clipMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation, skew, clipScaleX, clipScaleY);
|
|
11498
|
-
if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX :
|
|
11559
|
+
if (clipScaleX) scaleX = scaleX ? scaleX * clipScaleX : clipScaleX, scaleY = scaleY ? scaleY * clipScaleY : clipScaleY;
|
|
11499
11560
|
}
|
|
11500
11561
|
break;
|
|
11501
11562
|
|
|
@@ -11512,17 +11573,14 @@ function getPatternData(paint, box, image) {
|
|
|
11512
11573
|
if (scaleX) fillOrFitMode(data, box, tempImage.x, tempImage.y, scaleX, scaleY, rotation);
|
|
11513
11574
|
}
|
|
11514
11575
|
if (!data.transform) {
|
|
11515
|
-
if (box.x || box.y)
|
|
11516
|
-
data.transform = get$2();
|
|
11517
|
-
translate(data.transform, box.x, box.y);
|
|
11518
|
-
}
|
|
11576
|
+
if (box.x || box.y) translate(data.transform = get$2(), box.x, box.y);
|
|
11519
11577
|
}
|
|
11520
|
-
|
|
11578
|
+
data.width = width;
|
|
11579
|
+
data.height = height;
|
|
11580
|
+
if (scaleX) {
|
|
11521
11581
|
data.scaleX = scaleX;
|
|
11522
11582
|
data.scaleY = scaleY;
|
|
11523
11583
|
}
|
|
11524
|
-
data.width = width;
|
|
11525
|
-
data.height = height;
|
|
11526
11584
|
if (opacity) data.opacity = opacity;
|
|
11527
11585
|
if (filters) data.filters = filters;
|
|
11528
11586
|
if (repeat) data.repeat = isString(repeat) ? repeat === "x" ? "repeat-x" : "repeat-y" : "repeat";
|
|
@@ -11654,7 +11712,7 @@ function ignoreRender(ui, value) {
|
|
|
11654
11712
|
|
|
11655
11713
|
const {get: get$1, scale: scale$2, copy: copy$4} = MatrixHelper;
|
|
11656
11714
|
|
|
11657
|
-
const {floor: floor$1, ceil: ceil$1, max: max$2, abs: abs$
|
|
11715
|
+
const {floor: floor$1, ceil: ceil$1, max: max$2, abs: abs$6} = Math;
|
|
11658
11716
|
|
|
11659
11717
|
function createPattern(ui, paint, pixelRatio) {
|
|
11660
11718
|
let {scaleX: scaleX, scaleY: scaleY} = ui.getRenderScaleData(true, paint.scaleFixed);
|
|
@@ -11665,8 +11723,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11665
11723
|
scaleX *= pixelRatio;
|
|
11666
11724
|
scaleY *= pixelRatio;
|
|
11667
11725
|
if (sx) {
|
|
11668
|
-
sx = abs$
|
|
11669
|
-
sy = abs$
|
|
11726
|
+
sx = abs$6(sx);
|
|
11727
|
+
sy = abs$6(sy);
|
|
11670
11728
|
imageMatrix = get$1();
|
|
11671
11729
|
copy$4(imageMatrix, transform);
|
|
11672
11730
|
scale$2(imageMatrix, 1 / sx, 1 / sy);
|
|
@@ -11808,6 +11866,7 @@ const PaintImageModule = {
|
|
|
11808
11866
|
recycleImage: recycleImage,
|
|
11809
11867
|
createData: createData,
|
|
11810
11868
|
getPatternData: getPatternData,
|
|
11869
|
+
stretchMode: stretchMode,
|
|
11811
11870
|
fillOrFitMode: fillOrFitMode,
|
|
11812
11871
|
clipMode: clipMode,
|
|
11813
11872
|
repeatMode: repeatMode
|
|
@@ -11918,7 +11977,7 @@ const PaintGradientModule = {
|
|
|
11918
11977
|
getTransform: getTransform
|
|
11919
11978
|
};
|
|
11920
11979
|
|
|
11921
|
-
const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$1} = Math;
|
|
11980
|
+
const {copy: copy$3, move: move$6, toOffsetOutBounds: toOffsetOutBounds$1} = BoundsHelper, {max: max$1, abs: abs$5} = Math;
|
|
11922
11981
|
|
|
11923
11982
|
const tempBounds = {}, tempMatrix = new Matrix;
|
|
11924
11983
|
|
|
@@ -11962,7 +12021,7 @@ function shadow$1(ui, current, shape) {
|
|
|
11962
12021
|
function getShadowRenderSpread(_ui, shadow) {
|
|
11963
12022
|
let top = 0, right = 0, bottom = 0, left = 0, x, y, spread, blur;
|
|
11964
12023
|
shadow.forEach(item => {
|
|
11965
|
-
x = item.x || 0, y = item.y || 0,
|
|
12024
|
+
x = item.x || 0, y = item.y || 0, blur = (item.blur || 0) * 1.5, spread = abs$5(item.spread || 0);
|
|
11966
12025
|
top = max$1(top, spread + blur - y);
|
|
11967
12026
|
right = max$1(right, spread + blur + x);
|
|
11968
12027
|
bottom = max$1(bottom, spread + blur + y);
|
|
@@ -11973,11 +12032,11 @@ function getShadowRenderSpread(_ui, shadow) {
|
|
|
11973
12032
|
|
|
11974
12033
|
function getShadowTransform(ui, canvas, _shape, shadow, outBounds, otherScale, isInnerShaodw) {
|
|
11975
12034
|
if (shadow.spread) {
|
|
11976
|
-
const
|
|
12035
|
+
const spread = shadow.spread * 2 * otherScale * (isInnerShaodw ? -1 : 1), {width: width, height: height} = ui.__layout.strokeBounds;
|
|
11977
12036
|
tempMatrix.set().scaleOfOuter({
|
|
11978
12037
|
x: (outBounds.x + outBounds.width / 2) * canvas.pixelRatio,
|
|
11979
12038
|
y: (outBounds.y + outBounds.height / 2) * canvas.pixelRatio
|
|
11980
|
-
},
|
|
12039
|
+
}, 1 + spread / width, 1 + spread / height);
|
|
11981
12040
|
return tempMatrix;
|
|
11982
12041
|
}
|
|
11983
12042
|
return undefined;
|
|
@@ -12738,7 +12797,10 @@ function targetAttr(fn) {
|
|
|
12738
12797
|
t.setDimOthers(false);
|
|
12739
12798
|
t.setBright(false);
|
|
12740
12799
|
if (isArray(value) && value.length > 1 && value[0].locked) value.splice(0, 1);
|
|
12741
|
-
if (t.single)
|
|
12800
|
+
if (t.single) {
|
|
12801
|
+
delete t.element.syncEventer;
|
|
12802
|
+
delete t.element.__world.ignorePixelSnap;
|
|
12803
|
+
}
|
|
12742
12804
|
}
|
|
12743
12805
|
const type = isSelect ? EditorEvent.BEFORE_SELECT : EditorEvent.BEFORE_HOVER;
|
|
12744
12806
|
if (this.hasEvent(type)) this.emitEvent(new EditorEvent(type, {
|
|
@@ -12759,7 +12821,15 @@ function mergeConfigAttr() {
|
|
|
12759
12821
|
defineKey(target, key, {
|
|
12760
12822
|
get() {
|
|
12761
12823
|
const {config: config, element: element, dragPoint: dragPoint, editBox: editBox, app: app} = this, mergeConfig = Object.assign({}, config);
|
|
12762
|
-
if (element && element.editConfig)
|
|
12824
|
+
if (element && element.editConfig) {
|
|
12825
|
+
let {editConfig: editConfig} = element;
|
|
12826
|
+
if (editConfig.hover || editConfig.hoverStyle) {
|
|
12827
|
+
editConfig = Object.assign({}, editConfig);
|
|
12828
|
+
delete editConfig.hover;
|
|
12829
|
+
delete editConfig.hoverStyle;
|
|
12830
|
+
}
|
|
12831
|
+
Object.assign(mergeConfig, editConfig);
|
|
12832
|
+
}
|
|
12763
12833
|
if (editBox.config) Object.assign(mergeConfig, editBox.config);
|
|
12764
12834
|
if (dragPoint) {
|
|
12765
12835
|
if (dragPoint.editConfig) Object.assign(mergeConfig, dragPoint.editConfig);
|
|
@@ -12776,7 +12846,7 @@ function mergeConfigAttr() {
|
|
|
12776
12846
|
};
|
|
12777
12847
|
}
|
|
12778
12848
|
|
|
12779
|
-
const {abs: abs$
|
|
12849
|
+
const {abs: abs$4} = Math;
|
|
12780
12850
|
|
|
12781
12851
|
const {copy: copy$2, scale: scale$1} = MatrixHelper;
|
|
12782
12852
|
|
|
@@ -12819,7 +12889,7 @@ class Stroker extends UI {
|
|
|
12819
12889
|
leaf = list[i];
|
|
12820
12890
|
const {worldTransform: worldTransform, worldRenderBounds: worldRenderBounds} = leaf;
|
|
12821
12891
|
if (worldRenderBounds.width && worldRenderBounds.height && (!bounds || bounds.hit(worldRenderBounds, options.matrix))) {
|
|
12822
|
-
const aScaleX = abs$
|
|
12892
|
+
const aScaleX = abs$4(worldTransform.scaleX), aScaleY = abs$4(worldTransform.scaleY);
|
|
12823
12893
|
copy$2(matrix$1, worldTransform);
|
|
12824
12894
|
matrix$1.half = strokeWidth % 2;
|
|
12825
12895
|
if (aScaleX !== aScaleY) {
|
|
@@ -12833,7 +12903,7 @@ class Stroker extends UI {
|
|
|
12833
12903
|
canvas.setWorld(matrix$1, options.matrix);
|
|
12834
12904
|
canvas.beginPath();
|
|
12835
12905
|
if (leaf.__.__useArrow) leaf.__drawPath(canvas); else leaf.__.__pathForRender ? leaf.__drawRenderPath(canvas) : leaf.__drawPathByBox(canvas);
|
|
12836
|
-
data.strokeWidth = strokeWidth / abs$
|
|
12906
|
+
data.strokeWidth = strokeWidth / abs$4(worldTransform.scaleX);
|
|
12837
12907
|
}
|
|
12838
12908
|
if (stroke) isString(stroke) ? Paint.stroke(stroke, this, canvas) : Paint.strokes(stroke, this, canvas);
|
|
12839
12909
|
if (fill) isString(fill) ? Paint.fill(fill, this, canvas) : Paint.fills(fill, this, canvas);
|
|
@@ -12945,8 +13015,10 @@ class EditSelect extends Group {
|
|
|
12945
13015
|
onHover() {
|
|
12946
13016
|
const {editor: editor} = this;
|
|
12947
13017
|
if (this.running && !this.dragging && !editor.dragging) {
|
|
12948
|
-
const {
|
|
12949
|
-
|
|
13018
|
+
const {hoverTarget: hoverTarget, mergeConfig: mergeConfig} = editor, config = Object.assign({}, mergeConfig);
|
|
13019
|
+
if (hoverTarget && hoverTarget.editConfig) Object.assign(config, hoverTarget.editConfig);
|
|
13020
|
+
const {stroke: stroke, strokeWidth: strokeWidth, hover: hover, hoverStyle: hoverStyle} = config;
|
|
13021
|
+
this.hoverStroker.setTarget(hover ? hoverTarget : null, Object.assign({
|
|
12950
13022
|
stroke: stroke,
|
|
12951
13023
|
strokeWidth: strokeWidth
|
|
12952
13024
|
}, hoverStyle || {}));
|
|
@@ -13126,13 +13198,11 @@ class EditSelect extends Group {
|
|
|
13126
13198
|
|
|
13127
13199
|
const {topLeft: topLeft$1, top: top$1, topRight: topRight$1, right: right$2, bottomRight: bottomRight, bottom: bottom$1, bottomLeft: bottomLeft, left: left$2} = Direction9;
|
|
13128
13200
|
|
|
13129
|
-
const {toPoint: toPoint} = AroundHelper;
|
|
13130
|
-
|
|
13131
|
-
const {within: within$3, sign: sign$1} = MathHelper;
|
|
13201
|
+
const {toPoint: toPoint} = AroundHelper, {within: within$3, sign: sign$1} = MathHelper, {abs: abs$3} = Math;
|
|
13132
13202
|
|
|
13133
13203
|
const EditDataHelper = {
|
|
13134
13204
|
getScaleData(target, startBounds, direction, totalMoveOrScale, lockRatio, around, flipable, scaleMode) {
|
|
13135
|
-
let align, origin = {}, scaleX = 1, scaleY = 1;
|
|
13205
|
+
let align, origin = {}, scaleX = 1, scaleY = 1, lockScale;
|
|
13136
13206
|
const {boxBounds: boxBounds, widthRange: widthRange, heightRange: heightRange, dragBounds: dragBounds, worldBoxBounds: worldBoxBounds} = target;
|
|
13137
13207
|
const {width: width, height: height} = startBounds;
|
|
13138
13208
|
const originChangedScaleX = target.scaleX / startBounds.scaleX;
|
|
@@ -13202,23 +13272,22 @@ const EditDataHelper = {
|
|
|
13202
13272
|
if (lockRatio === "corner" && direction % 2) {
|
|
13203
13273
|
lockRatio = false;
|
|
13204
13274
|
} else {
|
|
13205
|
-
let scale;
|
|
13206
13275
|
switch (direction) {
|
|
13207
13276
|
case top$1:
|
|
13208
13277
|
case bottom$1:
|
|
13209
|
-
|
|
13278
|
+
scaleX = scaleY;
|
|
13210
13279
|
break;
|
|
13211
13280
|
|
|
13212
13281
|
case left$2:
|
|
13213
13282
|
case right$2:
|
|
13214
|
-
|
|
13283
|
+
scaleY = scaleX;
|
|
13215
13284
|
break;
|
|
13216
13285
|
|
|
13217
13286
|
default:
|
|
13218
|
-
|
|
13287
|
+
lockScale = Math.sqrt(abs$3(scaleX * scaleY));
|
|
13288
|
+
scaleX = sign$1(scaleX) * lockScale;
|
|
13289
|
+
scaleY = sign$1(scaleY) * lockScale;
|
|
13219
13290
|
}
|
|
13220
|
-
scaleX = scaleX < 0 ? -scale : scale;
|
|
13221
|
-
scaleY = scaleY < 0 ? -scale : scale;
|
|
13222
13291
|
}
|
|
13223
13292
|
}
|
|
13224
13293
|
}
|
|
@@ -13236,7 +13305,7 @@ const EditDataHelper = {
|
|
|
13236
13305
|
x: scaleX,
|
|
13237
13306
|
y: scaleY
|
|
13238
13307
|
};
|
|
13239
|
-
DragBoundsHelper.limitScaleOf(target, origin, scaleData);
|
|
13308
|
+
DragBoundsHelper.limitScaleOf(target, origin, scaleData, lockRatio);
|
|
13240
13309
|
scaleX = scaleData.x;
|
|
13241
13310
|
scaleY = scaleData.y;
|
|
13242
13311
|
}
|
|
@@ -13248,9 +13317,13 @@ const EditDataHelper = {
|
|
|
13248
13317
|
const nowHeight = boxBounds.height * target.scaleY;
|
|
13249
13318
|
scaleY = within$3(nowHeight * scaleY, heightRange) / nowHeight;
|
|
13250
13319
|
}
|
|
13251
|
-
if (useScaleX &&
|
|
13252
|
-
if (useScaleY &&
|
|
13253
|
-
if (lockRatio && scaleX !== scaleY)
|
|
13320
|
+
if (useScaleX && abs$3(scaleX * worldBoxBounds.width) < 1) scaleX = sign$1(scaleX) / worldBoxBounds.width;
|
|
13321
|
+
if (useScaleY && abs$3(scaleY * worldBoxBounds.height) < 1) scaleY = sign$1(scaleY) / worldBoxBounds.height;
|
|
13322
|
+
if (lockRatio && scaleX !== scaleY) {
|
|
13323
|
+
lockScale = Math.min(abs$3(scaleX), abs$3(scaleY));
|
|
13324
|
+
scaleX = sign$1(scaleX) * lockScale;
|
|
13325
|
+
scaleY = sign$1(scaleY) * lockScale;
|
|
13326
|
+
}
|
|
13254
13327
|
return {
|
|
13255
13328
|
origin: origin,
|
|
13256
13329
|
scaleX: scaleX,
|
|
@@ -13500,7 +13573,7 @@ class EditBox extends Group {
|
|
|
13500
13573
|
return this.scaleX * this.scaleY < 0;
|
|
13501
13574
|
}
|
|
13502
13575
|
get canUse() {
|
|
13503
|
-
return this.
|
|
13576
|
+
return this.app && this.editor.editing;
|
|
13504
13577
|
}
|
|
13505
13578
|
get canGesture() {
|
|
13506
13579
|
if (!this.canUse) return false;
|
|
@@ -13581,7 +13654,7 @@ class EditBox extends Group {
|
|
|
13581
13654
|
}
|
|
13582
13655
|
load() {
|
|
13583
13656
|
const {target: target, mergeConfig: mergeConfig, single: single, rect: rect, circle: circle, resizePoints: resizePoints, resizeLines: resizeLines} = this;
|
|
13584
|
-
const {stroke: stroke, strokeWidth: strokeWidth, resizeLine: resizeLine} = mergeConfig;
|
|
13657
|
+
const {stroke: stroke, strokeWidth: strokeWidth, resizeLine: resizeLine, ignorePixelSnap: ignorePixelSnap} = mergeConfig;
|
|
13585
13658
|
const pointsStyle = this.getPointsStyle();
|
|
13586
13659
|
const middlePointsStyle = this.getMiddlePointsStyle();
|
|
13587
13660
|
this.visible = !target.locked;
|
|
@@ -13601,16 +13674,16 @@ class EditBox extends Group {
|
|
|
13601
13674
|
strokeWidth: strokeWidth,
|
|
13602
13675
|
editConfig: editConfig
|
|
13603
13676
|
}, mergeConfig.rect || {}));
|
|
13604
|
-
const
|
|
13605
|
-
rect.hittable = !
|
|
13606
|
-
|
|
13607
|
-
if (syncEventer) {
|
|
13677
|
+
const rectThrough = isNull(mergeConfig.rectThrough) ? single : mergeConfig.rectThrough;
|
|
13678
|
+
rect.hittable = !rectThrough;
|
|
13679
|
+
if (rectThrough) {
|
|
13608
13680
|
target.syncEventer = rect;
|
|
13609
13681
|
this.app.interaction.bottomList = [ {
|
|
13610
13682
|
target: rect,
|
|
13611
13683
|
proxy: target
|
|
13612
13684
|
} ];
|
|
13613
13685
|
}
|
|
13686
|
+
if (single) DataHelper.stintSet(target.__world, "ignorePixelSnap", ignorePixelSnap);
|
|
13614
13687
|
updateMoveCursor(this);
|
|
13615
13688
|
}
|
|
13616
13689
|
update() {
|
|
@@ -13774,29 +13847,25 @@ class EditBox extends Group {
|
|
|
13774
13847
|
this.dragPoint = null;
|
|
13775
13848
|
}
|
|
13776
13849
|
onTransformStart(e) {
|
|
13777
|
-
if (this.
|
|
13778
|
-
|
|
13779
|
-
|
|
13780
|
-
|
|
13781
|
-
|
|
13782
|
-
|
|
13783
|
-
|
|
13784
|
-
|
|
13785
|
-
|
|
13786
|
-
|
|
13787
|
-
|
|
13788
|
-
|
|
13789
|
-
dragStartData.rotation = target.rotation;
|
|
13790
|
-
}
|
|
13850
|
+
if (this.moving) this.editor.opacity = this.mergedConfig.hideOnMove ? 0 : 1;
|
|
13851
|
+
if (this.resizing) ResizeEvent.resizingKeys = this.editor.leafList.keys;
|
|
13852
|
+
const {dragStartData: dragStartData, target: target} = this;
|
|
13853
|
+
dragStartData.x = e.x;
|
|
13854
|
+
dragStartData.y = e.y;
|
|
13855
|
+
dragStartData.totalOffset = getPointData();
|
|
13856
|
+
dragStartData.point = {
|
|
13857
|
+
x: target.x,
|
|
13858
|
+
y: target.y
|
|
13859
|
+
};
|
|
13860
|
+
dragStartData.bounds = Object.assign({}, target.getLayoutBounds("box", "local"));
|
|
13861
|
+
dragStartData.rotation = target.rotation;
|
|
13791
13862
|
}
|
|
13792
13863
|
onTransformEnd(e) {
|
|
13793
|
-
if (this.
|
|
13794
|
-
|
|
13795
|
-
|
|
13796
|
-
|
|
13797
|
-
|
|
13798
|
-
this.update();
|
|
13799
|
-
}
|
|
13864
|
+
if (this.canDragLimitAnimate && (e instanceof DragEvent || e instanceof MoveEvent)) this.transformTool.onMove(e);
|
|
13865
|
+
if (this.resizing) ResizeEvent.resizingKeys = null;
|
|
13866
|
+
this.dragging = this.gesturing = this.moving = this.resizing = this.rotating = this.skewing = false;
|
|
13867
|
+
this.editor.opacity = 1;
|
|
13868
|
+
this.editor.update();
|
|
13800
13869
|
}
|
|
13801
13870
|
onMove(e) {
|
|
13802
13871
|
if (this.canGesture && e.moveType !== "drag") {
|
|
@@ -13825,6 +13894,12 @@ class EditBox extends Group {
|
|
|
13825
13894
|
}
|
|
13826
13895
|
}
|
|
13827
13896
|
}
|
|
13897
|
+
onGestureStart(e) {
|
|
13898
|
+
if (this.canGesture && e.moveType !== "drag") this.onTransformStart(e);
|
|
13899
|
+
}
|
|
13900
|
+
onGestureEnd(e) {
|
|
13901
|
+
if (this.canGesture && e.moveType !== "drag") this.onTransformEnd(e);
|
|
13902
|
+
}
|
|
13828
13903
|
isHoldRotateKey(e) {
|
|
13829
13904
|
const {rotateKey: rotateKey} = this.mergedConfig;
|
|
13830
13905
|
if (rotateKey) return e.isHoldKeys(rotateKey);
|
|
@@ -13894,7 +13969,7 @@ class EditBox extends Group {
|
|
|
13894
13969
|
const {rect: rect, editor: editor, __eventIds: events} = this;
|
|
13895
13970
|
events.push(rect.on_([ [ PointerEvent.DOUBLE_TAP, this.onDoubleTap, this ], [ PointerEvent.LONG_PRESS, this.onLongPress, this ] ]));
|
|
13896
13971
|
this.waitLeafer(() => {
|
|
13897
|
-
events.push(editor.app.on_([ [ [ KeyEvent.HOLD, KeyEvent.UP ], this.onKey, this ], [ KeyEvent.DOWN, this.onArrow, this ], [
|
|
13972
|
+
events.push(editor.app.on_([ [ [ KeyEvent.HOLD, KeyEvent.UP ], this.onKey, this ], [ KeyEvent.DOWN, this.onArrow, this ], [ MoveEvent.BEFORE_MOVE, this.onMove, this, true ], [ ZoomEvent.BEFORE_ZOOM, this.onScale, this, true ], [ RotateEvent.BEFORE_ROTATE, this.onRotate, this, true ], [ [ MoveEvent.START, ZoomEvent.START, RotateEvent.START ], this.onGestureStart, this ], [ [ MoveEvent.END, ZoomEvent.END, RotateEvent.END ], this.onGestureEnd, this ] ]));
|
|
13898
13973
|
});
|
|
13899
13974
|
}
|
|
13900
13975
|
__removeListenEvents() {
|
|
@@ -16335,6 +16410,69 @@ class HTMLTextData extends ImageData {
|
|
|
16335
16410
|
}
|
|
16336
16411
|
}
|
|
16337
16412
|
|
|
16413
|
+
const unicodeEntities = {
|
|
16414
|
+
lt: "<",
|
|
16415
|
+
gt: ">",
|
|
16416
|
+
amp: "&",
|
|
16417
|
+
quot: '"',
|
|
16418
|
+
apos: "'",
|
|
16419
|
+
nbsp: " ",
|
|
16420
|
+
ensp: " ",
|
|
16421
|
+
emsp: " ",
|
|
16422
|
+
thinsp: " ",
|
|
16423
|
+
ndash: "–",
|
|
16424
|
+
mdash: "—",
|
|
16425
|
+
hellip: "…",
|
|
16426
|
+
middot: "·",
|
|
16427
|
+
bull: "•",
|
|
16428
|
+
laquo: "«",
|
|
16429
|
+
raquo: "»",
|
|
16430
|
+
lsquo: "‘",
|
|
16431
|
+
rsquo: "’",
|
|
16432
|
+
ldquo: "“",
|
|
16433
|
+
rdquo: "”",
|
|
16434
|
+
cent: "¢",
|
|
16435
|
+
pound: "£",
|
|
16436
|
+
yen: "¥",
|
|
16437
|
+
euro: "€",
|
|
16438
|
+
times: "×",
|
|
16439
|
+
divide: "÷",
|
|
16440
|
+
plusmn: "±",
|
|
16441
|
+
minus: "−",
|
|
16442
|
+
frac12: "½",
|
|
16443
|
+
frac14: "¼",
|
|
16444
|
+
frac34: "¾",
|
|
16445
|
+
sup2: "²",
|
|
16446
|
+
sup3: "³",
|
|
16447
|
+
deg: "°",
|
|
16448
|
+
reg: "®",
|
|
16449
|
+
copy: "©",
|
|
16450
|
+
trade: "™",
|
|
16451
|
+
section: "§",
|
|
16452
|
+
para: "¶",
|
|
16453
|
+
dagger: "†",
|
|
16454
|
+
Dagger: "‡",
|
|
16455
|
+
larr: "←",
|
|
16456
|
+
uarr: "↑",
|
|
16457
|
+
rarr: "→",
|
|
16458
|
+
darr: "↓",
|
|
16459
|
+
harr: "↔",
|
|
16460
|
+
alpha: "α",
|
|
16461
|
+
beta: "β",
|
|
16462
|
+
gamma: "γ",
|
|
16463
|
+
delta: "δ",
|
|
16464
|
+
pi: "π",
|
|
16465
|
+
sigma: "σ",
|
|
16466
|
+
omega: "ω",
|
|
16467
|
+
Omega: "Ω",
|
|
16468
|
+
micro: "µ",
|
|
16469
|
+
infinity: "∞",
|
|
16470
|
+
not: "¬",
|
|
16471
|
+
equiv: "≡",
|
|
16472
|
+
le: "≤",
|
|
16473
|
+
ge: "≥"
|
|
16474
|
+
};
|
|
16475
|
+
|
|
16338
16476
|
let HTMLText = class HTMLText extends Image {
|
|
16339
16477
|
get __tag() {
|
|
16340
16478
|
return "HTMLText";
|
|
@@ -16354,7 +16492,7 @@ let HTMLText = class HTMLText extends Image {
|
|
|
16354
16492
|
document.body.appendChild(div);
|
|
16355
16493
|
const {width: width, height: height} = div.getBoundingClientRect();
|
|
16356
16494
|
const realWidth = width + 10;
|
|
16357
|
-
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${realWidth}" height="${height}">\n <foreignObject width="${realWidth}" height="${height}">\n <style>\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n </style>\n <body xmlns="http://www.w3.org/1999/xhtml">\n ${this.text}\n </body>\n </foreignObject>\n </svg>`;
|
|
16495
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${realWidth}" height="${height}">\n <foreignObject width="${realWidth}" height="${height}">\n <style>\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n </style>\n <body xmlns="http://www.w3.org/1999/xhtml">\n ${this.decodeText(this.text)}\n </body>\n </foreignObject>\n </svg>`;
|
|
16358
16496
|
data.__setImageFill("data:image/svg+xml," + encodeURIComponent(svg));
|
|
16359
16497
|
data.__naturalWidth = realWidth / data.pixelRatio;
|
|
16360
16498
|
data.__naturalHeight = height / data.pixelRatio;
|
|
@@ -16367,6 +16505,29 @@ let HTMLText = class HTMLText extends Image {
|
|
|
16367
16505
|
if (this.textEditing && !options.exporting) return;
|
|
16368
16506
|
super.__draw(canvas, options, originCanvas);
|
|
16369
16507
|
}
|
|
16508
|
+
decodeText(text) {
|
|
16509
|
+
if (!text.includes("&")) return text;
|
|
16510
|
+
let result = "", i = 0, entity, value;
|
|
16511
|
+
while (i < text.length) {
|
|
16512
|
+
if (text[i] === "&") {
|
|
16513
|
+
const semicolonIndex = text.indexOf(";", i + 1);
|
|
16514
|
+
if (semicolonIndex > i + 1) {
|
|
16515
|
+
entity = text.slice(i + 1, semicolonIndex);
|
|
16516
|
+
value = unicodeEntities[entity];
|
|
16517
|
+
if (value !== undefined) {
|
|
16518
|
+
result += value;
|
|
16519
|
+
i = semicolonIndex + 1;
|
|
16520
|
+
continue;
|
|
16521
|
+
}
|
|
16522
|
+
}
|
|
16523
|
+
}
|
|
16524
|
+
result += text[i++];
|
|
16525
|
+
}
|
|
16526
|
+
return result;
|
|
16527
|
+
}
|
|
16528
|
+
static addUnicodeEntity(entity, unicode) {
|
|
16529
|
+
if (isString(entity)) unicodeEntities[entity] = unicode; else Object.assign(unicodeEntities, entity);
|
|
16530
|
+
}
|
|
16370
16531
|
};
|
|
16371
16532
|
|
|
16372
16533
|
__decorate([ dataProcessor(HTMLTextData) ], HTMLText.prototype, "__", void 0);
|