@leafer-ui/worker 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/worker.cjs +2680 -0
- package/dist/worker.esm.js +61 -51
- package/dist/worker.esm.min.js +1 -1
- package/dist/worker.js +575 -449
- package/dist/worker.min.cjs +1 -0
- package/dist/worker.min.js +1 -1
- package/dist/worker.module.js +569 -446
- package/dist/worker.module.min.js +1 -1
- package/package.json +16 -10
- package/src/index.ts +2 -0
- package/types/index.d.ts +1 -0
package/dist/worker.module.js
CHANGED
|
@@ -111,6 +111,26 @@ const MathHelper = {
|
|
|
111
111
|
const a = maxLength ? pow$1(10, maxLength) : 1000000000000;
|
|
112
112
|
num = round(num * a) / a;
|
|
113
113
|
return num === -0 ? 0 : num;
|
|
114
|
+
},
|
|
115
|
+
getScaleData(scale, size, originSize, scaleData) {
|
|
116
|
+
if (!scaleData)
|
|
117
|
+
scaleData = {};
|
|
118
|
+
if (size) {
|
|
119
|
+
scaleData.scaleX = (typeof size === 'number' ? size : size.width) / originSize.width;
|
|
120
|
+
scaleData.scaleY = (typeof size === 'number' ? size : size.height) / originSize.height;
|
|
121
|
+
}
|
|
122
|
+
else if (scale)
|
|
123
|
+
MathHelper.assignScale(scaleData, scale);
|
|
124
|
+
return scaleData;
|
|
125
|
+
},
|
|
126
|
+
assignScale(scaleData, scale) {
|
|
127
|
+
if (typeof scale === 'number') {
|
|
128
|
+
scaleData.scaleX = scaleData.scaleY = scale;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
scaleData.scaleX = scale.x;
|
|
132
|
+
scaleData.scaleY = scale.y;
|
|
133
|
+
}
|
|
114
134
|
}
|
|
115
135
|
};
|
|
116
136
|
const OneRadian = PI$4 / 180;
|
|
@@ -409,7 +429,7 @@ const MatrixHelper = {
|
|
|
409
429
|
};
|
|
410
430
|
const M$6 = MatrixHelper;
|
|
411
431
|
|
|
412
|
-
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$
|
|
432
|
+
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
413
433
|
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, PI: PI$3 } = Math;
|
|
414
434
|
const PointHelper = {
|
|
415
435
|
defaultPoint: getPointData(),
|
|
@@ -465,7 +485,7 @@ const PointHelper = {
|
|
|
465
485
|
tempToOuterOf(t, matrix) {
|
|
466
486
|
const { tempPoint: temp } = P$5;
|
|
467
487
|
copy$b(temp, t);
|
|
468
|
-
toOuterPoint$
|
|
488
|
+
toOuterPoint$3(matrix, temp, temp);
|
|
469
489
|
return temp;
|
|
470
490
|
},
|
|
471
491
|
tempToInnerRadiusPointOf(t, matrix) {
|
|
@@ -484,7 +504,7 @@ const PointHelper = {
|
|
|
484
504
|
toInnerPoint$2(matrix, t, to);
|
|
485
505
|
},
|
|
486
506
|
toOuterOf(t, matrix, to) {
|
|
487
|
-
toOuterPoint$
|
|
507
|
+
toOuterPoint$3(matrix, t, to);
|
|
488
508
|
},
|
|
489
509
|
getCenter(t, to) {
|
|
490
510
|
return { x: t.x + (to.x - t.x) / 2, y: t.y + (to.y - t.y) / 2 };
|
|
@@ -764,7 +784,7 @@ const TwoPointBoundsHelper = {
|
|
|
764
784
|
const { addPoint: addPoint$4 } = TwoPointBoundsHelper;
|
|
765
785
|
|
|
766
786
|
const { tempPointBounds: tempPointBounds$1, setPoint: setPoint$3, addPoint: addPoint$3, toBounds: toBounds$4 } = TwoPointBoundsHelper;
|
|
767
|
-
const { toOuterPoint: toOuterPoint$
|
|
787
|
+
const { toOuterPoint: toOuterPoint$2 } = MatrixHelper;
|
|
768
788
|
const { float, fourNumber } = MathHelper;
|
|
769
789
|
const { floor, ceil: ceil$2 } = Math;
|
|
770
790
|
let right$1, bottom$1, boundsRight, boundsBottom;
|
|
@@ -784,17 +804,24 @@ const BoundsHelper = {
|
|
|
784
804
|
t.width = bounds.width;
|
|
785
805
|
t.height = bounds.height;
|
|
786
806
|
},
|
|
787
|
-
copyAndSpread(t, bounds, spread, isShrink) {
|
|
807
|
+
copyAndSpread(t, bounds, spread, isShrink, side) {
|
|
808
|
+
const { x, y, width, height } = bounds;
|
|
788
809
|
if (spread instanceof Array) {
|
|
789
810
|
const four = fourNumber(spread);
|
|
790
811
|
isShrink
|
|
791
|
-
? B.set(t,
|
|
792
|
-
: B.set(t,
|
|
812
|
+
? B.set(t, x + four[3], y + four[0], width - four[1] - four[3], height - four[2] - four[0])
|
|
813
|
+
: B.set(t, x - four[3], y - four[0], width + four[1] + four[3], height + four[2] + four[0]);
|
|
793
814
|
}
|
|
794
815
|
else {
|
|
795
816
|
if (isShrink)
|
|
796
817
|
spread = -spread;
|
|
797
|
-
B.set(t,
|
|
818
|
+
B.set(t, x - spread, y - spread, width + spread * 2, height + spread * 2);
|
|
819
|
+
}
|
|
820
|
+
if (side) {
|
|
821
|
+
if (side === 'width')
|
|
822
|
+
t.y = y, t.height = height;
|
|
823
|
+
else
|
|
824
|
+
t.x = x, t.width = width;
|
|
798
825
|
}
|
|
799
826
|
},
|
|
800
827
|
minX(t) { return t.width > 0 ? t.x : t.x + t.width; },
|
|
@@ -871,16 +898,16 @@ const BoundsHelper = {
|
|
|
871
898
|
else {
|
|
872
899
|
point.x = t.x;
|
|
873
900
|
point.y = t.y;
|
|
874
|
-
toOuterPoint$
|
|
901
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
875
902
|
setPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
876
903
|
point.x = t.x + t.width;
|
|
877
|
-
toOuterPoint$
|
|
904
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
878
905
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
879
906
|
point.y = t.y + t.height;
|
|
880
|
-
toOuterPoint$
|
|
907
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
881
908
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
882
909
|
point.x = t.x;
|
|
883
|
-
toOuterPoint$
|
|
910
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
884
911
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
885
912
|
toBounds$4(tempPointBounds$1, to);
|
|
886
913
|
}
|
|
@@ -894,16 +921,16 @@ const BoundsHelper = {
|
|
|
894
921
|
const scale = Math.min(baseScale, Math.min(t.width / put.width, t.height / put.height));
|
|
895
922
|
return new Matrix(scale, 0, 0, scale, -put.x * scale, -put.y * scale);
|
|
896
923
|
},
|
|
897
|
-
getSpread(t, spread) {
|
|
924
|
+
getSpread(t, spread, side) {
|
|
898
925
|
const n = {};
|
|
899
|
-
B.copyAndSpread(n, t, spread);
|
|
926
|
+
B.copyAndSpread(n, t, spread, false, side);
|
|
900
927
|
return n;
|
|
901
928
|
},
|
|
902
|
-
spread(t, spread) {
|
|
903
|
-
B.copyAndSpread(t, t, spread);
|
|
929
|
+
spread(t, spread, side) {
|
|
930
|
+
B.copyAndSpread(t, t, spread, false, side);
|
|
904
931
|
},
|
|
905
|
-
shrink(t, shrink) {
|
|
906
|
-
B.copyAndSpread(t, t, shrink, true);
|
|
932
|
+
shrink(t, shrink, side) {
|
|
933
|
+
B.copyAndSpread(t, t, shrink, true, side);
|
|
907
934
|
},
|
|
908
935
|
ceil(t) {
|
|
909
936
|
const { x, y } = t;
|
|
@@ -1086,12 +1113,12 @@ class Bounds {
|
|
|
1086
1113
|
getFitMatrix(put, baseScale) {
|
|
1087
1114
|
return BoundsHelper.getFitMatrix(this, put, baseScale);
|
|
1088
1115
|
}
|
|
1089
|
-
spread(fourNumber) {
|
|
1090
|
-
BoundsHelper.spread(this, fourNumber);
|
|
1116
|
+
spread(fourNumber, side) {
|
|
1117
|
+
BoundsHelper.spread(this, fourNumber, side);
|
|
1091
1118
|
return this;
|
|
1092
1119
|
}
|
|
1093
|
-
shrink(fourNumber) {
|
|
1094
|
-
BoundsHelper.shrink(this, fourNumber);
|
|
1120
|
+
shrink(fourNumber, side) {
|
|
1121
|
+
BoundsHelper.shrink(this, fourNumber, side);
|
|
1095
1122
|
return this;
|
|
1096
1123
|
}
|
|
1097
1124
|
ceil() {
|
|
@@ -1235,7 +1262,6 @@ const AroundHelper = {
|
|
|
1235
1262
|
tempPoint: {},
|
|
1236
1263
|
get: get$4,
|
|
1237
1264
|
toPoint(around, bounds, to, onlySize, pointBounds) {
|
|
1238
|
-
to || (to = {});
|
|
1239
1265
|
const point = get$4(around);
|
|
1240
1266
|
to.x = point.x;
|
|
1241
1267
|
to.y = point.y;
|
|
@@ -1370,6 +1396,10 @@ const Run = {
|
|
|
1370
1396
|
};
|
|
1371
1397
|
const R = Run;
|
|
1372
1398
|
|
|
1399
|
+
function needPlugin(name) {
|
|
1400
|
+
console.error('need plugin: @leafer-in/' + name);
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1373
1403
|
const debug$e = Debug.get('UICreator');
|
|
1374
1404
|
const UICreator = {
|
|
1375
1405
|
list: {},
|
|
@@ -1632,6 +1662,9 @@ var Answer;
|
|
|
1632
1662
|
Answer[Answer["YesAndSkip"] = 3] = "YesAndSkip";
|
|
1633
1663
|
})(Answer || (Answer = {}));
|
|
1634
1664
|
const emptyData = {};
|
|
1665
|
+
function isNull(value) {
|
|
1666
|
+
return value === undefined || value === null;
|
|
1667
|
+
}
|
|
1635
1668
|
|
|
1636
1669
|
/******************************************************************************
|
|
1637
1670
|
Copyright (c) Microsoft Corporation.
|
|
@@ -2397,7 +2430,7 @@ const BezierHelper = {
|
|
|
2397
2430
|
let startY = y = rotationSin * radiusX * startCos + rotationCos * radiusY * startSin;
|
|
2398
2431
|
let fromX = cx + x, fromY = cy + y;
|
|
2399
2432
|
if (data)
|
|
2400
|
-
data.push(L$6, fromX, fromY);
|
|
2433
|
+
data.push(data.length ? L$6 : M$5, fromX, fromY);
|
|
2401
2434
|
if (setPointBounds)
|
|
2402
2435
|
setPoint$2(setPointBounds, fromX, fromY);
|
|
2403
2436
|
if (setStartPoint)
|
|
@@ -2908,60 +2941,75 @@ class PathCreator {
|
|
|
2908
2941
|
}
|
|
2909
2942
|
beginPath() {
|
|
2910
2943
|
beginPath(this.__path);
|
|
2944
|
+
this.paint();
|
|
2911
2945
|
return this;
|
|
2912
2946
|
}
|
|
2913
2947
|
moveTo(x, y) {
|
|
2914
2948
|
moveTo$4(this.__path, x, y);
|
|
2949
|
+
this.paint();
|
|
2915
2950
|
return this;
|
|
2916
2951
|
}
|
|
2917
2952
|
lineTo(x, y) {
|
|
2918
2953
|
lineTo$3(this.__path, x, y);
|
|
2954
|
+
this.paint();
|
|
2919
2955
|
return this;
|
|
2920
2956
|
}
|
|
2921
2957
|
bezierCurveTo(x1, y1, x2, y2, x, y) {
|
|
2922
2958
|
bezierCurveTo(this.__path, x1, y1, x2, y2, x, y);
|
|
2959
|
+
this.paint();
|
|
2923
2960
|
return this;
|
|
2924
2961
|
}
|
|
2925
2962
|
quadraticCurveTo(x1, y1, x, y) {
|
|
2926
2963
|
quadraticCurveTo(this.__path, x1, y1, x, y);
|
|
2964
|
+
this.paint();
|
|
2927
2965
|
return this;
|
|
2928
2966
|
}
|
|
2929
2967
|
closePath() {
|
|
2930
2968
|
closePath$3(this.__path);
|
|
2969
|
+
this.paint();
|
|
2931
2970
|
return this;
|
|
2932
2971
|
}
|
|
2933
2972
|
rect(x, y, width, height) {
|
|
2934
2973
|
rect$2(this.__path, x, y, width, height);
|
|
2974
|
+
this.paint();
|
|
2935
2975
|
return this;
|
|
2936
2976
|
}
|
|
2937
2977
|
roundRect(x, y, width, height, cornerRadius) {
|
|
2938
2978
|
roundRect$1(this.__path, x, y, width, height, cornerRadius);
|
|
2979
|
+
this.paint();
|
|
2939
2980
|
return this;
|
|
2940
2981
|
}
|
|
2941
2982
|
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
|
|
2942
2983
|
ellipse$2(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
|
|
2984
|
+
this.paint();
|
|
2943
2985
|
return this;
|
|
2944
2986
|
}
|
|
2945
2987
|
arc(x, y, radius, startAngle, endAngle, anticlockwise) {
|
|
2946
2988
|
arc$1(this.__path, x, y, radius, startAngle, endAngle, anticlockwise);
|
|
2989
|
+
this.paint();
|
|
2947
2990
|
return this;
|
|
2948
2991
|
}
|
|
2949
2992
|
arcTo(x1, y1, x2, y2, radius) {
|
|
2950
2993
|
arcTo$2(this.__path, x1, y1, x2, y2, radius);
|
|
2994
|
+
this.paint();
|
|
2951
2995
|
return this;
|
|
2952
2996
|
}
|
|
2953
2997
|
drawEllipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
|
|
2954
2998
|
drawEllipse(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
|
|
2999
|
+
this.paint();
|
|
2955
3000
|
return this;
|
|
2956
3001
|
}
|
|
2957
3002
|
drawArc(x, y, radius, startAngle, endAngle, anticlockwise) {
|
|
2958
3003
|
drawArc(this.__path, x, y, radius, startAngle, endAngle, anticlockwise);
|
|
3004
|
+
this.paint();
|
|
2959
3005
|
return this;
|
|
2960
3006
|
}
|
|
2961
3007
|
drawPoints(points, curve, close) {
|
|
2962
3008
|
drawPoints$2(this.__path, points, curve, close);
|
|
3009
|
+
this.paint();
|
|
2963
3010
|
return this;
|
|
2964
3011
|
}
|
|
3012
|
+
paint() { }
|
|
2965
3013
|
}
|
|
2966
3014
|
|
|
2967
3015
|
const { M: M$2, L: L$3, C: C$2, Q: Q$1, Z: Z$2, N: N$1, D: D$1, X: X$1, G: G$1, F: F$2, O: O$1, P: P$1, U: U$1 } = PathCommandMap;
|
|
@@ -3051,8 +3099,7 @@ const PathBounds = {
|
|
|
3051
3099
|
toTwoPointBounds(data, setPointBounds) {
|
|
3052
3100
|
if (!data || !data.length)
|
|
3053
3101
|
return setPoint$1(setPointBounds, 0, 0);
|
|
3054
|
-
let command;
|
|
3055
|
-
let i = 0, x = 0, y = 0, x1, y1, toX, toY;
|
|
3102
|
+
let i = 0, x = 0, y = 0, x1, y1, toX, toY, command;
|
|
3056
3103
|
const len = data.length;
|
|
3057
3104
|
while (i < len) {
|
|
3058
3105
|
command = data[i];
|
|
@@ -3708,7 +3755,7 @@ function autoLayoutType(defaultValue) {
|
|
|
3708
3755
|
set(value) {
|
|
3709
3756
|
if (this.__setAttr(key, value)) {
|
|
3710
3757
|
this.__layout.matrixChanged || this.__layout.matrixChange();
|
|
3711
|
-
this.__hasAutoLayout = !!
|
|
3758
|
+
this.__hasAutoLayout = !!(this.origin || this.around || this.flow);
|
|
3712
3759
|
if (!this.__local)
|
|
3713
3760
|
this.__layout.createLocal();
|
|
3714
3761
|
}
|
|
@@ -3801,14 +3848,25 @@ function visibleType(defaultValue) {
|
|
|
3801
3848
|
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
3802
3849
|
set(value) {
|
|
3803
3850
|
const oldValue = this.visible;
|
|
3804
|
-
if (
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
doBoundsType(this);
|
|
3851
|
+
if (oldValue === true && value === 0) {
|
|
3852
|
+
if (this.animationOut)
|
|
3853
|
+
return this.__runAnimation('out', () => doVisible(this, key, value, oldValue));
|
|
3808
3854
|
}
|
|
3855
|
+
else if (oldValue === 0 && value === true) {
|
|
3856
|
+
if (this.animation)
|
|
3857
|
+
this.__runAnimation('in');
|
|
3858
|
+
}
|
|
3859
|
+
doVisible(this, key, value, oldValue);
|
|
3809
3860
|
}
|
|
3810
3861
|
}));
|
|
3811
3862
|
}
|
|
3863
|
+
function doVisible(leaf, key, value, oldValue) {
|
|
3864
|
+
if (leaf.__setAttr(key, value)) {
|
|
3865
|
+
leaf.__layout.opacityChanged || leaf.__layout.opacityChange();
|
|
3866
|
+
if (oldValue === 0 || value === 0)
|
|
3867
|
+
doBoundsType(leaf);
|
|
3868
|
+
}
|
|
3869
|
+
}
|
|
3812
3870
|
function sortType(defaultValue) {
|
|
3813
3871
|
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
3814
3872
|
set(value) {
|
|
@@ -3892,7 +3950,16 @@ function defineDataProcessor(target, key, defaultValue) {
|
|
|
3892
3950
|
if (defaultValue === undefined) {
|
|
3893
3951
|
property.get = function () { return this[computedKey]; };
|
|
3894
3952
|
}
|
|
3895
|
-
else if (
|
|
3953
|
+
else if (typeof defaultValue === 'object') {
|
|
3954
|
+
const { clone } = DataHelper;
|
|
3955
|
+
property.get = function () {
|
|
3956
|
+
let v = this[computedKey];
|
|
3957
|
+
if (v === undefined)
|
|
3958
|
+
this[computedKey] = v = clone(defaultValue);
|
|
3959
|
+
return v;
|
|
3960
|
+
};
|
|
3961
|
+
}
|
|
3962
|
+
if (key === 'width') {
|
|
3896
3963
|
property.get = function () {
|
|
3897
3964
|
const v = this[computedKey];
|
|
3898
3965
|
if (v === undefined) {
|
|
@@ -3983,7 +4050,7 @@ function registerUIEvent() {
|
|
|
3983
4050
|
};
|
|
3984
4051
|
}
|
|
3985
4052
|
|
|
3986
|
-
const { copy: copy$7, toInnerPoint: toInnerPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
4053
|
+
const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
3987
4054
|
const matrix$1 = {};
|
|
3988
4055
|
const LeafHelper = {
|
|
3989
4056
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
@@ -4048,10 +4115,9 @@ const LeafHelper = {
|
|
|
4048
4115
|
}
|
|
4049
4116
|
return true;
|
|
4050
4117
|
},
|
|
4051
|
-
moveWorld(t, x, y = 0) {
|
|
4118
|
+
moveWorld(t, x, y = 0, isInnerPoint) {
|
|
4052
4119
|
const local = typeof x === 'object' ? Object.assign({}, x) : { x, y };
|
|
4053
|
-
|
|
4054
|
-
toInnerPoint$1(t.parent.worldTransform, local, local, true);
|
|
4120
|
+
isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : (t.parent && toInnerPoint$1(t.parent.worldTransform, local, local, true));
|
|
4055
4121
|
L.moveLocal(t, local.x, local.y);
|
|
4056
4122
|
},
|
|
4057
4123
|
moveLocal(t, x, y = 0) {
|
|
@@ -4560,144 +4626,6 @@ class LeafLayout {
|
|
|
4560
4626
|
destroy() { }
|
|
4561
4627
|
}
|
|
4562
4628
|
|
|
4563
|
-
const empty = {};
|
|
4564
|
-
const LeafEventer = {
|
|
4565
|
-
on(type, listener, options) {
|
|
4566
|
-
let capture, once;
|
|
4567
|
-
if (options) {
|
|
4568
|
-
if (options === 'once') {
|
|
4569
|
-
once = true;
|
|
4570
|
-
}
|
|
4571
|
-
else if (typeof options === 'boolean') {
|
|
4572
|
-
capture = options;
|
|
4573
|
-
}
|
|
4574
|
-
else {
|
|
4575
|
-
capture = options.capture;
|
|
4576
|
-
once = options.once;
|
|
4577
|
-
}
|
|
4578
|
-
}
|
|
4579
|
-
let events;
|
|
4580
|
-
const map = __getListenerMap(this, capture, true);
|
|
4581
|
-
const typeList = typeof type === 'string' ? type.split(' ') : type;
|
|
4582
|
-
const item = once ? { listener, once } : { listener };
|
|
4583
|
-
typeList.forEach(type => {
|
|
4584
|
-
if (type) {
|
|
4585
|
-
events = map[type];
|
|
4586
|
-
if (events) {
|
|
4587
|
-
if (events.findIndex(item => item.listener === listener) === -1)
|
|
4588
|
-
events.push(item);
|
|
4589
|
-
}
|
|
4590
|
-
else {
|
|
4591
|
-
map[type] = [item];
|
|
4592
|
-
}
|
|
4593
|
-
}
|
|
4594
|
-
});
|
|
4595
|
-
},
|
|
4596
|
-
off(type, listener, options) {
|
|
4597
|
-
if (type) {
|
|
4598
|
-
const typeList = typeof type === 'string' ? type.split(' ') : type;
|
|
4599
|
-
if (listener) {
|
|
4600
|
-
let capture;
|
|
4601
|
-
if (options)
|
|
4602
|
-
capture = typeof options === 'boolean' ? options : (options === 'once' ? false : options.capture);
|
|
4603
|
-
let events, index;
|
|
4604
|
-
const map = __getListenerMap(this, capture);
|
|
4605
|
-
typeList.forEach(type => {
|
|
4606
|
-
if (type) {
|
|
4607
|
-
events = map[type];
|
|
4608
|
-
if (events) {
|
|
4609
|
-
index = events.findIndex(item => item.listener === listener);
|
|
4610
|
-
if (index > -1)
|
|
4611
|
-
events.splice(index, 1);
|
|
4612
|
-
if (!events.length)
|
|
4613
|
-
delete map[type];
|
|
4614
|
-
}
|
|
4615
|
-
}
|
|
4616
|
-
});
|
|
4617
|
-
}
|
|
4618
|
-
else {
|
|
4619
|
-
const { __bubbleMap: b, __captureMap: c } = this;
|
|
4620
|
-
typeList.forEach(type => {
|
|
4621
|
-
if (b)
|
|
4622
|
-
delete b[type];
|
|
4623
|
-
if (c)
|
|
4624
|
-
delete c[type];
|
|
4625
|
-
});
|
|
4626
|
-
}
|
|
4627
|
-
}
|
|
4628
|
-
else {
|
|
4629
|
-
this.__bubbleMap = this.__captureMap = undefined;
|
|
4630
|
-
}
|
|
4631
|
-
},
|
|
4632
|
-
on_(type, listener, bind, options) {
|
|
4633
|
-
if (bind)
|
|
4634
|
-
listener = listener.bind(bind);
|
|
4635
|
-
this.on(type, listener, options);
|
|
4636
|
-
return { type, current: this, listener, options };
|
|
4637
|
-
},
|
|
4638
|
-
off_(id) {
|
|
4639
|
-
if (!id)
|
|
4640
|
-
return;
|
|
4641
|
-
const list = id instanceof Array ? id : [id];
|
|
4642
|
-
list.forEach(item => item.current.off(item.type, item.listener, item.options));
|
|
4643
|
-
list.length = 0;
|
|
4644
|
-
},
|
|
4645
|
-
once(type, listener, capture) {
|
|
4646
|
-
this.on(type, listener, { once: true, capture });
|
|
4647
|
-
},
|
|
4648
|
-
emit(type, event, capture) {
|
|
4649
|
-
if (!event && EventCreator.has(type))
|
|
4650
|
-
event = EventCreator.get(type, { type, target: this, current: this });
|
|
4651
|
-
const map = __getListenerMap(this, capture);
|
|
4652
|
-
const list = map[type];
|
|
4653
|
-
if (list) {
|
|
4654
|
-
let item;
|
|
4655
|
-
for (let i = 0, len = list.length; i < len; i++) {
|
|
4656
|
-
item = list[i];
|
|
4657
|
-
item.listener(event);
|
|
4658
|
-
if (item.once) {
|
|
4659
|
-
this.off(type, item.listener, capture);
|
|
4660
|
-
i--, len--;
|
|
4661
|
-
}
|
|
4662
|
-
if (event && event.isStopNow)
|
|
4663
|
-
break;
|
|
4664
|
-
}
|
|
4665
|
-
}
|
|
4666
|
-
this.syncEventer && this.syncEventer.emitEvent(event, capture);
|
|
4667
|
-
},
|
|
4668
|
-
emitEvent(event, capture) {
|
|
4669
|
-
event.current = this;
|
|
4670
|
-
this.emit(event.type, event, capture);
|
|
4671
|
-
},
|
|
4672
|
-
hasEvent(type, capture) {
|
|
4673
|
-
if (this.syncEventer && this.syncEventer.hasEvent(type, capture))
|
|
4674
|
-
return true;
|
|
4675
|
-
const { __bubbleMap: b, __captureMap: c } = this;
|
|
4676
|
-
const hasB = b && b[type], hasC = c && c[type];
|
|
4677
|
-
return !!(capture === undefined ? (hasB || hasC) : (capture ? hasC : hasB));
|
|
4678
|
-
},
|
|
4679
|
-
};
|
|
4680
|
-
function __getListenerMap(eventer, capture, create) {
|
|
4681
|
-
if (capture) {
|
|
4682
|
-
const { __captureMap: c } = eventer;
|
|
4683
|
-
if (c) {
|
|
4684
|
-
return c;
|
|
4685
|
-
}
|
|
4686
|
-
else {
|
|
4687
|
-
return create ? eventer.__captureMap = {} : empty;
|
|
4688
|
-
}
|
|
4689
|
-
}
|
|
4690
|
-
else {
|
|
4691
|
-
const { __bubbleMap: b } = eventer;
|
|
4692
|
-
if (b) {
|
|
4693
|
-
return b;
|
|
4694
|
-
}
|
|
4695
|
-
else {
|
|
4696
|
-
return create ? eventer.__bubbleMap = {} : empty;
|
|
4697
|
-
}
|
|
4698
|
-
}
|
|
4699
|
-
}
|
|
4700
|
-
|
|
4701
4629
|
class Event {
|
|
4702
4630
|
constructor(type, target) {
|
|
4703
4631
|
this.bubbles = false;
|
|
@@ -4732,7 +4660,10 @@ class ChildEvent extends Event {
|
|
|
4732
4660
|
}
|
|
4733
4661
|
ChildEvent.ADD = 'child.add';
|
|
4734
4662
|
ChildEvent.REMOVE = 'child.remove';
|
|
4735
|
-
ChildEvent.
|
|
4663
|
+
ChildEvent.CREATED = 'created';
|
|
4664
|
+
ChildEvent.MOUNTED = 'mounted';
|
|
4665
|
+
ChildEvent.UNMOUNTED = 'unmounted';
|
|
4666
|
+
ChildEvent.DESTROY = 'destroy';
|
|
4736
4667
|
|
|
4737
4668
|
class PropertyEvent extends Event {
|
|
4738
4669
|
constructor(type, target, attrName, oldValue, newValue) {
|
|
@@ -4810,10 +4741,6 @@ LayoutEvent.AFTER = 'layout.after';
|
|
|
4810
4741
|
LayoutEvent.AGAIN = 'layout.again';
|
|
4811
4742
|
LayoutEvent.END = 'layout.end';
|
|
4812
4743
|
|
|
4813
|
-
class AnimateEvent extends Event {
|
|
4814
|
-
}
|
|
4815
|
-
AnimateEvent.FRAME = 'animate.frame';
|
|
4816
|
-
|
|
4817
4744
|
class RenderEvent extends Event {
|
|
4818
4745
|
constructor(type, times, bounds, options) {
|
|
4819
4746
|
super(type);
|
|
@@ -4846,6 +4773,157 @@ LeaferEvent.STOP = 'leafer.stop';
|
|
|
4846
4773
|
LeaferEvent.RESTART = 'leafer.restart';
|
|
4847
4774
|
LeaferEvent.END = 'leafer.end';
|
|
4848
4775
|
|
|
4776
|
+
const empty = {};
|
|
4777
|
+
class Eventer {
|
|
4778
|
+
set event(map) { this.on(map); }
|
|
4779
|
+
on(type, listener, options) {
|
|
4780
|
+
if (!listener) {
|
|
4781
|
+
let event, map = type;
|
|
4782
|
+
for (let key in map)
|
|
4783
|
+
event = map[key], event instanceof Array ? this.on(key, event[0], event[1]) : this.on(key, event);
|
|
4784
|
+
return;
|
|
4785
|
+
}
|
|
4786
|
+
let capture, once;
|
|
4787
|
+
if (options) {
|
|
4788
|
+
if (options === 'once') {
|
|
4789
|
+
once = true;
|
|
4790
|
+
}
|
|
4791
|
+
else if (typeof options === 'boolean') {
|
|
4792
|
+
capture = options;
|
|
4793
|
+
}
|
|
4794
|
+
else {
|
|
4795
|
+
capture = options.capture;
|
|
4796
|
+
once = options.once;
|
|
4797
|
+
}
|
|
4798
|
+
}
|
|
4799
|
+
let events;
|
|
4800
|
+
const map = __getListenerMap(this, capture, true);
|
|
4801
|
+
const typeList = typeof type === 'string' ? type.split(' ') : type;
|
|
4802
|
+
const item = once ? { listener, once } : { listener };
|
|
4803
|
+
typeList.forEach(type => {
|
|
4804
|
+
if (type) {
|
|
4805
|
+
events = map[type];
|
|
4806
|
+
if (events) {
|
|
4807
|
+
if (events.findIndex(item => item.listener === listener) === -1)
|
|
4808
|
+
events.push(item);
|
|
4809
|
+
}
|
|
4810
|
+
else {
|
|
4811
|
+
map[type] = [item];
|
|
4812
|
+
}
|
|
4813
|
+
}
|
|
4814
|
+
});
|
|
4815
|
+
}
|
|
4816
|
+
off(type, listener, options) {
|
|
4817
|
+
if (type) {
|
|
4818
|
+
const typeList = typeof type === 'string' ? type.split(' ') : type;
|
|
4819
|
+
if (listener) {
|
|
4820
|
+
let capture;
|
|
4821
|
+
if (options)
|
|
4822
|
+
capture = typeof options === 'boolean' ? options : (options === 'once' ? false : options.capture);
|
|
4823
|
+
let events, index;
|
|
4824
|
+
const map = __getListenerMap(this, capture);
|
|
4825
|
+
typeList.forEach(type => {
|
|
4826
|
+
if (type) {
|
|
4827
|
+
events = map[type];
|
|
4828
|
+
if (events) {
|
|
4829
|
+
index = events.findIndex(item => item.listener === listener);
|
|
4830
|
+
if (index > -1)
|
|
4831
|
+
events.splice(index, 1);
|
|
4832
|
+
if (!events.length)
|
|
4833
|
+
delete map[type];
|
|
4834
|
+
}
|
|
4835
|
+
}
|
|
4836
|
+
});
|
|
4837
|
+
}
|
|
4838
|
+
else {
|
|
4839
|
+
const { __bubbleMap: b, __captureMap: c } = this;
|
|
4840
|
+
typeList.forEach(type => {
|
|
4841
|
+
if (b)
|
|
4842
|
+
delete b[type];
|
|
4843
|
+
if (c)
|
|
4844
|
+
delete c[type];
|
|
4845
|
+
});
|
|
4846
|
+
}
|
|
4847
|
+
}
|
|
4848
|
+
else {
|
|
4849
|
+
this.__bubbleMap = this.__captureMap = undefined;
|
|
4850
|
+
}
|
|
4851
|
+
}
|
|
4852
|
+
on_(type, listener, bind, options) {
|
|
4853
|
+
if (bind)
|
|
4854
|
+
listener = listener.bind(bind);
|
|
4855
|
+
this.on(type, listener, options);
|
|
4856
|
+
return { type, current: this, listener, options };
|
|
4857
|
+
}
|
|
4858
|
+
off_(id) {
|
|
4859
|
+
if (!id)
|
|
4860
|
+
return;
|
|
4861
|
+
const list = id instanceof Array ? id : [id];
|
|
4862
|
+
list.forEach(item => item.current.off(item.type, item.listener, item.options));
|
|
4863
|
+
list.length = 0;
|
|
4864
|
+
}
|
|
4865
|
+
once(type, listener, capture) {
|
|
4866
|
+
this.on(type, listener, { once: true, capture });
|
|
4867
|
+
}
|
|
4868
|
+
emit(type, event, capture) {
|
|
4869
|
+
if (!event && EventCreator.has(type))
|
|
4870
|
+
event = EventCreator.get(type, { type, target: this, current: this });
|
|
4871
|
+
const map = __getListenerMap(this, capture);
|
|
4872
|
+
const list = map[type];
|
|
4873
|
+
if (list) {
|
|
4874
|
+
let item;
|
|
4875
|
+
for (let i = 0, len = list.length; i < len; i++) {
|
|
4876
|
+
item = list[i];
|
|
4877
|
+
item.listener(event);
|
|
4878
|
+
if (item.once) {
|
|
4879
|
+
this.off(type, item.listener, capture);
|
|
4880
|
+
i--, len--;
|
|
4881
|
+
}
|
|
4882
|
+
if (event && event.isStopNow)
|
|
4883
|
+
break;
|
|
4884
|
+
}
|
|
4885
|
+
}
|
|
4886
|
+
this.syncEventer && this.syncEventer.emitEvent(event, capture);
|
|
4887
|
+
}
|
|
4888
|
+
emitEvent(event, capture) {
|
|
4889
|
+
event.current = this;
|
|
4890
|
+
this.emit(event.type, event, capture);
|
|
4891
|
+
}
|
|
4892
|
+
hasEvent(type, capture) {
|
|
4893
|
+
if (this.syncEventer && this.syncEventer.hasEvent(type, capture))
|
|
4894
|
+
return true;
|
|
4895
|
+
const { __bubbleMap: b, __captureMap: c } = this;
|
|
4896
|
+
const hasB = b && b[type], hasC = c && c[type];
|
|
4897
|
+
return !!(capture === undefined ? (hasB || hasC) : (capture ? hasC : hasB));
|
|
4898
|
+
}
|
|
4899
|
+
destroy() {
|
|
4900
|
+
this.__captureMap = this.__bubbleMap = this.syncEventer = null;
|
|
4901
|
+
}
|
|
4902
|
+
}
|
|
4903
|
+
function __getListenerMap(eventer, capture, create) {
|
|
4904
|
+
if (capture) {
|
|
4905
|
+
const { __captureMap: c } = eventer;
|
|
4906
|
+
if (c) {
|
|
4907
|
+
return c;
|
|
4908
|
+
}
|
|
4909
|
+
else {
|
|
4910
|
+
return create ? eventer.__captureMap = {} : empty;
|
|
4911
|
+
}
|
|
4912
|
+
}
|
|
4913
|
+
else {
|
|
4914
|
+
const { __bubbleMap: b } = eventer;
|
|
4915
|
+
if (b) {
|
|
4916
|
+
return b;
|
|
4917
|
+
}
|
|
4918
|
+
else {
|
|
4919
|
+
return create ? eventer.__bubbleMap = {} : empty;
|
|
4920
|
+
}
|
|
4921
|
+
}
|
|
4922
|
+
}
|
|
4923
|
+
|
|
4924
|
+
const { on, on_, off, off_, once, emit: emit$2, emitEvent: emitEvent$1, hasEvent, destroy } = Eventer.prototype;
|
|
4925
|
+
const LeafEventer = { on, on_, off, off_, once, emit: emit$2, emitEvent: emitEvent$1, hasEvent, destroyEventer: destroy };
|
|
4926
|
+
|
|
4849
4927
|
const { isFinite } = Number;
|
|
4850
4928
|
const debug$7 = Debug.get('setAttr');
|
|
4851
4929
|
const LeafDataProxy = {
|
|
@@ -4857,9 +4935,7 @@ const LeafDataProxy = {
|
|
|
4857
4935
|
newValue = undefined;
|
|
4858
4936
|
}
|
|
4859
4937
|
if (typeof newValue === 'object' || oldValue !== newValue) {
|
|
4860
|
-
this.
|
|
4861
|
-
if (this.__proxyData)
|
|
4862
|
-
this.setProxyAttr(name, newValue);
|
|
4938
|
+
this.__realSetAttr(name, newValue);
|
|
4863
4939
|
const { CHANGE } = PropertyEvent;
|
|
4864
4940
|
const event = new PropertyEvent(CHANGE, this, name, oldValue, newValue);
|
|
4865
4941
|
if (this.isLeafer) {
|
|
@@ -4877,12 +4953,18 @@ const LeafDataProxy = {
|
|
|
4877
4953
|
}
|
|
4878
4954
|
}
|
|
4879
4955
|
else {
|
|
4880
|
-
this.
|
|
4881
|
-
if (this.__proxyData)
|
|
4882
|
-
this.setProxyAttr(name, newValue);
|
|
4956
|
+
this.__realSetAttr(name, newValue);
|
|
4883
4957
|
return true;
|
|
4884
4958
|
}
|
|
4885
4959
|
},
|
|
4960
|
+
__realSetAttr(name, newValue) {
|
|
4961
|
+
const data = this.__;
|
|
4962
|
+
data[name] = newValue;
|
|
4963
|
+
if (this.__proxyData)
|
|
4964
|
+
this.setProxyAttr(name, newValue);
|
|
4965
|
+
if (data.normalStyle)
|
|
4966
|
+
this.lockNormalStyle || data.normalStyle[name] === undefined || (data.normalStyle[name] = newValue);
|
|
4967
|
+
},
|
|
4886
4968
|
__getAttr(name) {
|
|
4887
4969
|
if (this.__proxyData)
|
|
4888
4970
|
return this.getProxyAttr(name);
|
|
@@ -4918,7 +5000,7 @@ const LeafMatrix = {
|
|
|
4918
5000
|
|
|
4919
5001
|
const { updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2 } = LeafHelper;
|
|
4920
5002
|
const { updateBounds: updateBounds$1 } = BranchHelper;
|
|
4921
|
-
const { toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$
|
|
5003
|
+
const { toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$2, copy: copy$5 } = BoundsHelper;
|
|
4922
5004
|
const { toBounds: toBounds$2 } = PathBounds;
|
|
4923
5005
|
const LeafBounds = {
|
|
4924
5006
|
__updateWorldBounds() {
|
|
@@ -4985,6 +5067,8 @@ const LeafBounds = {
|
|
|
4985
5067
|
layout.boundsChanged = false;
|
|
4986
5068
|
},
|
|
4987
5069
|
__updateLocalBoxBounds() {
|
|
5070
|
+
if (this.__hasMotionPath)
|
|
5071
|
+
this.__updateMotionPath();
|
|
4988
5072
|
if (this.__hasAutoLayout)
|
|
4989
5073
|
this.__updateAutoLayout();
|
|
4990
5074
|
toOuterOf$1(this.__layout.boxBounds, this.__local, this.__local);
|
|
@@ -5019,7 +5103,7 @@ const LeafBounds = {
|
|
|
5019
5103
|
updateAllMatrix$2(this);
|
|
5020
5104
|
updateBounds$1(this, this);
|
|
5021
5105
|
if (this.__.__autoSide)
|
|
5022
|
-
this.__updateBoxBounds();
|
|
5106
|
+
this.__updateBoxBounds(true);
|
|
5023
5107
|
}
|
|
5024
5108
|
else {
|
|
5025
5109
|
updateAllMatrix$2(this);
|
|
@@ -5037,11 +5121,11 @@ const LeafBounds = {
|
|
|
5037
5121
|
},
|
|
5038
5122
|
__updateStrokeBounds() {
|
|
5039
5123
|
const layout = this.__layout;
|
|
5040
|
-
copyAndSpread$
|
|
5124
|
+
copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
|
|
5041
5125
|
},
|
|
5042
5126
|
__updateRenderBounds() {
|
|
5043
5127
|
const layout = this.__layout;
|
|
5044
|
-
layout.renderSpread > 0 ? copyAndSpread$
|
|
5128
|
+
layout.renderSpread > 0 ? copyAndSpread$2(layout.renderBounds, layout.boxBounds, layout.renderSpread) : copy$5(layout.renderBounds, layout.strokeBounds);
|
|
5045
5129
|
}
|
|
5046
5130
|
};
|
|
5047
5131
|
|
|
@@ -5137,7 +5221,7 @@ const BranchRender = {
|
|
|
5137
5221
|
const { LEAF, create } = IncrementId;
|
|
5138
5222
|
const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
|
|
5139
5223
|
const { toOuterOf } = BoundsHelper;
|
|
5140
|
-
const { copy: copy$4 } = PointHelper;
|
|
5224
|
+
const { copy: copy$4, move: move$1 } = PointHelper;
|
|
5141
5225
|
const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
|
|
5142
5226
|
let Leaf = class Leaf {
|
|
5143
5227
|
get tag() { return this.__tag; }
|
|
@@ -5164,13 +5248,16 @@ let Leaf = class Leaf {
|
|
|
5164
5248
|
get __ignoreHitWorld() { return (this.__hasMask || this.__hasEraser) && this.__.hitChildren; }
|
|
5165
5249
|
get __inLazyBounds() { const { leafer } = this; return leafer && leafer.created && leafer.lazyBounds.hit(this.__world); }
|
|
5166
5250
|
get pathInputed() { return this.__.__pathInputed; }
|
|
5167
|
-
set event(map) {
|
|
5168
|
-
event = map[key], event instanceof Array ? this.on(key, event[0], event[1]) : this.on(key, event); }
|
|
5251
|
+
set event(map) { this.on(map); }
|
|
5169
5252
|
constructor(data) {
|
|
5170
5253
|
this.innerId = create(LEAF);
|
|
5171
5254
|
this.reset(data);
|
|
5255
|
+
if (this.__bubbleMap)
|
|
5256
|
+
this.__emitLifeEvent(ChildEvent.CREATED);
|
|
5172
5257
|
}
|
|
5173
5258
|
reset(data) {
|
|
5259
|
+
if (this.leafer)
|
|
5260
|
+
this.leafer.forceRender(this.__world);
|
|
5174
5261
|
this.__world = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0, scaleX: 1, scaleY: 1 };
|
|
5175
5262
|
if (data !== null)
|
|
5176
5263
|
this.__local = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0, x: 0, y: 0, width: 0, height: 0 };
|
|
@@ -5192,12 +5279,12 @@ let Leaf = class Leaf {
|
|
|
5192
5279
|
waitParent(item, bind) {
|
|
5193
5280
|
if (bind)
|
|
5194
5281
|
item = item.bind(bind);
|
|
5195
|
-
this.parent ? item() :
|
|
5282
|
+
this.parent ? item() : this.on(ChildEvent.ADD, item, 'once');
|
|
5196
5283
|
}
|
|
5197
5284
|
waitLeafer(item, bind) {
|
|
5198
5285
|
if (bind)
|
|
5199
5286
|
item = item.bind(bind);
|
|
5200
|
-
this.leafer ? item() :
|
|
5287
|
+
this.leafer ? item() : this.on(ChildEvent.MOUNTED, item, 'once');
|
|
5201
5288
|
}
|
|
5202
5289
|
nextRender(item, bind, off) {
|
|
5203
5290
|
this.leafer ? this.leafer.nextRender(item, bind, off) : this.waitLeafer(() => this.leafer.nextRender(item, bind, off));
|
|
@@ -5206,18 +5293,21 @@ let Leaf = class Leaf {
|
|
|
5206
5293
|
this.nextRender(item, null, 'off');
|
|
5207
5294
|
}
|
|
5208
5295
|
__bindLeafer(leafer) {
|
|
5209
|
-
if (this.isLeafer)
|
|
5210
|
-
|
|
5211
|
-
leafer = this;
|
|
5212
|
-
}
|
|
5296
|
+
if (this.isLeafer && leafer !== null)
|
|
5297
|
+
leafer = this;
|
|
5213
5298
|
if (this.leafer && !leafer)
|
|
5214
5299
|
this.leafer.leafs--;
|
|
5215
5300
|
this.leafer = leafer;
|
|
5216
5301
|
if (leafer) {
|
|
5217
5302
|
leafer.leafs++;
|
|
5218
5303
|
this.__level = this.parent ? this.parent.__level + 1 : 1;
|
|
5219
|
-
if (this.
|
|
5220
|
-
|
|
5304
|
+
if (this.animation)
|
|
5305
|
+
this.__runAnimation('in');
|
|
5306
|
+
if (this.__bubbleMap)
|
|
5307
|
+
this.__emitLifeEvent(ChildEvent.MOUNTED);
|
|
5308
|
+
}
|
|
5309
|
+
else {
|
|
5310
|
+
this.__emitLifeEvent(ChildEvent.UNMOUNTED);
|
|
5221
5311
|
}
|
|
5222
5312
|
if (this.isBranch) {
|
|
5223
5313
|
const { children } = this;
|
|
@@ -5226,7 +5316,7 @@ let Leaf = class Leaf {
|
|
|
5226
5316
|
}
|
|
5227
5317
|
}
|
|
5228
5318
|
}
|
|
5229
|
-
set(_data) { }
|
|
5319
|
+
set(_data, _isTemp) { }
|
|
5230
5320
|
get(_name) { return undefined; }
|
|
5231
5321
|
setAttr(name, value) { this[name] = value; }
|
|
5232
5322
|
getAttr(name) { return this[name]; }
|
|
@@ -5251,6 +5341,7 @@ let Leaf = class Leaf {
|
|
|
5251
5341
|
findOne(_condition, _options) { return undefined; }
|
|
5252
5342
|
findId(_id) { return undefined; }
|
|
5253
5343
|
focus(_value) { }
|
|
5344
|
+
updateState() { }
|
|
5254
5345
|
updateLayout() {
|
|
5255
5346
|
this.__layout.update();
|
|
5256
5347
|
}
|
|
@@ -5358,11 +5449,24 @@ let Leaf = class Leaf {
|
|
|
5358
5449
|
if (relative)
|
|
5359
5450
|
relative.worldToInner(to ? to : inner, null, distance);
|
|
5360
5451
|
}
|
|
5452
|
+
getBoxPoint(world, relative, distance, change) {
|
|
5453
|
+
return this.getBoxPointByInner(this.getInnerPoint(world, relative, distance, change), null, null, true);
|
|
5454
|
+
}
|
|
5455
|
+
getBoxPointByInner(inner, _relative, _distance, change) {
|
|
5456
|
+
const point = change ? inner : Object.assign({}, inner), { x, y } = this.boxBounds;
|
|
5457
|
+
move$1(point, -x, -y);
|
|
5458
|
+
return point;
|
|
5459
|
+
}
|
|
5361
5460
|
getInnerPoint(world, relative, distance, change) {
|
|
5362
5461
|
const point = change ? world : {};
|
|
5363
5462
|
this.worldToInner(world, point, distance, relative);
|
|
5364
5463
|
return point;
|
|
5365
5464
|
}
|
|
5465
|
+
getInnerPointByBox(box, _relative, _distance, change) {
|
|
5466
|
+
const point = change ? box : Object.assign({}, box), { x, y } = this.boxBounds;
|
|
5467
|
+
move$1(point, x, y);
|
|
5468
|
+
return point;
|
|
5469
|
+
}
|
|
5366
5470
|
getInnerPointByLocal(local, _relative, distance, change) {
|
|
5367
5471
|
return this.getInnerPoint(local, this.parent, distance, change);
|
|
5368
5472
|
}
|
|
@@ -5374,20 +5478,23 @@ let Leaf = class Leaf {
|
|
|
5374
5478
|
getLocalPointByInner(inner, _relative, distance, change) {
|
|
5375
5479
|
return this.getWorldPoint(inner, this.parent, distance, change);
|
|
5376
5480
|
}
|
|
5481
|
+
getPagePoint(world, relative, distance, change) {
|
|
5482
|
+
const layer = this.leafer ? this.leafer.zoomLayer : this;
|
|
5483
|
+
return layer.getInnerPoint(world, relative, distance, change);
|
|
5484
|
+
}
|
|
5377
5485
|
getWorldPoint(inner, relative, distance, change) {
|
|
5378
5486
|
const point = change ? inner : {};
|
|
5379
5487
|
this.innerToWorld(inner, point, distance, relative);
|
|
5380
5488
|
return point;
|
|
5381
5489
|
}
|
|
5490
|
+
getWorldPointByBox(box, relative, distance, change) {
|
|
5491
|
+
return this.getWorldPoint(this.getInnerPointByBox(box, null, null, change), relative, distance, true);
|
|
5492
|
+
}
|
|
5382
5493
|
getWorldPointByLocal(local, relative, distance, change) {
|
|
5383
5494
|
const point = change ? local : {};
|
|
5384
5495
|
this.localToWorld(local, point, distance, relative);
|
|
5385
5496
|
return point;
|
|
5386
5497
|
}
|
|
5387
|
-
getPagePoint(world, relative, distance, change) {
|
|
5388
|
-
const layer = this.leafer ? this.leafer.zoomLayer : this;
|
|
5389
|
-
return layer.getInnerPoint(world, relative, distance, change);
|
|
5390
|
-
}
|
|
5391
5498
|
getWorldPointByPage(page, relative, distance, change) {
|
|
5392
5499
|
const layer = this.leafer ? this.leafer.zoomLayer : this;
|
|
5393
5500
|
return layer.getWorldPoint(page, relative, distance, change);
|
|
@@ -5401,6 +5508,9 @@ let Leaf = class Leaf {
|
|
|
5401
5508
|
move(x, y) {
|
|
5402
5509
|
moveLocal(this, x, y);
|
|
5403
5510
|
}
|
|
5511
|
+
moveInner(x, y) {
|
|
5512
|
+
moveWorld(this, x, y, true);
|
|
5513
|
+
}
|
|
5404
5514
|
scaleOf(origin, scaleX, scaleY, resize) {
|
|
5405
5515
|
zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize);
|
|
5406
5516
|
}
|
|
@@ -5453,6 +5563,17 @@ let Leaf = class Leaf {
|
|
|
5453
5563
|
__drawRenderPath(_canvas) { }
|
|
5454
5564
|
__updatePath() { }
|
|
5455
5565
|
__updateRenderPath() { }
|
|
5566
|
+
getMotionPathData() {
|
|
5567
|
+
return needPlugin('path');
|
|
5568
|
+
}
|
|
5569
|
+
getMotionPoint(_motionDistance) {
|
|
5570
|
+
return needPlugin('path');
|
|
5571
|
+
}
|
|
5572
|
+
getMotionTotal() {
|
|
5573
|
+
return 0;
|
|
5574
|
+
}
|
|
5575
|
+
__updateMotionPath() { }
|
|
5576
|
+
__runAnimation(_type, _complete) { }
|
|
5456
5577
|
__updateSortChildren() { }
|
|
5457
5578
|
add(_child, _index) { }
|
|
5458
5579
|
remove(_child, destroy) {
|
|
@@ -5478,6 +5599,10 @@ let Leaf = class Leaf {
|
|
|
5478
5599
|
fn = boundsType;
|
|
5479
5600
|
fn(defaultValue)(this.prototype, attrName);
|
|
5480
5601
|
}
|
|
5602
|
+
__emitLifeEvent(type) {
|
|
5603
|
+
if (this.hasEvent(type))
|
|
5604
|
+
this.emitEvent(new ChildEvent(type, this, this.parent));
|
|
5605
|
+
}
|
|
5481
5606
|
destroy() {
|
|
5482
5607
|
if (!this.destroyed) {
|
|
5483
5608
|
const { parent } = this;
|
|
@@ -5485,11 +5610,10 @@ let Leaf = class Leaf {
|
|
|
5485
5610
|
this.remove();
|
|
5486
5611
|
if (this.children)
|
|
5487
5612
|
this.removeAll(true);
|
|
5488
|
-
|
|
5489
|
-
this.emitEvent(new ChildEvent(ChildEvent.DESTROY, this, parent));
|
|
5613
|
+
this.__emitLifeEvent(ChildEvent.DESTROY);
|
|
5490
5614
|
this.__.destroy();
|
|
5491
5615
|
this.__layout.destroy();
|
|
5492
|
-
this.
|
|
5616
|
+
this.destroyEventer();
|
|
5493
5617
|
this.destroyed = true;
|
|
5494
5618
|
}
|
|
5495
5619
|
}
|
|
@@ -5555,8 +5679,8 @@ let Branch = class Branch extends Leaf {
|
|
|
5555
5679
|
this.__.__childBranchNumber = (this.__.__childBranchNumber || 0) + 1;
|
|
5556
5680
|
child.__layout.boxChanged || child.__layout.boxChange();
|
|
5557
5681
|
child.__layout.matrixChanged || child.__layout.matrixChange();
|
|
5558
|
-
if (child.
|
|
5559
|
-
|
|
5682
|
+
if (child.__bubbleMap)
|
|
5683
|
+
child.__emitLifeEvent(ChildEvent.ADD);
|
|
5560
5684
|
if (this.leafer) {
|
|
5561
5685
|
child.__bindLeafer(this.leafer);
|
|
5562
5686
|
if (this.leafer.created)
|
|
@@ -5569,16 +5693,10 @@ let Branch = class Branch extends Leaf {
|
|
|
5569
5693
|
}
|
|
5570
5694
|
remove(child, destroy) {
|
|
5571
5695
|
if (child) {
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
this.__.__childBranchNumber = (this.__.__childBranchNumber || 1) - 1;
|
|
5577
|
-
this.__preRemove();
|
|
5578
|
-
this.__realRemoveChild(child);
|
|
5579
|
-
if (destroy)
|
|
5580
|
-
child.destroy();
|
|
5581
|
-
}
|
|
5696
|
+
if (child.animationOut)
|
|
5697
|
+
child.__runAnimation('out', () => this.__remove(child, destroy));
|
|
5698
|
+
else
|
|
5699
|
+
this.__remove(child, destroy);
|
|
5582
5700
|
}
|
|
5583
5701
|
else if (child === undefined) {
|
|
5584
5702
|
super.remove(null, destroy);
|
|
@@ -5600,6 +5718,18 @@ let Branch = class Branch extends Leaf {
|
|
|
5600
5718
|
clear() {
|
|
5601
5719
|
this.removeAll(true);
|
|
5602
5720
|
}
|
|
5721
|
+
__remove(child, destroy) {
|
|
5722
|
+
const index = this.children.indexOf(child);
|
|
5723
|
+
if (index > -1) {
|
|
5724
|
+
this.children.splice(index, 1);
|
|
5725
|
+
if (child.isBranch)
|
|
5726
|
+
this.__.__childBranchNumber = (this.__.__childBranchNumber || 1) - 1;
|
|
5727
|
+
this.__preRemove();
|
|
5728
|
+
this.__realRemoveChild(child);
|
|
5729
|
+
if (destroy)
|
|
5730
|
+
child.destroy();
|
|
5731
|
+
}
|
|
5732
|
+
}
|
|
5603
5733
|
__preRemove() {
|
|
5604
5734
|
if (this.__hasMask)
|
|
5605
5735
|
this.__updateMask();
|
|
@@ -5609,6 +5739,7 @@ let Branch = class Branch extends Leaf {
|
|
|
5609
5739
|
this.__layout.affectChildrenSort && this.__layout.childrenSortChange();
|
|
5610
5740
|
}
|
|
5611
5741
|
__realRemoveChild(child) {
|
|
5742
|
+
child.__emitLifeEvent(ChildEvent.REMOVE);
|
|
5612
5743
|
child.parent = null;
|
|
5613
5744
|
if (this.leafer) {
|
|
5614
5745
|
child.__bindLeafer(null);
|
|
@@ -5621,8 +5752,6 @@ let Branch = class Branch extends Leaf {
|
|
|
5621
5752
|
}
|
|
5622
5753
|
__emitChildEvent(type, child) {
|
|
5623
5754
|
const event = new ChildEvent(type, child, this);
|
|
5624
|
-
if (child.hasEvent(type))
|
|
5625
|
-
child.emitEvent(event);
|
|
5626
5755
|
if (this.hasEvent(type) && !this.isLeafer)
|
|
5627
5756
|
this.emitEvent(event);
|
|
5628
5757
|
this.leafer.emitEvent(event);
|
|
@@ -5785,8 +5914,7 @@ class LeafLevelList {
|
|
|
5785
5914
|
}
|
|
5786
5915
|
}
|
|
5787
5916
|
|
|
5788
|
-
const version = "1.0.
|
|
5789
|
-
const inviteCode = {};
|
|
5917
|
+
const version = "1.0.3";
|
|
5790
5918
|
|
|
5791
5919
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
5792
5920
|
get allowBackgroundColor() { return true; }
|
|
@@ -6013,9 +6141,13 @@ function updateBounds(boundsList) {
|
|
|
6013
6141
|
});
|
|
6014
6142
|
}
|
|
6015
6143
|
function updateChange(updateList) {
|
|
6144
|
+
let layout;
|
|
6016
6145
|
updateList.list.forEach(leaf => {
|
|
6017
|
-
|
|
6146
|
+
layout = leaf.__layout;
|
|
6147
|
+
if (layout.opacityChanged)
|
|
6018
6148
|
updateAllWorldOpacity(leaf);
|
|
6149
|
+
if (layout.stateStyleChanged)
|
|
6150
|
+
setTimeout(() => layout.stateStyleChanged && leaf.updateState());
|
|
6019
6151
|
leaf.__updateChange();
|
|
6020
6152
|
});
|
|
6021
6153
|
}
|
|
@@ -6381,7 +6513,6 @@ class Renderer {
|
|
|
6381
6513
|
Platform.requestRender(() => {
|
|
6382
6514
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - startTime)));
|
|
6383
6515
|
if (this.running) {
|
|
6384
|
-
this.target.emit(AnimateEvent.FRAME);
|
|
6385
6516
|
if (this.changed && this.canvas.view)
|
|
6386
6517
|
this.render();
|
|
6387
6518
|
this.target.emit(RenderEvent.NEXT);
|
|
@@ -6726,36 +6857,6 @@ Object.assign(Creator, {
|
|
|
6726
6857
|
});
|
|
6727
6858
|
Platform.layout = Layouter.fullLayout;
|
|
6728
6859
|
|
|
6729
|
-
const TextConvert = {};
|
|
6730
|
-
const ColorConvert = {};
|
|
6731
|
-
const PathArrow = {};
|
|
6732
|
-
const Paint = {};
|
|
6733
|
-
const PaintImage = {};
|
|
6734
|
-
const PaintGradient = {};
|
|
6735
|
-
const Effect = {};
|
|
6736
|
-
const Export = {};
|
|
6737
|
-
const State = {};
|
|
6738
|
-
|
|
6739
|
-
function stateType(defaultValue) {
|
|
6740
|
-
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6741
|
-
set(value) {
|
|
6742
|
-
this.__setAttr(key, value);
|
|
6743
|
-
this.waitLeafer(() => { if (State.setStyle)
|
|
6744
|
-
State.setStyle(this, key + 'Style', value); });
|
|
6745
|
-
}
|
|
6746
|
-
}));
|
|
6747
|
-
}
|
|
6748
|
-
function arrowType(defaultValue) {
|
|
6749
|
-
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6750
|
-
set(value) {
|
|
6751
|
-
if (this.__setAttr(key, value)) {
|
|
6752
|
-
const data = this.__;
|
|
6753
|
-
data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
|
|
6754
|
-
doStrokeType(this);
|
|
6755
|
-
}
|
|
6756
|
-
}
|
|
6757
|
-
}));
|
|
6758
|
-
}
|
|
6759
6860
|
function effectType(defaultValue) {
|
|
6760
6861
|
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6761
6862
|
set(value) {
|
|
@@ -6790,10 +6891,33 @@ function zoomLayerType() {
|
|
|
6790
6891
|
};
|
|
6791
6892
|
}
|
|
6792
6893
|
|
|
6894
|
+
const TextConvert = {};
|
|
6895
|
+
const ColorConvert = {};
|
|
6896
|
+
const PathArrow = {};
|
|
6897
|
+
const Paint = {};
|
|
6898
|
+
const PaintImage = {};
|
|
6899
|
+
const PaintGradient = {};
|
|
6900
|
+
const Effect = {};
|
|
6901
|
+
const Export = {};
|
|
6902
|
+
const State = {
|
|
6903
|
+
setStyleName(_leaf, _styleName, _value) { return needPlugin('state'); },
|
|
6904
|
+
set(_leaf, _stateName) { return needPlugin('state'); }
|
|
6905
|
+
};
|
|
6906
|
+
const Transition = {
|
|
6907
|
+
list: {},
|
|
6908
|
+
register(attrName, fn) {
|
|
6909
|
+
Transition.list[attrName] = fn;
|
|
6910
|
+
},
|
|
6911
|
+
get(attrName) {
|
|
6912
|
+
return Transition.list[attrName];
|
|
6913
|
+
}
|
|
6914
|
+
};
|
|
6915
|
+
|
|
6793
6916
|
const { parse } = PathConvert;
|
|
6794
6917
|
const emptyPaint = {};
|
|
6795
6918
|
const debug$4 = Debug.get('UIData');
|
|
6796
6919
|
class UIData extends LeafData {
|
|
6920
|
+
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
6797
6921
|
get __strokeWidth() {
|
|
6798
6922
|
const { strokeWidth, strokeWidthFixed } = this;
|
|
6799
6923
|
if (strokeWidthFixed) {
|
|
@@ -6812,9 +6936,10 @@ class UIData extends LeafData {
|
|
|
6812
6936
|
get __autoSide() { return !this._width || !this._height; }
|
|
6813
6937
|
get __autoSize() { return !this._width && !this._height; }
|
|
6814
6938
|
setVisible(value) {
|
|
6815
|
-
if (this.__leaf.leafer)
|
|
6816
|
-
this.__leaf.leafer.watcher.hasVisible = true;
|
|
6817
6939
|
this._visible = value;
|
|
6940
|
+
const { leafer } = this.__leaf;
|
|
6941
|
+
if (leafer)
|
|
6942
|
+
leafer.watcher.hasVisible = true;
|
|
6818
6943
|
}
|
|
6819
6944
|
setWidth(value) {
|
|
6820
6945
|
if (value < 0) {
|
|
@@ -6938,6 +7063,11 @@ class BoxData extends GroupData {
|
|
|
6938
7063
|
}
|
|
6939
7064
|
|
|
6940
7065
|
class LeaferData extends GroupData {
|
|
7066
|
+
__getInputData() {
|
|
7067
|
+
const data = super.__getInputData();
|
|
7068
|
+
canvasSizeAttrs.forEach(key => delete data[key]);
|
|
7069
|
+
return data;
|
|
7070
|
+
}
|
|
6941
7071
|
}
|
|
6942
7072
|
|
|
6943
7073
|
class FrameData extends BoxData {
|
|
@@ -7000,7 +7130,7 @@ class ImageData extends RectData {
|
|
|
7000
7130
|
__setImageFill(value) {
|
|
7001
7131
|
if (this.__leaf.image)
|
|
7002
7132
|
this.__leaf.image = null;
|
|
7003
|
-
this.fill = value ? { type: 'image', mode: '
|
|
7133
|
+
this.fill = value ? { type: 'image', mode: 'stretch', url: value } : undefined;
|
|
7004
7134
|
}
|
|
7005
7135
|
__getData() {
|
|
7006
7136
|
const data = super.__getData();
|
|
@@ -7015,6 +7145,11 @@ class ImageData extends RectData {
|
|
|
7015
7145
|
}
|
|
7016
7146
|
|
|
7017
7147
|
class CanvasData extends RectData {
|
|
7148
|
+
__getInputData() {
|
|
7149
|
+
const data = super.__getInputData();
|
|
7150
|
+
data.url = this.__leaf.canvas.toDataURL('image/png');
|
|
7151
|
+
return data;
|
|
7152
|
+
}
|
|
7018
7153
|
}
|
|
7019
7154
|
|
|
7020
7155
|
const UIBounds = {
|
|
@@ -7185,19 +7320,8 @@ var UI_1;
|
|
|
7185
7320
|
let UI = UI_1 = class UI extends Leaf {
|
|
7186
7321
|
get app() { return this.leafer && this.leafer.app; }
|
|
7187
7322
|
get isFrame() { return false; }
|
|
7188
|
-
set scale(value) {
|
|
7189
|
-
|
|
7190
|
-
this.scaleX = this.scaleY = value;
|
|
7191
|
-
}
|
|
7192
|
-
else {
|
|
7193
|
-
this.scaleX = value.x;
|
|
7194
|
-
this.scaleY = value.y;
|
|
7195
|
-
}
|
|
7196
|
-
}
|
|
7197
|
-
get scale() {
|
|
7198
|
-
const { scaleX, scaleY } = this;
|
|
7199
|
-
return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX;
|
|
7200
|
-
}
|
|
7323
|
+
set scale(value) { MathHelper.assignScale(this, value); }
|
|
7324
|
+
get scale() { return this.__.scale; }
|
|
7201
7325
|
get pen() {
|
|
7202
7326
|
const { path } = this.__;
|
|
7203
7327
|
pen.set(this.path = path || []);
|
|
@@ -7212,8 +7336,15 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7212
7336
|
super(data);
|
|
7213
7337
|
}
|
|
7214
7338
|
reset(_data) { }
|
|
7215
|
-
set(data) {
|
|
7216
|
-
|
|
7339
|
+
set(data, isTemp) {
|
|
7340
|
+
if (isTemp) {
|
|
7341
|
+
this.lockNormalStyle = true;
|
|
7342
|
+
Object.assign(this, data);
|
|
7343
|
+
this.lockNormalStyle = false;
|
|
7344
|
+
}
|
|
7345
|
+
else {
|
|
7346
|
+
Object.assign(this, data);
|
|
7347
|
+
}
|
|
7217
7348
|
}
|
|
7218
7349
|
get(name) {
|
|
7219
7350
|
return typeof name === 'string' ? this.__.__getInput(name) : this.__.__getInputData(name);
|
|
@@ -7276,11 +7407,18 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7276
7407
|
drawer.rect(x, y, width, height);
|
|
7277
7408
|
}
|
|
7278
7409
|
}
|
|
7410
|
+
animate(_keyframe, _options, _type, _isTemp) {
|
|
7411
|
+
return needPlugin('animate');
|
|
7412
|
+
}
|
|
7413
|
+
killAnimate(_type) { }
|
|
7279
7414
|
export(filename, options) {
|
|
7280
7415
|
return Export.export(this, filename, options);
|
|
7281
7416
|
}
|
|
7282
|
-
clone() {
|
|
7283
|
-
|
|
7417
|
+
clone(newData) {
|
|
7418
|
+
const json = this.toJSON();
|
|
7419
|
+
if (newData)
|
|
7420
|
+
Object.assign(json, newData);
|
|
7421
|
+
return UI_1.one(json);
|
|
7284
7422
|
}
|
|
7285
7423
|
static one(data, x, y, width, height) {
|
|
7286
7424
|
return UICreator.get(data.tag || this.prototype.__tag, data, x, y, width, height);
|
|
@@ -7296,6 +7434,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7296
7434
|
static setEditInner(_editorName) { }
|
|
7297
7435
|
destroy() {
|
|
7298
7436
|
this.fill = this.stroke = null;
|
|
7437
|
+
if (this.__animate)
|
|
7438
|
+
this.killAnimate();
|
|
7299
7439
|
super.destroy();
|
|
7300
7440
|
}
|
|
7301
7441
|
};
|
|
@@ -7323,12 +7463,6 @@ __decorate([
|
|
|
7323
7463
|
__decorate([
|
|
7324
7464
|
visibleType(true)
|
|
7325
7465
|
], UI.prototype, "visible", void 0);
|
|
7326
|
-
__decorate([
|
|
7327
|
-
stateType(false)
|
|
7328
|
-
], UI.prototype, "selected", void 0);
|
|
7329
|
-
__decorate([
|
|
7330
|
-
stateType(false)
|
|
7331
|
-
], UI.prototype, "disabled", void 0);
|
|
7332
7466
|
__decorate([
|
|
7333
7467
|
surfaceType(false)
|
|
7334
7468
|
], UI.prototype, "locked", void 0);
|
|
@@ -7401,45 +7535,9 @@ __decorate([
|
|
|
7401
7535
|
__decorate([
|
|
7402
7536
|
pathType(true)
|
|
7403
7537
|
], UI.prototype, "closed", void 0);
|
|
7404
|
-
__decorate([
|
|
7405
|
-
autoLayoutType(false)
|
|
7406
|
-
], UI.prototype, "flow", void 0);
|
|
7407
7538
|
__decorate([
|
|
7408
7539
|
boundsType(0)
|
|
7409
7540
|
], UI.prototype, "padding", void 0);
|
|
7410
|
-
__decorate([
|
|
7411
|
-
boundsType(0)
|
|
7412
|
-
], UI.prototype, "gap", void 0);
|
|
7413
|
-
__decorate([
|
|
7414
|
-
boundsType('top-left')
|
|
7415
|
-
], UI.prototype, "flowAlign", void 0);
|
|
7416
|
-
__decorate([
|
|
7417
|
-
boundsType(false)
|
|
7418
|
-
], UI.prototype, "flowWrap", void 0);
|
|
7419
|
-
__decorate([
|
|
7420
|
-
boundsType('box')
|
|
7421
|
-
], UI.prototype, "itemBox", void 0);
|
|
7422
|
-
__decorate([
|
|
7423
|
-
boundsType(true)
|
|
7424
|
-
], UI.prototype, "inFlow", void 0);
|
|
7425
|
-
__decorate([
|
|
7426
|
-
boundsType()
|
|
7427
|
-
], UI.prototype, "autoWidth", void 0);
|
|
7428
|
-
__decorate([
|
|
7429
|
-
boundsType()
|
|
7430
|
-
], UI.prototype, "autoHeight", void 0);
|
|
7431
|
-
__decorate([
|
|
7432
|
-
boundsType()
|
|
7433
|
-
], UI.prototype, "lockRatio", void 0);
|
|
7434
|
-
__decorate([
|
|
7435
|
-
boundsType()
|
|
7436
|
-
], UI.prototype, "autoBox", void 0);
|
|
7437
|
-
__decorate([
|
|
7438
|
-
boundsType()
|
|
7439
|
-
], UI.prototype, "widthRange", void 0);
|
|
7440
|
-
__decorate([
|
|
7441
|
-
boundsType()
|
|
7442
|
-
], UI.prototype, "heightRange", void 0);
|
|
7443
7541
|
__decorate([
|
|
7444
7542
|
dataType(false)
|
|
7445
7543
|
], UI.prototype, "draggable", void 0);
|
|
@@ -7503,12 +7601,6 @@ __decorate([
|
|
|
7503
7601
|
__decorate([
|
|
7504
7602
|
strokeType(10)
|
|
7505
7603
|
], UI.prototype, "miterLimit", void 0);
|
|
7506
|
-
__decorate([
|
|
7507
|
-
arrowType('none')
|
|
7508
|
-
], UI.prototype, "startArrow", void 0);
|
|
7509
|
-
__decorate([
|
|
7510
|
-
arrowType('none')
|
|
7511
|
-
], UI.prototype, "endArrow", void 0);
|
|
7512
7604
|
__decorate([
|
|
7513
7605
|
pathType(0)
|
|
7514
7606
|
], UI.prototype, "cornerRadius", void 0);
|
|
@@ -7530,24 +7622,6 @@ __decorate([
|
|
|
7530
7622
|
__decorate([
|
|
7531
7623
|
effectType()
|
|
7532
7624
|
], UI.prototype, "grayscale", void 0);
|
|
7533
|
-
__decorate([
|
|
7534
|
-
dataType()
|
|
7535
|
-
], UI.prototype, "normalStyle", void 0);
|
|
7536
|
-
__decorate([
|
|
7537
|
-
dataType()
|
|
7538
|
-
], UI.prototype, "hoverStyle", void 0);
|
|
7539
|
-
__decorate([
|
|
7540
|
-
dataType()
|
|
7541
|
-
], UI.prototype, "pressStyle", void 0);
|
|
7542
|
-
__decorate([
|
|
7543
|
-
dataType()
|
|
7544
|
-
], UI.prototype, "focusStyle", void 0);
|
|
7545
|
-
__decorate([
|
|
7546
|
-
dataType()
|
|
7547
|
-
], UI.prototype, "selectedStyle", void 0);
|
|
7548
|
-
__decorate([
|
|
7549
|
-
dataType()
|
|
7550
|
-
], UI.prototype, "disabledStyle", void 0);
|
|
7551
7625
|
__decorate([
|
|
7552
7626
|
dataType({})
|
|
7553
7627
|
], UI.prototype, "data", void 0);
|
|
@@ -7574,7 +7648,7 @@ let Group = class Group extends UI {
|
|
|
7574
7648
|
if (!this.children)
|
|
7575
7649
|
this.children = [];
|
|
7576
7650
|
}
|
|
7577
|
-
set(data) {
|
|
7651
|
+
set(data, isTemp) {
|
|
7578
7652
|
if (data.children) {
|
|
7579
7653
|
const { children } = data;
|
|
7580
7654
|
delete data.children;
|
|
@@ -7584,7 +7658,7 @@ let Group = class Group extends UI {
|
|
|
7584
7658
|
else {
|
|
7585
7659
|
this.clear();
|
|
7586
7660
|
}
|
|
7587
|
-
super.set(data);
|
|
7661
|
+
super.set(data, isTemp);
|
|
7588
7662
|
let child;
|
|
7589
7663
|
children.forEach(childData => {
|
|
7590
7664
|
child = childData.__ ? childData : UICreator.get(childData.tag, childData);
|
|
@@ -7593,7 +7667,7 @@ let Group = class Group extends UI {
|
|
|
7593
7667
|
data.children = children;
|
|
7594
7668
|
}
|
|
7595
7669
|
else {
|
|
7596
|
-
super.set(data);
|
|
7670
|
+
super.set(data, isTemp);
|
|
7597
7671
|
}
|
|
7598
7672
|
}
|
|
7599
7673
|
toJSON(options) {
|
|
@@ -7920,13 +7994,20 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7920
7994
|
}
|
|
7921
7995
|
}
|
|
7922
7996
|
zoom(_zoomType, _padding, _fixedScale) {
|
|
7923
|
-
return
|
|
7997
|
+
return needPlugin('view');
|
|
7924
7998
|
}
|
|
7925
7999
|
getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
|
|
7926
8000
|
getValidScale(changeScale) { return changeScale; }
|
|
7927
8001
|
getWorldPointByClient(clientPoint, updateClient) {
|
|
7928
8002
|
return this.interaction && this.interaction.getLocal(clientPoint, updateClient);
|
|
7929
8003
|
}
|
|
8004
|
+
getPagePointByClient(clientPoint, updateClient) {
|
|
8005
|
+
return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient));
|
|
8006
|
+
}
|
|
8007
|
+
updateClientBounds() {
|
|
8008
|
+
this.canvas && this.canvas.updateClientBounds();
|
|
8009
|
+
}
|
|
8010
|
+
receiveEvent(_event) { }
|
|
7930
8011
|
__checkUpdateLayout() {
|
|
7931
8012
|
this.__layout.update();
|
|
7932
8013
|
}
|
|
@@ -8010,7 +8091,7 @@ Rect = __decorate([
|
|
|
8010
8091
|
const rect$1 = Rect.prototype;
|
|
8011
8092
|
const group$1 = Group.prototype;
|
|
8012
8093
|
const childrenRenderBounds = {};
|
|
8013
|
-
const { copy: copy$3, add, includes: includes$1 } = BoundsHelper;
|
|
8094
|
+
const { copy: copy$3, add, includes: includes$1, copyAndSpread: copyAndSpread$1 } = BoundsHelper;
|
|
8014
8095
|
let Box = class Box extends Group {
|
|
8015
8096
|
get __tag() { return 'Box'; }
|
|
8016
8097
|
get isBranchLeaf() { return true; }
|
|
@@ -8024,20 +8105,23 @@ let Box = class Box extends Group {
|
|
|
8024
8105
|
return this.__updateRectRenderSpread() || -1;
|
|
8025
8106
|
}
|
|
8026
8107
|
__updateRectBoxBounds() { }
|
|
8027
|
-
__updateBoxBounds() {
|
|
8108
|
+
__updateBoxBounds(secondLayout) {
|
|
8028
8109
|
const data = this.__;
|
|
8029
8110
|
if (this.children.length) {
|
|
8030
8111
|
if (data.__autoSide) {
|
|
8031
8112
|
if (this.leafer && this.leafer.ready)
|
|
8032
8113
|
this.leafer.layouter.addExtra(this);
|
|
8033
8114
|
super.__updateBoxBounds();
|
|
8115
|
+
const { boxBounds } = this.__layout;
|
|
8034
8116
|
if (!data.__autoSize) {
|
|
8035
|
-
|
|
8036
|
-
|
|
8037
|
-
|
|
8038
|
-
|
|
8039
|
-
b.width += b.x, b.height = data.height, b.y = b.x = 0;
|
|
8117
|
+
if (data.__autoWidth)
|
|
8118
|
+
boxBounds.width += boxBounds.x, boxBounds.height = data.height, boxBounds.y = boxBounds.x = 0;
|
|
8119
|
+
else
|
|
8120
|
+
boxBounds.height += boxBounds.y, boxBounds.width = data.width, boxBounds.x = boxBounds.y = 0;
|
|
8040
8121
|
}
|
|
8122
|
+
if (secondLayout && data.flow && data.padding)
|
|
8123
|
+
copyAndSpread$1(boxBounds, boxBounds, data.padding, false, data.__autoSize ? null : (data.__autoWidth ? 'width' : 'height'));
|
|
8124
|
+
this.__updateNaturalSize();
|
|
8041
8125
|
}
|
|
8042
8126
|
else {
|
|
8043
8127
|
this.__updateRectBoxBounds();
|
|
@@ -8057,13 +8141,13 @@ let Box = class Box extends Group {
|
|
|
8057
8141
|
super.__updateRenderBounds();
|
|
8058
8142
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8059
8143
|
this.__updateRectRenderBounds();
|
|
8060
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds) ||
|
|
8144
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || !this.pathInputed || !this.__.cornerRadius;
|
|
8061
8145
|
}
|
|
8062
8146
|
else {
|
|
8063
8147
|
this.__updateRectRenderBounds();
|
|
8064
8148
|
}
|
|
8065
8149
|
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8066
|
-
if (
|
|
8150
|
+
if (!(this.__.__drawAfterFill = this.__.overflow === 'hide') && isOverflow)
|
|
8067
8151
|
add(renderBounds, childrenRenderBounds);
|
|
8068
8152
|
}
|
|
8069
8153
|
__updateRectRenderBounds() { }
|
|
@@ -8397,14 +8481,26 @@ __decorate([
|
|
|
8397
8481
|
Image = __decorate([
|
|
8398
8482
|
registerUI()
|
|
8399
8483
|
], Image);
|
|
8484
|
+
const MyImage = Image;
|
|
8400
8485
|
|
|
8401
8486
|
let Canvas = class Canvas extends Rect {
|
|
8402
8487
|
get __tag() { return 'Canvas'; }
|
|
8488
|
+
get ready() { return !this.url; }
|
|
8403
8489
|
constructor(data) {
|
|
8404
8490
|
super(data);
|
|
8405
8491
|
this.canvas = Creator.canvas(this.__);
|
|
8406
8492
|
this.context = this.canvas.context;
|
|
8407
8493
|
this.__.__isCanvas = this.__.__drawAfterFill = true;
|
|
8494
|
+
if (data && data.url)
|
|
8495
|
+
this.drawImage(data.url);
|
|
8496
|
+
}
|
|
8497
|
+
drawImage(url) {
|
|
8498
|
+
new LeaferImage({ url }).load((image) => {
|
|
8499
|
+
this.context.drawImage(image.view, 0, 0);
|
|
8500
|
+
this.url = undefined;
|
|
8501
|
+
this.paint();
|
|
8502
|
+
this.emitEvent(new ImageEvent(ImageEvent.LOADED, { image }));
|
|
8503
|
+
});
|
|
8408
8504
|
}
|
|
8409
8505
|
draw(ui, offset, scale, rotation) {
|
|
8410
8506
|
ui.__layout.update();
|
|
@@ -8421,19 +8517,18 @@ let Canvas = class Canvas extends Rect {
|
|
|
8421
8517
|
this.paint();
|
|
8422
8518
|
}
|
|
8423
8519
|
paint() {
|
|
8424
|
-
this.
|
|
8520
|
+
this.forceRender();
|
|
8425
8521
|
}
|
|
8426
8522
|
__drawAfterFill(canvas, _options) {
|
|
8427
|
-
const
|
|
8428
|
-
|
|
8429
|
-
if (this.__.cornerRadius || this.pathInputed) {
|
|
8523
|
+
const { width, height, cornerRadius } = this.__, { view } = this.canvas;
|
|
8524
|
+
if (cornerRadius || this.pathInputed) {
|
|
8430
8525
|
canvas.save();
|
|
8431
8526
|
canvas.clip();
|
|
8432
|
-
canvas.drawImage(
|
|
8527
|
+
canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height);
|
|
8433
8528
|
canvas.restore();
|
|
8434
8529
|
}
|
|
8435
8530
|
else {
|
|
8436
|
-
canvas.drawImage(
|
|
8531
|
+
canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height);
|
|
8437
8532
|
}
|
|
8438
8533
|
}
|
|
8439
8534
|
__updateSize() {
|
|
@@ -8463,7 +8558,7 @@ __decorate([
|
|
|
8463
8558
|
resizeType(100)
|
|
8464
8559
|
], Canvas.prototype, "height", void 0);
|
|
8465
8560
|
__decorate([
|
|
8466
|
-
resizeType(
|
|
8561
|
+
resizeType(1)
|
|
8467
8562
|
], Canvas.prototype, "pixelRatio", void 0);
|
|
8468
8563
|
__decorate([
|
|
8469
8564
|
resizeType(true)
|
|
@@ -8487,13 +8582,13 @@ let Text = class Text extends UI {
|
|
|
8487
8582
|
super(data);
|
|
8488
8583
|
}
|
|
8489
8584
|
__drawHitPath(canvas) {
|
|
8490
|
-
const { __lineHeight, __baseLine, __textDrawData: data } = this.__;
|
|
8585
|
+
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8491
8586
|
canvas.beginPath();
|
|
8492
8587
|
if (this.__.__letterSpacing < 0) {
|
|
8493
8588
|
this.__drawPathByData(canvas);
|
|
8494
8589
|
}
|
|
8495
8590
|
else {
|
|
8496
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight));
|
|
8591
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8497
8592
|
}
|
|
8498
8593
|
}
|
|
8499
8594
|
__drawPathByData(drawer, _data) {
|
|
@@ -8686,7 +8781,8 @@ let Pen = class Pen extends Group {
|
|
|
8686
8781
|
drawPoints(_points, _curve, _close) { return this; }
|
|
8687
8782
|
clearPath() { return this; }
|
|
8688
8783
|
paint() {
|
|
8689
|
-
this.pathElement.
|
|
8784
|
+
if (!this.pathElement.__layout.boxChanged)
|
|
8785
|
+
this.pathElement.forceUpdate('path');
|
|
8690
8786
|
}
|
|
8691
8787
|
};
|
|
8692
8788
|
__decorate([
|
|
@@ -8696,7 +8792,7 @@ __decorate([
|
|
|
8696
8792
|
penPathType()
|
|
8697
8793
|
], Pen.prototype, "path", void 0);
|
|
8698
8794
|
Pen = __decorate([
|
|
8699
|
-
useModule(PathCreator, ['set', 'beginPath', 'path']),
|
|
8795
|
+
useModule(PathCreator, ['set', 'beginPath', 'path', 'paint']),
|
|
8700
8796
|
registerUI()
|
|
8701
8797
|
], Pen);
|
|
8702
8798
|
function penPathType() {
|
|
@@ -8875,21 +8971,29 @@ class UIEvent extends Event {
|
|
|
8875
8971
|
constructor(params) {
|
|
8876
8972
|
super(params.type);
|
|
8877
8973
|
this.bubbles = true;
|
|
8974
|
+
this.getInner = this.getInnerPoint;
|
|
8975
|
+
this.getLocal = this.getLocalPoint;
|
|
8976
|
+
this.getPage = this.getPagePoint;
|
|
8878
8977
|
Object.assign(this, params);
|
|
8879
8978
|
}
|
|
8880
|
-
|
|
8881
|
-
|
|
8979
|
+
getBoxPoint(relative) {
|
|
8980
|
+
if (!relative)
|
|
8981
|
+
relative = this.current;
|
|
8982
|
+
return relative.getBoxPoint(this);
|
|
8882
8983
|
}
|
|
8883
|
-
|
|
8984
|
+
getInnerPoint(relative) {
|
|
8884
8985
|
if (!relative)
|
|
8885
8986
|
relative = this.current;
|
|
8886
8987
|
return relative.getInnerPoint(this);
|
|
8887
8988
|
}
|
|
8888
|
-
|
|
8989
|
+
getLocalPoint(relative) {
|
|
8889
8990
|
if (!relative)
|
|
8890
8991
|
relative = this.current;
|
|
8891
8992
|
return relative.getLocalPoint(this);
|
|
8892
8993
|
}
|
|
8994
|
+
getPagePoint() {
|
|
8995
|
+
return this.current.getPagePoint(this);
|
|
8996
|
+
}
|
|
8893
8997
|
static changeName(oldName, newName) {
|
|
8894
8998
|
EventCreator.changeName(oldName, newName);
|
|
8895
8999
|
}
|
|
@@ -8919,6 +9023,7 @@ PointerEvent.MENU_TAP = 'pointer.menu_tap';
|
|
|
8919
9023
|
PointerEvent = __decorate([
|
|
8920
9024
|
registerUIEvent()
|
|
8921
9025
|
], PointerEvent);
|
|
9026
|
+
const MyPointerEvent = PointerEvent;
|
|
8922
9027
|
|
|
8923
9028
|
const move = {};
|
|
8924
9029
|
let DragEvent = class DragEvent extends PointerEvent {
|
|
@@ -8996,7 +9101,7 @@ let DragEvent = class DragEvent extends PointerEvent {
|
|
|
8996
9101
|
}
|
|
8997
9102
|
getPageBounds() {
|
|
8998
9103
|
const total = this.getPageTotal();
|
|
8999
|
-
const start = this.
|
|
9104
|
+
const start = this.getPagePoint();
|
|
9000
9105
|
const bounds = {};
|
|
9001
9106
|
BoundsHelper.set(bounds, start.x - total.x, start.y - total.y, total.x, total.y);
|
|
9002
9107
|
BoundsHelper.unsign(bounds);
|
|
@@ -9018,6 +9123,7 @@ DragEvent.LEAVE = 'drag.leave';
|
|
|
9018
9123
|
DragEvent = __decorate([
|
|
9019
9124
|
registerUIEvent()
|
|
9020
9125
|
], DragEvent);
|
|
9126
|
+
const MyDragEvent = DragEvent;
|
|
9021
9127
|
|
|
9022
9128
|
let DropEvent = class DropEvent extends PointerEvent {
|
|
9023
9129
|
static setList(data) {
|
|
@@ -9099,36 +9205,32 @@ function addInteractionWindow(leafer) {
|
|
|
9099
9205
|
|
|
9100
9206
|
function document(leafer) {
|
|
9101
9207
|
addInteractionWindow(leafer);
|
|
9102
|
-
|
|
9103
|
-
|
|
9208
|
+
const { move, zoom } = leafer.config;
|
|
9209
|
+
move.scroll = 'limit';
|
|
9210
|
+
zoom.min = 1;
|
|
9211
|
+
}
|
|
9212
|
+
|
|
9213
|
+
function block(leafer) {
|
|
9214
|
+
const { config } = leafer;
|
|
9215
|
+
(config.wheel || (config.wheel = {})).preventDefault = false;
|
|
9216
|
+
(config.touch || (config.touch = {})).preventDefault = 'auto';
|
|
9104
9217
|
}
|
|
9105
9218
|
|
|
9106
9219
|
const debug$2 = Debug.get('LeaferTypeCreator');
|
|
9107
9220
|
const LeaferTypeCreator = {
|
|
9108
9221
|
list: {},
|
|
9109
9222
|
register(name, fn) {
|
|
9110
|
-
|
|
9111
|
-
debug$2.repeat(name);
|
|
9112
|
-
}
|
|
9113
|
-
else {
|
|
9114
|
-
list[name] = fn;
|
|
9115
|
-
}
|
|
9223
|
+
list[name] ? debug$2.repeat(name) : list[name] = fn;
|
|
9116
9224
|
},
|
|
9117
9225
|
run(name, leafer) {
|
|
9118
9226
|
const fn = list[name];
|
|
9119
|
-
|
|
9120
|
-
fn(leafer);
|
|
9121
|
-
}
|
|
9122
|
-
else {
|
|
9123
|
-
debug$2.error('no', name);
|
|
9124
|
-
}
|
|
9227
|
+
fn && fn(leafer);
|
|
9125
9228
|
}
|
|
9126
9229
|
};
|
|
9127
9230
|
const { list, register } = LeaferTypeCreator;
|
|
9128
|
-
register('draw', () => { });
|
|
9129
|
-
register('custom', () => { });
|
|
9130
9231
|
register('design', addInteractionWindow);
|
|
9131
9232
|
register('document', document);
|
|
9233
|
+
register('block', block);
|
|
9132
9234
|
|
|
9133
9235
|
const leafer = Leafer.prototype;
|
|
9134
9236
|
leafer.initType = function (type) {
|
|
@@ -9317,7 +9419,13 @@ const InteractionHelper = {
|
|
|
9317
9419
|
find.add(list[i]);
|
|
9318
9420
|
}
|
|
9319
9421
|
return find;
|
|
9320
|
-
}
|
|
9422
|
+
},
|
|
9423
|
+
pathCanDrag(path) {
|
|
9424
|
+
return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent.DRAG)));
|
|
9425
|
+
},
|
|
9426
|
+
pathHasOutside(path) {
|
|
9427
|
+
return path && path.list.some(item => item.isOutside);
|
|
9428
|
+
},
|
|
9321
9429
|
};
|
|
9322
9430
|
const I = InteractionHelper;
|
|
9323
9431
|
|
|
@@ -9577,7 +9685,7 @@ function emitEvent(leaf, type, data, capture, excludePath) {
|
|
|
9577
9685
|
if (leaf.destroyed)
|
|
9578
9686
|
return false;
|
|
9579
9687
|
if (leaf.__.hitSelf && !exclude(leaf, excludePath)) {
|
|
9580
|
-
if (State.updateEventStyle)
|
|
9688
|
+
if (State.updateEventStyle && !capture)
|
|
9581
9689
|
State.updateEventStyle(leaf, type);
|
|
9582
9690
|
if (leaf.hasEvent(type, capture)) {
|
|
9583
9691
|
data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
|
|
@@ -9627,15 +9735,18 @@ const config = {
|
|
|
9627
9735
|
swipeDistance: 20,
|
|
9628
9736
|
preventDefaultMenu: true
|
|
9629
9737
|
},
|
|
9738
|
+
touch: {
|
|
9739
|
+
preventDefault: true
|
|
9740
|
+
},
|
|
9630
9741
|
cursor: true,
|
|
9631
9742
|
keyEvent: true
|
|
9632
9743
|
};
|
|
9633
9744
|
|
|
9634
|
-
const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
|
|
9745
|
+
const { pathHasEventType, getMoveEventData, getZoomEventData, getRotateEventData, pathCanDrag, pathHasOutside } = InteractionHelper;
|
|
9635
9746
|
class InteractionBase {
|
|
9636
9747
|
get dragging() { return this.dragger.dragging; }
|
|
9637
9748
|
get transforming() { return this.transformer.transforming; }
|
|
9638
|
-
get moveMode() { return this.config.move.drag || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty; }
|
|
9749
|
+
get moveMode() { return this.config.move.drag === true || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty; }
|
|
9639
9750
|
get canHover() { return this.config.pointer.hover && !this.config.mobile; }
|
|
9640
9751
|
get isDragEmpty() { return this.config.move.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)); }
|
|
9641
9752
|
get isMobileDragEmpty() { return this.config.move.dragEmpty && !this.canHover && this.downData && this.isTreePath(this.downData); }
|
|
@@ -9644,7 +9755,7 @@ class InteractionBase {
|
|
|
9644
9755
|
get isHoldSpaceKey() { return this.config.move.holdSpaceKey && Keyboard.isHoldSpaceKey(); }
|
|
9645
9756
|
get hitRadius() { return this.config.pointer.hitRadius; }
|
|
9646
9757
|
constructor(target, canvas, selector, userConfig) {
|
|
9647
|
-
this.config = config;
|
|
9758
|
+
this.config = DataHelper.clone(config);
|
|
9648
9759
|
this.tapCount = 0;
|
|
9649
9760
|
this.downKeyMap = {};
|
|
9650
9761
|
this.target = target;
|
|
@@ -9679,7 +9790,7 @@ class InteractionBase {
|
|
|
9679
9790
|
this.tapWait();
|
|
9680
9791
|
this.longPressWait(data);
|
|
9681
9792
|
}
|
|
9682
|
-
this.
|
|
9793
|
+
this.waitRightTap = PointerButton.right(data);
|
|
9683
9794
|
this.dragger.setDragData(data);
|
|
9684
9795
|
if (!this.isHoldRightKey)
|
|
9685
9796
|
this.updateCursor(data);
|
|
@@ -9707,7 +9818,7 @@ class InteractionBase {
|
|
|
9707
9818
|
if (canDrag) {
|
|
9708
9819
|
if (this.waitTap)
|
|
9709
9820
|
this.pointerWaitCancel();
|
|
9710
|
-
this.
|
|
9821
|
+
this.waitRightTap = false;
|
|
9711
9822
|
}
|
|
9712
9823
|
this.dragger.checkDrag(data, canDrag);
|
|
9713
9824
|
}
|
|
@@ -9761,10 +9872,15 @@ class InteractionBase {
|
|
|
9761
9872
|
menu(data) {
|
|
9762
9873
|
this.findPath(data);
|
|
9763
9874
|
this.emit(PointerEvent.MENU, data);
|
|
9875
|
+
this.waitMenuTap = true;
|
|
9876
|
+
if (!this.downData && this.waitRightTap)
|
|
9877
|
+
this.menuTap(data);
|
|
9764
9878
|
}
|
|
9765
9879
|
menuTap(data) {
|
|
9766
|
-
if (this.waitMenuTap)
|
|
9880
|
+
if (this.waitRightTap && this.waitMenuTap) {
|
|
9767
9881
|
this.emit(PointerEvent.MENU_TAP, data);
|
|
9882
|
+
this.waitRightTap = this.waitMenuTap = false;
|
|
9883
|
+
}
|
|
9768
9884
|
}
|
|
9769
9885
|
move(data) {
|
|
9770
9886
|
this.transformer.move(data);
|
|
@@ -9896,11 +10012,11 @@ class InteractionBase {
|
|
|
9896
10012
|
return app.editor && (!data.path.has(app.editor) && data.path.has(app.tree) && !data.target.syncEventer);
|
|
9897
10013
|
}
|
|
9898
10014
|
checkPath(data, useDefaultPath) {
|
|
9899
|
-
if (useDefaultPath || this.
|
|
10015
|
+
if (useDefaultPath || (this.moveMode && !pathHasOutside(data.path)))
|
|
9900
10016
|
data.path = this.defaultPath;
|
|
9901
10017
|
}
|
|
9902
10018
|
canMove(data) {
|
|
9903
|
-
return this.moveMode
|
|
10019
|
+
return data && (this.moveMode || (this.config.move.drag === 'auto' && !pathCanDrag(data.path))) && !pathHasOutside(data.path);
|
|
9904
10020
|
}
|
|
9905
10021
|
isDrag(leaf) {
|
|
9906
10022
|
return this.dragger.getList().has(leaf);
|
|
@@ -10595,16 +10711,21 @@ function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, al
|
|
|
10595
10711
|
const { get: get$2, translate } = MatrixHelper;
|
|
10596
10712
|
const tempBox = new Bounds();
|
|
10597
10713
|
const tempPoint = {};
|
|
10714
|
+
const tempScaleData = {};
|
|
10598
10715
|
function createData(leafPaint, image, paint, box) {
|
|
10599
|
-
const { blendMode } = paint;
|
|
10716
|
+
const { blendMode, sync } = paint;
|
|
10600
10717
|
if (blendMode)
|
|
10601
10718
|
leafPaint.blendMode = blendMode;
|
|
10719
|
+
if (sync)
|
|
10720
|
+
leafPaint.sync = sync;
|
|
10602
10721
|
leafPaint.data = getPatternData(paint, box, image);
|
|
10603
10722
|
}
|
|
10604
10723
|
function getPatternData(paint, box, image) {
|
|
10605
10724
|
let { width, height } = image;
|
|
10606
10725
|
if (paint.padding)
|
|
10607
10726
|
box = tempBox.set(box).shrink(paint.padding);
|
|
10727
|
+
if (paint.mode === 'strench')
|
|
10728
|
+
paint.mode = 'stretch';
|
|
10608
10729
|
const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
|
|
10609
10730
|
const sameBox = box.width === width && box.height === height;
|
|
10610
10731
|
const data = { mode };
|
|
@@ -10618,13 +10739,10 @@ function getPatternData(paint, box, image) {
|
|
|
10618
10739
|
x += (box.width - width * scaleX) / 2, y += (box.height - height * scaleY) / 2;
|
|
10619
10740
|
}
|
|
10620
10741
|
}
|
|
10621
|
-
else if (size) {
|
|
10622
|
-
|
|
10623
|
-
|
|
10624
|
-
|
|
10625
|
-
else if (scale) {
|
|
10626
|
-
scaleX = typeof scale === 'number' ? scale : scale.x;
|
|
10627
|
-
scaleY = typeof scale === 'number' ? scale : scale.y;
|
|
10742
|
+
else if (scale || size) {
|
|
10743
|
+
MathHelper.getScaleData(scale, size, image, tempScaleData);
|
|
10744
|
+
scaleX = tempScaleData.scaleX;
|
|
10745
|
+
scaleY = tempScaleData.scaleY;
|
|
10628
10746
|
}
|
|
10629
10747
|
if (align) {
|
|
10630
10748
|
const imageBounds = { x, y, width: swapWidth, height: swapHeight };
|
|
@@ -10636,7 +10754,7 @@ function getPatternData(paint, box, image) {
|
|
|
10636
10754
|
if (offset)
|
|
10637
10755
|
x += offset.x, y += offset.y;
|
|
10638
10756
|
switch (mode) {
|
|
10639
|
-
case '
|
|
10757
|
+
case 'stretch':
|
|
10640
10758
|
if (!sameBox)
|
|
10641
10759
|
width = box.width, height = box.height;
|
|
10642
10760
|
break;
|
|
@@ -10663,7 +10781,7 @@ function getPatternData(paint, box, image) {
|
|
|
10663
10781
|
translate(data.transform, box.x, box.y);
|
|
10664
10782
|
}
|
|
10665
10783
|
}
|
|
10666
|
-
if (scaleX && mode !== '
|
|
10784
|
+
if (scaleX && mode !== 'stretch') {
|
|
10667
10785
|
data.scaleX = scaleX;
|
|
10668
10786
|
data.scaleY = scaleY;
|
|
10669
10787
|
}
|
|
@@ -10767,7 +10885,7 @@ const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
|
|
|
10767
10885
|
const { ceil, abs: abs$1 } = Math;
|
|
10768
10886
|
function createPattern(ui, paint, pixelRatio) {
|
|
10769
10887
|
let { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
10770
|
-
const id = scaleX + '-' + scaleY;
|
|
10888
|
+
const id = scaleX + '-' + scaleY + '-' + pixelRatio;
|
|
10771
10889
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
10772
10890
|
scaleX = abs$1(scaleX);
|
|
10773
10891
|
scaleY = abs$1(scaleY);
|
|
@@ -10829,7 +10947,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
10829
10947
|
const { abs } = Math;
|
|
10830
10948
|
function checkImage(ui, canvas, paint, allowPaint) {
|
|
10831
10949
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
10832
|
-
|
|
10950
|
+
const { pixelRatio } = canvas;
|
|
10951
|
+
if (!paint.data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
10833
10952
|
return false;
|
|
10834
10953
|
}
|
|
10835
10954
|
else {
|
|
@@ -10837,8 +10956,8 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
10837
10956
|
if (allowPaint) {
|
|
10838
10957
|
if (!data.repeat) {
|
|
10839
10958
|
let { width, height } = data;
|
|
10840
|
-
width *= abs(scaleX) *
|
|
10841
|
-
height *= abs(scaleY) *
|
|
10959
|
+
width *= abs(scaleX) * pixelRatio;
|
|
10960
|
+
height *= abs(scaleY) * pixelRatio;
|
|
10842
10961
|
if (data.scaleX) {
|
|
10843
10962
|
width *= data.scaleX;
|
|
10844
10963
|
height *= data.scaleY;
|
|
@@ -10863,15 +10982,15 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
10863
10982
|
return true;
|
|
10864
10983
|
}
|
|
10865
10984
|
else {
|
|
10866
|
-
if (!paint.style || Export.running) {
|
|
10867
|
-
createPattern(ui, paint,
|
|
10985
|
+
if (!paint.style || paint.sync || Export.running) {
|
|
10986
|
+
createPattern(ui, paint, pixelRatio);
|
|
10868
10987
|
}
|
|
10869
10988
|
else {
|
|
10870
10989
|
if (!paint.patternTask) {
|
|
10871
10990
|
paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
|
|
10872
10991
|
paint.patternTask = null;
|
|
10873
10992
|
if (canvas.bounds.hit(ui.__nowWorld))
|
|
10874
|
-
createPattern(ui, paint,
|
|
10993
|
+
createPattern(ui, paint, pixelRatio);
|
|
10875
10994
|
ui.forceUpdate('surface');
|
|
10876
10995
|
}), 300);
|
|
10877
10996
|
}
|
|
@@ -10935,14 +11054,16 @@ function linearGradient(paint, box) {
|
|
|
10935
11054
|
return data;
|
|
10936
11055
|
}
|
|
10937
11056
|
function applyStops(gradient, stops, opacity) {
|
|
10938
|
-
|
|
10939
|
-
|
|
10940
|
-
|
|
10941
|
-
|
|
10942
|
-
|
|
10943
|
-
|
|
10944
|
-
|
|
10945
|
-
|
|
11057
|
+
if (stops) {
|
|
11058
|
+
let stop;
|
|
11059
|
+
for (let i = 0, len = stops.length; i < len; i++) {
|
|
11060
|
+
stop = stops[i];
|
|
11061
|
+
if (typeof stop === 'string') {
|
|
11062
|
+
gradient.addColorStop(i / (len - 1), ColorConvert.string(stop, opacity));
|
|
11063
|
+
}
|
|
11064
|
+
else {
|
|
11065
|
+
gradient.addColorStop(stop.offset, ColorConvert.string(stop.color, opacity));
|
|
11066
|
+
}
|
|
10946
11067
|
}
|
|
10947
11068
|
}
|
|
10948
11069
|
}
|
|
@@ -11698,10 +11819,15 @@ const TextConvertModule = {
|
|
|
11698
11819
|
};
|
|
11699
11820
|
|
|
11700
11821
|
function string(color, opacity) {
|
|
11701
|
-
|
|
11702
|
-
|
|
11822
|
+
const doOpacity = typeof opacity === 'number' && opacity !== 1;
|
|
11823
|
+
if (typeof color === 'string') {
|
|
11824
|
+
if (doOpacity && ColorConvert.object)
|
|
11825
|
+
color = ColorConvert.object(color);
|
|
11826
|
+
else
|
|
11827
|
+
return color;
|
|
11828
|
+
}
|
|
11703
11829
|
let a = color.a === undefined ? 1 : color.a;
|
|
11704
|
-
if (
|
|
11830
|
+
if (doOpacity)
|
|
11705
11831
|
a *= opacity;
|
|
11706
11832
|
const rgb = color.r + ',' + color.g + ',' + color.b;
|
|
11707
11833
|
return a === 1 ? 'rgb(' + rgb + ')' : 'rgba(' + rgb + ',' + a + ')';
|
|
@@ -11733,6 +11859,7 @@ const ExportModule = {
|
|
|
11733
11859
|
export(leaf, filename, options) {
|
|
11734
11860
|
this.running = true;
|
|
11735
11861
|
const fileType = FileHelper.fileType(filename);
|
|
11862
|
+
const isDownload = filename.includes('.');
|
|
11736
11863
|
options = FileHelper.getExportOptions(options);
|
|
11737
11864
|
return addTask((success) => new Promise((resolve) => {
|
|
11738
11865
|
const over = (result) => {
|
|
@@ -11742,19 +11869,13 @@ const ExportModule = {
|
|
|
11742
11869
|
};
|
|
11743
11870
|
const { toURL } = Platform;
|
|
11744
11871
|
const { download } = Platform.origin;
|
|
11745
|
-
if (
|
|
11746
|
-
|
|
11747
|
-
|
|
11748
|
-
else if (fileType === 'json') {
|
|
11749
|
-
download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
11750
|
-
return over({ data: true });
|
|
11872
|
+
if (fileType === 'json') {
|
|
11873
|
+
isDownload && download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
11874
|
+
return over({ data: isDownload ? true : leaf.toJSON(options.json) });
|
|
11751
11875
|
}
|
|
11752
|
-
if (
|
|
11753
|
-
|
|
11754
|
-
|
|
11755
|
-
else if (fileType === 'svg') {
|
|
11756
|
-
download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
11757
|
-
return over({ data: true });
|
|
11876
|
+
if (fileType === 'svg') {
|
|
11877
|
+
isDownload && download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
11878
|
+
return over({ data: isDownload ? true : leaf.toSVG() });
|
|
11758
11879
|
}
|
|
11759
11880
|
const { leafer } = leaf;
|
|
11760
11881
|
if (leafer) {
|
|
@@ -11763,14 +11884,8 @@ const ExportModule = {
|
|
|
11763
11884
|
let renderBounds, trimBounds, scaleX = 1, scaleY = 1;
|
|
11764
11885
|
const { worldTransform, isLeafer, isFrame } = leaf;
|
|
11765
11886
|
const { slice, trim, onCanvas } = options;
|
|
11766
|
-
let scale = options.scale || 1;
|
|
11767
|
-
let pixelRatio = options.pixelRatio || 1;
|
|
11768
11887
|
const smooth = options.smooth === undefined ? leafer.config.smooth : options.smooth;
|
|
11769
11888
|
const contextSettings = options.contextSettings || leafer.config.contextSettings;
|
|
11770
|
-
if (leaf.isApp) {
|
|
11771
|
-
scale *= pixelRatio;
|
|
11772
|
-
pixelRatio = leaf.app.pixelRatio;
|
|
11773
|
-
}
|
|
11774
11889
|
const screenshot = options.screenshot || leaf.isApp;
|
|
11775
11890
|
const fill = (isLeafer && screenshot) ? (options.fill === undefined ? leaf.fill : options.fill) : options.fill;
|
|
11776
11891
|
const needFill = FileHelper.isOpaqueImage(filename) || fill, matrix = new Matrix();
|
|
@@ -11804,9 +11919,17 @@ const ExportModule = {
|
|
|
11804
11919
|
}
|
|
11805
11920
|
renderBounds = leaf.getBounds('render', relative);
|
|
11806
11921
|
}
|
|
11807
|
-
const {
|
|
11922
|
+
const scaleData = { scaleX: 1, scaleY: 1 };
|
|
11923
|
+
MathHelper.getScaleData(options.scale, options.size, renderBounds, scaleData);
|
|
11924
|
+
let pixelRatio = options.pixelRatio || 1;
|
|
11925
|
+
if (leaf.isApp) {
|
|
11926
|
+
scaleData.scaleX *= pixelRatio;
|
|
11927
|
+
scaleData.scaleY *= pixelRatio;
|
|
11928
|
+
pixelRatio = leaf.app.pixelRatio;
|
|
11929
|
+
}
|
|
11930
|
+
const { x, y, width, height } = new Bounds(renderBounds).scale(scaleData.scaleX, scaleData.scaleY);
|
|
11931
|
+
const renderOptions = { matrix: matrix.scale(1 / scaleData.scaleX, 1 / scaleData.scaleY).invert().translate(-x, -y).withScale(1 / scaleX * scaleData.scaleX, 1 / scaleY * scaleData.scaleY) };
|
|
11808
11932
|
let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
|
|
11809
|
-
const renderOptions = { matrix: matrix.scale(1 / scale).invert().translate(-x, -y).withScale(1 / scaleX * scale, 1 / scaleY * scale) };
|
|
11810
11933
|
let sliceLeaf;
|
|
11811
11934
|
if (slice) {
|
|
11812
11935
|
sliceLeaf = leaf;
|
|
@@ -11916,4 +12039,4 @@ Object.assign(Creator, {
|
|
|
11916
12039
|
});
|
|
11917
12040
|
useCanvas();
|
|
11918
12041
|
|
|
11919
|
-
export { AlignHelper,
|
|
12042
|
+
export { AlignHelper, Answer, App, AroundHelper, AutoBounds, BezierHelper, Bounds, BoundsHelper, Box, BoxData, Branch, BranchHelper, BranchRender, Canvas, CanvasData, CanvasManager, ChildEvent, ColorConvert, Creator, Cursor, DataHelper, Debug, Direction4, Direction9, DragEvent, DropEvent, Effect, Ellipse, EllipseData, EllipseHelper, Event, EventCreator, Eventer, Export, FileHelper, Frame, FrameData, Group, GroupData, HitCanvasManager, Image, ImageData, ImageEvent, ImageManager, IncrementId, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, LeaferTypeCreator, Line, LineData, MathHelper, Matrix, MatrixHelper, MoveEvent, MultiTouchHelper, 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, Platform, Point, PointHelper, PointerButton, PointerEvent, Polygon, PolygonData, PropertyEvent, Rect, RectData, RectHelper, RectRender, RenderEvent, Renderer, ResizeEvent, 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, addInteractionWindow, affectRenderBoundsType, affectStrokeBoundsType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, isNull, layoutProcessor, maskType, naturalBoundsType, needPlugin, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
|