leafer-ui 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/README.md +8 -4
- package/dist/web.cjs +3206 -0
- package/dist/web.esm.js +68 -55
- package/dist/web.esm.min.js +1 -1
- package/dist/web.js +582 -453
- package/dist/web.min.cjs +1 -0
- package/dist/web.min.js +1 -1
- package/dist/web.module.js +576 -450
- package/dist/web.module.min.js +1 -1
- package/package.json +18 -12
- package/src/index.ts +2 -0
- package/types/index.d.ts +1 -0
package/dist/web.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$f = 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$8 = 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
|
const debug$7 = Debug.get('LeaferCanvas');
|
|
5792
5920
|
class LeaferCanvas extends LeaferCanvasBase {
|
|
@@ -6186,9 +6314,13 @@ function updateBounds(boundsList) {
|
|
|
6186
6314
|
});
|
|
6187
6315
|
}
|
|
6188
6316
|
function updateChange(updateList) {
|
|
6317
|
+
let layout;
|
|
6189
6318
|
updateList.list.forEach(leaf => {
|
|
6190
|
-
|
|
6319
|
+
layout = leaf.__layout;
|
|
6320
|
+
if (layout.opacityChanged)
|
|
6191
6321
|
updateAllWorldOpacity(leaf);
|
|
6322
|
+
if (layout.stateStyleChanged)
|
|
6323
|
+
setTimeout(() => layout.stateStyleChanged && leaf.updateState());
|
|
6192
6324
|
leaf.__updateChange();
|
|
6193
6325
|
});
|
|
6194
6326
|
}
|
|
@@ -6554,7 +6686,6 @@ class Renderer {
|
|
|
6554
6686
|
Platform.requestRender(() => {
|
|
6555
6687
|
this.FPS = Math.min(60, Math.ceil(1000 / (Date.now() - startTime)));
|
|
6556
6688
|
if (this.running) {
|
|
6557
|
-
this.target.emit(AnimateEvent.FRAME);
|
|
6558
6689
|
if (this.changed && this.canvas.view)
|
|
6559
6690
|
this.render();
|
|
6560
6691
|
this.target.emit(RenderEvent.NEXT);
|
|
@@ -6899,36 +7030,6 @@ Object.assign(Creator, {
|
|
|
6899
7030
|
});
|
|
6900
7031
|
Platform.layout = Layouter.fullLayout;
|
|
6901
7032
|
|
|
6902
|
-
const TextConvert = {};
|
|
6903
|
-
const ColorConvert = {};
|
|
6904
|
-
const PathArrow = {};
|
|
6905
|
-
const Paint = {};
|
|
6906
|
-
const PaintImage = {};
|
|
6907
|
-
const PaintGradient = {};
|
|
6908
|
-
const Effect = {};
|
|
6909
|
-
const Export = {};
|
|
6910
|
-
const State = {};
|
|
6911
|
-
|
|
6912
|
-
function stateType(defaultValue) {
|
|
6913
|
-
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6914
|
-
set(value) {
|
|
6915
|
-
this.__setAttr(key, value);
|
|
6916
|
-
this.waitLeafer(() => { if (State.setStyle)
|
|
6917
|
-
State.setStyle(this, key + 'Style', value); });
|
|
6918
|
-
}
|
|
6919
|
-
}));
|
|
6920
|
-
}
|
|
6921
|
-
function arrowType(defaultValue) {
|
|
6922
|
-
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6923
|
-
set(value) {
|
|
6924
|
-
if (this.__setAttr(key, value)) {
|
|
6925
|
-
const data = this.__;
|
|
6926
|
-
data.__useArrow = data.startArrow !== 'none' || data.endArrow !== 'none';
|
|
6927
|
-
doStrokeType(this);
|
|
6928
|
-
}
|
|
6929
|
-
}
|
|
6930
|
-
}));
|
|
6931
|
-
}
|
|
6932
7033
|
function effectType(defaultValue) {
|
|
6933
7034
|
return decorateLeafAttr(defaultValue, (key) => attr({
|
|
6934
7035
|
set(value) {
|
|
@@ -6963,10 +7064,33 @@ function zoomLayerType() {
|
|
|
6963
7064
|
};
|
|
6964
7065
|
}
|
|
6965
7066
|
|
|
7067
|
+
const TextConvert = {};
|
|
7068
|
+
const ColorConvert = {};
|
|
7069
|
+
const PathArrow = {};
|
|
7070
|
+
const Paint = {};
|
|
7071
|
+
const PaintImage = {};
|
|
7072
|
+
const PaintGradient = {};
|
|
7073
|
+
const Effect = {};
|
|
7074
|
+
const Export = {};
|
|
7075
|
+
const State = {
|
|
7076
|
+
setStyleName(_leaf, _styleName, _value) { return needPlugin('state'); },
|
|
7077
|
+
set(_leaf, _stateName) { return needPlugin('state'); }
|
|
7078
|
+
};
|
|
7079
|
+
const Transition = {
|
|
7080
|
+
list: {},
|
|
7081
|
+
register(attrName, fn) {
|
|
7082
|
+
Transition.list[attrName] = fn;
|
|
7083
|
+
},
|
|
7084
|
+
get(attrName) {
|
|
7085
|
+
return Transition.list[attrName];
|
|
7086
|
+
}
|
|
7087
|
+
};
|
|
7088
|
+
|
|
6966
7089
|
const { parse } = PathConvert;
|
|
6967
7090
|
const emptyPaint = {};
|
|
6968
7091
|
const debug$4 = Debug.get('UIData');
|
|
6969
7092
|
class UIData extends LeafData {
|
|
7093
|
+
get scale() { const { scaleX, scaleY } = this; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX; }
|
|
6970
7094
|
get __strokeWidth() {
|
|
6971
7095
|
const { strokeWidth, strokeWidthFixed } = this;
|
|
6972
7096
|
if (strokeWidthFixed) {
|
|
@@ -6985,9 +7109,10 @@ class UIData extends LeafData {
|
|
|
6985
7109
|
get __autoSide() { return !this._width || !this._height; }
|
|
6986
7110
|
get __autoSize() { return !this._width && !this._height; }
|
|
6987
7111
|
setVisible(value) {
|
|
6988
|
-
if (this.__leaf.leafer)
|
|
6989
|
-
this.__leaf.leafer.watcher.hasVisible = true;
|
|
6990
7112
|
this._visible = value;
|
|
7113
|
+
const { leafer } = this.__leaf;
|
|
7114
|
+
if (leafer)
|
|
7115
|
+
leafer.watcher.hasVisible = true;
|
|
6991
7116
|
}
|
|
6992
7117
|
setWidth(value) {
|
|
6993
7118
|
if (value < 0) {
|
|
@@ -7111,6 +7236,11 @@ class BoxData extends GroupData {
|
|
|
7111
7236
|
}
|
|
7112
7237
|
|
|
7113
7238
|
class LeaferData extends GroupData {
|
|
7239
|
+
__getInputData() {
|
|
7240
|
+
const data = super.__getInputData();
|
|
7241
|
+
canvasSizeAttrs.forEach(key => delete data[key]);
|
|
7242
|
+
return data;
|
|
7243
|
+
}
|
|
7114
7244
|
}
|
|
7115
7245
|
|
|
7116
7246
|
class FrameData extends BoxData {
|
|
@@ -7173,7 +7303,7 @@ class ImageData extends RectData {
|
|
|
7173
7303
|
__setImageFill(value) {
|
|
7174
7304
|
if (this.__leaf.image)
|
|
7175
7305
|
this.__leaf.image = null;
|
|
7176
|
-
this.fill = value ? { type: 'image', mode: '
|
|
7306
|
+
this.fill = value ? { type: 'image', mode: 'stretch', url: value } : undefined;
|
|
7177
7307
|
}
|
|
7178
7308
|
__getData() {
|
|
7179
7309
|
const data = super.__getData();
|
|
@@ -7188,6 +7318,11 @@ class ImageData extends RectData {
|
|
|
7188
7318
|
}
|
|
7189
7319
|
|
|
7190
7320
|
class CanvasData extends RectData {
|
|
7321
|
+
__getInputData() {
|
|
7322
|
+
const data = super.__getInputData();
|
|
7323
|
+
data.url = this.__leaf.canvas.toDataURL('image/png');
|
|
7324
|
+
return data;
|
|
7325
|
+
}
|
|
7191
7326
|
}
|
|
7192
7327
|
|
|
7193
7328
|
const UIBounds = {
|
|
@@ -7358,19 +7493,8 @@ var UI_1;
|
|
|
7358
7493
|
let UI = UI_1 = class UI extends Leaf {
|
|
7359
7494
|
get app() { return this.leafer && this.leafer.app; }
|
|
7360
7495
|
get isFrame() { return false; }
|
|
7361
|
-
set scale(value) {
|
|
7362
|
-
|
|
7363
|
-
this.scaleX = this.scaleY = value;
|
|
7364
|
-
}
|
|
7365
|
-
else {
|
|
7366
|
-
this.scaleX = value.x;
|
|
7367
|
-
this.scaleY = value.y;
|
|
7368
|
-
}
|
|
7369
|
-
}
|
|
7370
|
-
get scale() {
|
|
7371
|
-
const { scaleX, scaleY } = this;
|
|
7372
|
-
return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX;
|
|
7373
|
-
}
|
|
7496
|
+
set scale(value) { MathHelper.assignScale(this, value); }
|
|
7497
|
+
get scale() { return this.__.scale; }
|
|
7374
7498
|
get pen() {
|
|
7375
7499
|
const { path } = this.__;
|
|
7376
7500
|
pen.set(this.path = path || []);
|
|
@@ -7385,8 +7509,15 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7385
7509
|
super(data);
|
|
7386
7510
|
}
|
|
7387
7511
|
reset(_data) { }
|
|
7388
|
-
set(data) {
|
|
7389
|
-
|
|
7512
|
+
set(data, isTemp) {
|
|
7513
|
+
if (isTemp) {
|
|
7514
|
+
this.lockNormalStyle = true;
|
|
7515
|
+
Object.assign(this, data);
|
|
7516
|
+
this.lockNormalStyle = false;
|
|
7517
|
+
}
|
|
7518
|
+
else {
|
|
7519
|
+
Object.assign(this, data);
|
|
7520
|
+
}
|
|
7390
7521
|
}
|
|
7391
7522
|
get(name) {
|
|
7392
7523
|
return typeof name === 'string' ? this.__.__getInput(name) : this.__.__getInputData(name);
|
|
@@ -7449,11 +7580,18 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7449
7580
|
drawer.rect(x, y, width, height);
|
|
7450
7581
|
}
|
|
7451
7582
|
}
|
|
7583
|
+
animate(_keyframe, _options, _type, _isTemp) {
|
|
7584
|
+
return needPlugin('animate');
|
|
7585
|
+
}
|
|
7586
|
+
killAnimate(_type) { }
|
|
7452
7587
|
export(filename, options) {
|
|
7453
7588
|
return Export.export(this, filename, options);
|
|
7454
7589
|
}
|
|
7455
|
-
clone() {
|
|
7456
|
-
|
|
7590
|
+
clone(newData) {
|
|
7591
|
+
const json = this.toJSON();
|
|
7592
|
+
if (newData)
|
|
7593
|
+
Object.assign(json, newData);
|
|
7594
|
+
return UI_1.one(json);
|
|
7457
7595
|
}
|
|
7458
7596
|
static one(data, x, y, width, height) {
|
|
7459
7597
|
return UICreator.get(data.tag || this.prototype.__tag, data, x, y, width, height);
|
|
@@ -7469,6 +7607,8 @@ let UI = UI_1 = class UI extends Leaf {
|
|
|
7469
7607
|
static setEditInner(_editorName) { }
|
|
7470
7608
|
destroy() {
|
|
7471
7609
|
this.fill = this.stroke = null;
|
|
7610
|
+
if (this.__animate)
|
|
7611
|
+
this.killAnimate();
|
|
7472
7612
|
super.destroy();
|
|
7473
7613
|
}
|
|
7474
7614
|
};
|
|
@@ -7496,12 +7636,6 @@ __decorate([
|
|
|
7496
7636
|
__decorate([
|
|
7497
7637
|
visibleType(true)
|
|
7498
7638
|
], UI.prototype, "visible", void 0);
|
|
7499
|
-
__decorate([
|
|
7500
|
-
stateType(false)
|
|
7501
|
-
], UI.prototype, "selected", void 0);
|
|
7502
|
-
__decorate([
|
|
7503
|
-
stateType(false)
|
|
7504
|
-
], UI.prototype, "disabled", void 0);
|
|
7505
7639
|
__decorate([
|
|
7506
7640
|
surfaceType(false)
|
|
7507
7641
|
], UI.prototype, "locked", void 0);
|
|
@@ -7574,45 +7708,9 @@ __decorate([
|
|
|
7574
7708
|
__decorate([
|
|
7575
7709
|
pathType(true)
|
|
7576
7710
|
], UI.prototype, "closed", void 0);
|
|
7577
|
-
__decorate([
|
|
7578
|
-
autoLayoutType(false)
|
|
7579
|
-
], UI.prototype, "flow", void 0);
|
|
7580
7711
|
__decorate([
|
|
7581
7712
|
boundsType(0)
|
|
7582
7713
|
], UI.prototype, "padding", void 0);
|
|
7583
|
-
__decorate([
|
|
7584
|
-
boundsType(0)
|
|
7585
|
-
], UI.prototype, "gap", void 0);
|
|
7586
|
-
__decorate([
|
|
7587
|
-
boundsType('top-left')
|
|
7588
|
-
], UI.prototype, "flowAlign", void 0);
|
|
7589
|
-
__decorate([
|
|
7590
|
-
boundsType(false)
|
|
7591
|
-
], UI.prototype, "flowWrap", void 0);
|
|
7592
|
-
__decorate([
|
|
7593
|
-
boundsType('box')
|
|
7594
|
-
], UI.prototype, "itemBox", void 0);
|
|
7595
|
-
__decorate([
|
|
7596
|
-
boundsType(true)
|
|
7597
|
-
], UI.prototype, "inFlow", void 0);
|
|
7598
|
-
__decorate([
|
|
7599
|
-
boundsType()
|
|
7600
|
-
], UI.prototype, "autoWidth", void 0);
|
|
7601
|
-
__decorate([
|
|
7602
|
-
boundsType()
|
|
7603
|
-
], UI.prototype, "autoHeight", void 0);
|
|
7604
|
-
__decorate([
|
|
7605
|
-
boundsType()
|
|
7606
|
-
], UI.prototype, "lockRatio", void 0);
|
|
7607
|
-
__decorate([
|
|
7608
|
-
boundsType()
|
|
7609
|
-
], UI.prototype, "autoBox", void 0);
|
|
7610
|
-
__decorate([
|
|
7611
|
-
boundsType()
|
|
7612
|
-
], UI.prototype, "widthRange", void 0);
|
|
7613
|
-
__decorate([
|
|
7614
|
-
boundsType()
|
|
7615
|
-
], UI.prototype, "heightRange", void 0);
|
|
7616
7714
|
__decorate([
|
|
7617
7715
|
dataType(false)
|
|
7618
7716
|
], UI.prototype, "draggable", void 0);
|
|
@@ -7676,12 +7774,6 @@ __decorate([
|
|
|
7676
7774
|
__decorate([
|
|
7677
7775
|
strokeType(10)
|
|
7678
7776
|
], UI.prototype, "miterLimit", void 0);
|
|
7679
|
-
__decorate([
|
|
7680
|
-
arrowType('none')
|
|
7681
|
-
], UI.prototype, "startArrow", void 0);
|
|
7682
|
-
__decorate([
|
|
7683
|
-
arrowType('none')
|
|
7684
|
-
], UI.prototype, "endArrow", void 0);
|
|
7685
7777
|
__decorate([
|
|
7686
7778
|
pathType(0)
|
|
7687
7779
|
], UI.prototype, "cornerRadius", void 0);
|
|
@@ -7703,24 +7795,6 @@ __decorate([
|
|
|
7703
7795
|
__decorate([
|
|
7704
7796
|
effectType()
|
|
7705
7797
|
], UI.prototype, "grayscale", void 0);
|
|
7706
|
-
__decorate([
|
|
7707
|
-
dataType()
|
|
7708
|
-
], UI.prototype, "normalStyle", void 0);
|
|
7709
|
-
__decorate([
|
|
7710
|
-
dataType()
|
|
7711
|
-
], UI.prototype, "hoverStyle", void 0);
|
|
7712
|
-
__decorate([
|
|
7713
|
-
dataType()
|
|
7714
|
-
], UI.prototype, "pressStyle", void 0);
|
|
7715
|
-
__decorate([
|
|
7716
|
-
dataType()
|
|
7717
|
-
], UI.prototype, "focusStyle", void 0);
|
|
7718
|
-
__decorate([
|
|
7719
|
-
dataType()
|
|
7720
|
-
], UI.prototype, "selectedStyle", void 0);
|
|
7721
|
-
__decorate([
|
|
7722
|
-
dataType()
|
|
7723
|
-
], UI.prototype, "disabledStyle", void 0);
|
|
7724
7798
|
__decorate([
|
|
7725
7799
|
dataType({})
|
|
7726
7800
|
], UI.prototype, "data", void 0);
|
|
@@ -7747,7 +7821,7 @@ let Group = class Group extends UI {
|
|
|
7747
7821
|
if (!this.children)
|
|
7748
7822
|
this.children = [];
|
|
7749
7823
|
}
|
|
7750
|
-
set(data) {
|
|
7824
|
+
set(data, isTemp) {
|
|
7751
7825
|
if (data.children) {
|
|
7752
7826
|
const { children } = data;
|
|
7753
7827
|
delete data.children;
|
|
@@ -7757,7 +7831,7 @@ let Group = class Group extends UI {
|
|
|
7757
7831
|
else {
|
|
7758
7832
|
this.clear();
|
|
7759
7833
|
}
|
|
7760
|
-
super.set(data);
|
|
7834
|
+
super.set(data, isTemp);
|
|
7761
7835
|
let child;
|
|
7762
7836
|
children.forEach(childData => {
|
|
7763
7837
|
child = childData.__ ? childData : UICreator.get(childData.tag, childData);
|
|
@@ -7766,7 +7840,7 @@ let Group = class Group extends UI {
|
|
|
7766
7840
|
data.children = children;
|
|
7767
7841
|
}
|
|
7768
7842
|
else {
|
|
7769
|
-
super.set(data);
|
|
7843
|
+
super.set(data, isTemp);
|
|
7770
7844
|
}
|
|
7771
7845
|
}
|
|
7772
7846
|
toJSON(options) {
|
|
@@ -8093,13 +8167,20 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8093
8167
|
}
|
|
8094
8168
|
}
|
|
8095
8169
|
zoom(_zoomType, _padding, _fixedScale) {
|
|
8096
|
-
return
|
|
8170
|
+
return needPlugin('view');
|
|
8097
8171
|
}
|
|
8098
8172
|
getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
|
|
8099
8173
|
getValidScale(changeScale) { return changeScale; }
|
|
8100
8174
|
getWorldPointByClient(clientPoint, updateClient) {
|
|
8101
8175
|
return this.interaction && this.interaction.getLocal(clientPoint, updateClient);
|
|
8102
8176
|
}
|
|
8177
|
+
getPagePointByClient(clientPoint, updateClient) {
|
|
8178
|
+
return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient));
|
|
8179
|
+
}
|
|
8180
|
+
updateClientBounds() {
|
|
8181
|
+
this.canvas && this.canvas.updateClientBounds();
|
|
8182
|
+
}
|
|
8183
|
+
receiveEvent(_event) { }
|
|
8103
8184
|
__checkUpdateLayout() {
|
|
8104
8185
|
this.__layout.update();
|
|
8105
8186
|
}
|
|
@@ -8183,7 +8264,7 @@ Rect = __decorate([
|
|
|
8183
8264
|
const rect$1 = Rect.prototype;
|
|
8184
8265
|
const group$1 = Group.prototype;
|
|
8185
8266
|
const childrenRenderBounds = {};
|
|
8186
|
-
const { copy: copy$3, add, includes: includes$1 } = BoundsHelper;
|
|
8267
|
+
const { copy: copy$3, add, includes: includes$1, copyAndSpread: copyAndSpread$1 } = BoundsHelper;
|
|
8187
8268
|
let Box = class Box extends Group {
|
|
8188
8269
|
get __tag() { return 'Box'; }
|
|
8189
8270
|
get isBranchLeaf() { return true; }
|
|
@@ -8197,20 +8278,23 @@ let Box = class Box extends Group {
|
|
|
8197
8278
|
return this.__updateRectRenderSpread() || -1;
|
|
8198
8279
|
}
|
|
8199
8280
|
__updateRectBoxBounds() { }
|
|
8200
|
-
__updateBoxBounds() {
|
|
8281
|
+
__updateBoxBounds(secondLayout) {
|
|
8201
8282
|
const data = this.__;
|
|
8202
8283
|
if (this.children.length) {
|
|
8203
8284
|
if (data.__autoSide) {
|
|
8204
8285
|
if (this.leafer && this.leafer.ready)
|
|
8205
8286
|
this.leafer.layouter.addExtra(this);
|
|
8206
8287
|
super.__updateBoxBounds();
|
|
8288
|
+
const { boxBounds } = this.__layout;
|
|
8207
8289
|
if (!data.__autoSize) {
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
b.width += b.x, b.height = data.height, b.y = b.x = 0;
|
|
8290
|
+
if (data.__autoWidth)
|
|
8291
|
+
boxBounds.width += boxBounds.x, boxBounds.height = data.height, boxBounds.y = boxBounds.x = 0;
|
|
8292
|
+
else
|
|
8293
|
+
boxBounds.height += boxBounds.y, boxBounds.width = data.width, boxBounds.x = boxBounds.y = 0;
|
|
8213
8294
|
}
|
|
8295
|
+
if (secondLayout && data.flow && data.padding)
|
|
8296
|
+
copyAndSpread$1(boxBounds, boxBounds, data.padding, false, data.__autoSize ? null : (data.__autoWidth ? 'width' : 'height'));
|
|
8297
|
+
this.__updateNaturalSize();
|
|
8214
8298
|
}
|
|
8215
8299
|
else {
|
|
8216
8300
|
this.__updateRectBoxBounds();
|
|
@@ -8230,13 +8314,13 @@ let Box = class Box extends Group {
|
|
|
8230
8314
|
super.__updateRenderBounds();
|
|
8231
8315
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8232
8316
|
this.__updateRectRenderBounds();
|
|
8233
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds) ||
|
|
8317
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || !this.pathInputed || !this.__.cornerRadius;
|
|
8234
8318
|
}
|
|
8235
8319
|
else {
|
|
8236
8320
|
this.__updateRectRenderBounds();
|
|
8237
8321
|
}
|
|
8238
8322
|
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8239
|
-
if (
|
|
8323
|
+
if (!(this.__.__drawAfterFill = this.__.overflow === 'hide') && isOverflow)
|
|
8240
8324
|
add(renderBounds, childrenRenderBounds);
|
|
8241
8325
|
}
|
|
8242
8326
|
__updateRectRenderBounds() { }
|
|
@@ -8570,14 +8654,26 @@ __decorate([
|
|
|
8570
8654
|
Image$1 = __decorate([
|
|
8571
8655
|
registerUI()
|
|
8572
8656
|
], Image$1);
|
|
8657
|
+
const MyImage = Image$1;
|
|
8573
8658
|
|
|
8574
8659
|
let Canvas = class Canvas extends Rect {
|
|
8575
8660
|
get __tag() { return 'Canvas'; }
|
|
8661
|
+
get ready() { return !this.url; }
|
|
8576
8662
|
constructor(data) {
|
|
8577
8663
|
super(data);
|
|
8578
8664
|
this.canvas = Creator.canvas(this.__);
|
|
8579
8665
|
this.context = this.canvas.context;
|
|
8580
8666
|
this.__.__isCanvas = this.__.__drawAfterFill = true;
|
|
8667
|
+
if (data && data.url)
|
|
8668
|
+
this.drawImage(data.url);
|
|
8669
|
+
}
|
|
8670
|
+
drawImage(url) {
|
|
8671
|
+
new LeaferImage({ url }).load((image) => {
|
|
8672
|
+
this.context.drawImage(image.view, 0, 0);
|
|
8673
|
+
this.url = undefined;
|
|
8674
|
+
this.paint();
|
|
8675
|
+
this.emitEvent(new ImageEvent(ImageEvent.LOADED, { image }));
|
|
8676
|
+
});
|
|
8581
8677
|
}
|
|
8582
8678
|
draw(ui, offset, scale, rotation) {
|
|
8583
8679
|
ui.__layout.update();
|
|
@@ -8594,19 +8690,18 @@ let Canvas = class Canvas extends Rect {
|
|
|
8594
8690
|
this.paint();
|
|
8595
8691
|
}
|
|
8596
8692
|
paint() {
|
|
8597
|
-
this.
|
|
8693
|
+
this.forceRender();
|
|
8598
8694
|
}
|
|
8599
8695
|
__drawAfterFill(canvas, _options) {
|
|
8600
|
-
const
|
|
8601
|
-
|
|
8602
|
-
if (this.__.cornerRadius || this.pathInputed) {
|
|
8696
|
+
const { width, height, cornerRadius } = this.__, { view } = this.canvas;
|
|
8697
|
+
if (cornerRadius || this.pathInputed) {
|
|
8603
8698
|
canvas.save();
|
|
8604
8699
|
canvas.clip();
|
|
8605
|
-
canvas.drawImage(
|
|
8700
|
+
canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height);
|
|
8606
8701
|
canvas.restore();
|
|
8607
8702
|
}
|
|
8608
8703
|
else {
|
|
8609
|
-
canvas.drawImage(
|
|
8704
|
+
canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height);
|
|
8610
8705
|
}
|
|
8611
8706
|
}
|
|
8612
8707
|
__updateSize() {
|
|
@@ -8636,7 +8731,7 @@ __decorate([
|
|
|
8636
8731
|
resizeType(100)
|
|
8637
8732
|
], Canvas.prototype, "height", void 0);
|
|
8638
8733
|
__decorate([
|
|
8639
|
-
resizeType(
|
|
8734
|
+
resizeType(1)
|
|
8640
8735
|
], Canvas.prototype, "pixelRatio", void 0);
|
|
8641
8736
|
__decorate([
|
|
8642
8737
|
resizeType(true)
|
|
@@ -8660,13 +8755,13 @@ let Text = class Text extends UI {
|
|
|
8660
8755
|
super(data);
|
|
8661
8756
|
}
|
|
8662
8757
|
__drawHitPath(canvas) {
|
|
8663
|
-
const { __lineHeight, __baseLine, __textDrawData: data } = this.__;
|
|
8758
|
+
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8664
8759
|
canvas.beginPath();
|
|
8665
8760
|
if (this.__.__letterSpacing < 0) {
|
|
8666
8761
|
this.__drawPathByData(canvas);
|
|
8667
8762
|
}
|
|
8668
8763
|
else {
|
|
8669
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight));
|
|
8764
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8670
8765
|
}
|
|
8671
8766
|
}
|
|
8672
8767
|
__drawPathByData(drawer, _data) {
|
|
@@ -8859,7 +8954,8 @@ let Pen = class Pen extends Group {
|
|
|
8859
8954
|
drawPoints(_points, _curve, _close) { return this; }
|
|
8860
8955
|
clearPath() { return this; }
|
|
8861
8956
|
paint() {
|
|
8862
|
-
this.pathElement.
|
|
8957
|
+
if (!this.pathElement.__layout.boxChanged)
|
|
8958
|
+
this.pathElement.forceUpdate('path');
|
|
8863
8959
|
}
|
|
8864
8960
|
};
|
|
8865
8961
|
__decorate([
|
|
@@ -8869,7 +8965,7 @@ __decorate([
|
|
|
8869
8965
|
penPathType()
|
|
8870
8966
|
], Pen.prototype, "path", void 0);
|
|
8871
8967
|
Pen = __decorate([
|
|
8872
|
-
useModule(PathCreator, ['set', 'beginPath', 'path']),
|
|
8968
|
+
useModule(PathCreator, ['set', 'beginPath', 'path', 'paint']),
|
|
8873
8969
|
registerUI()
|
|
8874
8970
|
], Pen);
|
|
8875
8971
|
function penPathType() {
|
|
@@ -9048,21 +9144,29 @@ class UIEvent extends Event {
|
|
|
9048
9144
|
constructor(params) {
|
|
9049
9145
|
super(params.type);
|
|
9050
9146
|
this.bubbles = true;
|
|
9147
|
+
this.getInner = this.getInnerPoint;
|
|
9148
|
+
this.getLocal = this.getLocalPoint;
|
|
9149
|
+
this.getPage = this.getPagePoint;
|
|
9051
9150
|
Object.assign(this, params);
|
|
9052
9151
|
}
|
|
9053
|
-
|
|
9054
|
-
|
|
9152
|
+
getBoxPoint(relative) {
|
|
9153
|
+
if (!relative)
|
|
9154
|
+
relative = this.current;
|
|
9155
|
+
return relative.getBoxPoint(this);
|
|
9055
9156
|
}
|
|
9056
|
-
|
|
9157
|
+
getInnerPoint(relative) {
|
|
9057
9158
|
if (!relative)
|
|
9058
9159
|
relative = this.current;
|
|
9059
9160
|
return relative.getInnerPoint(this);
|
|
9060
9161
|
}
|
|
9061
|
-
|
|
9162
|
+
getLocalPoint(relative) {
|
|
9062
9163
|
if (!relative)
|
|
9063
9164
|
relative = this.current;
|
|
9064
9165
|
return relative.getLocalPoint(this);
|
|
9065
9166
|
}
|
|
9167
|
+
getPagePoint() {
|
|
9168
|
+
return this.current.getPagePoint(this);
|
|
9169
|
+
}
|
|
9066
9170
|
static changeName(oldName, newName) {
|
|
9067
9171
|
EventCreator.changeName(oldName, newName);
|
|
9068
9172
|
}
|
|
@@ -9092,6 +9196,7 @@ PointerEvent.MENU_TAP = 'pointer.menu_tap';
|
|
|
9092
9196
|
PointerEvent = __decorate([
|
|
9093
9197
|
registerUIEvent()
|
|
9094
9198
|
], PointerEvent);
|
|
9199
|
+
const MyPointerEvent = PointerEvent;
|
|
9095
9200
|
|
|
9096
9201
|
const move = {};
|
|
9097
9202
|
let DragEvent = class DragEvent extends PointerEvent {
|
|
@@ -9169,7 +9274,7 @@ let DragEvent = class DragEvent extends PointerEvent {
|
|
|
9169
9274
|
}
|
|
9170
9275
|
getPageBounds() {
|
|
9171
9276
|
const total = this.getPageTotal();
|
|
9172
|
-
const start = this.
|
|
9277
|
+
const start = this.getPagePoint();
|
|
9173
9278
|
const bounds = {};
|
|
9174
9279
|
BoundsHelper.set(bounds, start.x - total.x, start.y - total.y, total.x, total.y);
|
|
9175
9280
|
BoundsHelper.unsign(bounds);
|
|
@@ -9191,6 +9296,7 @@ DragEvent.LEAVE = 'drag.leave';
|
|
|
9191
9296
|
DragEvent = __decorate([
|
|
9192
9297
|
registerUIEvent()
|
|
9193
9298
|
], DragEvent);
|
|
9299
|
+
const MyDragEvent = DragEvent;
|
|
9194
9300
|
|
|
9195
9301
|
let DropEvent = class DropEvent extends PointerEvent {
|
|
9196
9302
|
static setList(data) {
|
|
@@ -9272,36 +9378,32 @@ function addInteractionWindow(leafer) {
|
|
|
9272
9378
|
|
|
9273
9379
|
function document$1(leafer) {
|
|
9274
9380
|
addInteractionWindow(leafer);
|
|
9275
|
-
|
|
9276
|
-
|
|
9381
|
+
const { move, zoom } = leafer.config;
|
|
9382
|
+
move.scroll = 'limit';
|
|
9383
|
+
zoom.min = 1;
|
|
9384
|
+
}
|
|
9385
|
+
|
|
9386
|
+
function block(leafer) {
|
|
9387
|
+
const { config } = leafer;
|
|
9388
|
+
(config.wheel || (config.wheel = {})).preventDefault = false;
|
|
9389
|
+
(config.touch || (config.touch = {})).preventDefault = 'auto';
|
|
9277
9390
|
}
|
|
9278
9391
|
|
|
9279
9392
|
const debug$2 = Debug.get('LeaferTypeCreator');
|
|
9280
9393
|
const LeaferTypeCreator = {
|
|
9281
9394
|
list: {},
|
|
9282
9395
|
register(name, fn) {
|
|
9283
|
-
|
|
9284
|
-
debug$2.repeat(name);
|
|
9285
|
-
}
|
|
9286
|
-
else {
|
|
9287
|
-
list[name] = fn;
|
|
9288
|
-
}
|
|
9396
|
+
list[name] ? debug$2.repeat(name) : list[name] = fn;
|
|
9289
9397
|
},
|
|
9290
9398
|
run(name, leafer) {
|
|
9291
9399
|
const fn = list[name];
|
|
9292
|
-
|
|
9293
|
-
fn(leafer);
|
|
9294
|
-
}
|
|
9295
|
-
else {
|
|
9296
|
-
debug$2.error('no', name);
|
|
9297
|
-
}
|
|
9400
|
+
fn && fn(leafer);
|
|
9298
9401
|
}
|
|
9299
9402
|
};
|
|
9300
9403
|
const { list, register } = LeaferTypeCreator;
|
|
9301
|
-
register('draw', () => { });
|
|
9302
|
-
register('custom', () => { });
|
|
9303
9404
|
register('design', addInteractionWindow);
|
|
9304
9405
|
register('document', document$1);
|
|
9406
|
+
register('block', block);
|
|
9305
9407
|
|
|
9306
9408
|
const leafer = Leafer.prototype;
|
|
9307
9409
|
leafer.initType = function (type) {
|
|
@@ -9490,7 +9592,13 @@ const InteractionHelper = {
|
|
|
9490
9592
|
find.add(list[i]);
|
|
9491
9593
|
}
|
|
9492
9594
|
return find;
|
|
9493
|
-
}
|
|
9595
|
+
},
|
|
9596
|
+
pathCanDrag(path) {
|
|
9597
|
+
return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent.DRAG)));
|
|
9598
|
+
},
|
|
9599
|
+
pathHasOutside(path) {
|
|
9600
|
+
return path && path.list.some(item => item.isOutside);
|
|
9601
|
+
},
|
|
9494
9602
|
};
|
|
9495
9603
|
const I = InteractionHelper;
|
|
9496
9604
|
|
|
@@ -9750,7 +9858,7 @@ function emitEvent(leaf, type, data, capture, excludePath) {
|
|
|
9750
9858
|
if (leaf.destroyed)
|
|
9751
9859
|
return false;
|
|
9752
9860
|
if (leaf.__.hitSelf && !exclude(leaf, excludePath)) {
|
|
9753
|
-
if (State.updateEventStyle)
|
|
9861
|
+
if (State.updateEventStyle && !capture)
|
|
9754
9862
|
State.updateEventStyle(leaf, type);
|
|
9755
9863
|
if (leaf.hasEvent(type, capture)) {
|
|
9756
9864
|
data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3);
|
|
@@ -9800,15 +9908,18 @@ const config = {
|
|
|
9800
9908
|
swipeDistance: 20,
|
|
9801
9909
|
preventDefaultMenu: true
|
|
9802
9910
|
},
|
|
9911
|
+
touch: {
|
|
9912
|
+
preventDefault: true
|
|
9913
|
+
},
|
|
9803
9914
|
cursor: true,
|
|
9804
9915
|
keyEvent: true
|
|
9805
9916
|
};
|
|
9806
9917
|
|
|
9807
|
-
const { pathHasEventType, getMoveEventData: getMoveEventData$1, getZoomEventData: getZoomEventData$1, getRotateEventData: getRotateEventData$1 } = InteractionHelper;
|
|
9918
|
+
const { pathHasEventType, getMoveEventData: getMoveEventData$1, getZoomEventData: getZoomEventData$1, getRotateEventData: getRotateEventData$1, pathCanDrag: pathCanDrag$1, pathHasOutside } = InteractionHelper;
|
|
9808
9919
|
class InteractionBase {
|
|
9809
9920
|
get dragging() { return this.dragger.dragging; }
|
|
9810
9921
|
get transforming() { return this.transformer.transforming; }
|
|
9811
|
-
get moveMode() { return this.config.move.drag || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty; }
|
|
9922
|
+
get moveMode() { return this.config.move.drag === true || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty; }
|
|
9812
9923
|
get canHover() { return this.config.pointer.hover && !this.config.mobile; }
|
|
9813
9924
|
get isDragEmpty() { return this.config.move.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)); }
|
|
9814
9925
|
get isMobileDragEmpty() { return this.config.move.dragEmpty && !this.canHover && this.downData && this.isTreePath(this.downData); }
|
|
@@ -9817,7 +9928,7 @@ class InteractionBase {
|
|
|
9817
9928
|
get isHoldSpaceKey() { return this.config.move.holdSpaceKey && Keyboard.isHoldSpaceKey(); }
|
|
9818
9929
|
get hitRadius() { return this.config.pointer.hitRadius; }
|
|
9819
9930
|
constructor(target, canvas, selector, userConfig) {
|
|
9820
|
-
this.config = config;
|
|
9931
|
+
this.config = DataHelper.clone(config);
|
|
9821
9932
|
this.tapCount = 0;
|
|
9822
9933
|
this.downKeyMap = {};
|
|
9823
9934
|
this.target = target;
|
|
@@ -9852,7 +9963,7 @@ class InteractionBase {
|
|
|
9852
9963
|
this.tapWait();
|
|
9853
9964
|
this.longPressWait(data);
|
|
9854
9965
|
}
|
|
9855
|
-
this.
|
|
9966
|
+
this.waitRightTap = PointerButton.right(data);
|
|
9856
9967
|
this.dragger.setDragData(data);
|
|
9857
9968
|
if (!this.isHoldRightKey)
|
|
9858
9969
|
this.updateCursor(data);
|
|
@@ -9880,7 +9991,7 @@ class InteractionBase {
|
|
|
9880
9991
|
if (canDrag) {
|
|
9881
9992
|
if (this.waitTap)
|
|
9882
9993
|
this.pointerWaitCancel();
|
|
9883
|
-
this.
|
|
9994
|
+
this.waitRightTap = false;
|
|
9884
9995
|
}
|
|
9885
9996
|
this.dragger.checkDrag(data, canDrag);
|
|
9886
9997
|
}
|
|
@@ -9934,10 +10045,15 @@ class InteractionBase {
|
|
|
9934
10045
|
menu(data) {
|
|
9935
10046
|
this.findPath(data);
|
|
9936
10047
|
this.emit(PointerEvent.MENU, data);
|
|
10048
|
+
this.waitMenuTap = true;
|
|
10049
|
+
if (!this.downData && this.waitRightTap)
|
|
10050
|
+
this.menuTap(data);
|
|
9937
10051
|
}
|
|
9938
10052
|
menuTap(data) {
|
|
9939
|
-
if (this.waitMenuTap)
|
|
10053
|
+
if (this.waitRightTap && this.waitMenuTap) {
|
|
9940
10054
|
this.emit(PointerEvent.MENU_TAP, data);
|
|
10055
|
+
this.waitRightTap = this.waitMenuTap = false;
|
|
10056
|
+
}
|
|
9941
10057
|
}
|
|
9942
10058
|
move(data) {
|
|
9943
10059
|
this.transformer.move(data);
|
|
@@ -10069,11 +10185,11 @@ class InteractionBase {
|
|
|
10069
10185
|
return app.editor && (!data.path.has(app.editor) && data.path.has(app.tree) && !data.target.syncEventer);
|
|
10070
10186
|
}
|
|
10071
10187
|
checkPath(data, useDefaultPath) {
|
|
10072
|
-
if (useDefaultPath || this.
|
|
10188
|
+
if (useDefaultPath || (this.moveMode && !pathHasOutside(data.path)))
|
|
10073
10189
|
data.path = this.defaultPath;
|
|
10074
10190
|
}
|
|
10075
10191
|
canMove(data) {
|
|
10076
|
-
return this.moveMode
|
|
10192
|
+
return data && (this.moveMode || (this.config.move.drag === 'auto' && !pathCanDrag$1(data.path))) && !pathHasOutside(data.path);
|
|
10077
10193
|
}
|
|
10078
10194
|
isDrag(leaf) {
|
|
10079
10195
|
return this.dragger.getList().has(leaf);
|
|
@@ -10491,7 +10607,7 @@ const KeyEventHelper = {
|
|
|
10491
10607
|
}
|
|
10492
10608
|
};
|
|
10493
10609
|
|
|
10494
|
-
const { getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
|
|
10610
|
+
const { getMoveEventData, getZoomEventData, getRotateEventData, pathCanDrag } = InteractionHelper;
|
|
10495
10611
|
class Interaction extends InteractionBase {
|
|
10496
10612
|
__listenEvents() {
|
|
10497
10613
|
super.__listenEvents();
|
|
@@ -10624,7 +10740,11 @@ class Interaction extends InteractionBase {
|
|
|
10624
10740
|
this.pointerCancel();
|
|
10625
10741
|
}
|
|
10626
10742
|
onTouchStart(e) {
|
|
10627
|
-
|
|
10743
|
+
const touch = PointerEventHelper.getTouch(e);
|
|
10744
|
+
const local = this.getLocal(touch, true);
|
|
10745
|
+
const { preventDefault } = this.config.touch;
|
|
10746
|
+
if (preventDefault === true || (preventDefault === 'auto' && pathCanDrag(this.findPath(local))))
|
|
10747
|
+
e.preventDefault();
|
|
10628
10748
|
this.multiTouchStart(e);
|
|
10629
10749
|
if (this.usePointer)
|
|
10630
10750
|
return;
|
|
@@ -10633,8 +10753,7 @@ class Interaction extends InteractionBase {
|
|
|
10633
10753
|
this.touchTimer = 0;
|
|
10634
10754
|
}
|
|
10635
10755
|
this.useTouch = true;
|
|
10636
|
-
|
|
10637
|
-
this.pointerDown(PointerEventHelper.convertTouch(e, this.getLocal(touch, true)));
|
|
10756
|
+
this.pointerDown(PointerEventHelper.convertTouch(e, local));
|
|
10638
10757
|
}
|
|
10639
10758
|
onTouchMove(e) {
|
|
10640
10759
|
this.multiTouchMove(e);
|
|
@@ -11117,16 +11236,21 @@ function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, al
|
|
|
11117
11236
|
const { get: get$2, translate } = MatrixHelper;
|
|
11118
11237
|
const tempBox = new Bounds();
|
|
11119
11238
|
const tempPoint = {};
|
|
11239
|
+
const tempScaleData = {};
|
|
11120
11240
|
function createData(leafPaint, image, paint, box) {
|
|
11121
|
-
const { blendMode } = paint;
|
|
11241
|
+
const { blendMode, sync } = paint;
|
|
11122
11242
|
if (blendMode)
|
|
11123
11243
|
leafPaint.blendMode = blendMode;
|
|
11244
|
+
if (sync)
|
|
11245
|
+
leafPaint.sync = sync;
|
|
11124
11246
|
leafPaint.data = getPatternData(paint, box, image);
|
|
11125
11247
|
}
|
|
11126
11248
|
function getPatternData(paint, box, image) {
|
|
11127
11249
|
let { width, height } = image;
|
|
11128
11250
|
if (paint.padding)
|
|
11129
11251
|
box = tempBox.set(box).shrink(paint.padding);
|
|
11252
|
+
if (paint.mode === 'strench')
|
|
11253
|
+
paint.mode = 'stretch';
|
|
11130
11254
|
const { opacity, mode, align, offset, scale, size, rotation, repeat } = paint;
|
|
11131
11255
|
const sameBox = box.width === width && box.height === height;
|
|
11132
11256
|
const data = { mode };
|
|
@@ -11140,13 +11264,10 @@ function getPatternData(paint, box, image) {
|
|
|
11140
11264
|
x += (box.width - width * scaleX) / 2, y += (box.height - height * scaleY) / 2;
|
|
11141
11265
|
}
|
|
11142
11266
|
}
|
|
11143
|
-
else if (size) {
|
|
11144
|
-
|
|
11145
|
-
|
|
11146
|
-
|
|
11147
|
-
else if (scale) {
|
|
11148
|
-
scaleX = typeof scale === 'number' ? scale : scale.x;
|
|
11149
|
-
scaleY = typeof scale === 'number' ? scale : scale.y;
|
|
11267
|
+
else if (scale || size) {
|
|
11268
|
+
MathHelper.getScaleData(scale, size, image, tempScaleData);
|
|
11269
|
+
scaleX = tempScaleData.scaleX;
|
|
11270
|
+
scaleY = tempScaleData.scaleY;
|
|
11150
11271
|
}
|
|
11151
11272
|
if (align) {
|
|
11152
11273
|
const imageBounds = { x, y, width: swapWidth, height: swapHeight };
|
|
@@ -11158,7 +11279,7 @@ function getPatternData(paint, box, image) {
|
|
|
11158
11279
|
if (offset)
|
|
11159
11280
|
x += offset.x, y += offset.y;
|
|
11160
11281
|
switch (mode) {
|
|
11161
|
-
case '
|
|
11282
|
+
case 'stretch':
|
|
11162
11283
|
if (!sameBox)
|
|
11163
11284
|
width = box.width, height = box.height;
|
|
11164
11285
|
break;
|
|
@@ -11185,7 +11306,7 @@ function getPatternData(paint, box, image) {
|
|
|
11185
11306
|
translate(data.transform, box.x, box.y);
|
|
11186
11307
|
}
|
|
11187
11308
|
}
|
|
11188
|
-
if (scaleX && mode !== '
|
|
11309
|
+
if (scaleX && mode !== 'stretch') {
|
|
11189
11310
|
data.scaleX = scaleX;
|
|
11190
11311
|
data.scaleY = scaleY;
|
|
11191
11312
|
}
|
|
@@ -11289,7 +11410,7 @@ const { get: get$1, scale, copy: copy$1 } = MatrixHelper;
|
|
|
11289
11410
|
const { ceil, abs: abs$1 } = Math;
|
|
11290
11411
|
function createPattern(ui, paint, pixelRatio) {
|
|
11291
11412
|
let { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
11292
|
-
const id = scaleX + '-' + scaleY;
|
|
11413
|
+
const id = scaleX + '-' + scaleY + '-' + pixelRatio;
|
|
11293
11414
|
if (paint.patternId !== id && !ui.destroyed) {
|
|
11294
11415
|
scaleX = abs$1(scaleX);
|
|
11295
11416
|
scaleY = abs$1(scaleY);
|
|
@@ -11351,7 +11472,8 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11351
11472
|
const { abs } = Math;
|
|
11352
11473
|
function checkImage(ui, canvas, paint, allowPaint) {
|
|
11353
11474
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
11354
|
-
|
|
11475
|
+
const { pixelRatio } = canvas;
|
|
11476
|
+
if (!paint.data || (paint.patternId === scaleX + '-' + scaleY + '-' + pixelRatio && !Export.running)) {
|
|
11355
11477
|
return false;
|
|
11356
11478
|
}
|
|
11357
11479
|
else {
|
|
@@ -11359,8 +11481,8 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
11359
11481
|
if (allowPaint) {
|
|
11360
11482
|
if (!data.repeat) {
|
|
11361
11483
|
let { width, height } = data;
|
|
11362
|
-
width *= abs(scaleX) *
|
|
11363
|
-
height *= abs(scaleY) *
|
|
11484
|
+
width *= abs(scaleX) * pixelRatio;
|
|
11485
|
+
height *= abs(scaleY) * pixelRatio;
|
|
11364
11486
|
if (data.scaleX) {
|
|
11365
11487
|
width *= data.scaleX;
|
|
11366
11488
|
height *= data.scaleY;
|
|
@@ -11385,15 +11507,15 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
11385
11507
|
return true;
|
|
11386
11508
|
}
|
|
11387
11509
|
else {
|
|
11388
|
-
if (!paint.style || Export.running) {
|
|
11389
|
-
createPattern(ui, paint,
|
|
11510
|
+
if (!paint.style || paint.sync || Export.running) {
|
|
11511
|
+
createPattern(ui, paint, pixelRatio);
|
|
11390
11512
|
}
|
|
11391
11513
|
else {
|
|
11392
11514
|
if (!paint.patternTask) {
|
|
11393
11515
|
paint.patternTask = ImageManager.patternTasker.add(() => __awaiter(this, void 0, void 0, function* () {
|
|
11394
11516
|
paint.patternTask = null;
|
|
11395
11517
|
if (canvas.bounds.hit(ui.__nowWorld))
|
|
11396
|
-
createPattern(ui, paint,
|
|
11518
|
+
createPattern(ui, paint, pixelRatio);
|
|
11397
11519
|
ui.forceUpdate('surface');
|
|
11398
11520
|
}), 300);
|
|
11399
11521
|
}
|
|
@@ -11457,14 +11579,16 @@ function linearGradient(paint, box) {
|
|
|
11457
11579
|
return data;
|
|
11458
11580
|
}
|
|
11459
11581
|
function applyStops(gradient, stops, opacity) {
|
|
11460
|
-
|
|
11461
|
-
|
|
11462
|
-
|
|
11463
|
-
|
|
11464
|
-
|
|
11465
|
-
|
|
11466
|
-
|
|
11467
|
-
|
|
11582
|
+
if (stops) {
|
|
11583
|
+
let stop;
|
|
11584
|
+
for (let i = 0, len = stops.length; i < len; i++) {
|
|
11585
|
+
stop = stops[i];
|
|
11586
|
+
if (typeof stop === 'string') {
|
|
11587
|
+
gradient.addColorStop(i / (len - 1), ColorConvert.string(stop, opacity));
|
|
11588
|
+
}
|
|
11589
|
+
else {
|
|
11590
|
+
gradient.addColorStop(stop.offset, ColorConvert.string(stop.color, opacity));
|
|
11591
|
+
}
|
|
11468
11592
|
}
|
|
11469
11593
|
}
|
|
11470
11594
|
}
|
|
@@ -12220,10 +12344,15 @@ const TextConvertModule = {
|
|
|
12220
12344
|
};
|
|
12221
12345
|
|
|
12222
12346
|
function string(color, opacity) {
|
|
12223
|
-
|
|
12224
|
-
|
|
12347
|
+
const doOpacity = typeof opacity === 'number' && opacity !== 1;
|
|
12348
|
+
if (typeof color === 'string') {
|
|
12349
|
+
if (doOpacity && ColorConvert.object)
|
|
12350
|
+
color = ColorConvert.object(color);
|
|
12351
|
+
else
|
|
12352
|
+
return color;
|
|
12353
|
+
}
|
|
12225
12354
|
let a = color.a === undefined ? 1 : color.a;
|
|
12226
|
-
if (
|
|
12355
|
+
if (doOpacity)
|
|
12227
12356
|
a *= opacity;
|
|
12228
12357
|
const rgb = color.r + ',' + color.g + ',' + color.b;
|
|
12229
12358
|
return a === 1 ? 'rgb(' + rgb + ')' : 'rgba(' + rgb + ',' + a + ')';
|
|
@@ -12255,6 +12384,7 @@ const ExportModule = {
|
|
|
12255
12384
|
export(leaf, filename, options) {
|
|
12256
12385
|
this.running = true;
|
|
12257
12386
|
const fileType = FileHelper.fileType(filename);
|
|
12387
|
+
const isDownload = filename.includes('.');
|
|
12258
12388
|
options = FileHelper.getExportOptions(options);
|
|
12259
12389
|
return addTask((success) => new Promise((resolve) => {
|
|
12260
12390
|
const over = (result) => {
|
|
@@ -12264,19 +12394,13 @@ const ExportModule = {
|
|
|
12264
12394
|
};
|
|
12265
12395
|
const { toURL } = Platform;
|
|
12266
12396
|
const { download } = Platform.origin;
|
|
12267
|
-
if (
|
|
12268
|
-
|
|
12269
|
-
|
|
12270
|
-
else if (fileType === 'json') {
|
|
12271
|
-
download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
12272
|
-
return over({ data: true });
|
|
12397
|
+
if (fileType === 'json') {
|
|
12398
|
+
isDownload && download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
12399
|
+
return over({ data: isDownload ? true : leaf.toJSON(options.json) });
|
|
12273
12400
|
}
|
|
12274
|
-
if (
|
|
12275
|
-
|
|
12276
|
-
|
|
12277
|
-
else if (fileType === 'svg') {
|
|
12278
|
-
download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
12279
|
-
return over({ data: true });
|
|
12401
|
+
if (fileType === 'svg') {
|
|
12402
|
+
isDownload && download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
12403
|
+
return over({ data: isDownload ? true : leaf.toSVG() });
|
|
12280
12404
|
}
|
|
12281
12405
|
const { leafer } = leaf;
|
|
12282
12406
|
if (leafer) {
|
|
@@ -12285,14 +12409,8 @@ const ExportModule = {
|
|
|
12285
12409
|
let renderBounds, trimBounds, scaleX = 1, scaleY = 1;
|
|
12286
12410
|
const { worldTransform, isLeafer, isFrame } = leaf;
|
|
12287
12411
|
const { slice, trim, onCanvas } = options;
|
|
12288
|
-
let scale = options.scale || 1;
|
|
12289
|
-
let pixelRatio = options.pixelRatio || 1;
|
|
12290
12412
|
const smooth = options.smooth === undefined ? leafer.config.smooth : options.smooth;
|
|
12291
12413
|
const contextSettings = options.contextSettings || leafer.config.contextSettings;
|
|
12292
|
-
if (leaf.isApp) {
|
|
12293
|
-
scale *= pixelRatio;
|
|
12294
|
-
pixelRatio = leaf.app.pixelRatio;
|
|
12295
|
-
}
|
|
12296
12414
|
const screenshot = options.screenshot || leaf.isApp;
|
|
12297
12415
|
const fill = (isLeafer && screenshot) ? (options.fill === undefined ? leaf.fill : options.fill) : options.fill;
|
|
12298
12416
|
const needFill = FileHelper.isOpaqueImage(filename) || fill, matrix = new Matrix();
|
|
@@ -12326,9 +12444,17 @@ const ExportModule = {
|
|
|
12326
12444
|
}
|
|
12327
12445
|
renderBounds = leaf.getBounds('render', relative);
|
|
12328
12446
|
}
|
|
12329
|
-
const {
|
|
12447
|
+
const scaleData = { scaleX: 1, scaleY: 1 };
|
|
12448
|
+
MathHelper.getScaleData(options.scale, options.size, renderBounds, scaleData);
|
|
12449
|
+
let pixelRatio = options.pixelRatio || 1;
|
|
12450
|
+
if (leaf.isApp) {
|
|
12451
|
+
scaleData.scaleX *= pixelRatio;
|
|
12452
|
+
scaleData.scaleY *= pixelRatio;
|
|
12453
|
+
pixelRatio = leaf.app.pixelRatio;
|
|
12454
|
+
}
|
|
12455
|
+
const { x, y, width, height } = new Bounds(renderBounds).scale(scaleData.scaleX, scaleData.scaleY);
|
|
12456
|
+
const renderOptions = { matrix: matrix.scale(1 / scaleData.scaleX, 1 / scaleData.scaleY).invert().translate(-x, -y).withScale(1 / scaleX * scaleData.scaleX, 1 / scaleY * scaleData.scaleY) };
|
|
12330
12457
|
let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
|
|
12331
|
-
const renderOptions = { matrix: matrix.scale(1 / scale).invert().translate(-x, -y).withScale(1 / scaleX * scale, 1 / scaleY * scale) };
|
|
12332
12458
|
let sliceLeaf;
|
|
12333
12459
|
if (slice) {
|
|
12334
12460
|
sliceLeaf = leaf;
|
|
@@ -12438,4 +12564,4 @@ Object.assign(Creator, {
|
|
|
12438
12564
|
});
|
|
12439
12565
|
useCanvas();
|
|
12440
12566
|
|
|
12441
|
-
export { AlignHelper,
|
|
12567
|
+
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$1 as Image, ImageData, ImageEvent, ImageManager, IncrementId, Interaction, InteractionBase, InteractionHelper, KeyEvent, Keyboard, LayoutEvent, Layouter, Leaf, LeafBounds, LeafBoundsHelper, LeafData, LeafDataProxy, LeafEventer, LeafHelper, LeafLayout, LeafLevelList, LeafList, LeafMatrix, LeafRender, Leafer, LeaferCanvas, LeaferCanvasBase, LeaferData, LeaferEvent, LeaferImage, 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 };
|