@idraw/util 0.4.0-beta.34 → 0.4.0-beta.36
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/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/lib/controller.d.ts +3 -1
- package/dist/esm/lib/controller.js +62 -31
- package/dist/esm/lib/element.d.ts +3 -0
- package/dist/esm/lib/element.js +31 -0
- package/dist/esm/lib/group.d.ts +3 -0
- package/dist/esm/lib/group.js +81 -0
- package/dist/esm/lib/is.d.ts +1 -1
- package/dist/esm/lib/rotate.js +8 -13
- package/dist/esm/lib/store.d.ts +4 -1
- package/dist/esm/lib/store.js +11 -2
- package/dist/index.global.js +220 -87
- package/dist/index.global.min.js +1 -1
- package/package.json +1 -1
package/dist/esm/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export { Store } from './lib/store';
|
|
|
14
14
|
export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './lib/middleware';
|
|
15
15
|
export { Context2D } from './lib/context2d';
|
|
16
16
|
export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './lib/rotate';
|
|
17
|
-
export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
|
|
17
|
+
export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, getElementPositionMapFromList, calcElementListSize } from './lib/element';
|
|
18
18
|
export { checkRectIntersect } from './lib/rect';
|
|
19
19
|
export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './lib/view-calc';
|
|
20
20
|
export { sortElementsViewVisiableInfoMap, calcVisibleOriginCanvasRectInfo, updateViewVisibleInfoMapStatus } from './lib/view-visible';
|
|
@@ -34,3 +34,4 @@ export { calcViewCenterContent, calcViewCenter } from './lib/view-content';
|
|
|
34
34
|
export { modifyElement, getModifiedElement } from './lib/modify';
|
|
35
35
|
export { enhanceFontFamliy } from './lib/text';
|
|
36
36
|
export { flatElementList } from './lib/flat';
|
|
37
|
+
export { groupElementsByPosition, ungroupElementsByPosition } from './lib/group';
|
package/dist/esm/index.js
CHANGED
|
@@ -14,7 +14,7 @@ export { Store } from './lib/store';
|
|
|
14
14
|
export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './lib/middleware';
|
|
15
15
|
export { Context2D } from './lib/context2d';
|
|
16
16
|
export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './lib/rotate';
|
|
17
|
-
export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
|
|
17
|
+
export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, getElementPositionMapFromList, calcElementListSize } from './lib/element';
|
|
18
18
|
export { checkRectIntersect } from './lib/rect';
|
|
19
19
|
export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, calcElementViewRectInfoMap, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './lib/view-calc';
|
|
20
20
|
export { sortElementsViewVisiableInfoMap, calcVisibleOriginCanvasRectInfo, updateViewVisibleInfoMapStatus } from './lib/view-visible';
|
|
@@ -34,3 +34,4 @@ export { calcViewCenterContent, calcViewCenter } from './lib/view-content';
|
|
|
34
34
|
export { modifyElement, getModifiedElement } from './lib/modify';
|
|
35
35
|
export { enhanceFontFamliy } from './lib/text';
|
|
36
36
|
export { flatElementList } from './lib/flat';
|
|
37
|
+
export { groupElementsByPosition, ungroupElementsByPosition } from './lib/group';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Element, ElementSize, ElementSizeController, ViewScaleInfo, LayoutSizeController } from '@idraw/types';
|
|
2
2
|
export declare function calcElementSizeController(elemSize: ElementSize, opts: {
|
|
3
3
|
groupQueue: Element<'group'>[];
|
|
4
|
-
controllerSize
|
|
4
|
+
controllerSize: number;
|
|
5
|
+
rotateControllerSize: number;
|
|
6
|
+
rotateControllerPosition: number;
|
|
5
7
|
viewScaleInfo: ViewScaleInfo;
|
|
6
8
|
}): ElementSizeController;
|
|
7
9
|
export declare function calcLayoutSizeController(layoutSize: Pick<ElementSize, 'x' | 'y' | 'w' | 'h'>, opts: {
|
|
@@ -15,9 +15,11 @@ function createControllerElementSizeFromCenter(center, opts) {
|
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
export function calcElementSizeController(elemSize, opts) {
|
|
18
|
-
const { groupQueue, controllerSize, viewScaleInfo } = opts;
|
|
18
|
+
const { groupQueue, controllerSize, viewScaleInfo, rotateControllerSize, rotateControllerPosition } = opts;
|
|
19
19
|
const ctrlSize = (controllerSize && controllerSize > 0 ? controllerSize : 8) / viewScaleInfo.scale;
|
|
20
20
|
const { x, y, w, h, angle = 0 } = elemSize;
|
|
21
|
+
const rotateCtrlSize = rotateControllerSize;
|
|
22
|
+
const rotateCtrlPos = rotateControllerPosition;
|
|
21
23
|
const ctrlGroupQueue = [
|
|
22
24
|
...[
|
|
23
25
|
{
|
|
@@ -39,10 +41,10 @@ export function calcElementSizeController(elemSize, opts) {
|
|
|
39
41
|
});
|
|
40
42
|
const vertexes = calcElementVertexesInGroup(elemSize, { groupQueue });
|
|
41
43
|
const rotateElemVertexes = calcElementVertexesInGroup({
|
|
42
|
-
x: x
|
|
43
|
-
y: y -
|
|
44
|
-
h: h +
|
|
45
|
-
w: w
|
|
44
|
+
x: x,
|
|
45
|
+
y: y - (rotateCtrlPos + rotateCtrlSize / 2) / viewScaleInfo.scale,
|
|
46
|
+
h: h + (rotateCtrlPos * 2 + rotateCtrlSize) / viewScaleInfo.scale,
|
|
47
|
+
w: w,
|
|
46
48
|
angle
|
|
47
49
|
}, { groupQueue: [...groupQueue] });
|
|
48
50
|
const topCenter = getCenterFromTwoPoints(vertexes[0], vertexes[1]);
|
|
@@ -74,74 +76,91 @@ export function calcElementSizeController(elemSize, opts) {
|
|
|
74
76
|
const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
|
|
75
77
|
const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
|
|
76
78
|
const rotateCenter = getCenterFromTwoPoints(rotateElemVertexes[0], rotateElemVertexes[1]);
|
|
77
|
-
const
|
|
79
|
+
const tempRotateSizeRepairRatio = 1.1;
|
|
80
|
+
const rotateSize = createControllerElementSizeFromCenter(rotateCenter, {
|
|
81
|
+
size: (rotateControllerSize * tempRotateSizeRepairRatio) / viewScaleInfo.scale,
|
|
82
|
+
angle: totalAngle
|
|
83
|
+
});
|
|
78
84
|
const rotateVertexes = calcElementVertexes(rotateSize);
|
|
79
85
|
const sizeController = {
|
|
80
86
|
elementWrapper: vertexes,
|
|
81
87
|
left: {
|
|
82
88
|
type: 'left',
|
|
83
89
|
vertexes: leftVertexes,
|
|
84
|
-
center: leftCenter
|
|
90
|
+
center: leftCenter,
|
|
91
|
+
size: ctrlSize
|
|
85
92
|
},
|
|
86
93
|
right: {
|
|
87
94
|
type: 'right',
|
|
88
95
|
vertexes: rightVertexes,
|
|
89
|
-
center: rightCenter
|
|
96
|
+
center: rightCenter,
|
|
97
|
+
size: ctrlSize
|
|
90
98
|
},
|
|
91
99
|
top: {
|
|
92
100
|
type: 'top',
|
|
93
101
|
vertexes: topVertexes,
|
|
94
|
-
center: topCenter
|
|
102
|
+
center: topCenter,
|
|
103
|
+
size: ctrlSize
|
|
95
104
|
},
|
|
96
105
|
bottom: {
|
|
97
106
|
type: 'bottom',
|
|
98
107
|
vertexes: bottomVertexes,
|
|
99
|
-
center: bottomCenter
|
|
108
|
+
center: bottomCenter,
|
|
109
|
+
size: ctrlSize
|
|
100
110
|
},
|
|
101
111
|
topLeft: {
|
|
102
112
|
type: 'top-left',
|
|
103
113
|
vertexes: topLeftVertexes,
|
|
104
|
-
center: topLeftCenter
|
|
114
|
+
center: topLeftCenter,
|
|
115
|
+
size: ctrlSize
|
|
105
116
|
},
|
|
106
117
|
topRight: {
|
|
107
118
|
type: 'top-right',
|
|
108
119
|
vertexes: topRightVertexes,
|
|
109
|
-
center: topRightCenter
|
|
120
|
+
center: topRightCenter,
|
|
121
|
+
size: ctrlSize
|
|
110
122
|
},
|
|
111
123
|
bottomLeft: {
|
|
112
124
|
type: 'bottom-left',
|
|
113
125
|
vertexes: bottomLeftVertexes,
|
|
114
|
-
center: bottomLeftCenter
|
|
126
|
+
center: bottomLeftCenter,
|
|
127
|
+
size: ctrlSize
|
|
115
128
|
},
|
|
116
129
|
bottomRight: {
|
|
117
130
|
type: 'bottom-right',
|
|
118
131
|
vertexes: bottomRightVertexes,
|
|
119
|
-
center: bottomRightCenter
|
|
132
|
+
center: bottomRightCenter,
|
|
133
|
+
size: ctrlSize
|
|
120
134
|
},
|
|
121
135
|
leftMiddle: {
|
|
122
136
|
type: 'left-middle',
|
|
123
137
|
vertexes: leftMiddleVertexes,
|
|
124
|
-
center: leftCenter
|
|
138
|
+
center: leftCenter,
|
|
139
|
+
size: ctrlSize
|
|
125
140
|
},
|
|
126
141
|
rightMiddle: {
|
|
127
142
|
type: 'right-middle',
|
|
128
143
|
vertexes: rightMiddleVertexes,
|
|
129
|
-
center: rightCenter
|
|
144
|
+
center: rightCenter,
|
|
145
|
+
size: ctrlSize
|
|
130
146
|
},
|
|
131
147
|
topMiddle: {
|
|
132
148
|
type: 'top-middle',
|
|
133
149
|
vertexes: topMiddleVertexes,
|
|
134
|
-
center: topCenter
|
|
150
|
+
center: topCenter,
|
|
151
|
+
size: ctrlSize
|
|
135
152
|
},
|
|
136
153
|
bottomMiddle: {
|
|
137
154
|
type: 'bottom-middle',
|
|
138
155
|
vertexes: bottomMiddleVertexes,
|
|
139
|
-
center: bottomCenter
|
|
156
|
+
center: bottomCenter,
|
|
157
|
+
size: ctrlSize
|
|
140
158
|
},
|
|
141
159
|
rotate: {
|
|
142
160
|
type: 'rotate',
|
|
143
161
|
vertexes: rotateVertexes,
|
|
144
|
-
center: rotateCenter
|
|
162
|
+
center: rotateCenter,
|
|
163
|
+
size: rotateControllerSize
|
|
145
164
|
}
|
|
146
165
|
};
|
|
147
166
|
return sizeController;
|
|
@@ -183,62 +202,74 @@ export function calcLayoutSizeController(layoutSize, opts) {
|
|
|
183
202
|
left: {
|
|
184
203
|
type: 'left',
|
|
185
204
|
vertexes: leftVertexes,
|
|
186
|
-
center: leftCenter
|
|
205
|
+
center: leftCenter,
|
|
206
|
+
size: ctrlSize
|
|
187
207
|
},
|
|
188
208
|
right: {
|
|
189
209
|
type: 'right',
|
|
190
210
|
vertexes: rightVertexes,
|
|
191
|
-
center: rightCenter
|
|
211
|
+
center: rightCenter,
|
|
212
|
+
size: ctrlSize
|
|
192
213
|
},
|
|
193
214
|
top: {
|
|
194
215
|
type: 'top',
|
|
195
216
|
vertexes: topVertexes,
|
|
196
|
-
center: topCenter
|
|
217
|
+
center: topCenter,
|
|
218
|
+
size: ctrlSize
|
|
197
219
|
},
|
|
198
220
|
bottom: {
|
|
199
221
|
type: 'bottom',
|
|
200
222
|
vertexes: bottomVertexes,
|
|
201
|
-
center: bottomCenter
|
|
223
|
+
center: bottomCenter,
|
|
224
|
+
size: ctrlSize
|
|
202
225
|
},
|
|
203
226
|
topLeft: {
|
|
204
227
|
type: 'top-left',
|
|
205
228
|
vertexes: topLeftVertexes,
|
|
206
|
-
center: topLeftCenter
|
|
229
|
+
center: topLeftCenter,
|
|
230
|
+
size: ctrlSize
|
|
207
231
|
},
|
|
208
232
|
topRight: {
|
|
209
233
|
type: 'top-right',
|
|
210
234
|
vertexes: topRightVertexes,
|
|
211
|
-
center: topRightCenter
|
|
235
|
+
center: topRightCenter,
|
|
236
|
+
size: ctrlSize
|
|
212
237
|
},
|
|
213
238
|
bottomLeft: {
|
|
214
239
|
type: 'bottom-left',
|
|
215
240
|
vertexes: bottomLeftVertexes,
|
|
216
|
-
center: bottomLeftCenter
|
|
241
|
+
center: bottomLeftCenter,
|
|
242
|
+
size: ctrlSize
|
|
217
243
|
},
|
|
218
244
|
bottomRight: {
|
|
219
245
|
type: 'bottom-right',
|
|
220
246
|
vertexes: bottomRightVertexes,
|
|
221
|
-
center: bottomRightCenter
|
|
247
|
+
center: bottomRightCenter,
|
|
248
|
+
size: ctrlSize
|
|
222
249
|
},
|
|
223
250
|
leftMiddle: {
|
|
224
251
|
type: 'left-middle',
|
|
225
252
|
vertexes: leftMiddleVertexes,
|
|
226
|
-
center: leftCenter
|
|
253
|
+
center: leftCenter,
|
|
254
|
+
size: ctrlSize
|
|
227
255
|
},
|
|
228
256
|
rightMiddle: {
|
|
229
257
|
type: 'right-middle',
|
|
230
258
|
vertexes: rightMiddleVertexes,
|
|
231
|
-
center: rightCenter
|
|
259
|
+
center: rightCenter,
|
|
260
|
+
size: ctrlSize
|
|
232
261
|
},
|
|
233
262
|
topMiddle: {
|
|
234
263
|
type: 'top-middle',
|
|
235
264
|
vertexes: topMiddleVertexes,
|
|
236
|
-
center: topCenter
|
|
265
|
+
center: topCenter,
|
|
266
|
+
size: ctrlSize
|
|
237
267
|
},
|
|
238
268
|
bottomMiddle: {
|
|
239
269
|
type: 'bottom-middle',
|
|
240
270
|
vertexes: bottomMiddleVertexes,
|
|
241
|
-
center: bottomCenter
|
|
271
|
+
center: bottomCenter,
|
|
272
|
+
size: ctrlSize
|
|
242
273
|
}
|
|
243
274
|
};
|
|
244
275
|
return sizeController;
|
|
@@ -29,3 +29,6 @@ export declare function findElementsFromListByPositions(positions: ElementPositi
|
|
|
29
29
|
export declare function findElementFromListByPosition(position: ElementPosition, list: Element[]): Element | null;
|
|
30
30
|
export declare function findElementQueueFromListByPosition(position: ElementPosition, list: Element[]): Element[];
|
|
31
31
|
export declare function getElementPositionFromList(uuid: string, elements: Element<ElementType>[]): ElementPosition;
|
|
32
|
+
export declare function getElementPositionMapFromList(uuids: string[], elements: Element<ElementType>[]): {
|
|
33
|
+
[uuid: string]: ElementPosition;
|
|
34
|
+
};
|
package/dist/esm/lib/element.js
CHANGED
|
@@ -427,3 +427,34 @@ export function getElementPositionFromList(uuid, elements) {
|
|
|
427
427
|
_loop(elements);
|
|
428
428
|
return result;
|
|
429
429
|
}
|
|
430
|
+
export function getElementPositionMapFromList(uuids, elements) {
|
|
431
|
+
const currentPosition = [];
|
|
432
|
+
const positionMap = {};
|
|
433
|
+
let over = false;
|
|
434
|
+
const _loop = (list) => {
|
|
435
|
+
var _a;
|
|
436
|
+
for (let i = 0; i < list.length; i++) {
|
|
437
|
+
if (over === true) {
|
|
438
|
+
break;
|
|
439
|
+
}
|
|
440
|
+
currentPosition.push(i);
|
|
441
|
+
const elem = list[i];
|
|
442
|
+
if (uuids.includes(elem.uuid)) {
|
|
443
|
+
positionMap[elem.uuid] = [...currentPosition];
|
|
444
|
+
if (Object.keys(positionMap).length === uuids.length) {
|
|
445
|
+
over = true;
|
|
446
|
+
break;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
else if (elem.type === 'group') {
|
|
450
|
+
_loop(((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
451
|
+
}
|
|
452
|
+
if (over) {
|
|
453
|
+
break;
|
|
454
|
+
}
|
|
455
|
+
currentPosition.pop();
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
_loop(elements);
|
|
459
|
+
return positionMap;
|
|
460
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { findElementFromListByPosition, calcElementListSize } from './element';
|
|
2
|
+
import { deleteElementInListByPosition, insertElementToListByPosition } from './handle-element';
|
|
3
|
+
import { createUUID } from './uuid';
|
|
4
|
+
export function groupElementsByPosition(list, positions) {
|
|
5
|
+
if (positions.length > 1) {
|
|
6
|
+
let isValidPositions = true;
|
|
7
|
+
let lastIndexs = [];
|
|
8
|
+
for (let i = 1; i < positions.length; i++) {
|
|
9
|
+
const prevPosition = positions[i - 1];
|
|
10
|
+
const position = positions[i];
|
|
11
|
+
if (!(prevPosition.length > 0 && position.length > 0)) {
|
|
12
|
+
isValidPositions = false;
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
if (prevPosition.length !== position.length) {
|
|
16
|
+
isValidPositions = false;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
const temp1 = [...prevPosition];
|
|
20
|
+
const temp2 = [...position];
|
|
21
|
+
const lastIndex1 = temp1.pop();
|
|
22
|
+
const lastIndex2 = temp2.pop();
|
|
23
|
+
if (i === 1 && typeof lastIndex1 === 'number' && lastIndex1 >= 0) {
|
|
24
|
+
lastIndexs.push(lastIndex1);
|
|
25
|
+
}
|
|
26
|
+
if (typeof lastIndex2 === 'number' && lastIndex2 >= 0) {
|
|
27
|
+
lastIndexs.push(lastIndex2);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (isValidPositions !== true) {
|
|
31
|
+
console.error('[idraw]: The grouped elements are not siblings!');
|
|
32
|
+
return list;
|
|
33
|
+
}
|
|
34
|
+
lastIndexs.sort((a, b) => a - b);
|
|
35
|
+
const groupParentPosition = [...positions[0]].splice(0, positions[0].length - 1);
|
|
36
|
+
const groupChildren = [];
|
|
37
|
+
const groupPosition = [...groupParentPosition, lastIndexs[0]];
|
|
38
|
+
for (let i = 0; i < lastIndexs.length; i++) {
|
|
39
|
+
const position = [...groupParentPosition, lastIndexs[i]];
|
|
40
|
+
const elem = findElementFromListByPosition(position, list);
|
|
41
|
+
if (elem) {
|
|
42
|
+
groupChildren.push(elem);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const groupSize = calcElementListSize(groupChildren);
|
|
46
|
+
for (let i = 0; i < groupChildren.length; i++) {
|
|
47
|
+
const elem = groupChildren[i];
|
|
48
|
+
if (elem) {
|
|
49
|
+
elem.x -= groupSize.x;
|
|
50
|
+
elem.y -= groupSize.y;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (let i = lastIndexs.length - 1; i >= 0; i--) {
|
|
54
|
+
const position = [...groupParentPosition, lastIndexs[i]];
|
|
55
|
+
deleteElementInListByPosition(position, list);
|
|
56
|
+
}
|
|
57
|
+
const group = Object.assign(Object.assign({ name: 'Group', uuid: createUUID(), type: 'group' }, groupSize), { detail: {
|
|
58
|
+
children: groupChildren
|
|
59
|
+
} });
|
|
60
|
+
insertElementToListByPosition(group, groupPosition, list);
|
|
61
|
+
}
|
|
62
|
+
return list;
|
|
63
|
+
}
|
|
64
|
+
export function ungroupElementsByPosition(list, position) {
|
|
65
|
+
var _a;
|
|
66
|
+
const elem = findElementFromListByPosition(position, list);
|
|
67
|
+
if (!(elem && (elem === null || elem === void 0 ? void 0 : elem.type) === 'group' && Array.isArray((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children))) {
|
|
68
|
+
console.error('[idraw]: The ungrouped element is not a group element!');
|
|
69
|
+
}
|
|
70
|
+
const groupParentPosition = [...position].splice(0, position.length - 1);
|
|
71
|
+
const groupLastIndex = position[position.length - 1];
|
|
72
|
+
const { x, y } = elem;
|
|
73
|
+
deleteElementInListByPosition(position, list);
|
|
74
|
+
elem.detail.children.forEach((child, i) => {
|
|
75
|
+
child.x += x;
|
|
76
|
+
child.y += y;
|
|
77
|
+
const elemPosition = [...groupParentPosition, groupLastIndex + i];
|
|
78
|
+
insertElementToListByPosition(child, elemPosition, list);
|
|
79
|
+
});
|
|
80
|
+
return list;
|
|
81
|
+
}
|
package/dist/esm/lib/is.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ declare function imageBase64(value: any): boolean;
|
|
|
12
12
|
declare function imageSrc(value: any): boolean;
|
|
13
13
|
declare function svg(value: any): boolean;
|
|
14
14
|
declare function html(value: any): boolean;
|
|
15
|
-
declare function text(value: any):
|
|
15
|
+
declare function text(value: any): value is string;
|
|
16
16
|
declare function fontSize(value: any): boolean;
|
|
17
17
|
declare function lineHeight(value: any): boolean;
|
|
18
18
|
declare function strokeWidth(value: any): boolean;
|
package/dist/esm/lib/rotate.js
CHANGED
|
@@ -46,18 +46,10 @@ export function calcElementCenterFromVertexes(ves) {
|
|
|
46
46
|
return calcElementCenter(elemSize);
|
|
47
47
|
}
|
|
48
48
|
export function calcRadian(center, start, end) {
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
return endAngle + (Math.PI * 2 - startAngle);
|
|
54
|
-
}
|
|
55
|
-
else if (endAngle > (Math.PI * 3) / 2 && startAngle < Math.PI / 2) {
|
|
56
|
-
return startAngle + (Math.PI * 2 - endAngle);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return endAngle - startAngle;
|
|
60
|
-
}
|
|
49
|
+
const startRadian = calcLineRadian(center, start);
|
|
50
|
+
const endRadian = calcLineRadian(center, end);
|
|
51
|
+
if (endRadian !== null && startRadian !== null) {
|
|
52
|
+
return endRadian - startRadian;
|
|
61
53
|
}
|
|
62
54
|
else {
|
|
63
55
|
return 0;
|
|
@@ -199,12 +191,15 @@ export function rotateVertexes(center, ves, radian) {
|
|
|
199
191
|
];
|
|
200
192
|
}
|
|
201
193
|
export function limitAngle(angle) {
|
|
202
|
-
if (!(angle > 0 || angle < 0) || angle === 0) {
|
|
194
|
+
if (!(angle > 0 || angle < 0) || angle === 0 || angle === 360) {
|
|
203
195
|
return 0;
|
|
204
196
|
}
|
|
205
197
|
let num = angle % 360;
|
|
206
198
|
if (num < 0) {
|
|
207
199
|
num += 360;
|
|
208
200
|
}
|
|
201
|
+
else if (angle === 360) {
|
|
202
|
+
num = 0;
|
|
203
|
+
}
|
|
209
204
|
return num;
|
|
210
205
|
}
|
package/dist/esm/lib/store.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
export declare class Store<T extends Record<string | symbol, any> = Record<string | symbol, any>> {
|
|
1
|
+
export declare class Store<T extends Record<string | symbol, any> = Record<string | symbol, any>, S extends Record<string | symbol, any> = Record<string | symbol, any>> {
|
|
2
2
|
#private;
|
|
3
3
|
constructor(opts: {
|
|
4
4
|
defaultStorage: T;
|
|
5
|
+
defaultStatic?: S;
|
|
5
6
|
});
|
|
6
7
|
set<K extends keyof T>(name: K, value: T[K]): void;
|
|
7
8
|
get<K extends keyof T>(name: K): T[K];
|
|
9
|
+
setStatic<K extends keyof S>(name: K, value: S[K]): void;
|
|
10
|
+
getStatic<K extends keyof S>(name: K): S[K] | undefined;
|
|
8
11
|
getSnapshot(opts?: {
|
|
9
12
|
deepClone?: boolean;
|
|
10
13
|
}): T;
|
package/dist/esm/lib/store.js
CHANGED
|
@@ -9,15 +9,17 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _Store_instances, _Store_temp, _Store_backUpDefaultStorage, _Store_createTempStorage;
|
|
12
|
+
var _Store_instances, _Store_temp, _Store_backUpDefaultStorage, _Store_static, _Store_createTempStorage;
|
|
13
13
|
import { deepClone } from './data';
|
|
14
14
|
export class Store {
|
|
15
15
|
constructor(opts) {
|
|
16
16
|
_Store_instances.add(this);
|
|
17
17
|
_Store_temp.set(this, void 0);
|
|
18
18
|
_Store_backUpDefaultStorage.set(this, void 0);
|
|
19
|
+
_Store_static.set(this, void 0);
|
|
19
20
|
__classPrivateFieldSet(this, _Store_backUpDefaultStorage, deepClone(opts.defaultStorage), "f");
|
|
20
21
|
__classPrivateFieldSet(this, _Store_temp, __classPrivateFieldGet(this, _Store_instances, "m", _Store_createTempStorage).call(this), "f");
|
|
22
|
+
__classPrivateFieldSet(this, _Store_static, opts.defaultStatic || {}, "f");
|
|
21
23
|
}
|
|
22
24
|
set(name, value) {
|
|
23
25
|
__classPrivateFieldGet(this, _Store_temp, "f")[name] = value;
|
|
@@ -25,6 +27,12 @@ export class Store {
|
|
|
25
27
|
get(name) {
|
|
26
28
|
return __classPrivateFieldGet(this, _Store_temp, "f")[name];
|
|
27
29
|
}
|
|
30
|
+
setStatic(name, value) {
|
|
31
|
+
__classPrivateFieldGet(this, _Store_static, "f")[name] = value;
|
|
32
|
+
}
|
|
33
|
+
getStatic(name) {
|
|
34
|
+
return __classPrivateFieldGet(this, _Store_static, "f")[name];
|
|
35
|
+
}
|
|
28
36
|
getSnapshot(opts) {
|
|
29
37
|
if ((opts === null || opts === void 0 ? void 0 : opts.deepClone) === true) {
|
|
30
38
|
return deepClone(__classPrivateFieldGet(this, _Store_temp, "f"));
|
|
@@ -36,8 +44,9 @@ export class Store {
|
|
|
36
44
|
}
|
|
37
45
|
destroy() {
|
|
38
46
|
__classPrivateFieldSet(this, _Store_temp, null, "f");
|
|
47
|
+
__classPrivateFieldSet(this, _Store_static, null, "f");
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
|
-
_Store_temp = new WeakMap(), _Store_backUpDefaultStorage = new WeakMap(), _Store_instances = new WeakSet(), _Store_createTempStorage = function _Store_createTempStorage() {
|
|
50
|
+
_Store_temp = new WeakMap(), _Store_backUpDefaultStorage = new WeakMap(), _Store_static = new WeakMap(), _Store_instances = new WeakSet(), _Store_createTempStorage = function _Store_createTempStorage() {
|
|
42
51
|
return deepClone(__classPrivateFieldGet(this, _Store_backUpDefaultStorage, "f"));
|
|
43
52
|
};
|