leafer-ui 1.0.0 → 1.0.2
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 +11 -3
- package/dist/web.cjs +3193 -0
- package/dist/web.esm.js +91 -72
- package/dist/web.esm.min.js +1 -1
- package/dist/web.js +321 -180
- package/dist/web.min.cjs +1 -0
- package/dist/web.min.js +1 -1
- package/dist/web.module.js +319 -181
- package/dist/web.module.min.js +1 -1
- package/package.json +18 -12
package/dist/web.module.js
CHANGED
|
@@ -48,6 +48,8 @@ const I$2 = IncrementId;
|
|
|
48
48
|
const { round, pow: pow$1, PI: PI$4 } = Math;
|
|
49
49
|
const MathHelper = {
|
|
50
50
|
within(value, min, max) {
|
|
51
|
+
if (typeof min === 'object')
|
|
52
|
+
max = min.max, min = min.min;
|
|
51
53
|
if (min !== undefined && value < min)
|
|
52
54
|
value = min;
|
|
53
55
|
if (max !== undefined && value > max)
|
|
@@ -109,6 +111,19 @@ const MathHelper = {
|
|
|
109
111
|
const a = maxLength ? pow$1(10, maxLength) : 1000000000000;
|
|
110
112
|
num = round(num * a) / a;
|
|
111
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
|
+
scaleData.scaleX = typeof scale === 'number' ? scale : scale.x;
|
|
124
|
+
scaleData.scaleY = typeof scale === 'number' ? scale : scale.y;
|
|
125
|
+
}
|
|
126
|
+
return scaleData;
|
|
112
127
|
}
|
|
113
128
|
};
|
|
114
129
|
const OneRadian = PI$4 / 180;
|
|
@@ -150,10 +165,10 @@ const MatrixHelper = {
|
|
|
150
165
|
t.e += x;
|
|
151
166
|
t.f += y;
|
|
152
167
|
},
|
|
153
|
-
translateInner(t, x, y,
|
|
168
|
+
translateInner(t, x, y, hasOrigin) {
|
|
154
169
|
t.e += t.a * x + t.c * y;
|
|
155
170
|
t.f += t.b * x + t.d * y;
|
|
156
|
-
if (
|
|
171
|
+
if (hasOrigin)
|
|
157
172
|
t.e -= x, t.f -= y;
|
|
158
173
|
},
|
|
159
174
|
scale(t, scaleX, scaleY = scaleX) {
|
|
@@ -312,7 +327,7 @@ const MatrixHelper = {
|
|
|
312
327
|
to.y -= (f * a - e * b) * s;
|
|
313
328
|
}
|
|
314
329
|
},
|
|
315
|
-
setLayout(t, layout, origin, bcChanged) {
|
|
330
|
+
setLayout(t, layout, origin, around, bcChanged) {
|
|
316
331
|
const { x, y, scaleX, scaleY } = layout;
|
|
317
332
|
if (bcChanged === undefined)
|
|
318
333
|
bcChanged = layout.rotation || layout.skewX || layout.skewY;
|
|
@@ -344,10 +359,10 @@ const MatrixHelper = {
|
|
|
344
359
|
}
|
|
345
360
|
t.e = x;
|
|
346
361
|
t.f = y;
|
|
347
|
-
if (origin)
|
|
348
|
-
M$6.translateInner(t, -origin.x, -origin.y,
|
|
362
|
+
if (origin = origin || around)
|
|
363
|
+
M$6.translateInner(t, -origin.x, -origin.y, !around);
|
|
349
364
|
},
|
|
350
|
-
getLayout(t, origin, firstSkewY) {
|
|
365
|
+
getLayout(t, origin, around, firstSkewY) {
|
|
351
366
|
const { a, b, c, d, e, f } = t;
|
|
352
367
|
let x = e, y = f, scaleX, scaleY, rotation, skewX, skewY;
|
|
353
368
|
if (b || c) {
|
|
@@ -376,9 +391,11 @@ const MatrixHelper = {
|
|
|
376
391
|
scaleY = d;
|
|
377
392
|
rotation = skewX = skewY = 0;
|
|
378
393
|
}
|
|
379
|
-
if (origin) {
|
|
394
|
+
if (origin = around || origin) {
|
|
380
395
|
x += origin.x * a + origin.y * c;
|
|
381
396
|
y += origin.x * b + origin.y * d;
|
|
397
|
+
if (!around)
|
|
398
|
+
x -= origin.x, y -= origin.y;
|
|
382
399
|
}
|
|
383
400
|
return { x, y, scaleX, scaleY, rotation, skewX, skewY };
|
|
384
401
|
},
|
|
@@ -405,7 +422,7 @@ const MatrixHelper = {
|
|
|
405
422
|
};
|
|
406
423
|
const M$6 = MatrixHelper;
|
|
407
424
|
|
|
408
|
-
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$
|
|
425
|
+
const { toInnerPoint: toInnerPoint$2, toOuterPoint: toOuterPoint$3 } = MatrixHelper;
|
|
409
426
|
const { sin: sin$4, cos: cos$4, abs: abs$4, sqrt: sqrt$2, atan2: atan2$2, min: min$1, PI: PI$3 } = Math;
|
|
410
427
|
const PointHelper = {
|
|
411
428
|
defaultPoint: getPointData(),
|
|
@@ -461,7 +478,7 @@ const PointHelper = {
|
|
|
461
478
|
tempToOuterOf(t, matrix) {
|
|
462
479
|
const { tempPoint: temp } = P$5;
|
|
463
480
|
copy$b(temp, t);
|
|
464
|
-
toOuterPoint$
|
|
481
|
+
toOuterPoint$3(matrix, temp, temp);
|
|
465
482
|
return temp;
|
|
466
483
|
},
|
|
467
484
|
tempToInnerRadiusPointOf(t, matrix) {
|
|
@@ -480,7 +497,7 @@ const PointHelper = {
|
|
|
480
497
|
toInnerPoint$2(matrix, t, to);
|
|
481
498
|
},
|
|
482
499
|
toOuterOf(t, matrix, to) {
|
|
483
|
-
toOuterPoint$
|
|
500
|
+
toOuterPoint$3(matrix, t, to);
|
|
484
501
|
},
|
|
485
502
|
getCenter(t, to) {
|
|
486
503
|
return { x: t.x + (to.x - t.x) / 2, y: t.y + (to.y - t.y) / 2 };
|
|
@@ -706,12 +723,12 @@ class Matrix {
|
|
|
706
723
|
toInnerPoint(outer, to, distance) {
|
|
707
724
|
MatrixHelper.toInnerPoint(this, outer, to, distance);
|
|
708
725
|
}
|
|
709
|
-
setLayout(data, origin) {
|
|
710
|
-
MatrixHelper.setLayout(this, data, origin);
|
|
726
|
+
setLayout(data, origin, around) {
|
|
727
|
+
MatrixHelper.setLayout(this, data, origin, around);
|
|
711
728
|
return this;
|
|
712
729
|
}
|
|
713
|
-
getLayout(origin, firstSkewY) {
|
|
714
|
-
return MatrixHelper.getLayout(this, origin, firstSkewY);
|
|
730
|
+
getLayout(origin, around, firstSkewY) {
|
|
731
|
+
return MatrixHelper.getLayout(this, origin, around, firstSkewY);
|
|
715
732
|
}
|
|
716
733
|
withScale(scaleX, scaleY) {
|
|
717
734
|
return MatrixHelper.withScale(this, scaleX, scaleY);
|
|
@@ -760,7 +777,7 @@ const TwoPointBoundsHelper = {
|
|
|
760
777
|
const { addPoint: addPoint$4 } = TwoPointBoundsHelper;
|
|
761
778
|
|
|
762
779
|
const { tempPointBounds: tempPointBounds$1, setPoint: setPoint$3, addPoint: addPoint$3, toBounds: toBounds$4 } = TwoPointBoundsHelper;
|
|
763
|
-
const { toOuterPoint: toOuterPoint$
|
|
780
|
+
const { toOuterPoint: toOuterPoint$2 } = MatrixHelper;
|
|
764
781
|
const { float, fourNumber } = MathHelper;
|
|
765
782
|
const { floor, ceil: ceil$2 } = Math;
|
|
766
783
|
let right$1, bottom$1, boundsRight, boundsBottom;
|
|
@@ -780,17 +797,24 @@ const BoundsHelper = {
|
|
|
780
797
|
t.width = bounds.width;
|
|
781
798
|
t.height = bounds.height;
|
|
782
799
|
},
|
|
783
|
-
copyAndSpread(t, bounds, spread, isShrink) {
|
|
800
|
+
copyAndSpread(t, bounds, spread, isShrink, side) {
|
|
801
|
+
const { x, y, width, height } = bounds;
|
|
784
802
|
if (spread instanceof Array) {
|
|
785
803
|
const four = fourNumber(spread);
|
|
786
804
|
isShrink
|
|
787
|
-
? B.set(t,
|
|
788
|
-
: B.set(t,
|
|
805
|
+
? B.set(t, x + four[3], y + four[0], width - four[1] - four[3], height - four[2] - four[0])
|
|
806
|
+
: B.set(t, x - four[3], y - four[0], width + four[1] + four[3], height + four[2] + four[0]);
|
|
789
807
|
}
|
|
790
808
|
else {
|
|
791
809
|
if (isShrink)
|
|
792
810
|
spread = -spread;
|
|
793
|
-
B.set(t,
|
|
811
|
+
B.set(t, x - spread, y - spread, width + spread * 2, height + spread * 2);
|
|
812
|
+
}
|
|
813
|
+
if (side) {
|
|
814
|
+
if (side === 'width')
|
|
815
|
+
t.y = y, t.height = height;
|
|
816
|
+
else
|
|
817
|
+
t.x = x, t.width = width;
|
|
794
818
|
}
|
|
795
819
|
},
|
|
796
820
|
minX(t) { return t.width > 0 ? t.x : t.x + t.width; },
|
|
@@ -867,16 +891,16 @@ const BoundsHelper = {
|
|
|
867
891
|
else {
|
|
868
892
|
point.x = t.x;
|
|
869
893
|
point.y = t.y;
|
|
870
|
-
toOuterPoint$
|
|
894
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
871
895
|
setPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
872
896
|
point.x = t.x + t.width;
|
|
873
|
-
toOuterPoint$
|
|
897
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
874
898
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
875
899
|
point.y = t.y + t.height;
|
|
876
|
-
toOuterPoint$
|
|
900
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
877
901
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
878
902
|
point.x = t.x;
|
|
879
|
-
toOuterPoint$
|
|
903
|
+
toOuterPoint$2(matrix, point, toPoint$5);
|
|
880
904
|
addPoint$3(tempPointBounds$1, toPoint$5.x, toPoint$5.y);
|
|
881
905
|
toBounds$4(tempPointBounds$1, to);
|
|
882
906
|
}
|
|
@@ -890,16 +914,16 @@ const BoundsHelper = {
|
|
|
890
914
|
const scale = Math.min(baseScale, Math.min(t.width / put.width, t.height / put.height));
|
|
891
915
|
return new Matrix(scale, 0, 0, scale, -put.x * scale, -put.y * scale);
|
|
892
916
|
},
|
|
893
|
-
getSpread(t, spread) {
|
|
917
|
+
getSpread(t, spread, side) {
|
|
894
918
|
const n = {};
|
|
895
|
-
B.copyAndSpread(n, t, spread);
|
|
919
|
+
B.copyAndSpread(n, t, spread, false, side);
|
|
896
920
|
return n;
|
|
897
921
|
},
|
|
898
|
-
spread(t, spread) {
|
|
899
|
-
B.copyAndSpread(t, t, spread);
|
|
922
|
+
spread(t, spread, side) {
|
|
923
|
+
B.copyAndSpread(t, t, spread, false, side);
|
|
900
924
|
},
|
|
901
|
-
shrink(t, shrink) {
|
|
902
|
-
B.copyAndSpread(t, t, shrink, true);
|
|
925
|
+
shrink(t, shrink, side) {
|
|
926
|
+
B.copyAndSpread(t, t, shrink, true, side);
|
|
903
927
|
},
|
|
904
928
|
ceil(t) {
|
|
905
929
|
const { x, y } = t;
|
|
@@ -1082,12 +1106,12 @@ class Bounds {
|
|
|
1082
1106
|
getFitMatrix(put, baseScale) {
|
|
1083
1107
|
return BoundsHelper.getFitMatrix(this, put, baseScale);
|
|
1084
1108
|
}
|
|
1085
|
-
spread(fourNumber) {
|
|
1086
|
-
BoundsHelper.spread(this, fourNumber);
|
|
1109
|
+
spread(fourNumber, side) {
|
|
1110
|
+
BoundsHelper.spread(this, fourNumber, side);
|
|
1087
1111
|
return this;
|
|
1088
1112
|
}
|
|
1089
|
-
shrink(fourNumber) {
|
|
1090
|
-
BoundsHelper.shrink(this, fourNumber);
|
|
1113
|
+
shrink(fourNumber, side) {
|
|
1114
|
+
BoundsHelper.shrink(this, fourNumber, side);
|
|
1091
1115
|
return this;
|
|
1092
1116
|
}
|
|
1093
1117
|
ceil() {
|
|
@@ -1999,7 +2023,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
1999
2023
|
DataHelper.copyAttrs(this.size, size, canvasSizeAttrs);
|
|
2000
2024
|
this.size.pixelRatio || (this.size.pixelRatio = 1);
|
|
2001
2025
|
this.bounds = new Bounds(0, 0, this.width, this.height);
|
|
2002
|
-
if (!this.unreal) {
|
|
2026
|
+
if (this.context && !this.unreal) {
|
|
2003
2027
|
this.updateViewSize();
|
|
2004
2028
|
this.smooth = this.config.smooth;
|
|
2005
2029
|
}
|
|
@@ -2172,7 +2196,7 @@ class LeaferCanvasBase extends Canvas$1 {
|
|
|
2172
2196
|
this.manager ? this.manager.recycle(this) : this.destroy();
|
|
2173
2197
|
}
|
|
2174
2198
|
}
|
|
2175
|
-
updateRender() { }
|
|
2199
|
+
updateRender(_bounds) { }
|
|
2176
2200
|
unrealCanvas() { }
|
|
2177
2201
|
destroy() {
|
|
2178
2202
|
this.manager = this.view = this.parentView = null;
|
|
@@ -2904,60 +2928,75 @@ class PathCreator {
|
|
|
2904
2928
|
}
|
|
2905
2929
|
beginPath() {
|
|
2906
2930
|
beginPath(this.__path);
|
|
2931
|
+
this.paint();
|
|
2907
2932
|
return this;
|
|
2908
2933
|
}
|
|
2909
2934
|
moveTo(x, y) {
|
|
2910
2935
|
moveTo$4(this.__path, x, y);
|
|
2936
|
+
this.paint();
|
|
2911
2937
|
return this;
|
|
2912
2938
|
}
|
|
2913
2939
|
lineTo(x, y) {
|
|
2914
2940
|
lineTo$3(this.__path, x, y);
|
|
2941
|
+
this.paint();
|
|
2915
2942
|
return this;
|
|
2916
2943
|
}
|
|
2917
2944
|
bezierCurveTo(x1, y1, x2, y2, x, y) {
|
|
2918
2945
|
bezierCurveTo(this.__path, x1, y1, x2, y2, x, y);
|
|
2946
|
+
this.paint();
|
|
2919
2947
|
return this;
|
|
2920
2948
|
}
|
|
2921
2949
|
quadraticCurveTo(x1, y1, x, y) {
|
|
2922
2950
|
quadraticCurveTo(this.__path, x1, y1, x, y);
|
|
2951
|
+
this.paint();
|
|
2923
2952
|
return this;
|
|
2924
2953
|
}
|
|
2925
2954
|
closePath() {
|
|
2926
2955
|
closePath$3(this.__path);
|
|
2956
|
+
this.paint();
|
|
2927
2957
|
return this;
|
|
2928
2958
|
}
|
|
2929
2959
|
rect(x, y, width, height) {
|
|
2930
2960
|
rect$2(this.__path, x, y, width, height);
|
|
2961
|
+
this.paint();
|
|
2931
2962
|
return this;
|
|
2932
2963
|
}
|
|
2933
2964
|
roundRect(x, y, width, height, cornerRadius) {
|
|
2934
2965
|
roundRect$1(this.__path, x, y, width, height, cornerRadius);
|
|
2966
|
+
this.paint();
|
|
2935
2967
|
return this;
|
|
2936
2968
|
}
|
|
2937
2969
|
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
|
|
2938
2970
|
ellipse$2(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
|
|
2971
|
+
this.paint();
|
|
2939
2972
|
return this;
|
|
2940
2973
|
}
|
|
2941
2974
|
arc(x, y, radius, startAngle, endAngle, anticlockwise) {
|
|
2942
2975
|
arc$1(this.__path, x, y, radius, startAngle, endAngle, anticlockwise);
|
|
2976
|
+
this.paint();
|
|
2943
2977
|
return this;
|
|
2944
2978
|
}
|
|
2945
2979
|
arcTo(x1, y1, x2, y2, radius) {
|
|
2946
2980
|
arcTo$2(this.__path, x1, y1, x2, y2, radius);
|
|
2981
|
+
this.paint();
|
|
2947
2982
|
return this;
|
|
2948
2983
|
}
|
|
2949
2984
|
drawEllipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) {
|
|
2950
2985
|
drawEllipse(this.__path, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
|
|
2986
|
+
this.paint();
|
|
2951
2987
|
return this;
|
|
2952
2988
|
}
|
|
2953
2989
|
drawArc(x, y, radius, startAngle, endAngle, anticlockwise) {
|
|
2954
2990
|
drawArc(this.__path, x, y, radius, startAngle, endAngle, anticlockwise);
|
|
2991
|
+
this.paint();
|
|
2955
2992
|
return this;
|
|
2956
2993
|
}
|
|
2957
2994
|
drawPoints(points, curve, close) {
|
|
2958
2995
|
drawPoints$2(this.__path, points, curve, close);
|
|
2996
|
+
this.paint();
|
|
2959
2997
|
return this;
|
|
2960
2998
|
}
|
|
2999
|
+
paint() { }
|
|
2961
3000
|
}
|
|
2962
3001
|
|
|
2963
3002
|
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;
|
|
@@ -3979,7 +4018,7 @@ function registerUIEvent() {
|
|
|
3979
4018
|
};
|
|
3980
4019
|
}
|
|
3981
4020
|
|
|
3982
|
-
const { copy: copy$7, toInnerPoint: toInnerPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
4021
|
+
const { copy: copy$7, toInnerPoint: toInnerPoint$1, toOuterPoint: toOuterPoint$1, scaleOfOuter: scaleOfOuter$2, rotateOfOuter: rotateOfOuter$2, skewOfOuter, multiplyParent: multiplyParent$2, divideParent, getLayout } = MatrixHelper;
|
|
3983
4022
|
const matrix$1 = {};
|
|
3984
4023
|
const LeafHelper = {
|
|
3985
4024
|
updateAllMatrix(leaf, checkAutoLayout, waitAutoLayout) {
|
|
@@ -4044,10 +4083,9 @@ const LeafHelper = {
|
|
|
4044
4083
|
}
|
|
4045
4084
|
return true;
|
|
4046
4085
|
},
|
|
4047
|
-
moveWorld(t, x, y = 0) {
|
|
4086
|
+
moveWorld(t, x, y = 0, isInnerPoint) {
|
|
4048
4087
|
const local = typeof x === 'object' ? Object.assign({}, x) : { x, y };
|
|
4049
|
-
|
|
4050
|
-
toInnerPoint$1(t.parent.worldTransform, local, local, true);
|
|
4088
|
+
isInnerPoint ? toOuterPoint$1(t.localTransform, local, local, true) : (t.parent && toInnerPoint$1(t.parent.worldTransform, local, local, true));
|
|
4051
4089
|
L.moveLocal(t, local.x, local.y);
|
|
4052
4090
|
},
|
|
4053
4091
|
moveLocal(t, x, y = 0) {
|
|
@@ -4066,8 +4104,13 @@ const LeafHelper = {
|
|
|
4066
4104
|
zoomOfLocal(t, origin, scaleX, scaleY = scaleX, resize) {
|
|
4067
4105
|
copy$7(matrix$1, t.__localMatrix);
|
|
4068
4106
|
scaleOfOuter$2(matrix$1, origin, scaleX, scaleY);
|
|
4069
|
-
|
|
4070
|
-
|
|
4107
|
+
if (t.origin || t.around) {
|
|
4108
|
+
L.setTransform(t, matrix$1, resize);
|
|
4109
|
+
}
|
|
4110
|
+
else {
|
|
4111
|
+
moveByMatrix(t, matrix$1);
|
|
4112
|
+
t.scaleResize(scaleX, scaleY, resize !== true);
|
|
4113
|
+
}
|
|
4071
4114
|
},
|
|
4072
4115
|
rotateOfWorld(t, origin, angle) {
|
|
4073
4116
|
L.rotateOfLocal(t, getTempLocal(t, origin), angle);
|
|
@@ -4075,8 +4118,13 @@ const LeafHelper = {
|
|
|
4075
4118
|
rotateOfLocal(t, origin, angle) {
|
|
4076
4119
|
copy$7(matrix$1, t.__localMatrix);
|
|
4077
4120
|
rotateOfOuter$2(matrix$1, origin, angle);
|
|
4078
|
-
|
|
4079
|
-
|
|
4121
|
+
if (t.origin || t.around) {
|
|
4122
|
+
L.setTransform(t, matrix$1);
|
|
4123
|
+
}
|
|
4124
|
+
else {
|
|
4125
|
+
moveByMatrix(t, matrix$1);
|
|
4126
|
+
t.rotation = MathHelper.formatRotation(t.rotation + angle);
|
|
4127
|
+
}
|
|
4080
4128
|
},
|
|
4081
4129
|
skewOfWorld(t, origin, skewX, skewY, resize) {
|
|
4082
4130
|
L.skewOfLocal(t, getTempLocal(t, origin), skewX, skewY, resize);
|
|
@@ -4099,7 +4147,7 @@ const LeafHelper = {
|
|
|
4099
4147
|
L.setTransform(t, matrix$1, resize);
|
|
4100
4148
|
},
|
|
4101
4149
|
setTransform(t, transform, resize) {
|
|
4102
|
-
const layout = getLayout(transform);
|
|
4150
|
+
const layout = getLayout(transform, t.origin && L.getInnerOrigin(t, t.origin), t.around && L.getInnerOrigin(t, t.around));
|
|
4103
4151
|
if (resize) {
|
|
4104
4152
|
const scaleX = layout.scaleX / t.scaleX;
|
|
4105
4153
|
const scaleY = layout.scaleY / t.scaleY;
|
|
@@ -4112,13 +4160,19 @@ const LeafHelper = {
|
|
|
4112
4160
|
t.set(layout);
|
|
4113
4161
|
}
|
|
4114
4162
|
},
|
|
4163
|
+
getFlipTransform(t, axis) {
|
|
4164
|
+
const m = getMatrixData();
|
|
4165
|
+
const sign = axis === 'x' ? 1 : -1;
|
|
4166
|
+
scaleOfOuter$2(m, L.getLocalOrigin(t, 'center'), -1 * sign, 1 * sign);
|
|
4167
|
+
return m;
|
|
4168
|
+
},
|
|
4115
4169
|
getLocalOrigin(t, origin) {
|
|
4116
4170
|
return PointHelper.tempToOuterOf(L.getInnerOrigin(t, origin), t.localTransform);
|
|
4117
4171
|
},
|
|
4118
4172
|
getInnerOrigin(t, origin) {
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
return
|
|
4173
|
+
const innerOrigin = {};
|
|
4174
|
+
AroundHelper.toPoint(origin, t.boxBounds, innerOrigin);
|
|
4175
|
+
return innerOrigin;
|
|
4122
4176
|
},
|
|
4123
4177
|
getRelativeWorld(t, relative, temp) {
|
|
4124
4178
|
copy$7(matrix$1, t.worldTransform);
|
|
@@ -4545,7 +4599,10 @@ const LeafEventer = {
|
|
|
4545
4599
|
on(type, listener, options) {
|
|
4546
4600
|
let capture, once;
|
|
4547
4601
|
if (options) {
|
|
4548
|
-
if (
|
|
4602
|
+
if (options === 'once') {
|
|
4603
|
+
once = true;
|
|
4604
|
+
}
|
|
4605
|
+
else if (typeof options === 'boolean') {
|
|
4549
4606
|
capture = options;
|
|
4550
4607
|
}
|
|
4551
4608
|
else {
|
|
@@ -4576,7 +4633,7 @@ const LeafEventer = {
|
|
|
4576
4633
|
if (listener) {
|
|
4577
4634
|
let capture;
|
|
4578
4635
|
if (options)
|
|
4579
|
-
capture = typeof options === 'boolean' ? options : options.capture;
|
|
4636
|
+
capture = typeof options === 'boolean' ? options : (options === 'once' ? false : options.capture);
|
|
4580
4637
|
let events, index;
|
|
4581
4638
|
const map = __getListenerMap(this, capture);
|
|
4582
4639
|
typeList.forEach(type => {
|
|
@@ -4878,7 +4935,7 @@ const LeafMatrix = {
|
|
|
4878
4935
|
const layout = this.__layout, local = this.__local, data = this.__;
|
|
4879
4936
|
if (layout.affectScaleOrRotation) {
|
|
4880
4937
|
if (layout.scaleChanged || layout.rotationChanged) {
|
|
4881
|
-
setLayout(local, data, null, layout.affectRotation);
|
|
4938
|
+
setLayout(local, data, null, null, layout.affectRotation);
|
|
4882
4939
|
layout.scaleChanged = layout.rotationChanged = false;
|
|
4883
4940
|
}
|
|
4884
4941
|
}
|
|
@@ -4886,7 +4943,7 @@ const LeafMatrix = {
|
|
|
4886
4943
|
local.f = data.y + data.offsetY;
|
|
4887
4944
|
if (data.around || data.origin) {
|
|
4888
4945
|
toPoint$3(data.around || data.origin, layout.boxBounds, tempPoint$1);
|
|
4889
|
-
translateInner(local, -tempPoint$1.x, -tempPoint$1.y, data.
|
|
4946
|
+
translateInner(local, -tempPoint$1.x, -tempPoint$1.y, !data.around);
|
|
4890
4947
|
}
|
|
4891
4948
|
}
|
|
4892
4949
|
this.__layout.matrixChanged = false;
|
|
@@ -4895,7 +4952,7 @@ const LeafMatrix = {
|
|
|
4895
4952
|
|
|
4896
4953
|
const { updateMatrix: updateMatrix$1, updateAllMatrix: updateAllMatrix$2 } = LeafHelper;
|
|
4897
4954
|
const { updateBounds: updateBounds$1 } = BranchHelper;
|
|
4898
|
-
const { toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$
|
|
4955
|
+
const { toOuterOf: toOuterOf$1, copyAndSpread: copyAndSpread$2, copy: copy$5 } = BoundsHelper;
|
|
4899
4956
|
const { toBounds: toBounds$2 } = PathBounds;
|
|
4900
4957
|
const LeafBounds = {
|
|
4901
4958
|
__updateWorldBounds() {
|
|
@@ -4996,7 +5053,7 @@ const LeafBounds = {
|
|
|
4996
5053
|
updateAllMatrix$2(this);
|
|
4997
5054
|
updateBounds$1(this, this);
|
|
4998
5055
|
if (this.__.__autoSide)
|
|
4999
|
-
this.__updateBoxBounds();
|
|
5056
|
+
this.__updateBoxBounds(true);
|
|
5000
5057
|
}
|
|
5001
5058
|
else {
|
|
5002
5059
|
updateAllMatrix$2(this);
|
|
@@ -5014,11 +5071,11 @@ const LeafBounds = {
|
|
|
5014
5071
|
},
|
|
5015
5072
|
__updateStrokeBounds() {
|
|
5016
5073
|
const layout = this.__layout;
|
|
5017
|
-
copyAndSpread$
|
|
5074
|
+
copyAndSpread$2(layout.strokeBounds, layout.boxBounds, layout.strokeBoxSpread);
|
|
5018
5075
|
},
|
|
5019
5076
|
__updateRenderBounds() {
|
|
5020
5077
|
const layout = this.__layout;
|
|
5021
|
-
layout.renderSpread > 0 ? copyAndSpread$
|
|
5078
|
+
layout.renderSpread > 0 ? copyAndSpread$2(layout.renderBounds, layout.boxBounds, layout.renderSpread) : copy$5(layout.renderBounds, layout.strokeBounds);
|
|
5022
5079
|
}
|
|
5023
5080
|
};
|
|
5024
5081
|
|
|
@@ -5115,7 +5172,7 @@ const { LEAF, create } = IncrementId;
|
|
|
5115
5172
|
const { toInnerPoint, toOuterPoint, multiplyParent } = MatrixHelper;
|
|
5116
5173
|
const { toOuterOf } = BoundsHelper;
|
|
5117
5174
|
const { copy: copy$4 } = PointHelper;
|
|
5118
|
-
const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
|
|
5175
|
+
const { moveLocal, zoomOfLocal, rotateOfLocal, skewOfLocal, moveWorld, zoomOfWorld, rotateOfWorld, skewOfWorld, transform, transformWorld, setTransform, getFlipTransform, getLocalOrigin, getRelativeWorld, drop } = LeafHelper;
|
|
5119
5176
|
let Leaf = class Leaf {
|
|
5120
5177
|
get tag() { return this.__tag; }
|
|
5121
5178
|
set tag(_value) { }
|
|
@@ -5141,6 +5198,8 @@ let Leaf = class Leaf {
|
|
|
5141
5198
|
get __ignoreHitWorld() { return (this.__hasMask || this.__hasEraser) && this.__.hitChildren; }
|
|
5142
5199
|
get __inLazyBounds() { const { leafer } = this; return leafer && leafer.created && leafer.lazyBounds.hit(this.__world); }
|
|
5143
5200
|
get pathInputed() { return this.__.__pathInputed; }
|
|
5201
|
+
set event(map) { let event; for (let key in map)
|
|
5202
|
+
event = map[key], event instanceof Array ? this.on(key, event[0], event[1]) : this.on(key, event); }
|
|
5144
5203
|
constructor(data) {
|
|
5145
5204
|
this.innerId = create(LEAF);
|
|
5146
5205
|
this.reset(data);
|
|
@@ -5376,6 +5435,9 @@ let Leaf = class Leaf {
|
|
|
5376
5435
|
move(x, y) {
|
|
5377
5436
|
moveLocal(this, x, y);
|
|
5378
5437
|
}
|
|
5438
|
+
moveInner(x, y) {
|
|
5439
|
+
moveWorld(this, x, y, true);
|
|
5440
|
+
}
|
|
5379
5441
|
scaleOf(origin, scaleX, scaleY, resize) {
|
|
5380
5442
|
zoomOfLocal(this, getLocalOrigin(this, origin), scaleX, scaleY, resize);
|
|
5381
5443
|
}
|
|
@@ -5400,6 +5462,9 @@ let Leaf = class Leaf {
|
|
|
5400
5462
|
skewOfWorld(worldOrigin, skewX, skewY, resize) {
|
|
5401
5463
|
skewOfWorld(this, worldOrigin, skewX, skewY, resize);
|
|
5402
5464
|
}
|
|
5465
|
+
flip(axis) {
|
|
5466
|
+
transform(this, getFlipTransform(this, axis));
|
|
5467
|
+
}
|
|
5403
5468
|
scaleResize(scaleX, scaleY = scaleX, _noResize) {
|
|
5404
5469
|
this.scaleX *= scaleX;
|
|
5405
5470
|
this.scaleY *= scaleY;
|
|
@@ -5757,7 +5822,7 @@ class LeafLevelList {
|
|
|
5757
5822
|
}
|
|
5758
5823
|
}
|
|
5759
5824
|
|
|
5760
|
-
const version = "1.0.
|
|
5825
|
+
const version = "1.0.1";
|
|
5761
5826
|
const inviteCode = {};
|
|
5762
5827
|
|
|
5763
5828
|
const debug$7 = Debug.get('LeaferCanvas');
|
|
@@ -5781,7 +5846,8 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
5781
5846
|
}
|
|
5782
5847
|
}
|
|
5783
5848
|
init() {
|
|
5784
|
-
const {
|
|
5849
|
+
const { config } = this;
|
|
5850
|
+
const view = config.view || config.canvas;
|
|
5785
5851
|
view ? this.__createViewFrom(view) : this.__createView();
|
|
5786
5852
|
const { style } = this.view;
|
|
5787
5853
|
style.display || (style.display = 'block');
|
|
@@ -5796,7 +5862,7 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
5796
5862
|
}
|
|
5797
5863
|
this.__createContext();
|
|
5798
5864
|
if (!this.autoLayout)
|
|
5799
|
-
this.resize(
|
|
5865
|
+
this.resize(config);
|
|
5800
5866
|
}
|
|
5801
5867
|
set backgroundColor(color) { this.view.style.backgroundColor = color; }
|
|
5802
5868
|
get backgroundColor() { return this.view.style.backgroundColor; }
|
|
@@ -5852,26 +5918,37 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
5852
5918
|
this.clientBounds = this.view.getBoundingClientRect();
|
|
5853
5919
|
}
|
|
5854
5920
|
startAutoLayout(autoBounds, listener) {
|
|
5855
|
-
this.autoBounds = autoBounds;
|
|
5856
5921
|
this.resizeListener = listener;
|
|
5857
|
-
|
|
5858
|
-
this.
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
this.
|
|
5862
|
-
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
this.
|
|
5866
|
-
|
|
5922
|
+
if (autoBounds) {
|
|
5923
|
+
this.autoBounds = autoBounds;
|
|
5924
|
+
try {
|
|
5925
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
5926
|
+
this.updateClientBounds();
|
|
5927
|
+
for (const entry of entries)
|
|
5928
|
+
this.checkAutoBounds(entry.contentRect);
|
|
5929
|
+
});
|
|
5930
|
+
const parent = this.parentView;
|
|
5931
|
+
if (parent) {
|
|
5932
|
+
this.resizeObserver.observe(parent);
|
|
5933
|
+
this.checkAutoBounds(parent.getBoundingClientRect());
|
|
5934
|
+
}
|
|
5935
|
+
else {
|
|
5936
|
+
this.checkAutoBounds(this.view);
|
|
5937
|
+
debug$7.warn('no parent');
|
|
5938
|
+
}
|
|
5867
5939
|
}
|
|
5868
|
-
|
|
5869
|
-
this.
|
|
5870
|
-
debug$7.warn('no parent');
|
|
5940
|
+
catch (_a) {
|
|
5941
|
+
this.imitateResizeObserver();
|
|
5871
5942
|
}
|
|
5872
5943
|
}
|
|
5873
|
-
|
|
5874
|
-
|
|
5944
|
+
else {
|
|
5945
|
+
window.addEventListener('resize', () => {
|
|
5946
|
+
const pixelRatio = Platform.devicePixelRatio;
|
|
5947
|
+
if (this.pixelRatio !== pixelRatio) {
|
|
5948
|
+
const { width, height } = this;
|
|
5949
|
+
this.emitResize({ width, height, pixelRatio });
|
|
5950
|
+
}
|
|
5951
|
+
});
|
|
5875
5952
|
}
|
|
5876
5953
|
}
|
|
5877
5954
|
imitateResizeObserver() {
|
|
@@ -5884,17 +5961,12 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
5884
5961
|
checkAutoBounds(parentSize) {
|
|
5885
5962
|
const view = this.view;
|
|
5886
5963
|
const { x, y, width, height } = this.autoBounds.getBoundsFrom(parentSize);
|
|
5887
|
-
|
|
5964
|
+
const size = { width, height, pixelRatio: Platform.devicePixelRatio };
|
|
5965
|
+
if (!this.isSameSize(size)) {
|
|
5888
5966
|
const { style } = view;
|
|
5889
|
-
const { pixelRatio } = this;
|
|
5890
5967
|
style.marginLeft = x + 'px';
|
|
5891
5968
|
style.marginTop = y + 'px';
|
|
5892
|
-
|
|
5893
|
-
const oldSize = {};
|
|
5894
|
-
DataHelper.copyAttrs(oldSize, this, canvasSizeAttrs);
|
|
5895
|
-
this.resize(size);
|
|
5896
|
-
if (this.width !== undefined)
|
|
5897
|
-
this.resizeListener(new ResizeEvent(size, oldSize));
|
|
5969
|
+
this.emitResize(size);
|
|
5898
5970
|
}
|
|
5899
5971
|
}
|
|
5900
5972
|
stopAutoLayout() {
|
|
@@ -5905,6 +5977,13 @@ class LeaferCanvas extends LeaferCanvasBase {
|
|
|
5905
5977
|
this.resizeObserver = null;
|
|
5906
5978
|
}
|
|
5907
5979
|
}
|
|
5980
|
+
emitResize(size) {
|
|
5981
|
+
const oldSize = {};
|
|
5982
|
+
DataHelper.copyAttrs(oldSize, this, canvasSizeAttrs);
|
|
5983
|
+
this.resize(size);
|
|
5984
|
+
if (this.width !== undefined)
|
|
5985
|
+
this.resizeListener(new ResizeEvent(size, oldSize));
|
|
5986
|
+
}
|
|
5908
5987
|
unrealCanvas() {
|
|
5909
5988
|
if (!this.unreal && this.parentView) {
|
|
5910
5989
|
const view = this.view;
|
|
@@ -5985,7 +6064,7 @@ function useCanvas(_canvasType, _power) {
|
|
|
5985
6064
|
Platform.name = 'web';
|
|
5986
6065
|
Platform.isMobile = 'ontouchstart' in window;
|
|
5987
6066
|
Platform.requestRender = function (render) { window.requestAnimationFrame(render); };
|
|
5988
|
-
Platform
|
|
6067
|
+
defineKey(Platform, 'devicePixelRatio', { get() { return Math.max(1, devicePixelRatio); } });
|
|
5989
6068
|
const { userAgent } = navigator;
|
|
5990
6069
|
if (userAgent.indexOf("Firefox") > -1) {
|
|
5991
6070
|
Platform.conicGradientRotate90 = true;
|
|
@@ -6482,14 +6561,14 @@ class Renderer {
|
|
|
6482
6561
|
if (Debug.showRepaint)
|
|
6483
6562
|
this.canvas.strokeWorld(bounds, 'red');
|
|
6484
6563
|
this.target.__render(this.canvas, options);
|
|
6485
|
-
this.renderBounds = realBounds || bounds;
|
|
6564
|
+
this.renderBounds = realBounds = realBounds || bounds;
|
|
6486
6565
|
this.renderOptions = options;
|
|
6487
|
-
this.totalBounds.isEmpty() ? this.totalBounds =
|
|
6566
|
+
this.totalBounds.isEmpty() ? this.totalBounds = realBounds : this.totalBounds.add(realBounds);
|
|
6488
6567
|
if (Debug.showHitView)
|
|
6489
6568
|
this.renderHitView(options);
|
|
6490
6569
|
if (Debug.showBoundsView)
|
|
6491
6570
|
this.renderBoundsView(options);
|
|
6492
|
-
this.canvas.updateRender();
|
|
6571
|
+
this.canvas.updateRender(realBounds);
|
|
6493
6572
|
}
|
|
6494
6573
|
renderHitView(_options) { }
|
|
6495
6574
|
renderBoundsView(_options) { }
|
|
@@ -7069,6 +7148,11 @@ class BoxData extends GroupData {
|
|
|
7069
7148
|
}
|
|
7070
7149
|
|
|
7071
7150
|
class LeaferData extends GroupData {
|
|
7151
|
+
__getInputData() {
|
|
7152
|
+
const data = super.__getInputData();
|
|
7153
|
+
canvasSizeAttrs.forEach(key => delete data[key]);
|
|
7154
|
+
return data;
|
|
7155
|
+
}
|
|
7072
7156
|
}
|
|
7073
7157
|
|
|
7074
7158
|
class FrameData extends BoxData {
|
|
@@ -7146,6 +7230,11 @@ class ImageData extends RectData {
|
|
|
7146
7230
|
}
|
|
7147
7231
|
|
|
7148
7232
|
class CanvasData extends RectData {
|
|
7233
|
+
__getInputData() {
|
|
7234
|
+
const data = super.__getInputData();
|
|
7235
|
+
data.url = this.__leaf.canvas.toDataURL('image/png');
|
|
7236
|
+
return data;
|
|
7237
|
+
}
|
|
7149
7238
|
}
|
|
7150
7239
|
|
|
7151
7240
|
const UIBounds = {
|
|
@@ -7811,7 +7900,7 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7811
7900
|
this.__controllers.push(this.renderer = Creator.renderer(this, canvas, config), this.watcher = Creator.watcher(this, config), this.layouter = Creator.layouter(this, config));
|
|
7812
7901
|
if (this.isApp)
|
|
7813
7902
|
this.__setApp();
|
|
7814
|
-
this.__checkAutoLayout(config);
|
|
7903
|
+
this.__checkAutoLayout(config, parentApp);
|
|
7815
7904
|
this.view = canvas.view;
|
|
7816
7905
|
if (parentApp) {
|
|
7817
7906
|
this.__bindApp(parentApp);
|
|
@@ -7912,9 +8001,10 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
7912
8001
|
this.leafer = leafer;
|
|
7913
8002
|
this.__level = 1;
|
|
7914
8003
|
}
|
|
7915
|
-
__checkAutoLayout(config) {
|
|
7916
|
-
if (!
|
|
7917
|
-
|
|
8004
|
+
__checkAutoLayout(config, parentApp) {
|
|
8005
|
+
if (!parentApp) {
|
|
8006
|
+
if (!config.width || !config.height)
|
|
8007
|
+
this.autoLayout = new AutoBounds(config);
|
|
7918
8008
|
this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this));
|
|
7919
8009
|
}
|
|
7920
8010
|
}
|
|
@@ -8049,12 +8139,21 @@ let Leafer = Leafer_1 = class Leafer extends Group {
|
|
|
8049
8139
|
list.push(item);
|
|
8050
8140
|
}
|
|
8051
8141
|
}
|
|
8052
|
-
zoom(_zoomType, _padding, _fixedScale) {
|
|
8142
|
+
zoom(_zoomType, _padding, _fixedScale) {
|
|
8143
|
+
return debug$3.error('need @leafer-in/view');
|
|
8144
|
+
}
|
|
8053
8145
|
getValidMove(moveX, moveY) { return { x: moveX, y: moveY }; }
|
|
8054
8146
|
getValidScale(changeScale) { return changeScale; }
|
|
8055
8147
|
getWorldPointByClient(clientPoint, updateClient) {
|
|
8056
8148
|
return this.interaction && this.interaction.getLocal(clientPoint, updateClient);
|
|
8057
8149
|
}
|
|
8150
|
+
getPagePointByClient(clientPoint, updateClient) {
|
|
8151
|
+
return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient));
|
|
8152
|
+
}
|
|
8153
|
+
updateClientBounds() {
|
|
8154
|
+
this.canvas && this.canvas.updateClientBounds();
|
|
8155
|
+
}
|
|
8156
|
+
receiveEvent(_event) { }
|
|
8058
8157
|
__checkUpdateLayout() {
|
|
8059
8158
|
this.__layout.update();
|
|
8060
8159
|
}
|
|
@@ -8138,7 +8237,7 @@ Rect = __decorate([
|
|
|
8138
8237
|
const rect$1 = Rect.prototype;
|
|
8139
8238
|
const group$1 = Group.prototype;
|
|
8140
8239
|
const childrenRenderBounds = {};
|
|
8141
|
-
const { copy: copy$3, add, includes: includes$1 } = BoundsHelper;
|
|
8240
|
+
const { copy: copy$3, add, includes: includes$1, copyAndSpread: copyAndSpread$1 } = BoundsHelper;
|
|
8142
8241
|
let Box = class Box extends Group {
|
|
8143
8242
|
get __tag() { return 'Box'; }
|
|
8144
8243
|
get isBranchLeaf() { return true; }
|
|
@@ -8152,20 +8251,23 @@ let Box = class Box extends Group {
|
|
|
8152
8251
|
return this.__updateRectRenderSpread() || -1;
|
|
8153
8252
|
}
|
|
8154
8253
|
__updateRectBoxBounds() { }
|
|
8155
|
-
__updateBoxBounds() {
|
|
8254
|
+
__updateBoxBounds(secondLayout) {
|
|
8156
8255
|
const data = this.__;
|
|
8157
8256
|
if (this.children.length) {
|
|
8158
8257
|
if (data.__autoSide) {
|
|
8159
8258
|
if (this.leafer && this.leafer.ready)
|
|
8160
8259
|
this.leafer.layouter.addExtra(this);
|
|
8161
8260
|
super.__updateBoxBounds();
|
|
8261
|
+
const { boxBounds } = this.__layout;
|
|
8162
8262
|
if (!data.__autoSize) {
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
b.width += b.x, b.height = data.height, b.y = b.x = 0;
|
|
8263
|
+
if (data.__autoWidth)
|
|
8264
|
+
boxBounds.width += boxBounds.x, boxBounds.height = data.height, boxBounds.y = boxBounds.x = 0;
|
|
8265
|
+
else
|
|
8266
|
+
boxBounds.height += boxBounds.y, boxBounds.width = data.width, boxBounds.x = boxBounds.y = 0;
|
|
8168
8267
|
}
|
|
8268
|
+
if (secondLayout && data.flow && data.padding)
|
|
8269
|
+
copyAndSpread$1(boxBounds, boxBounds, data.padding, false, data.__autoSize ? null : (data.__autoWidth ? 'width' : 'height'));
|
|
8270
|
+
this.__updateNaturalSize();
|
|
8169
8271
|
}
|
|
8170
8272
|
else {
|
|
8171
8273
|
this.__updateRectBoxBounds();
|
|
@@ -8185,13 +8287,13 @@ let Box = class Box extends Group {
|
|
|
8185
8287
|
super.__updateRenderBounds();
|
|
8186
8288
|
copy$3(childrenRenderBounds, renderBounds);
|
|
8187
8289
|
this.__updateRectRenderBounds();
|
|
8188
|
-
isOverflow = !includes$1(renderBounds, childrenRenderBounds) ||
|
|
8290
|
+
isOverflow = !includes$1(renderBounds, childrenRenderBounds) || !this.pathInputed || !this.__.cornerRadius;
|
|
8189
8291
|
}
|
|
8190
8292
|
else {
|
|
8191
8293
|
this.__updateRectRenderBounds();
|
|
8192
8294
|
}
|
|
8193
8295
|
this.isOverflow !== isOverflow && (this.isOverflow = isOverflow);
|
|
8194
|
-
if (
|
|
8296
|
+
if (!(this.__.__drawAfterFill = this.__.overflow === 'hide') && isOverflow)
|
|
8195
8297
|
add(renderBounds, childrenRenderBounds);
|
|
8196
8298
|
}
|
|
8197
8299
|
__updateRectRenderBounds() { }
|
|
@@ -8525,14 +8627,26 @@ __decorate([
|
|
|
8525
8627
|
Image$1 = __decorate([
|
|
8526
8628
|
registerUI()
|
|
8527
8629
|
], Image$1);
|
|
8630
|
+
const MyImage = Image$1;
|
|
8528
8631
|
|
|
8529
8632
|
let Canvas = class Canvas extends Rect {
|
|
8530
8633
|
get __tag() { return 'Canvas'; }
|
|
8634
|
+
get ready() { return !this.url; }
|
|
8531
8635
|
constructor(data) {
|
|
8532
8636
|
super(data);
|
|
8533
8637
|
this.canvas = Creator.canvas(this.__);
|
|
8534
8638
|
this.context = this.canvas.context;
|
|
8535
8639
|
this.__.__isCanvas = this.__.__drawAfterFill = true;
|
|
8640
|
+
if (data && data.url)
|
|
8641
|
+
this.drawImage(data.url);
|
|
8642
|
+
}
|
|
8643
|
+
drawImage(url) {
|
|
8644
|
+
new LeaferImage({ url }).load((image) => {
|
|
8645
|
+
this.context.drawImage(image.view, 0, 0);
|
|
8646
|
+
this.url = undefined;
|
|
8647
|
+
this.paint();
|
|
8648
|
+
this.emitEvent(new ImageEvent(ImageEvent.LOADED, { image }));
|
|
8649
|
+
});
|
|
8536
8650
|
}
|
|
8537
8651
|
draw(ui, offset, scale, rotation) {
|
|
8538
8652
|
ui.__layout.update();
|
|
@@ -8576,8 +8690,7 @@ let Canvas = class Canvas extends Rect {
|
|
|
8576
8690
|
destroy() {
|
|
8577
8691
|
if (this.canvas) {
|
|
8578
8692
|
this.canvas.destroy();
|
|
8579
|
-
this.canvas = null;
|
|
8580
|
-
this.context = null;
|
|
8693
|
+
this.canvas = this.context = null;
|
|
8581
8694
|
}
|
|
8582
8695
|
super.destroy();
|
|
8583
8696
|
}
|
|
@@ -8592,7 +8705,7 @@ __decorate([
|
|
|
8592
8705
|
resizeType(100)
|
|
8593
8706
|
], Canvas.prototype, "height", void 0);
|
|
8594
8707
|
__decorate([
|
|
8595
|
-
resizeType(
|
|
8708
|
+
resizeType(1)
|
|
8596
8709
|
], Canvas.prototype, "pixelRatio", void 0);
|
|
8597
8710
|
__decorate([
|
|
8598
8711
|
resizeType(true)
|
|
@@ -8616,13 +8729,13 @@ let Text = class Text extends UI {
|
|
|
8616
8729
|
super(data);
|
|
8617
8730
|
}
|
|
8618
8731
|
__drawHitPath(canvas) {
|
|
8619
|
-
const { __lineHeight, __baseLine, __textDrawData: data } = this.__;
|
|
8732
|
+
const { __lineHeight, fontSize, __baseLine, __textDrawData: data } = this.__;
|
|
8620
8733
|
canvas.beginPath();
|
|
8621
8734
|
if (this.__.__letterSpacing < 0) {
|
|
8622
8735
|
this.__drawPathByData(canvas);
|
|
8623
8736
|
}
|
|
8624
8737
|
else {
|
|
8625
|
-
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight));
|
|
8738
|
+
data.rows.forEach(row => canvas.rect(row.x, row.y - __baseLine, row.width, __lineHeight < fontSize ? fontSize : __lineHeight));
|
|
8626
8739
|
}
|
|
8627
8740
|
}
|
|
8628
8741
|
__drawPathByData(drawer, _data) {
|
|
@@ -8815,7 +8928,8 @@ let Pen = class Pen extends Group {
|
|
|
8815
8928
|
drawPoints(_points, _curve, _close) { return this; }
|
|
8816
8929
|
clearPath() { return this; }
|
|
8817
8930
|
paint() {
|
|
8818
|
-
this.pathElement.
|
|
8931
|
+
if (!this.pathElement.__layout.boxChanged)
|
|
8932
|
+
this.pathElement.forceUpdate('path');
|
|
8819
8933
|
}
|
|
8820
8934
|
};
|
|
8821
8935
|
__decorate([
|
|
@@ -8825,7 +8939,7 @@ __decorate([
|
|
|
8825
8939
|
penPathType()
|
|
8826
8940
|
], Pen.prototype, "path", void 0);
|
|
8827
8941
|
Pen = __decorate([
|
|
8828
|
-
useModule(PathCreator, ['set', 'beginPath', 'path']),
|
|
8942
|
+
useModule(PathCreator, ['set', 'beginPath', 'path', 'paint']),
|
|
8829
8943
|
registerUI()
|
|
8830
8944
|
], Pen);
|
|
8831
8945
|
function penPathType() {
|
|
@@ -8930,11 +9044,13 @@ let App = class App extends Leafer {
|
|
|
8930
9044
|
this.renderer.update();
|
|
8931
9045
|
}
|
|
8932
9046
|
__render(canvas, options) {
|
|
8933
|
-
if (
|
|
8934
|
-
|
|
8935
|
-
|
|
9047
|
+
if (canvas.context) {
|
|
9048
|
+
if (options.matrix) {
|
|
9049
|
+
const { a, b, c, d, e, f } = options.matrix;
|
|
9050
|
+
canvas.setTransform(a, b, c, d, e, f);
|
|
9051
|
+
}
|
|
9052
|
+
this.children.forEach(leafer => canvas.copyWorld(leafer.canvas));
|
|
8936
9053
|
}
|
|
8937
|
-
this.children.forEach(leafer => canvas.copyWorld(leafer.canvas));
|
|
8938
9054
|
}
|
|
8939
9055
|
__onResize(event) {
|
|
8940
9056
|
this.children.forEach(leafer => leafer.resize(event));
|
|
@@ -9046,6 +9162,7 @@ PointerEvent.MENU_TAP = 'pointer.menu_tap';
|
|
|
9046
9162
|
PointerEvent = __decorate([
|
|
9047
9163
|
registerUIEvent()
|
|
9048
9164
|
], PointerEvent);
|
|
9165
|
+
const MyPointerEvent = PointerEvent;
|
|
9049
9166
|
|
|
9050
9167
|
const move = {};
|
|
9051
9168
|
let DragEvent = class DragEvent extends PointerEvent {
|
|
@@ -9145,6 +9262,7 @@ DragEvent.LEAVE = 'drag.leave';
|
|
|
9145
9262
|
DragEvent = __decorate([
|
|
9146
9263
|
registerUIEvent()
|
|
9147
9264
|
], DragEvent);
|
|
9265
|
+
const MyDragEvent = DragEvent;
|
|
9148
9266
|
|
|
9149
9267
|
let DropEvent = class DropEvent extends PointerEvent {
|
|
9150
9268
|
static setList(data) {
|
|
@@ -9226,36 +9344,32 @@ function addInteractionWindow(leafer) {
|
|
|
9226
9344
|
|
|
9227
9345
|
function document$1(leafer) {
|
|
9228
9346
|
addInteractionWindow(leafer);
|
|
9229
|
-
|
|
9230
|
-
|
|
9347
|
+
const { move, zoom } = leafer.config;
|
|
9348
|
+
move.scroll = 'limit';
|
|
9349
|
+
zoom.min = 1;
|
|
9350
|
+
}
|
|
9351
|
+
|
|
9352
|
+
function block(leafer) {
|
|
9353
|
+
const { config } = leafer;
|
|
9354
|
+
(config.wheel || (config.wheel = {})).preventDefault = false;
|
|
9355
|
+
(config.touch || (config.touch = {})).preventDefault = 'auto';
|
|
9231
9356
|
}
|
|
9232
9357
|
|
|
9233
9358
|
const debug$2 = Debug.get('LeaferTypeCreator');
|
|
9234
9359
|
const LeaferTypeCreator = {
|
|
9235
9360
|
list: {},
|
|
9236
9361
|
register(name, fn) {
|
|
9237
|
-
|
|
9238
|
-
debug$2.repeat(name);
|
|
9239
|
-
}
|
|
9240
|
-
else {
|
|
9241
|
-
list[name] = fn;
|
|
9242
|
-
}
|
|
9362
|
+
list[name] ? debug$2.repeat(name) : list[name] = fn;
|
|
9243
9363
|
},
|
|
9244
9364
|
run(name, leafer) {
|
|
9245
9365
|
const fn = list[name];
|
|
9246
|
-
|
|
9247
|
-
fn(leafer);
|
|
9248
|
-
}
|
|
9249
|
-
else {
|
|
9250
|
-
debug$2.error('no', name);
|
|
9251
|
-
}
|
|
9366
|
+
fn && fn(leafer);
|
|
9252
9367
|
}
|
|
9253
9368
|
};
|
|
9254
9369
|
const { list, register } = LeaferTypeCreator;
|
|
9255
|
-
register('draw', () => { });
|
|
9256
|
-
register('custom', () => { });
|
|
9257
9370
|
register('design', addInteractionWindow);
|
|
9258
9371
|
register('document', document$1);
|
|
9372
|
+
register('block', block);
|
|
9259
9373
|
|
|
9260
9374
|
const leafer = Leafer.prototype;
|
|
9261
9375
|
leafer.initType = function (type) {
|
|
@@ -9301,11 +9415,14 @@ leafer.getValidScale = function (changeScale) {
|
|
|
9301
9415
|
};
|
|
9302
9416
|
|
|
9303
9417
|
class Transformer {
|
|
9418
|
+
get transforming() { return !!(this.moveData || this.zoomData || this.rotateData); }
|
|
9304
9419
|
constructor(interaction) {
|
|
9305
9420
|
this.interaction = interaction;
|
|
9306
9421
|
}
|
|
9307
9422
|
move(data) {
|
|
9308
9423
|
const { interaction } = this;
|
|
9424
|
+
if (!data.moveType)
|
|
9425
|
+
data.moveType = 'move';
|
|
9309
9426
|
if (!this.moveData) {
|
|
9310
9427
|
const { path } = interaction.selector.getByPoint(data, interaction.hitRadius);
|
|
9311
9428
|
data.path = path;
|
|
@@ -9441,7 +9558,13 @@ const InteractionHelper = {
|
|
|
9441
9558
|
find.add(list[i]);
|
|
9442
9559
|
}
|
|
9443
9560
|
return find;
|
|
9444
|
-
}
|
|
9561
|
+
},
|
|
9562
|
+
pathCanDrag(path) {
|
|
9563
|
+
return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent.DRAG)));
|
|
9564
|
+
},
|
|
9565
|
+
pathHasOutside(path) {
|
|
9566
|
+
return path && path.list.some(item => item.isOutside);
|
|
9567
|
+
},
|
|
9445
9568
|
};
|
|
9446
9569
|
const I = InteractionHelper;
|
|
9447
9570
|
|
|
@@ -9470,8 +9593,10 @@ class Dragger {
|
|
|
9470
9593
|
return;
|
|
9471
9594
|
}
|
|
9472
9595
|
if (!this.moving && canDrag) {
|
|
9473
|
-
if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey || interaction.isMobileDragEmpty)
|
|
9596
|
+
if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey || interaction.isMobileDragEmpty) {
|
|
9597
|
+
this.dragData.moveType = 'drag';
|
|
9474
9598
|
interaction.emit(MoveEvent.START, this.dragData);
|
|
9599
|
+
}
|
|
9475
9600
|
}
|
|
9476
9601
|
if (!this.moving) {
|
|
9477
9602
|
this.dragStart(data, canDrag);
|
|
@@ -9510,6 +9635,7 @@ class Dragger {
|
|
|
9510
9635
|
this.dragData.throughPath = throughPath;
|
|
9511
9636
|
this.dragData.path = path;
|
|
9512
9637
|
if (this.moving) {
|
|
9638
|
+
this.dragData.moveType = 'drag';
|
|
9513
9639
|
interaction.emit(MoveEvent.BEFORE_MOVE, this.dragData);
|
|
9514
9640
|
interaction.emit(MoveEvent.MOVE, this.dragData);
|
|
9515
9641
|
}
|
|
@@ -9576,6 +9702,7 @@ class Dragger {
|
|
|
9576
9702
|
endDragData.path = path;
|
|
9577
9703
|
if (this.moving) {
|
|
9578
9704
|
this.moving = false;
|
|
9705
|
+
endDragData.moveType = 'drag';
|
|
9579
9706
|
interaction.emit(MoveEvent.END, endDragData);
|
|
9580
9707
|
}
|
|
9581
9708
|
if (this.dragging) {
|
|
@@ -9634,7 +9761,7 @@ class Dragger {
|
|
|
9634
9761
|
totalY += moveY;
|
|
9635
9762
|
PointHelper.move(downData, moveX, moveY);
|
|
9636
9763
|
PointHelper.move(this.dragData, moveX, moveY);
|
|
9637
|
-
interaction.move(Object.assign(Object.assign({}, data), { moveX, moveY, totalX, totalY }));
|
|
9764
|
+
interaction.move(Object.assign(Object.assign({}, data), { moveX, moveY, totalX, totalY, moveType: 'drag' }));
|
|
9638
9765
|
interaction.pointerMoveReal(data);
|
|
9639
9766
|
}, 10);
|
|
9640
9767
|
}
|
|
@@ -9747,22 +9874,27 @@ const config = {
|
|
|
9747
9874
|
swipeDistance: 20,
|
|
9748
9875
|
preventDefaultMenu: true
|
|
9749
9876
|
},
|
|
9877
|
+
touch: {
|
|
9878
|
+
preventDefault: true
|
|
9879
|
+
},
|
|
9750
9880
|
cursor: true,
|
|
9751
9881
|
keyEvent: true
|
|
9752
9882
|
};
|
|
9753
9883
|
|
|
9754
|
-
const { pathHasEventType, getMoveEventData: getMoveEventData$1, getZoomEventData: getZoomEventData$1, getRotateEventData: getRotateEventData$1 } = InteractionHelper;
|
|
9884
|
+
const { pathHasEventType, getMoveEventData: getMoveEventData$1, getZoomEventData: getZoomEventData$1, getRotateEventData: getRotateEventData$1, pathCanDrag: pathCanDrag$1, pathHasOutside } = InteractionHelper;
|
|
9755
9885
|
class InteractionBase {
|
|
9756
9886
|
get dragging() { return this.dragger.dragging; }
|
|
9757
|
-
get
|
|
9887
|
+
get transforming() { return this.transformer.transforming; }
|
|
9888
|
+
get moveMode() { return this.config.move.drag === true || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty; }
|
|
9889
|
+
get canHover() { return this.config.pointer.hover && !this.config.mobile; }
|
|
9758
9890
|
get isDragEmpty() { return this.config.move.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)); }
|
|
9759
|
-
get isMobileDragEmpty() { return this.config.move.dragEmpty && !this.
|
|
9891
|
+
get isMobileDragEmpty() { return this.config.move.dragEmpty && !this.canHover && this.downData && this.isTreePath(this.downData); }
|
|
9760
9892
|
get isHoldMiddleKey() { return this.config.move.holdMiddleKey && this.downData && PointerButton.middle(this.downData); }
|
|
9761
9893
|
get isHoldRightKey() { return this.config.move.holdRightKey && this.downData && PointerButton.right(this.downData); }
|
|
9762
9894
|
get isHoldSpaceKey() { return this.config.move.holdSpaceKey && Keyboard.isHoldSpaceKey(); }
|
|
9763
9895
|
get hitRadius() { return this.config.pointer.hitRadius; }
|
|
9764
9896
|
constructor(target, canvas, selector, userConfig) {
|
|
9765
|
-
this.config = config;
|
|
9897
|
+
this.config = DataHelper.clone(config);
|
|
9766
9898
|
this.tapCount = 0;
|
|
9767
9899
|
this.downKeyMap = {};
|
|
9768
9900
|
this.target = target;
|
|
@@ -9849,6 +9981,7 @@ class InteractionBase {
|
|
|
9849
9981
|
if (!downData)
|
|
9850
9982
|
return;
|
|
9851
9983
|
PointerButton.defaultLeft(data);
|
|
9984
|
+
data.multiTouch = downData.multiTouch;
|
|
9852
9985
|
this.findPath(data);
|
|
9853
9986
|
const upData = Object.assign(Object.assign({}, data), { path: data.path.clone() });
|
|
9854
9987
|
data.path.addList(downData.path.list);
|
|
@@ -9921,7 +10054,7 @@ class InteractionBase {
|
|
|
9921
10054
|
this.updateCursor();
|
|
9922
10055
|
}
|
|
9923
10056
|
pointerHover(data) {
|
|
9924
|
-
if (this.
|
|
10057
|
+
if (this.canHover) {
|
|
9925
10058
|
this.pointerOverOrOut(data);
|
|
9926
10059
|
this.pointerEnterOrLeave(data);
|
|
9927
10060
|
}
|
|
@@ -10013,11 +10146,11 @@ class InteractionBase {
|
|
|
10013
10146
|
return app.editor && (!data.path.has(app.editor) && data.path.has(app.tree) && !data.target.syncEventer);
|
|
10014
10147
|
}
|
|
10015
10148
|
checkPath(data, useDefaultPath) {
|
|
10016
|
-
if (useDefaultPath || this.
|
|
10149
|
+
if (useDefaultPath || (this.moveMode && !pathHasOutside(data.path)))
|
|
10017
10150
|
data.path = this.defaultPath;
|
|
10018
10151
|
}
|
|
10019
10152
|
canMove(data) {
|
|
10020
|
-
return this.moveMode
|
|
10153
|
+
return data && (this.moveMode || (this.config.move.drag === 'auto' && !pathCanDrag$1(data.path))) && !pathHasOutside(data.path);
|
|
10021
10154
|
}
|
|
10022
10155
|
isDrag(leaf) {
|
|
10023
10156
|
return this.dragger.getList().has(leaf);
|
|
@@ -10058,7 +10191,7 @@ class InteractionBase {
|
|
|
10058
10191
|
this.hoverData = data;
|
|
10059
10192
|
}
|
|
10060
10193
|
updateCursor(data) {
|
|
10061
|
-
if (!this.config.cursor || !this.
|
|
10194
|
+
if (!this.config.cursor || !this.canHover)
|
|
10062
10195
|
return;
|
|
10063
10196
|
if (!data) {
|
|
10064
10197
|
this.updateHoverData();
|
|
@@ -10380,7 +10513,7 @@ const PointerEventHelper = {
|
|
|
10380
10513
|
convertTouch(e, local) {
|
|
10381
10514
|
const touch = PointerEventHelper.getTouch(e);
|
|
10382
10515
|
const base = InteractionHelper.getBase(e);
|
|
10383
|
-
return Object.assign(Object.assign({}, base), { x: local.x, y: local.y, width: 1, height: 1, pointerType: 'touch', pressure: touch.force });
|
|
10516
|
+
return Object.assign(Object.assign({}, base), { x: local.x, y: local.y, width: 1, height: 1, pointerType: 'touch', multiTouch: e.touches.length > 1, pressure: touch.force });
|
|
10384
10517
|
},
|
|
10385
10518
|
getTouch(e) {
|
|
10386
10519
|
return e.targetTouches[0] || e.changedTouches[0];
|
|
@@ -10435,7 +10568,7 @@ const KeyEventHelper = {
|
|
|
10435
10568
|
}
|
|
10436
10569
|
};
|
|
10437
10570
|
|
|
10438
|
-
const { getMoveEventData, getZoomEventData, getRotateEventData } = InteractionHelper;
|
|
10571
|
+
const { getMoveEventData, getZoomEventData, getRotateEventData, pathCanDrag } = InteractionHelper;
|
|
10439
10572
|
class Interaction extends InteractionBase {
|
|
10440
10573
|
__listenEvents() {
|
|
10441
10574
|
super.__listenEvents();
|
|
@@ -10521,21 +10654,21 @@ class Interaction extends InteractionBase {
|
|
|
10521
10654
|
}
|
|
10522
10655
|
onPointerDown(e) {
|
|
10523
10656
|
this.preventDefaultPointer(e);
|
|
10524
|
-
this.
|
|
10525
|
-
if (this.useMultiTouch)
|
|
10657
|
+
if (this.config.pointer.touch || this.useMultiTouch)
|
|
10526
10658
|
return;
|
|
10659
|
+
this.usePointer || (this.usePointer = true);
|
|
10527
10660
|
this.pointerDown(PointerEventHelper.convert(e, this.getLocal(e)));
|
|
10528
10661
|
}
|
|
10529
10662
|
onPointerMove(e) {
|
|
10530
|
-
this.
|
|
10531
|
-
if (this.useMultiTouch || this.preventWindowPointer(e))
|
|
10663
|
+
if (this.config.pointer.touch || this.useMultiTouch || this.preventWindowPointer(e))
|
|
10532
10664
|
return;
|
|
10665
|
+
this.usePointer || (this.usePointer = true);
|
|
10533
10666
|
this.pointerMove(PointerEventHelper.convert(e, this.getLocal(e, true)));
|
|
10534
10667
|
}
|
|
10535
10668
|
onPointerUp(e) {
|
|
10536
10669
|
if (this.downData)
|
|
10537
10670
|
this.preventDefaultPointer(e);
|
|
10538
|
-
if (this.useMultiTouch || this.preventWindowPointer(e))
|
|
10671
|
+
if (this.config.pointer.touch || this.useMultiTouch || this.preventWindowPointer(e))
|
|
10539
10672
|
return;
|
|
10540
10673
|
this.pointerUp(PointerEventHelper.convert(e, this.getLocal(e)));
|
|
10541
10674
|
}
|
|
@@ -10568,7 +10701,11 @@ class Interaction extends InteractionBase {
|
|
|
10568
10701
|
this.pointerCancel();
|
|
10569
10702
|
}
|
|
10570
10703
|
onTouchStart(e) {
|
|
10571
|
-
|
|
10704
|
+
const touch = PointerEventHelper.getTouch(e);
|
|
10705
|
+
const local = this.getLocal(touch, true);
|
|
10706
|
+
const { preventDefault } = this.config.touch;
|
|
10707
|
+
if (preventDefault === true || (preventDefault === 'auto' && pathCanDrag(this.findPath(local))))
|
|
10708
|
+
e.preventDefault();
|
|
10572
10709
|
this.multiTouchStart(e);
|
|
10573
10710
|
if (this.usePointer)
|
|
10574
10711
|
return;
|
|
@@ -10577,8 +10714,7 @@ class Interaction extends InteractionBase {
|
|
|
10577
10714
|
this.touchTimer = 0;
|
|
10578
10715
|
}
|
|
10579
10716
|
this.useTouch = true;
|
|
10580
|
-
|
|
10581
|
-
this.pointerDown(PointerEventHelper.convertTouch(e, this.getLocal(touch, true)));
|
|
10717
|
+
this.pointerDown(PointerEventHelper.convertTouch(e, local));
|
|
10582
10718
|
}
|
|
10583
10719
|
onTouchMove(e) {
|
|
10584
10720
|
this.multiTouchMove(e);
|
|
@@ -10605,7 +10741,7 @@ class Interaction extends InteractionBase {
|
|
|
10605
10741
|
this.pointerCancel();
|
|
10606
10742
|
}
|
|
10607
10743
|
multiTouchStart(e) {
|
|
10608
|
-
this.useMultiTouch = (e.touches.length
|
|
10744
|
+
this.useMultiTouch = (e.touches.length > 1);
|
|
10609
10745
|
this.touches = this.useMultiTouch ? this.getTouches(e.touches) : undefined;
|
|
10610
10746
|
if (this.useMultiTouch)
|
|
10611
10747
|
this.pointerCancel();
|
|
@@ -11061,10 +11197,13 @@ function repeatMode(data, box, width, height, x, y, scaleX, scaleY, rotation, al
|
|
|
11061
11197
|
const { get: get$2, translate } = MatrixHelper;
|
|
11062
11198
|
const tempBox = new Bounds();
|
|
11063
11199
|
const tempPoint = {};
|
|
11200
|
+
const tempScaleData = {};
|
|
11064
11201
|
function createData(leafPaint, image, paint, box) {
|
|
11065
|
-
const { blendMode } = paint;
|
|
11202
|
+
const { blendMode, sync } = paint;
|
|
11066
11203
|
if (blendMode)
|
|
11067
11204
|
leafPaint.blendMode = blendMode;
|
|
11205
|
+
if (sync)
|
|
11206
|
+
leafPaint.sync = sync;
|
|
11068
11207
|
leafPaint.data = getPatternData(paint, box, image);
|
|
11069
11208
|
}
|
|
11070
11209
|
function getPatternData(paint, box, image) {
|
|
@@ -11084,13 +11223,10 @@ function getPatternData(paint, box, image) {
|
|
|
11084
11223
|
x += (box.width - width * scaleX) / 2, y += (box.height - height * scaleY) / 2;
|
|
11085
11224
|
}
|
|
11086
11225
|
}
|
|
11087
|
-
else if (size) {
|
|
11088
|
-
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
else if (scale) {
|
|
11092
|
-
scaleX = typeof scale === 'number' ? scale : scale.x;
|
|
11093
|
-
scaleY = typeof scale === 'number' ? scale : scale.y;
|
|
11226
|
+
else if (scale || size) {
|
|
11227
|
+
MathHelper.getScaleData(scale, size, image, tempScaleData);
|
|
11228
|
+
scaleX = tempScaleData.scaleX;
|
|
11229
|
+
scaleY = tempScaleData.scaleY;
|
|
11094
11230
|
}
|
|
11095
11231
|
if (align) {
|
|
11096
11232
|
const imageBounds = { x, y, width: swapWidth, height: swapHeight };
|
|
@@ -11295,7 +11431,7 @@ function createPattern(ui, paint, pixelRatio) {
|
|
|
11295
11431
|
const { abs } = Math;
|
|
11296
11432
|
function checkImage(ui, canvas, paint, allowPaint) {
|
|
11297
11433
|
const { scaleX, scaleY } = ImageManager.patternLocked ? ui.__world : ui.__nowWorld;
|
|
11298
|
-
if (!paint.data || paint.patternId === scaleX + '-' + scaleY) {
|
|
11434
|
+
if (!paint.data || (paint.patternId === scaleX + '-' + scaleY && !Export.running)) {
|
|
11299
11435
|
return false;
|
|
11300
11436
|
}
|
|
11301
11437
|
else {
|
|
@@ -11329,7 +11465,7 @@ function checkImage(ui, canvas, paint, allowPaint) {
|
|
|
11329
11465
|
return true;
|
|
11330
11466
|
}
|
|
11331
11467
|
else {
|
|
11332
|
-
if (!paint.style || Export.running) {
|
|
11468
|
+
if (!paint.style || paint.sync || Export.running) {
|
|
11333
11469
|
createPattern(ui, paint, canvas.pixelRatio);
|
|
11334
11470
|
}
|
|
11335
11471
|
else {
|
|
@@ -12199,6 +12335,7 @@ const ExportModule = {
|
|
|
12199
12335
|
export(leaf, filename, options) {
|
|
12200
12336
|
this.running = true;
|
|
12201
12337
|
const fileType = FileHelper.fileType(filename);
|
|
12338
|
+
const isDownload = filename.includes('.');
|
|
12202
12339
|
options = FileHelper.getExportOptions(options);
|
|
12203
12340
|
return addTask((success) => new Promise((resolve) => {
|
|
12204
12341
|
const over = (result) => {
|
|
@@ -12208,19 +12345,13 @@ const ExportModule = {
|
|
|
12208
12345
|
};
|
|
12209
12346
|
const { toURL } = Platform;
|
|
12210
12347
|
const { download } = Platform.origin;
|
|
12211
|
-
if (
|
|
12212
|
-
|
|
12213
|
-
|
|
12214
|
-
else if (fileType === 'json') {
|
|
12215
|
-
download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
12216
|
-
return over({ data: true });
|
|
12348
|
+
if (fileType === 'json') {
|
|
12349
|
+
isDownload && download(toURL(JSON.stringify(leaf.toJSON(options.json)), 'text'), filename);
|
|
12350
|
+
return over({ data: isDownload ? true : leaf.toJSON(options.json) });
|
|
12217
12351
|
}
|
|
12218
|
-
if (
|
|
12219
|
-
|
|
12220
|
-
|
|
12221
|
-
else if (fileType === 'svg') {
|
|
12222
|
-
download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
12223
|
-
return over({ data: true });
|
|
12352
|
+
if (fileType === 'svg') {
|
|
12353
|
+
isDownload && download(toURL(leaf.toSVG(), 'svg'), filename);
|
|
12354
|
+
return over({ data: isDownload ? true : leaf.toSVG() });
|
|
12224
12355
|
}
|
|
12225
12356
|
const { leafer } = leaf;
|
|
12226
12357
|
if (leafer) {
|
|
@@ -12229,14 +12360,8 @@ const ExportModule = {
|
|
|
12229
12360
|
let renderBounds, trimBounds, scaleX = 1, scaleY = 1;
|
|
12230
12361
|
const { worldTransform, isLeafer, isFrame } = leaf;
|
|
12231
12362
|
const { slice, trim, onCanvas } = options;
|
|
12232
|
-
let scale = options.scale || 1;
|
|
12233
|
-
let pixelRatio = options.pixelRatio || 1;
|
|
12234
12363
|
const smooth = options.smooth === undefined ? leafer.config.smooth : options.smooth;
|
|
12235
12364
|
const contextSettings = options.contextSettings || leafer.config.contextSettings;
|
|
12236
|
-
if (leaf.isApp) {
|
|
12237
|
-
scale *= pixelRatio;
|
|
12238
|
-
pixelRatio = leaf.app.pixelRatio;
|
|
12239
|
-
}
|
|
12240
12365
|
const screenshot = options.screenshot || leaf.isApp;
|
|
12241
12366
|
const fill = (isLeafer && screenshot) ? (options.fill === undefined ? leaf.fill : options.fill) : options.fill;
|
|
12242
12367
|
const needFill = FileHelper.isOpaqueImage(filename) || fill, matrix = new Matrix();
|
|
@@ -12270,10 +12395,21 @@ const ExportModule = {
|
|
|
12270
12395
|
}
|
|
12271
12396
|
renderBounds = leaf.getBounds('render', relative);
|
|
12272
12397
|
}
|
|
12273
|
-
const {
|
|
12398
|
+
const scaleData = { scaleX: 1, scaleY: 1 };
|
|
12399
|
+
MathHelper.getScaleData(options.scale, options.size, renderBounds, scaleData);
|
|
12400
|
+
let pixelRatio = options.pixelRatio || 1;
|
|
12401
|
+
if (leaf.isApp) {
|
|
12402
|
+
scaleData.scaleX *= pixelRatio;
|
|
12403
|
+
scaleData.scaleY *= pixelRatio;
|
|
12404
|
+
pixelRatio = leaf.app.pixelRatio;
|
|
12405
|
+
}
|
|
12406
|
+
const { x, y, width, height } = new Bounds(renderBounds).scale(scaleData.scaleX, scaleData.scaleY);
|
|
12407
|
+
const renderOptions = { matrix: matrix.scale(1 / scaleData.scaleX, 1 / scaleData.scaleY).invert().translate(-x, -y).withScale(1 / scaleX * scaleData.scaleX, 1 / scaleY * scaleData.scaleY) };
|
|
12274
12408
|
let canvas = Creator.canvas({ width: Math.round(width), height: Math.round(height), pixelRatio, smooth, contextSettings });
|
|
12275
|
-
|
|
12409
|
+
let sliceLeaf;
|
|
12276
12410
|
if (slice) {
|
|
12411
|
+
sliceLeaf = leaf;
|
|
12412
|
+
sliceLeaf.__worldOpacity = 0;
|
|
12277
12413
|
leaf = leafer;
|
|
12278
12414
|
renderOptions.bounds = canvas.bounds;
|
|
12279
12415
|
}
|
|
@@ -12288,6 +12424,8 @@ const ExportModule = {
|
|
|
12288
12424
|
leaf.__render(canvas, renderOptions);
|
|
12289
12425
|
}
|
|
12290
12426
|
canvas.restore();
|
|
12427
|
+
if (sliceLeaf)
|
|
12428
|
+
sliceLeaf.__updateWorldOpacity();
|
|
12291
12429
|
if (trim) {
|
|
12292
12430
|
trimBounds = getTrimBounds(canvas);
|
|
12293
12431
|
const old = canvas, { width, height } = trimBounds;
|
|
@@ -12377,4 +12515,4 @@ Object.assign(Creator, {
|
|
|
12377
12515
|
});
|
|
12378
12516
|
useCanvas();
|
|
12379
12517
|
|
|
12380
|
-
export { AlignHelper, AnimateEvent, 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, 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, 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, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, addInteractionWindow, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, inviteCode, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, stateType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
|
|
12518
|
+
export { AlignHelper, AnimateEvent, 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, 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, TwoPointBoundsHelper, UI, UIBounds, UICreator, UIData, UIEvent, UIRender, UnitConvert, WaitHelper, WatchEvent, Watcher, ZoomEvent, addInteractionWindow, affectRenderBoundsType, affectStrokeBoundsType, arrowType, attr, autoLayoutType, boundsType, canvasPatch, canvasSizeAttrs, cursorType, dataProcessor, dataType, decorateLeafAttr, defineDataProcessor, defineKey, defineLeafAttr, doBoundsType, doStrokeType, effectType, emptyData, eraserType, getBoundsData, getDescriptor, getMatrixData, getPointData, hitType, inviteCode, layoutProcessor, maskType, naturalBoundsType, opacityType, pathInputType, pathType, pen, positionType, registerUI, registerUIEvent, resizeType, rewrite, rewriteAble, rotationType, scaleType, sortType, stateType, strokeType, surfaceType, tempBounds$1 as tempBounds, tempMatrix, tempPoint$3 as tempPoint, useCanvas, useModule, version, visibleType, zoomLayerType };
|