@idraw/util 0.4.3 → 1.0.0-alpha.1
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/esm/converter/data-svg.d.ts +2 -0
- package/dist/esm/converter/data-svg.js +19 -0
- package/dist/esm/converter/material-svg.d.ts +2 -0
- package/dist/esm/converter/material-svg.js +63 -0
- package/dist/esm/converter/svg-material.d.ts +2 -0
- package/dist/esm/converter/svg-material.js +188 -0
- package/dist/esm/index.d.ts +32 -21
- package/dist/esm/index.js +32 -21
- package/dist/esm/static.d.ts +1 -0
- package/dist/esm/static.js +1 -0
- package/dist/esm/tool/file.js +2 -2
- package/dist/esm/tool/html.js +27 -27
- package/dist/esm/tool/id.d.ts +1 -0
- package/dist/esm/tool/id.js +4 -0
- package/dist/esm/tool/image.js +6 -6
- package/dist/esm/tool/path-to-box.d.ts +3 -0
- package/dist/esm/tool/path-to-box.js +353 -0
- package/dist/esm/tool/path-to-command.d.ts +4 -0
- package/dist/esm/tool/path-to-command.js +392 -0
- package/dist/esm/tool/path.d.ts +18 -0
- package/dist/esm/tool/path.js +421 -0
- package/dist/esm/tool/svg-path.d.ts +3 -0
- package/dist/esm/{view → tool}/svg-path.js +4 -16
- package/dist/esm/tool/time.d.ts +2 -2
- package/dist/esm/tool/time.js +4 -4
- package/dist/esm/tool/uuid.d.ts +1 -1
- package/dist/esm/tool/uuid.js +6 -6
- package/dist/esm/view/box.d.ts +0 -2
- package/dist/esm/view/box.js +1 -173
- package/dist/esm/view/canvas.js +3 -3
- package/dist/esm/view/check.d.ts +8 -7
- package/dist/esm/view/check.js +34 -34
- package/dist/esm/view/config.d.ts +0 -9
- package/dist/esm/view/config.js +1 -71
- package/dist/esm/view/context2d.d.ts +10 -3
- package/dist/esm/view/context2d.js +39 -18
- package/dist/esm/view/controller.d.ts +5 -5
- package/dist/esm/view/controller.js +105 -102
- package/dist/esm/view/data.d.ts +2 -2
- package/dist/esm/view/data.js +65 -65
- package/dist/esm/view/dom.d.ts +23 -0
- package/dist/esm/view/dom.js +190 -0
- package/dist/esm/view/flat.d.ts +2 -2
- package/dist/esm/view/flat.js +53 -53
- package/dist/esm/view/group.d.ts +3 -3
- package/dist/esm/view/group.js +25 -28
- package/dist/esm/view/handle-material.d.ts +24 -0
- package/dist/esm/view/{handle-element.js → handle-material.js} +98 -75
- package/dist/esm/view/is.d.ts +10 -12
- package/dist/esm/view/is.js +15 -19
- package/dist/esm/view/load.d.ts +2 -2
- package/dist/esm/view/load.js +7 -7
- package/dist/esm/view/material.d.ts +40 -0
- package/dist/esm/view/material.js +476 -0
- package/dist/esm/view/middleware.d.ts +1 -0
- package/dist/esm/view/middleware.js +14 -2
- package/dist/esm/view/modify-record.d.ts +4 -4
- package/dist/esm/view/modify-record.js +2 -2
- package/dist/esm/view/parser.d.ts +2 -2
- package/dist/esm/view/parser.js +3 -3
- package/dist/esm/view/path.d.ts +2 -0
- package/dist/esm/view/path.js +30 -0
- package/dist/esm/view/point-move-material.d.ts +5 -0
- package/dist/esm/view/{point-move-element.js → point-move-material.js} +6 -6
- package/dist/esm/view/point.d.ts +3 -8
- package/dist/esm/view/point.js +1 -21
- package/dist/esm/view/position.d.ts +9 -9
- package/dist/esm/view/position.js +1 -1
- package/dist/esm/view/rect.d.ts +2 -2
- package/dist/esm/view/rect.js +4 -4
- package/dist/esm/view/resize-material.d.ts +4 -0
- package/dist/esm/view/resize-material.js +266 -0
- package/dist/esm/view/rotate.d.ts +11 -11
- package/dist/esm/view/rotate.js +24 -24
- package/dist/esm/view/static.d.ts +13 -0
- package/dist/esm/view/static.js +89 -0
- package/dist/esm/view/styles.d.ts +11 -0
- package/dist/esm/view/styles.js +78 -0
- package/dist/esm/view/vertex.d.ts +8 -8
- package/dist/esm/view/vertex.js +28 -28
- package/dist/esm/view/view-box.d.ts +2 -6
- package/dist/esm/view/view-box.js +8 -64
- package/dist/esm/view/view-calc.d.ts +23 -20
- package/dist/esm/view/view-calc.js +104 -93
- package/dist/esm/view/view-content.d.ts +2 -2
- package/dist/esm/view/view-content.js +34 -34
- package/dist/index.global.js +3144 -1548
- package/dist/index.global.min.js +1 -1
- package/package.json +1 -1
- package/dist/esm/view/element.d.ts +0 -35
- package/dist/esm/view/element.js +0 -471
- package/dist/esm/view/handle-element.d.ts +0 -24
- package/dist/esm/view/point-move-element.d.ts +0 -5
- package/dist/esm/view/resize-element.d.ts +0 -4
- package/dist/esm/view/resize-element.js +0 -255
- package/dist/esm/view/svg-path.d.ts +0 -10
package/dist/esm/view/element.js
DELETED
|
@@ -1,471 +0,0 @@
|
|
|
1
|
-
import { limitAngle, rotateElementVertexes } from './rotate';
|
|
2
|
-
import { isAssetId, createAssetId } from '../tool/uuid';
|
|
3
|
-
function getGroupUUIDs(elements, index) {
|
|
4
|
-
var _a;
|
|
5
|
-
const uuids = [];
|
|
6
|
-
if (typeof index === 'string' && /^\d+(\.\d+)*$/.test(index)) {
|
|
7
|
-
const nums = index.split('.');
|
|
8
|
-
let target = elements;
|
|
9
|
-
while (nums.length > 0) {
|
|
10
|
-
const num = nums.shift();
|
|
11
|
-
if (typeof num === 'string') {
|
|
12
|
-
const elem = target[parseInt(num)];
|
|
13
|
-
if (elem && nums.length === 0) {
|
|
14
|
-
uuids.push(elem.uuid);
|
|
15
|
-
}
|
|
16
|
-
else if (elem.type === 'group' && nums.length > 0) {
|
|
17
|
-
target = ((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || [];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return uuids;
|
|
24
|
-
}
|
|
25
|
-
export function getSelectedElementUUIDs(data, indexes) {
|
|
26
|
-
var _a;
|
|
27
|
-
let uuids = [];
|
|
28
|
-
if (Array.isArray(data === null || data === void 0 ? void 0 : data.elements) && ((_a = data === null || data === void 0 ? void 0 : data.elements) === null || _a === void 0 ? void 0 : _a.length) > 0 && Array.isArray(indexes) && indexes.length > 0) {
|
|
29
|
-
indexes.forEach((idx) => {
|
|
30
|
-
var _a;
|
|
31
|
-
if (typeof idx === 'number') {
|
|
32
|
-
if ((_a = data === null || data === void 0 ? void 0 : data.elements) === null || _a === void 0 ? void 0 : _a[idx]) {
|
|
33
|
-
uuids.push(data.elements[idx].uuid);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else if (typeof idx === 'string') {
|
|
37
|
-
uuids = uuids.concat(getGroupUUIDs(data.elements, idx));
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return uuids;
|
|
42
|
-
}
|
|
43
|
-
export function validateElements(elements) {
|
|
44
|
-
let isValid = true;
|
|
45
|
-
if (Array.isArray(elements)) {
|
|
46
|
-
const uuids = [];
|
|
47
|
-
elements.forEach((elem) => {
|
|
48
|
-
var _a;
|
|
49
|
-
if (typeof elem.uuid === 'string' && elem.uuid) {
|
|
50
|
-
if (uuids.includes(elem.uuid)) {
|
|
51
|
-
isValid = false;
|
|
52
|
-
console.warn(`Duplicate uuids: ${elem.uuid}`);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
uuids.push(elem.uuid);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
isValid = false;
|
|
60
|
-
console.warn('Element missing uuid', elem);
|
|
61
|
-
}
|
|
62
|
-
if (elem.type === 'group') {
|
|
63
|
-
isValid = validateElements((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return isValid;
|
|
68
|
-
}
|
|
69
|
-
export function calcElementListSize(list) {
|
|
70
|
-
var _a;
|
|
71
|
-
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
72
|
-
let prevElemSize = null;
|
|
73
|
-
for (let i = 0; i < list.length; i++) {
|
|
74
|
-
const elem = list[i];
|
|
75
|
-
if ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
const elemSize = {
|
|
79
|
-
x: elem.x,
|
|
80
|
-
y: elem.y,
|
|
81
|
-
w: elem.w,
|
|
82
|
-
h: elem.h,
|
|
83
|
-
angle: elem.angle || 0
|
|
84
|
-
};
|
|
85
|
-
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
86
|
-
const ves = rotateElementVertexes(elemSize);
|
|
87
|
-
if (ves.length === 4) {
|
|
88
|
-
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
89
|
-
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
90
|
-
elemSize.x = Math.min(...xList);
|
|
91
|
-
elemSize.y = Math.min(...yList);
|
|
92
|
-
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
93
|
-
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (prevElemSize) {
|
|
97
|
-
const areaStartX = Math.min(elemSize.x, area.x);
|
|
98
|
-
const areaStartY = Math.min(elemSize.y, area.y);
|
|
99
|
-
const areaEndX = Math.max(elemSize.x + elemSize.w, area.x + area.w);
|
|
100
|
-
const areaEndY = Math.max(elemSize.y + elemSize.h, area.y + area.h);
|
|
101
|
-
area.x = areaStartX;
|
|
102
|
-
area.y = areaStartY;
|
|
103
|
-
area.w = Math.abs(areaEndX - areaStartX);
|
|
104
|
-
area.h = Math.abs(areaEndY - areaStartY);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
area.x = elemSize.x;
|
|
108
|
-
area.y = elemSize.y;
|
|
109
|
-
area.w = elemSize.w;
|
|
110
|
-
area.h = elemSize.h;
|
|
111
|
-
}
|
|
112
|
-
prevElemSize = elemSize;
|
|
113
|
-
}
|
|
114
|
-
const listSize = {
|
|
115
|
-
x: Math.floor(area.x),
|
|
116
|
-
y: Math.floor(area.y),
|
|
117
|
-
w: Math.ceil(area.w),
|
|
118
|
-
h: Math.ceil(area.h)
|
|
119
|
-
};
|
|
120
|
-
return listSize;
|
|
121
|
-
}
|
|
122
|
-
export function calcElementsContextSize(elements, opts) {
|
|
123
|
-
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
124
|
-
elements.forEach((elem) => {
|
|
125
|
-
const elemSize = {
|
|
126
|
-
x: elem.x,
|
|
127
|
-
y: elem.y,
|
|
128
|
-
w: elem.w,
|
|
129
|
-
h: elem.h,
|
|
130
|
-
angle: elem.angle
|
|
131
|
-
};
|
|
132
|
-
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
133
|
-
const ves = rotateElementVertexes(elemSize);
|
|
134
|
-
if (ves.length === 4) {
|
|
135
|
-
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
136
|
-
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
137
|
-
elemSize.x = Math.min(...xList);
|
|
138
|
-
elemSize.y = Math.min(...yList);
|
|
139
|
-
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
140
|
-
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
const areaStartX = Math.min(elemSize.x, area.x);
|
|
144
|
-
const areaStartY = Math.min(elemSize.y, area.y);
|
|
145
|
-
const areaEndX = Math.max(elemSize.x + elemSize.w, area.x + area.w);
|
|
146
|
-
const areaEndY = Math.max(elemSize.y + elemSize.h, area.y + area.h);
|
|
147
|
-
area.x = areaStartX;
|
|
148
|
-
area.y = areaStartY;
|
|
149
|
-
area.w = Math.abs(areaEndX - areaStartX);
|
|
150
|
-
area.h = Math.abs(areaEndY - areaStartY);
|
|
151
|
-
});
|
|
152
|
-
if (opts === null || opts === void 0 ? void 0 : opts.extend) {
|
|
153
|
-
area.x = Math.min(area.x, 0);
|
|
154
|
-
area.y = Math.min(area.y, 0);
|
|
155
|
-
}
|
|
156
|
-
const ctxSize = {
|
|
157
|
-
contextWidth: area.w,
|
|
158
|
-
contextHeight: area.h
|
|
159
|
-
};
|
|
160
|
-
if ((opts === null || opts === void 0 ? void 0 : opts.viewWidth) && (opts === null || opts === void 0 ? void 0 : opts.viewHeight) && (opts === null || opts === void 0 ? void 0 : opts.viewWidth) > 0 && (opts === null || opts === void 0 ? void 0 : opts.viewHeight) > 0) {
|
|
161
|
-
if (opts.viewWidth > area.x + area.w) {
|
|
162
|
-
ctxSize.contextWidth = opts.viewWidth - area.x;
|
|
163
|
-
}
|
|
164
|
-
if (opts.viewHeight > area.y + area.h) {
|
|
165
|
-
ctxSize.contextHeight = opts.viewHeight - area.y;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return ctxSize;
|
|
169
|
-
}
|
|
170
|
-
export function calcElementsViewInfo(elements, prevViewSize, options) {
|
|
171
|
-
const contextSize = calcElementsContextSize(elements, {
|
|
172
|
-
viewWidth: prevViewSize.width,
|
|
173
|
-
viewHeight: prevViewSize.height,
|
|
174
|
-
extend: options === null || options === void 0 ? void 0 : options.extend
|
|
175
|
-
});
|
|
176
|
-
if ((options === null || options === void 0 ? void 0 : options.extend) === true) {
|
|
177
|
-
contextSize.contextWidth = Math.max(contextSize.contextWidth, prevViewSize.contextWidth);
|
|
178
|
-
contextSize.contextHeight = Math.max(contextSize.contextHeight, prevViewSize.contextHeight);
|
|
179
|
-
}
|
|
180
|
-
return {
|
|
181
|
-
contextSize
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
export function getElemenetsAssetIds(elements) {
|
|
185
|
-
const assetIds = [];
|
|
186
|
-
const _scanElements = (elems) => {
|
|
187
|
-
elems.forEach((elem) => {
|
|
188
|
-
if (elem.type === 'image' && isAssetId(elem.detail.src)) {
|
|
189
|
-
assetIds.push(elem.detail.src);
|
|
190
|
-
}
|
|
191
|
-
else if (elem.type === 'svg' && isAssetId(elem.detail.svg)) {
|
|
192
|
-
assetIds.push(elem.detail.svg);
|
|
193
|
-
}
|
|
194
|
-
else if (elem.type === 'html' && elem.detail.html) {
|
|
195
|
-
assetIds.push(elem.detail.html);
|
|
196
|
-
}
|
|
197
|
-
else if (elem.type === 'group' && Array.isArray(elem.detail.children)) {
|
|
198
|
-
_scanElements(elem.detail.children);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
};
|
|
202
|
-
_scanElements(elements);
|
|
203
|
-
return assetIds;
|
|
204
|
-
}
|
|
205
|
-
export function findElementFromList(uuid, list) {
|
|
206
|
-
var _a;
|
|
207
|
-
let result = null;
|
|
208
|
-
for (let i = 0; i < list.length; i++) {
|
|
209
|
-
const elem = list[i];
|
|
210
|
-
if (elem.uuid === uuid) {
|
|
211
|
-
result = elem;
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
else if (!result && elem.type === 'group') {
|
|
215
|
-
const resultInGroup = findElementFromList(uuid, ((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
216
|
-
if ((resultInGroup === null || resultInGroup === void 0 ? void 0 : resultInGroup.uuid) === uuid) {
|
|
217
|
-
result = resultInGroup;
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
return result;
|
|
223
|
-
}
|
|
224
|
-
export function findElementsFromList(uuids, list) {
|
|
225
|
-
const result = [];
|
|
226
|
-
function _find(elements) {
|
|
227
|
-
var _a;
|
|
228
|
-
for (let i = 0; i < elements.length; i++) {
|
|
229
|
-
const elem = elements[i];
|
|
230
|
-
if (uuids.includes(elem.uuid)) {
|
|
231
|
-
result.push(elem);
|
|
232
|
-
}
|
|
233
|
-
else if (elem.type === 'group') {
|
|
234
|
-
_find(((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
_find(list);
|
|
239
|
-
return result;
|
|
240
|
-
}
|
|
241
|
-
export function getGroupQueueFromList(uuid, elements) {
|
|
242
|
-
const groupQueue = [];
|
|
243
|
-
function _scan(uuid, elements) {
|
|
244
|
-
var _a;
|
|
245
|
-
let result = null;
|
|
246
|
-
for (let i = 0; i < elements.length; i++) {
|
|
247
|
-
const elem = elements[i];
|
|
248
|
-
if (elem.uuid === uuid) {
|
|
249
|
-
result = elem;
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
else if (!result && elem.type === 'group') {
|
|
253
|
-
groupQueue.push(elem);
|
|
254
|
-
const resultInGroup = _scan(uuid, ((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
255
|
-
if ((resultInGroup === null || resultInGroup === void 0 ? void 0 : resultInGroup.uuid) === uuid) {
|
|
256
|
-
result = resultInGroup;
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
groupQueue.pop();
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return result;
|
|
263
|
-
}
|
|
264
|
-
_scan(uuid, elements);
|
|
265
|
-
return groupQueue;
|
|
266
|
-
}
|
|
267
|
-
export function getGroupQueueByElementPosition(elements, position) {
|
|
268
|
-
var _a;
|
|
269
|
-
const groupQueue = [];
|
|
270
|
-
let currentElements = elements;
|
|
271
|
-
if (position.length > 1) {
|
|
272
|
-
for (let i = 0; i < position.length - 1; i++) {
|
|
273
|
-
const index = position[i];
|
|
274
|
-
const group = currentElements[index];
|
|
275
|
-
if ((group === null || group === void 0 ? void 0 : group.type) === 'group' && Array.isArray((_a = group === null || group === void 0 ? void 0 : group.detail) === null || _a === void 0 ? void 0 : _a.children)) {
|
|
276
|
-
groupQueue.push(group);
|
|
277
|
-
currentElements = group.detail.children;
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
return null;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return groupQueue;
|
|
285
|
-
}
|
|
286
|
-
export function getElementSize(elem) {
|
|
287
|
-
const { x, y, w, h, angle } = elem;
|
|
288
|
-
const size = { x, y, w, h, angle };
|
|
289
|
-
return size;
|
|
290
|
-
}
|
|
291
|
-
export function mergeElementAsset(element, assets) {
|
|
292
|
-
const elem = element;
|
|
293
|
-
let assetId = null;
|
|
294
|
-
let assetItem = null;
|
|
295
|
-
if (elem.type === 'image') {
|
|
296
|
-
assetId = elem.detail.src;
|
|
297
|
-
}
|
|
298
|
-
else if (elem.type === 'svg') {
|
|
299
|
-
assetId = elem.detail.svg;
|
|
300
|
-
}
|
|
301
|
-
else if (elem.type === 'html') {
|
|
302
|
-
assetId = elem.detail.html;
|
|
303
|
-
}
|
|
304
|
-
if (assetId && (assetId === null || assetId === void 0 ? void 0 : assetId.startsWith('@assets/'))) {
|
|
305
|
-
assetItem = assets[assetId];
|
|
306
|
-
}
|
|
307
|
-
if ((assetItem === null || assetItem === void 0 ? void 0 : assetItem.type) === elem.type && typeof (assetItem === null || assetItem === void 0 ? void 0 : assetItem.value) === 'string' && (assetItem === null || assetItem === void 0 ? void 0 : assetItem.value)) {
|
|
308
|
-
if (elem.type === 'image') {
|
|
309
|
-
elem.detail.src = assetItem.value;
|
|
310
|
-
}
|
|
311
|
-
else if (elem.type === 'svg') {
|
|
312
|
-
elem.detail.svg = assetItem.value;
|
|
313
|
-
}
|
|
314
|
-
else if (elem.type === 'html') {
|
|
315
|
-
elem.detail.html = assetItem.value;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
return elem;
|
|
319
|
-
}
|
|
320
|
-
export function filterElementAsset(element) {
|
|
321
|
-
let assetId = null;
|
|
322
|
-
let assetItem = null;
|
|
323
|
-
let resource = null;
|
|
324
|
-
if (element.type === 'image') {
|
|
325
|
-
resource = element.detail.src;
|
|
326
|
-
}
|
|
327
|
-
else if (element.type === 'svg') {
|
|
328
|
-
resource = element.detail.svg;
|
|
329
|
-
}
|
|
330
|
-
else if (element.type === 'html') {
|
|
331
|
-
resource = element.detail.html;
|
|
332
|
-
}
|
|
333
|
-
if (typeof resource === 'string' && !isAssetId(resource)) {
|
|
334
|
-
assetId = createAssetId(resource, element.uuid);
|
|
335
|
-
assetItem = {
|
|
336
|
-
type: element.type,
|
|
337
|
-
value: resource
|
|
338
|
-
};
|
|
339
|
-
if (element.type === 'image') {
|
|
340
|
-
element.detail.src = assetId;
|
|
341
|
-
}
|
|
342
|
-
else if (element.type === 'svg') {
|
|
343
|
-
element.detail.svg = assetId;
|
|
344
|
-
}
|
|
345
|
-
else if (element.type === 'html') {
|
|
346
|
-
element.detail.html = assetId;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
return {
|
|
350
|
-
element,
|
|
351
|
-
assetId,
|
|
352
|
-
assetItem
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
export function isResourceElement(elem) {
|
|
356
|
-
return ['image', 'svg', 'html'].includes(elem === null || elem === void 0 ? void 0 : elem.type);
|
|
357
|
-
}
|
|
358
|
-
export function findElementsFromListByPositions(positions, list) {
|
|
359
|
-
const elements = [];
|
|
360
|
-
positions.forEach((pos) => {
|
|
361
|
-
const elem = findElementFromListByPosition(pos, list);
|
|
362
|
-
if (elem) {
|
|
363
|
-
elements.push(elem);
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
return elements;
|
|
367
|
-
}
|
|
368
|
-
export function findElementFromListByPosition(position, list) {
|
|
369
|
-
let result = null;
|
|
370
|
-
let tempList = list;
|
|
371
|
-
for (let i = 0; i < position.length; i++) {
|
|
372
|
-
const pos = position[i];
|
|
373
|
-
const item = tempList[pos];
|
|
374
|
-
if (i < position.length - 1 && (item === null || item === void 0 ? void 0 : item.type) === 'group') {
|
|
375
|
-
tempList = item.detail.children;
|
|
376
|
-
}
|
|
377
|
-
else if (i === position.length - 1) {
|
|
378
|
-
result = item;
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
break;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
return result;
|
|
385
|
-
}
|
|
386
|
-
export function findElementQueueFromListByPosition(position, list) {
|
|
387
|
-
const result = [];
|
|
388
|
-
let tempList = list;
|
|
389
|
-
for (let i = 0; i < position.length; i++) {
|
|
390
|
-
const pos = position[i];
|
|
391
|
-
const item = tempList[pos];
|
|
392
|
-
if (item) {
|
|
393
|
-
result.push(item);
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
break;
|
|
397
|
-
}
|
|
398
|
-
if (i < position.length - 1 && item.type === 'group') {
|
|
399
|
-
tempList = item.detail.children;
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
break;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
return result;
|
|
406
|
-
}
|
|
407
|
-
export function getElementPositionFromList(uuid, elements) {
|
|
408
|
-
const result = [];
|
|
409
|
-
let over = false;
|
|
410
|
-
const _loop = (list) => {
|
|
411
|
-
var _a;
|
|
412
|
-
for (let i = 0; i < list.length; i++) {
|
|
413
|
-
if (over === true) {
|
|
414
|
-
break;
|
|
415
|
-
}
|
|
416
|
-
result.push(i);
|
|
417
|
-
const elem = list[i];
|
|
418
|
-
if (elem.uuid === uuid) {
|
|
419
|
-
over = true;
|
|
420
|
-
break;
|
|
421
|
-
}
|
|
422
|
-
else if (elem.type === 'group') {
|
|
423
|
-
_loop(((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
424
|
-
}
|
|
425
|
-
if (over) {
|
|
426
|
-
break;
|
|
427
|
-
}
|
|
428
|
-
result.pop();
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
|
-
_loop(elements);
|
|
432
|
-
return result;
|
|
433
|
-
}
|
|
434
|
-
export function getElementPositionMapFromList(uuids, elements) {
|
|
435
|
-
const currentPosition = [];
|
|
436
|
-
const positionMap = {};
|
|
437
|
-
let over = false;
|
|
438
|
-
const _loop = (list) => {
|
|
439
|
-
var _a;
|
|
440
|
-
for (let i = 0; i < list.length; i++) {
|
|
441
|
-
if (over === true) {
|
|
442
|
-
break;
|
|
443
|
-
}
|
|
444
|
-
currentPosition.push(i);
|
|
445
|
-
const elem = list[i];
|
|
446
|
-
if (uuids.includes(elem.uuid)) {
|
|
447
|
-
positionMap[elem.uuid] = [...currentPosition];
|
|
448
|
-
if (Object.keys(positionMap).length === uuids.length) {
|
|
449
|
-
over = true;
|
|
450
|
-
break;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
else if (elem.type === 'group') {
|
|
454
|
-
_loop(((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
455
|
-
}
|
|
456
|
-
if (over) {
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
currentPosition.pop();
|
|
460
|
-
}
|
|
461
|
-
};
|
|
462
|
-
_loop(elements);
|
|
463
|
-
return positionMap;
|
|
464
|
-
}
|
|
465
|
-
export function isSameElementSize(elem1, elem2) {
|
|
466
|
-
return (elem1.x === elem2.x &&
|
|
467
|
-
elem1.y === elem2.y &&
|
|
468
|
-
elem1.h === elem2.h &&
|
|
469
|
-
elem1.w === elem2.w &&
|
|
470
|
-
limitAngle(elem1.angle || 0) === limitAngle(elem2.angle || 0));
|
|
471
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { RecursivePartial, Element, Elements, ElementPosition, ElementType, ViewScaleInfo, ViewSizeInfo } from '@idraw/types';
|
|
2
|
-
export declare function createElement<T extends ElementType>(type: T, baseElem: RecursivePartial<Element<T>>, opts?: {
|
|
3
|
-
viewScaleInfo: ViewScaleInfo;
|
|
4
|
-
viewSizeInfo: ViewSizeInfo;
|
|
5
|
-
limitRatio?: boolean;
|
|
6
|
-
}): Element<T>;
|
|
7
|
-
export declare function insertElementToListByPosition(element: Element, position: ElementPosition, list: Element[]): boolean;
|
|
8
|
-
export declare function deleteElementInListByPosition(position: ElementPosition, list: Element[]): boolean;
|
|
9
|
-
export declare function deleteElementInList(uuid: string, list: Element[]): boolean;
|
|
10
|
-
export declare function moveElementPosition(elements: Elements, opts: {
|
|
11
|
-
from: ElementPosition;
|
|
12
|
-
to: ElementPosition;
|
|
13
|
-
}): {
|
|
14
|
-
elements: Elements;
|
|
15
|
-
from: ElementPosition;
|
|
16
|
-
to: ElementPosition;
|
|
17
|
-
};
|
|
18
|
-
export declare function mergeElement<T extends Element<ElementType> = Element<ElementType>>(originElem: T, updateContent: RecursivePartial<T>, opts?: {
|
|
19
|
-
strict?: boolean;
|
|
20
|
-
}): T;
|
|
21
|
-
export declare function updateElementInList(uuid: string, updateContent: RecursivePartial<Element<ElementType>>, elements: Element[]): Element | null;
|
|
22
|
-
export declare function updateElementInListByPosition(position: ElementPosition, updateContent: RecursivePartial<Element<ElementType>>, elements: Element[], opts?: {
|
|
23
|
-
strict?: boolean;
|
|
24
|
-
}): Element | null;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Element, ElementSize, ElementOperations, ModifyRecord } from '@idraw/types';
|
|
2
|
-
export declare function resizeEffectGroupElement(elem: Element<'group'>, size: Partial<ElementSize>, opts?: {
|
|
3
|
-
resizeEffect?: ElementOperations['resizeEffect'];
|
|
4
|
-
}): ModifyRecord<'resizeElements'> | null;
|