@leafer-in/resize 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resize.cjs +153 -134
- package/dist/resize.esm.js +147 -133
- package/dist/resize.esm.min.js +1 -1
- package/dist/resize.esm.min.js.map +1 -1
- package/dist/resize.js +131 -141
- package/dist/resize.min.cjs +1 -1
- package/dist/resize.min.cjs.map +1 -1
- package/dist/resize.min.js +1 -1
- package/dist/resize.min.js.map +1 -1
- package/package.json +4 -4
- package/src/resize.ts +3 -4
- package/src/scaler.ts +4 -4
package/dist/resize.esm.js
CHANGED
|
@@ -1,69 +1,80 @@
|
|
|
1
|
-
import { PathCommandMap, MatrixHelper, Direction9, Leaf, Text, Path, Line, Polygon, Group, Box, Plugin } from
|
|
1
|
+
import { PathCommandMap, MatrixHelper, Direction9, isUndefined, isArray, isObject, Leaf, Text, Path, Line, Polygon, Group, Box, Plugin } from "@leafer-ui/draw";
|
|
2
|
+
|
|
3
|
+
const {M: M, L: L, C: C, Q: Q, Z: Z, N: N, D: D, X: X, G: G, F: F, O: O, P: P, U: U} = PathCommandMap;
|
|
2
4
|
|
|
3
|
-
const { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = PathCommandMap;
|
|
4
5
|
const PathScaler = {
|
|
5
6
|
scale(data, scaleX, scaleY) {
|
|
6
|
-
if (!data)
|
|
7
|
-
return;
|
|
7
|
+
if (!data) return;
|
|
8
8
|
let command;
|
|
9
9
|
let i = 0, len = data.length;
|
|
10
10
|
while (i < len) {
|
|
11
11
|
command = data[i];
|
|
12
12
|
switch (command) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
13
|
+
case M:
|
|
14
|
+
case L:
|
|
15
|
+
scalePoints(data, scaleX, scaleY, i, 1);
|
|
16
|
+
i += 3;
|
|
17
|
+
break;
|
|
18
|
+
|
|
19
|
+
case C:
|
|
20
|
+
scalePoints(data, scaleX, scaleY, i, 3);
|
|
21
|
+
i += 7;
|
|
22
|
+
break;
|
|
23
|
+
|
|
24
|
+
case Q:
|
|
25
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
26
|
+
i += 5;
|
|
27
|
+
break;
|
|
28
|
+
|
|
29
|
+
case Z:
|
|
30
|
+
i += 1;
|
|
31
|
+
break;
|
|
32
|
+
|
|
33
|
+
case N:
|
|
34
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
35
|
+
i += 5;
|
|
36
|
+
break;
|
|
37
|
+
|
|
38
|
+
case D:
|
|
39
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
40
|
+
i += 9;
|
|
41
|
+
break;
|
|
42
|
+
|
|
43
|
+
case X:
|
|
44
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
45
|
+
i += 6;
|
|
46
|
+
break;
|
|
47
|
+
|
|
48
|
+
case G:
|
|
49
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
50
|
+
i += 9;
|
|
51
|
+
break;
|
|
52
|
+
|
|
53
|
+
case F:
|
|
54
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
55
|
+
i += 5;
|
|
56
|
+
break;
|
|
57
|
+
|
|
58
|
+
case O:
|
|
59
|
+
data[i] = G;
|
|
60
|
+
data.splice(i + 4, 0, data[i + 3], 0);
|
|
61
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
62
|
+
i += 7 + 2;
|
|
63
|
+
len += 2;
|
|
64
|
+
break;
|
|
65
|
+
|
|
66
|
+
case P:
|
|
67
|
+
data[i] = F;
|
|
68
|
+
data.splice(i + 4, 0, data[i + 3]);
|
|
69
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
70
|
+
i += 4 + 1;
|
|
71
|
+
len += 1;
|
|
72
|
+
break;
|
|
73
|
+
|
|
74
|
+
case U:
|
|
75
|
+
scalePoints(data, scaleX, scaleY, i, 2);
|
|
76
|
+
i += 6;
|
|
77
|
+
break;
|
|
67
78
|
}
|
|
68
79
|
}
|
|
69
80
|
},
|
|
@@ -74,64 +85,69 @@ const PathScaler = {
|
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
87
|
};
|
|
77
|
-
|
|
88
|
+
|
|
89
|
+
const {scalePoints: scalePoints} = PathScaler;
|
|
78
90
|
|
|
79
91
|
const matrix = MatrixHelper.get();
|
|
80
|
-
|
|
92
|
+
|
|
93
|
+
const {topLeft: topLeft, top: top, topRight: topRight, right: right, bottom: bottom, left: left} = Direction9;
|
|
94
|
+
|
|
81
95
|
function scaleResize(leaf, scaleX, scaleY) {
|
|
82
96
|
if (leaf.pathInputed) {
|
|
83
97
|
scaleResizePath(leaf, scaleX, scaleY);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
leaf.width *= scaleX;
|
|
88
|
-
if (scaleY !== 1)
|
|
89
|
-
leaf.height *= scaleY;
|
|
98
|
+
} else {
|
|
99
|
+
if (scaleX !== 1) leaf.width *= scaleX;
|
|
100
|
+
if (scaleY !== 1) leaf.height *= scaleY;
|
|
90
101
|
}
|
|
91
102
|
}
|
|
103
|
+
|
|
92
104
|
function scaleResizeFontSize(leaf, scaleX, scaleY, direction) {
|
|
93
105
|
let fontScale = scaleX;
|
|
94
|
-
if (direction
|
|
106
|
+
if (!isUndefined(direction)) {
|
|
95
107
|
const layout = leaf.__layout;
|
|
96
|
-
let { width, height } = layout.boxBounds;
|
|
108
|
+
let {width: width, height: height} = layout.boxBounds;
|
|
97
109
|
width *= scaleY - scaleX;
|
|
98
110
|
height *= scaleX - scaleY;
|
|
99
111
|
switch (direction) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
case top:
|
|
113
|
+
case bottom:
|
|
114
|
+
fontScale = scaleY;
|
|
115
|
+
layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2;
|
|
116
|
+
break;
|
|
117
|
+
|
|
118
|
+
case left:
|
|
119
|
+
case right:
|
|
120
|
+
layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2;
|
|
121
|
+
break;
|
|
122
|
+
|
|
123
|
+
case topLeft:
|
|
124
|
+
case topRight:
|
|
125
|
+
layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height;
|
|
126
|
+
break;
|
|
113
127
|
}
|
|
114
128
|
}
|
|
115
129
|
leaf.fontSize *= fontScale;
|
|
116
|
-
const data = leaf.__, { padding
|
|
117
|
-
if (padding)
|
|
118
|
-
|
|
119
|
-
if (!data.
|
|
120
|
-
leaf.width *= fontScale;
|
|
121
|
-
if (!data.__autoHeight)
|
|
122
|
-
leaf.height *= fontScale;
|
|
130
|
+
const data = leaf.__, {padding: padding} = data;
|
|
131
|
+
if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale;
|
|
132
|
+
if (!data.__autoWidth) leaf.width *= fontScale;
|
|
133
|
+
if (!data.__autoHeight) leaf.height *= fontScale;
|
|
123
134
|
}
|
|
135
|
+
|
|
124
136
|
function scaleResizePath(leaf, scaleX, scaleY) {
|
|
125
137
|
PathScaler.scale(leaf.__.path, scaleX, scaleY);
|
|
126
138
|
leaf.path = leaf.__.path;
|
|
127
139
|
}
|
|
140
|
+
|
|
128
141
|
function scaleResizePoints(leaf, scaleX, scaleY) {
|
|
129
|
-
const { points
|
|
130
|
-
|
|
142
|
+
const {points: points} = leaf;
|
|
143
|
+
isObject(points[0]) ? points.forEach(p => {
|
|
144
|
+
p.x *= scaleX, p.y *= scaleY;
|
|
145
|
+
}) : PathScaler.scalePoints(points, scaleX, scaleY);
|
|
131
146
|
leaf.points = points;
|
|
132
147
|
}
|
|
148
|
+
|
|
133
149
|
function scaleResizeGroup(group, scaleX, scaleY) {
|
|
134
|
-
const { children
|
|
150
|
+
const {children: children} = group;
|
|
135
151
|
for (let i = 0; i < children.length; i++) {
|
|
136
152
|
matrix.a = scaleX;
|
|
137
153
|
matrix.d = scaleY;
|
|
@@ -140,81 +156,79 @@ function scaleResizeGroup(group, scaleX, scaleY) {
|
|
|
140
156
|
}
|
|
141
157
|
|
|
142
158
|
const leaf = Leaf.prototype;
|
|
143
|
-
|
|
159
|
+
|
|
160
|
+
leaf.scaleResize = function(scaleX, scaleY = scaleX, noResize) {
|
|
144
161
|
const data = this;
|
|
145
|
-
if (noResize ||
|
|
162
|
+
if (noResize || data.editConfig && data.editConfig.editSize === "scale") {
|
|
146
163
|
data.scaleX *= scaleX;
|
|
147
164
|
data.scaleY *= scaleY;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (
|
|
151
|
-
data.scaleX *= -1, scaleX = -scaleX;
|
|
152
|
-
if (scaleY < 0)
|
|
153
|
-
data.scaleY *= -1, scaleY = -scaleY;
|
|
165
|
+
} else {
|
|
166
|
+
if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX;
|
|
167
|
+
if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY;
|
|
154
168
|
this.__scaleResize(scaleX, scaleY);
|
|
155
169
|
}
|
|
156
170
|
};
|
|
157
|
-
|
|
171
|
+
|
|
172
|
+
leaf.__scaleResize = function(scaleX, scaleY) {
|
|
158
173
|
scaleResize(this, scaleX, scaleY);
|
|
159
174
|
};
|
|
160
|
-
|
|
161
|
-
|
|
175
|
+
|
|
176
|
+
leaf.resizeWidth = function(width) {
|
|
177
|
+
const scale = width / this.getBounds("box", "local").width || 1;
|
|
162
178
|
this.scaleOf(this.__layout.boxBounds, scale, this.__.lockRatio ? scale : 1, true);
|
|
163
179
|
};
|
|
164
|
-
|
|
165
|
-
|
|
180
|
+
|
|
181
|
+
leaf.resizeHeight = function(height) {
|
|
182
|
+
const scale = height / this.getBounds("box", "local").height || 1;
|
|
166
183
|
this.scaleOf(this.__layout.boxBounds, this.__.lockRatio ? scale : 1, scale, true);
|
|
167
184
|
};
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const {
|
|
171
|
-
if (
|
|
172
|
-
this.x += boxBounds.x;
|
|
173
|
-
if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1)
|
|
174
|
-
this.y += boxBounds.y;
|
|
175
|
-
if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {
|
|
185
|
+
|
|
186
|
+
Text.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
187
|
+
const {app: app, editConfig: editConfig} = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint;
|
|
188
|
+
if (this.__.resizeFontSize || editConfig && editConfig.editSize === "font-size" || dragPoint && editor.mergedConfig.editSize === "font-size") {
|
|
176
189
|
scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction);
|
|
177
|
-
}
|
|
178
|
-
|
|
190
|
+
} else {
|
|
191
|
+
const {__autoWidth: __autoWidth, __autoHeight: __autoHeight, textAlign: textAlign, verticalAlign: verticalAlign} = this.__, {boxBounds: boxBounds} = this.__layout;
|
|
192
|
+
if (__autoWidth && textAlign !== "left" && scaleX !== 1) this.x += boxBounds.x;
|
|
193
|
+
if (__autoHeight && verticalAlign !== "top" && scaleY !== 1) this.y += boxBounds.y;
|
|
179
194
|
scaleResize(this, scaleX, scaleY);
|
|
180
195
|
}
|
|
181
196
|
};
|
|
182
|
-
|
|
197
|
+
|
|
198
|
+
Path.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
183
199
|
scaleResizePath(this, scaleX, scaleY);
|
|
184
200
|
};
|
|
185
|
-
|
|
201
|
+
|
|
202
|
+
Line.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
186
203
|
if (this.pathInputed) {
|
|
187
204
|
scaleResizePath(this, scaleX, scaleY);
|
|
188
|
-
}
|
|
189
|
-
else if (this.points) {
|
|
205
|
+
} else if (this.points) {
|
|
190
206
|
scaleResizePoints(this, scaleX, scaleY);
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
207
|
+
} else {
|
|
193
208
|
this.width *= scaleX;
|
|
194
209
|
}
|
|
195
210
|
};
|
|
196
|
-
|
|
211
|
+
|
|
212
|
+
Polygon.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
197
213
|
if (this.pathInputed) {
|
|
198
214
|
scaleResizePath(this, scaleX, scaleY);
|
|
199
|
-
}
|
|
200
|
-
else if (this.points) {
|
|
215
|
+
} else if (this.points) {
|
|
201
216
|
scaleResizePoints(this, scaleX, scaleY);
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
217
|
+
} else {
|
|
204
218
|
scaleResize(this, scaleX, scaleY);
|
|
205
219
|
}
|
|
206
220
|
};
|
|
207
|
-
|
|
221
|
+
|
|
222
|
+
Group.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
208
223
|
scaleResizeGroup(this, scaleX, scaleY);
|
|
209
224
|
};
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (resizeChildren)
|
|
215
|
-
scaleResizeGroup(this, scaleX, scaleY);
|
|
225
|
+
|
|
226
|
+
Box.prototype.__scaleResize = function(scaleX, scaleY) {
|
|
227
|
+
const {resizeChildren: resizeChildren, __autoSize: __autoSize} = this.__;
|
|
228
|
+
if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY);
|
|
229
|
+
if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY);
|
|
216
230
|
};
|
|
217
231
|
|
|
218
|
-
Plugin.add(
|
|
232
|
+
Plugin.add("resize");
|
|
219
233
|
|
|
220
234
|
export { PathScaler, scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints };
|
package/dist/resize.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{PathCommandMap as t,MatrixHelper as e,Direction9 as i,
|
|
1
|
+
import{PathCommandMap as t,MatrixHelper as e,Direction9 as i,isUndefined as s,isArray as o,isObject as a,Leaf as n,Text as c,Path as h,Line as l,Polygon as r,Group as _,Box as f,Plugin as p}from"@leafer-ui/draw";const{M:d,L:u,C:g,Q:z,Z:b,N:y,D:k,X:R,G:x,F:m,O:S,P:w,U:B}=t,C={scale(t,e,i){if(!t)return;let s,o=0,a=t.length;for(;o<a;)switch(s=t[o],s){case d:case u:I(t,e,i,o,1),o+=3;break;case g:I(t,e,i,o,3),o+=7;break;case z:I(t,e,i,o,2),o+=5;break;case b:o+=1;break;case y:I(t,e,i,o,2),o+=5;break;case k:I(t,e,i,o,2),o+=9;break;case R:I(t,e,i,o,2),o+=6;break;case x:I(t,e,i,o,2),o+=9;break;case m:I(t,e,i,o,2),o+=5;break;case S:t[o]=x,t.splice(o+4,0,t[o+3],0),I(t,e,i,o,2),o+=9,a+=2;break;case w:t[o]=m,t.splice(o+4,0,t[o+3]),I(t,e,i,o,2),o+=5,a+=1;break;case B:I(t,e,i,o,2),o+=6}},scalePoints(t,e,i,s,o){for(let a=o?s+1:0,n=o?a+2*o:t.length;a<n;a+=2)t[a]*=e,t[a+1]*=i}},{scalePoints:I}=C,O=e.get(),{topLeft:P,top:v,topRight:H,right:W,bottom:X,left:A}=i;function F(t,e,i){t.pathInputed?Y(t,e,i):(1!==e&&(t.width*=e),1!==i&&(t.height*=i))}function L(t,e,i,a){let n=e;if(!s(a)){const s=t.__layout;let{width:o,height:c}=s.boxBounds;switch(o*=i-e,c*=e-i,a){case v:case X:n=i,s.affectScaleOrRotation?t.moveInner(-o/2,0):t.x-=o/2;break;case A:case W:s.affectScaleOrRotation?t.moveInner(0,-c/2):t.y-=c/2;break;case P:case H:s.affectScaleOrRotation?t.moveInner(0,-c):t.y-=c}}t.fontSize*=n;const c=t.__,{padding:h}=c;h&&(t.padding=o(h)?h.map(t=>t*n):h*n),c.__autoWidth||(t.width*=n),c.__autoHeight||(t.height*=n)}function Y(t,e,i){C.scale(t.__.path,e,i),t.path=t.__.path}function D(t,e,i){const{points:s}=t;a(s[0])?s.forEach(t=>{t.x*=e,t.y*=i}):C.scalePoints(s,e,i),t.points=s}function E(t,e,i){const{children:s}=t;for(let t=0;t<s.length;t++)O.a=e,O.d=i,s[t].transform(O,!0)}const G=n.prototype;G.scaleResize=function(t,e=t,i){const s=this;i||s.editConfig&&"scale"===s.editConfig.editSize?(s.scaleX*=t,s.scaleY*=e):(t<0&&(s.scaleX*=-1,t=-t),e<0&&(s.scaleY*=-1,e=-e),this.__scaleResize(t,e))},G.__scaleResize=function(t,e){F(this,t,e)},G.resizeWidth=function(t){const e=t/this.getBounds("box","local").width||1;this.scaleOf(this.__layout.boxBounds,e,this.__.lockRatio?e:1,!0)},G.resizeHeight=function(t){const e=t/this.getBounds("box","local").height||1;this.scaleOf(this.__layout.boxBounds,this.__.lockRatio?e:1,e,!0)},c.prototype.__scaleResize=function(t,e){const{app:i,editConfig:s}=this,o=i&&i.editor,a=o&&o.dragPoint;if(this.__.resizeFontSize||s&&"font-size"===s.editSize||a&&"font-size"===o.mergedConfig.editSize)L(this,t,e,a&&a.direction);else{const{__autoWidth:i,__autoHeight:s,textAlign:o,verticalAlign:a}=this.__,{boxBounds:n}=this.__layout;i&&"left"!==o&&1!==t&&(this.x+=n.x),s&&"top"!==a&&1!==e&&(this.y+=n.y),F(this,t,e)}},h.prototype.__scaleResize=function(t,e){Y(this,t,e)},l.prototype.__scaleResize=function(t,e){this.pathInputed?Y(this,t,e):this.points?D(this,t,e):this.width*=t},r.prototype.__scaleResize=function(t,e){this.pathInputed?Y(this,t,e):this.points?D(this,t,e):F(this,t,e)},_.prototype.__scaleResize=function(t,e){E(this,t,e)},f.prototype.__scaleResize=function(t,e){const{resizeChildren:i,__autoSize:s}=this.__;s&&i||F(this,t,e),i&&E(this,t,e)},p.add("resize");export{C as PathScaler,F as scaleResize,L as scaleResizeFontSize,E as scaleResizeGroup,Y as scaleResizePath,D as scaleResizePoints};
|
|
2
2
|
//# sourceMappingURL=resize.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize.esm.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (direction !== undefined) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding } = data\n if (padding) leaf.padding = padding instanceof Array ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n PathScaler.scale(leaf.__.path, scaleX, scaleY)\n leaf.path = leaf.__.path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n const { points } = leaf\n typeof points[0] === 'object' ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\n\nconst leaf = Leaf.prototype\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number): void {\n const scale = width / this.getBounds('box', 'local').width || 1 // 不允许为0\n this.scaleOf(this.__layout.boxBounds, scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number): void {\n const scale = height / this.getBounds('box', 'local').height || 1 // 不允许为0\n this.scaleOf(this.__layout.boxBounds, this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","undefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","Array","map","item","__autoWidth","__autoHeight","path","scaleResizePoints","points","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","noResize","this","editConfig","editSize","__scaleResize","resizeWidth","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","textAlign","verticalAlign","resizeFontSize","mergedConfig","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resize.esm.min.js","sources":["../../../../../../src/in/packages/resize/src/PathScaler.ts","../../../../../../src/in/packages/resize/src/scaler.ts","../../../../../../src/in/packages/resize/src/resize.ts","../../../../../../src/in/packages/resize/src/index.ts"],"sourcesContent":["import { IPathCommandData } from '@leafer-ui/interface'\n\nimport { PathCommandMap as Command } from '@leafer-ui/draw'\n\n\nconst { M, L, C, Q, Z, N, D, X, G, F, O, P, U } = Command\n\nexport const PathScaler = {\n\n scale(data: IPathCommandData, scaleX: number, scaleY: number): void {\n if (!data) return\n\n let command: number\n let i = 0, len = data.length\n\n while (i < len) {\n command = data[i]\n switch (command) {\n case M: //moveto(x, y)\n case L: //lineto(x, y)\n scalePoints(data, scaleX, scaleY, i, 1)\n i += 3\n break\n case C: //bezierCurveTo(x1, y1, x2, y2, x, y)\n scalePoints(data, scaleX, scaleY, i, 3)\n i += 7\n break\n case Q: //quadraticCurveTo(x1, y1, x, y)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case Z: //closepath()\n i += 1\n break\n\n // canvas command\n\n case N: // rect(x, y, width, height)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case D: // roundRect(x, y, width, height, radius1, radius2, radius3, radius4)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case X: // simple roundRect(x, y, width, height, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n case G: // ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 9\n break\n case F: // simple ellipse(x, y, radiusX, radiusY)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 5\n break\n case O: // arc(x, y, radius, startAngle, endAngle, anticlockwise)\n data[i] = G // to ellipse\n data.splice(i + 4, 0, data[i + 3], 0)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 7 + 2\n len += 2\n break\n case P: // simple arc(x, y, radius)\n data[i] = F // to simple ellipse\n data.splice(i + 4, 0, data[i + 3])\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 4 + 1\n len += 1\n break\n case U: // arcTo(x1, y1, x2, y2, radius)\n scalePoints(data, scaleX, scaleY, i, 2)\n i += 6\n break\n }\n }\n\n },\n\n scalePoints(data: IPathCommandData, scaleX: number, scaleY: number, start?: number, pointCount?: number): void {\n for (let i = pointCount ? start + 1 : 0, end = pointCount ? i + pointCount * 2 : data.length; i < end; i += 2) {\n data[i] *= scaleX\n data[i + 1] *= scaleY\n }\n }\n\n}\n\nconst { scalePoints } = PathScaler","import { IBranch, ILeaf, ILine, IPolygon, IText, IPointData } from '@leafer-ui/interface'\nimport { Direction9, MatrixHelper, isArray, isObject, isUndefined } from '@leafer-ui/draw'\n\nimport { PathScaler } from './PathScaler'\n\n\nconst matrix = MatrixHelper.get()\nconst { topLeft, top, topRight, right, bottom, left } = Direction9\n\nexport function scaleResize(leaf: ILeaf, scaleX: number, scaleY: number): void {\n if (leaf.pathInputed) {\n scaleResizePath(leaf, scaleX, scaleY)\n } else {\n // fix: Text / Box auto width / height, need check scale === 1\n if (scaleX !== 1) leaf.width *= scaleX\n if (scaleY !== 1) leaf.height *= scaleY\n }\n}\n\nexport function scaleResizeFontSize(leaf: IText, scaleX: number, scaleY: number, direction?: Direction9): void {\n let fontScale = scaleX\n\n if (!isUndefined(direction)) {\n\n const layout = leaf.__layout\n\n let { width, height } = layout.boxBounds\n width *= scaleY - scaleX\n height *= scaleX - scaleY\n\n switch (direction) { // 编辑器控制点的位置\n case top:\n case bottom:\n fontScale = scaleY\n layout.affectScaleOrRotation ? leaf.moveInner(-width / 2, 0) : leaf.x -= width / 2\n break\n case left:\n case right:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height / 2) : leaf.y -= height / 2\n break\n case topLeft:\n case topRight:\n layout.affectScaleOrRotation ? leaf.moveInner(0, -height) : leaf.y -= height\n break\n }\n\n }\n\n leaf.fontSize *= fontScale\n\n const data = leaf.__, { padding } = data\n if (padding) leaf.padding = isArray(padding) ? padding.map(item => item * fontScale) : padding * fontScale\n if (!data.__autoWidth) leaf.width *= fontScale\n if (!data.__autoHeight) leaf.height *= fontScale\n\n}\n\nexport function scaleResizePath(leaf: ILeaf, scaleX: number, scaleY: number): void {\n PathScaler.scale(leaf.__.path, scaleX, scaleY)\n leaf.path = leaf.__.path\n}\n\nexport function scaleResizePoints(leaf: ILine | IPolygon, scaleX: number, scaleY: number): void {\n const { points } = leaf\n isObject(points[0]) ? (points as IPointData[]).forEach(p => { p.x *= scaleX, p.y *= scaleY }) : PathScaler.scalePoints(points as number[], scaleX, scaleY)\n leaf.points = points\n}\n\n\nexport function scaleResizeGroup(group: IBranch, scaleX: number, scaleY: number): void {\n const { children } = group\n for (let i = 0; i < children.length; i++) {\n matrix.a = scaleX // must update\n matrix.d = scaleY\n children[i].transform(matrix, true)\n }\n}","\nimport { Leaf, Path, Line, Text, Polygon, Group, Box, UI } from '@leafer-ui/draw'\n\nimport { scaleResize, scaleResizeFontSize, scaleResizeGroup, scaleResizePath, scaleResizePoints } from './scaler'\n\n\n// leaf\n\nconst leaf = Leaf.prototype\n\nleaf.scaleResize = function (scaleX: number, scaleY = scaleX, noResize?: boolean): void {\n const data = this as UI\n if (noResize || (data.editConfig && data.editConfig.editSize === 'scale')) {\n data.scaleX *= scaleX\n data.scaleY *= scaleY\n } else {\n if (scaleX < 0) data.scaleX *= -1, scaleX = -scaleX\n if (scaleY < 0) data.scaleY *= -1, scaleY = -scaleY\n this.__scaleResize(scaleX, scaleY)\n }\n}\n\n\nleaf.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResize(this, scaleX, scaleY)\n}\n\n\nleaf.resizeWidth = function (width: number): void {\n const scale = width / this.getBounds('box', 'local').width || 1 // 不允许为0\n this.scaleOf(this.__layout.boxBounds, scale, this.__.lockRatio ? scale : 1, true)\n}\n\n\nleaf.resizeHeight = function (height: number): void {\n const scale = height / this.getBounds('box', 'local').height || 1 // 不允许为0\n this.scaleOf(this.__layout.boxBounds, this.__.lockRatio ? scale : 1, scale, true)\n}\n\n\n// UI\n\nText.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { app, editConfig } = this, editor = app && app.editor, dragPoint = editor && editor.dragPoint\n\n if (this.__.resizeFontSize || (editConfig && editConfig.editSize === 'font-size') || (dragPoint && editor.mergedConfig.editSize === 'font-size')) {\n scaleResizeFontSize(this, scaleX, scaleY, dragPoint && dragPoint.direction)\n } else {\n const { __autoWidth, __autoHeight, textAlign, verticalAlign } = this.__, { boxBounds } = this.__layout\n if (__autoWidth && textAlign !== 'left' && scaleX !== 1) this.x += boxBounds.x\n if (__autoHeight && verticalAlign !== 'top' && scaleY !== 1) this.y += boxBounds.y\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\nPath.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizePath(this, scaleX, scaleY)\n}\n\n\nLine.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n this.width *= scaleX\n }\n}\n\n\nPolygon.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n if (this.pathInputed) {\n scaleResizePath(this, scaleX, scaleY)\n } else if (this.points) {\n scaleResizePoints(this, scaleX, scaleY)\n } else {\n scaleResize(this, scaleX, scaleY)\n }\n}\n\n\n// group\n\nGroup.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n scaleResizeGroup(this, scaleX, scaleY)\n}\n\n\nBox.prototype.__scaleResize = function (scaleX: number, scaleY: number): void {\n const { resizeChildren, __autoSize } = this.__\n if (!(__autoSize && resizeChildren)) scaleResize(this, scaleX, scaleY)\n if (resizeChildren) scaleResizeGroup(this, scaleX, scaleY)\n}","export { PathScaler } from './PathScaler'\nexport { scaleResize, scaleResizeGroup, scaleResizeFontSize, scaleResizePath, scaleResizePoints } from './scaler'\n\nimport { Plugin } from '@leafer-ui/draw'\n\nimport './resize'\n\nPlugin.add('resize')"],"names":["M","L","C","Q","Z","N","D","X","G","F","O","P","U","Command","PathScaler","scale","data","scaleX","scaleY","command","i","len","length","scalePoints","splice","start","pointCount","end","matrix","MatrixHelper","get","topLeft","top","topRight","right","bottom","left","Direction9","scaleResize","leaf","pathInputed","scaleResizePath","width","height","scaleResizeFontSize","direction","fontScale","isUndefined","layout","__layout","boxBounds","affectScaleOrRotation","moveInner","x","y","fontSize","__","padding","isArray","map","item","__autoWidth","__autoHeight","path","scaleResizePoints","points","isObject","forEach","p","scaleResizeGroup","group","children","a","d","transform","Leaf","prototype","noResize","this","editConfig","editSize","__scaleResize","resizeWidth","getBounds","scaleOf","lockRatio","resizeHeight","Text","app","editor","dragPoint","resizeFontSize","mergedConfig","textAlign","verticalAlign","Path","Line","Polygon","Group","Box","resizeChildren","__autoSize","Plugin","add"],"mappings":"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"}
|