@idraw/core 0.4.0-beta.2 → 0.4.0-beta.20
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/config.d.ts +1 -0
- package/dist/esm/config.js +1 -0
- package/dist/esm/index.d.ts +17 -5
- package/dist/esm/index.js +35 -10
- package/dist/esm/lib/cursor-image.d.ts +3 -0
- package/dist/esm/lib/cursor-image.js +3 -0
- package/dist/esm/lib/cursor.d.ts +3 -12
- package/dist/esm/lib/cursor.js +138 -106
- package/dist/esm/middleware/dragger/index.d.ts +7 -0
- package/dist/esm/middleware/dragger/index.js +43 -0
- package/dist/esm/middleware/info/draw-info.d.ts +31 -0
- package/dist/esm/middleware/info/draw-info.js +110 -0
- package/dist/esm/middleware/info/index.d.ts +3 -0
- package/dist/esm/middleware/info/index.js +110 -0
- package/dist/esm/middleware/info/types.d.ts +3 -0
- package/dist/esm/middleware/info/types.js +1 -0
- package/dist/esm/middleware/layout-selector/config.d.ts +6 -0
- package/dist/esm/middleware/layout-selector/config.js +6 -0
- package/dist/esm/middleware/layout-selector/index.d.ts +3 -0
- package/dist/esm/middleware/layout-selector/index.js +251 -0
- package/dist/esm/middleware/layout-selector/types.d.ts +12 -0
- package/dist/esm/middleware/layout-selector/types.js +2 -0
- package/dist/esm/middleware/layout-selector/util.d.ts +5 -0
- package/dist/esm/middleware/layout-selector/util.js +93 -0
- package/dist/esm/middleware/ruler/index.d.ts +3 -2
- package/dist/esm/middleware/ruler/index.js +13 -8
- package/dist/esm/middleware/ruler/types.d.ts +3 -0
- package/dist/esm/middleware/ruler/types.js +1 -0
- package/dist/esm/middleware/ruler/util.d.ts +6 -1
- package/dist/esm/middleware/ruler/util.js +55 -1
- package/dist/esm/middleware/scaler/index.d.ts +2 -2
- package/dist/esm/middleware/scaler/index.js +1 -3
- package/dist/esm/middleware/scroller/index.d.ts +2 -1
- package/dist/esm/middleware/scroller/index.js +5 -5
- package/dist/esm/middleware/scroller/types.d.ts +9 -0
- package/dist/esm/middleware/scroller/types.js +1 -0
- package/dist/esm/middleware/scroller/util.js +1 -1
- package/dist/esm/middleware/selector/config.d.ts +12 -0
- package/dist/esm/middleware/selector/config.js +12 -0
- package/dist/esm/middleware/selector/draw-auxiliary.d.ts +7 -0
- package/dist/esm/middleware/selector/draw-auxiliary.js +46 -0
- package/dist/esm/middleware/selector/draw-base.d.ts +30 -0
- package/dist/esm/middleware/selector/draw-base.js +100 -0
- package/dist/esm/middleware/selector/draw-reference.d.ts +5 -0
- package/dist/esm/middleware/selector/draw-reference.js +31 -0
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +9 -1
- package/dist/esm/middleware/selector/draw-wrapper.js +34 -26
- package/dist/esm/middleware/selector/index.d.ts +7 -4
- package/dist/esm/middleware/selector/index.js +275 -68
- package/dist/esm/middleware/selector/reference.d.ts +13 -0
- package/dist/esm/middleware/selector/reference.js +273 -0
- package/dist/esm/middleware/selector/types.d.ts +8 -4
- package/dist/esm/middleware/selector/types.js +1 -1
- package/dist/esm/middleware/selector/util.d.ts +11 -2
- package/dist/esm/middleware/selector/util.js +36 -14
- package/dist/esm/middleware/text-editor/index.d.ts +20 -2
- package/dist/esm/middleware/text-editor/index.js +79 -17
- package/dist/index.global.js +3477 -1066
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
|
@@ -1,40 +1,18 @@
|
|
|
1
|
-
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions } from '@idraw/util';
|
|
2
|
-
import { drawHoverVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
|
|
2
|
+
import { drawHoverVertexesWrapper, drawLockVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
|
+
import { drawReferenceLines } from './draw-reference';
|
|
4
|
+
import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
5
|
+
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, controllerSize } from './config';
|
|
6
|
+
import { calcReferenceInfo } from './reference';
|
|
5
7
|
import { middlewareEventTextEdit } from '../text-editor';
|
|
6
|
-
|
|
8
|
+
import { eventChange } from '../../config';
|
|
9
|
+
export { keySelectedElementList, keyActionType, keyResizeType, keyGroupQueue };
|
|
10
|
+
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup };
|
|
7
11
|
export const MiddlewareSelector = (opts) => {
|
|
8
|
-
const { viewer, sharer,
|
|
9
|
-
const { helperContext } =
|
|
12
|
+
const { viewer, sharer, boardContent, calculator, eventHub } = opts;
|
|
13
|
+
const { helperContext } = boardContent;
|
|
10
14
|
let prevPoint = null;
|
|
11
15
|
let inBusyMode = null;
|
|
12
|
-
eventHub.on(middlewareEventSelect, ({ uuids, positions }) => {
|
|
13
|
-
let elements = [];
|
|
14
|
-
const actionType = sharer.getSharedStorage(keyActionType);
|
|
15
|
-
const data = sharer.getActiveStorage('data');
|
|
16
|
-
if (positions && Array.isArray(positions)) {
|
|
17
|
-
elements = findElementsFromListByPositions(positions, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
elements = findElementsFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
21
|
-
}
|
|
22
|
-
let needRefresh = false;
|
|
23
|
-
if (!actionType && elements.length === 1) {
|
|
24
|
-
sharer.setSharedStorage(keyActionType, 'select');
|
|
25
|
-
needRefresh = true;
|
|
26
|
-
}
|
|
27
|
-
else if (actionType === 'select' && elements.length === 1) {
|
|
28
|
-
needRefresh = true;
|
|
29
|
-
}
|
|
30
|
-
if (needRefresh) {
|
|
31
|
-
const elem = elements[0];
|
|
32
|
-
const groupQueue = getGroupQueueFromList(elem.uuid, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
33
|
-
sharer.setSharedStorage(keyGroupQueue, groupQueue);
|
|
34
|
-
updateSelectedElementList(elements);
|
|
35
|
-
viewer.drawFrame();
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
16
|
sharer.setSharedStorage(keyActionType, null);
|
|
39
17
|
const getActiveElements = () => {
|
|
40
18
|
return sharer.getSharedStorage(keySelectedElementList);
|
|
@@ -71,17 +49,20 @@ export const MiddlewareSelector = (opts) => {
|
|
|
71
49
|
sharer.setSharedStorage(keyHoverElementVertexes, vertexes);
|
|
72
50
|
};
|
|
73
51
|
const updateSelectedElementList = (list, opts) => {
|
|
52
|
+
var _a;
|
|
74
53
|
sharer.setSharedStorage(keySelectedElementList, list);
|
|
75
54
|
if (list.length === 1) {
|
|
76
55
|
const controller = calcElementSizeController(list[0], {
|
|
77
56
|
groupQueue: sharer.getSharedStorage(keyGroupQueue),
|
|
78
|
-
controllerSize
|
|
57
|
+
controllerSize,
|
|
79
58
|
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
80
59
|
});
|
|
81
60
|
sharer.setSharedStorage(keySelectedElementController, controller);
|
|
61
|
+
sharer.setSharedStorage(keySelectedElementPosition, getElementPositionFromList(list[0].uuid, ((_a = sharer.getActiveStorage('data')) === null || _a === void 0 ? void 0 : _a.elements) || []));
|
|
82
62
|
}
|
|
83
63
|
else {
|
|
84
64
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
65
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
85
66
|
}
|
|
86
67
|
if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
|
|
87
68
|
eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
|
|
@@ -97,7 +78,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
97
78
|
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
98
79
|
groupQueue: sharer.getSharedStorage(keyGroupQueue),
|
|
99
80
|
areaSize: null,
|
|
100
|
-
selectedElementController: sharer.getSharedStorage(keySelectedElementController)
|
|
81
|
+
selectedElementController: sharer.getSharedStorage(keySelectedElementController),
|
|
82
|
+
selectedElementPosition: sharer.getSharedStorage(keySelectedElementPosition)
|
|
101
83
|
};
|
|
102
84
|
};
|
|
103
85
|
const clear = () => {
|
|
@@ -112,17 +94,65 @@ export const MiddlewareSelector = (opts) => {
|
|
|
112
94
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
113
95
|
sharer.setSharedStorage(keySelectedElementListVertexes, null);
|
|
114
96
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
97
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
98
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
99
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
100
|
+
sharer.setSharedStorage(keyIsMoving, null);
|
|
101
|
+
sharer.setSharedStorage(keyEnableSelectInGroup, null);
|
|
115
102
|
};
|
|
116
103
|
clear();
|
|
104
|
+
const selectCallback = ({ uuids, positions }) => {
|
|
105
|
+
let elements = [];
|
|
106
|
+
const actionType = sharer.getSharedStorage(keyActionType);
|
|
107
|
+
const data = sharer.getActiveStorage('data');
|
|
108
|
+
if (positions && Array.isArray(positions)) {
|
|
109
|
+
elements = findElementsFromListByPositions(positions, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
elements = findElementsFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
113
|
+
}
|
|
114
|
+
let needRefresh = false;
|
|
115
|
+
if (!actionType && elements.length === 1) {
|
|
116
|
+
sharer.setSharedStorage(keyActionType, 'select');
|
|
117
|
+
needRefresh = true;
|
|
118
|
+
}
|
|
119
|
+
else if (actionType === 'select' && elements.length === 1) {
|
|
120
|
+
needRefresh = true;
|
|
121
|
+
}
|
|
122
|
+
if (needRefresh) {
|
|
123
|
+
const elem = elements[0];
|
|
124
|
+
const groupQueue = getGroupQueueFromList(elem.uuid, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
125
|
+
sharer.setSharedStorage(keyGroupQueue, groupQueue);
|
|
126
|
+
updateSelectedElementList(elements);
|
|
127
|
+
viewer.drawFrame();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const selectClearCallback = () => {
|
|
131
|
+
clear();
|
|
132
|
+
viewer.drawFrame();
|
|
133
|
+
};
|
|
134
|
+
const selectInGroupCallback = (e) => {
|
|
135
|
+
sharer.setSharedStorage(keyEnableSelectInGroup, !!e.enable);
|
|
136
|
+
};
|
|
117
137
|
return {
|
|
118
|
-
|
|
138
|
+
name: '@middleware/selector',
|
|
139
|
+
use() {
|
|
140
|
+
eventHub.on(middlewareEventSelect, selectCallback);
|
|
141
|
+
eventHub.on(middlewareEventSelectClear, selectClearCallback);
|
|
142
|
+
eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
143
|
+
},
|
|
144
|
+
disuse() {
|
|
145
|
+
eventHub.off(middlewareEventSelect, selectCallback);
|
|
146
|
+
eventHub.off(middlewareEventSelectClear, selectClearCallback);
|
|
147
|
+
eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
148
|
+
},
|
|
119
149
|
hover: (e) => {
|
|
120
|
-
var _a, _b;
|
|
150
|
+
var _a, _b, _c, _d, _e;
|
|
121
151
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
122
152
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
123
153
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
124
154
|
const triggerCursor = (target) => {
|
|
125
|
-
|
|
155
|
+
const cursor = target.type;
|
|
126
156
|
if (inBusyMode === null) {
|
|
127
157
|
eventHub.trigger('cursor', {
|
|
128
158
|
type: cursor,
|
|
@@ -176,8 +206,27 @@ export const MiddlewareSelector = (opts) => {
|
|
|
176
206
|
calculator
|
|
177
207
|
}) }));
|
|
178
208
|
triggerCursor(target);
|
|
179
|
-
if (target.type ===
|
|
180
|
-
sharer.
|
|
209
|
+
if (target.type === null) {
|
|
210
|
+
if (sharer.getSharedStorage(keyHoverElement) || sharer.getSharedStorage(keyHoverElementVertexes)) {
|
|
211
|
+
sharer.setSharedStorage(keyHoverElement, null);
|
|
212
|
+
sharer.setSharedStorage(keyHoverElementVertexes, null);
|
|
213
|
+
viewer.drawFrame();
|
|
214
|
+
}
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (target.type === 'over-element' &&
|
|
218
|
+
sharer.getSharedStorage(keyActionType) === 'select' &&
|
|
219
|
+
target.elements.length === 1 &&
|
|
220
|
+
target.elements[0].uuid === ((_c = (_b = getActiveElements()) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.uuid)) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (target.type === 'over-element' &&
|
|
224
|
+
sharer.getSharedStorage(keyActionType) === null &&
|
|
225
|
+
target.elements.length === 1 &&
|
|
226
|
+
target.elements[0].uuid === ((_d = sharer.getSharedStorage(keyHoverElement)) === null || _d === void 0 ? void 0 : _d.uuid)) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
181
230
|
updateHoverElement(target.elements[0]);
|
|
182
231
|
viewer.drawFrame();
|
|
183
232
|
return;
|
|
@@ -189,9 +238,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
189
238
|
}
|
|
190
239
|
},
|
|
191
240
|
pointStart: (e) => {
|
|
192
|
-
var _a, _b, _c, _d;
|
|
241
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
193
242
|
prevPoint = e.point;
|
|
194
|
-
updateHoverElement(null);
|
|
195
243
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
196
244
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
197
245
|
if (isPointInViewActiveGroup(e.point, {
|
|
@@ -201,12 +249,17 @@ export const MiddlewareSelector = (opts) => {
|
|
|
201
249
|
groupQueue
|
|
202
250
|
})) {
|
|
203
251
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
204
|
-
|
|
205
|
-
|
|
252
|
+
if (((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.lock) === true) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
updateHoverElement(null);
|
|
257
|
+
}
|
|
258
|
+
if (target.type === 'over-element' && ((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
|
|
206
259
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
207
260
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
208
261
|
}
|
|
209
|
-
else if ((
|
|
262
|
+
else if ((_e = target.type) === null || _e === void 0 ? void 0 : _e.startsWith('resize-')) {
|
|
210
263
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
211
264
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
212
265
|
}
|
|
@@ -226,14 +279,20 @@ export const MiddlewareSelector = (opts) => {
|
|
|
226
279
|
calculator
|
|
227
280
|
});
|
|
228
281
|
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
282
|
+
if (((_f = target === null || target === void 0 ? void 0 : target.elements) === null || _f === void 0 ? void 0 : _f.length) === 1 && ((_h = (_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.lock) === true) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
updateHoverElement(null);
|
|
287
|
+
}
|
|
229
288
|
if (target.type === 'list-area') {
|
|
230
289
|
sharer.setSharedStorage(keyActionType, 'drag-list');
|
|
231
290
|
}
|
|
232
|
-
else if (target.type === 'over-element' && ((
|
|
291
|
+
else if (target.type === 'over-element' && ((_j = target === null || target === void 0 ? void 0 : target.elements) === null || _j === void 0 ? void 0 : _j.length) === 1) {
|
|
233
292
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
234
293
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
235
294
|
}
|
|
236
|
-
else if ((
|
|
295
|
+
else if ((_k = target.type) === null || _k === void 0 ? void 0 : _k.startsWith('resize-')) {
|
|
237
296
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
238
297
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
239
298
|
}
|
|
@@ -246,9 +305,15 @@ export const MiddlewareSelector = (opts) => {
|
|
|
246
305
|
viewer.drawFrame();
|
|
247
306
|
},
|
|
248
307
|
pointMove: (e) => {
|
|
308
|
+
var _a, _b, _c;
|
|
309
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
310
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
311
|
+
sharer.setSharedStorage(keyIsMoving, true);
|
|
249
312
|
const data = sharer.getActiveStorage('data');
|
|
250
313
|
const elems = getActiveElements();
|
|
251
314
|
const scale = sharer.getActiveStorage('scale') || 1;
|
|
315
|
+
const viewScaleInfo = sharer.getActiveViewScaleInfo();
|
|
316
|
+
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
252
317
|
const start = prevPoint;
|
|
253
318
|
const end = e.point;
|
|
254
319
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
@@ -256,11 +321,46 @@ export const MiddlewareSelector = (opts) => {
|
|
|
256
321
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
257
322
|
if (actionType === 'drag') {
|
|
258
323
|
inBusyMode = 'drag';
|
|
259
|
-
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end) {
|
|
324
|
+
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) !== true) {
|
|
260
325
|
const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
|
|
261
|
-
|
|
262
|
-
|
|
326
|
+
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
327
|
+
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
328
|
+
const referenceInfo = calcReferenceInfo(elems[0].uuid, {
|
|
329
|
+
calculator,
|
|
330
|
+
data,
|
|
331
|
+
groupQueue,
|
|
332
|
+
viewScaleInfo,
|
|
333
|
+
viewSizeInfo
|
|
334
|
+
});
|
|
335
|
+
try {
|
|
336
|
+
if (referenceInfo) {
|
|
337
|
+
if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
|
|
338
|
+
totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
|
|
339
|
+
}
|
|
340
|
+
if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
|
|
341
|
+
totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
|
|
342
|
+
}
|
|
343
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
|
|
344
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
console.error(err);
|
|
349
|
+
}
|
|
350
|
+
elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
|
|
351
|
+
elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
|
|
263
352
|
updateSelectedElementList([elems[0]]);
|
|
353
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
354
|
+
modifyOptions: {
|
|
355
|
+
type: 'updateElement',
|
|
356
|
+
content: {
|
|
357
|
+
element: elems[0],
|
|
358
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
viewSizeInfo,
|
|
362
|
+
viewScaleInfo
|
|
363
|
+
});
|
|
264
364
|
}
|
|
265
365
|
viewer.drawFrame();
|
|
266
366
|
}
|
|
@@ -270,9 +370,21 @@ export const MiddlewareSelector = (opts) => {
|
|
|
270
370
|
const moveX = (end.x - start.x) / scale;
|
|
271
371
|
const moveY = (end.y - start.y) / scale;
|
|
272
372
|
elems.forEach((elem) => {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
elem.
|
|
373
|
+
var _a;
|
|
374
|
+
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) !== true) {
|
|
375
|
+
elem.x = calculator.toGridNum(elem.x + moveX);
|
|
376
|
+
elem.y = calculator.toGridNum(elem.y + moveY);
|
|
377
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
378
|
+
modifyOptions: {
|
|
379
|
+
type: 'updateElement',
|
|
380
|
+
content: {
|
|
381
|
+
element: elem,
|
|
382
|
+
position: getElementPositionFromList(elem.uuid, data.elements) || []
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
viewSizeInfo,
|
|
386
|
+
viewScaleInfo
|
|
387
|
+
});
|
|
276
388
|
}
|
|
277
389
|
});
|
|
278
390
|
sharer.setActiveStorage('data', data);
|
|
@@ -299,12 +411,54 @@ export const MiddlewareSelector = (opts) => {
|
|
|
299
411
|
resizeStart = rotatePointInGroup(start, pointGroupQueue);
|
|
300
412
|
resizeEnd = rotatePointInGroup(end, pointGroupQueue);
|
|
301
413
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
414
|
+
if (resizeType === 'resize-rotate') {
|
|
415
|
+
const controller = sharer.getSharedStorage(keySelectedElementController);
|
|
416
|
+
const viewVertexes = [
|
|
417
|
+
controller.topLeft.center,
|
|
418
|
+
controller.topRight.center,
|
|
419
|
+
controller.bottomLeft.center,
|
|
420
|
+
controller.bottomRight.center
|
|
421
|
+
];
|
|
422
|
+
const viewCenter = calcElementCenterFromVertexes(viewVertexes);
|
|
423
|
+
const resizedElemSize = rotateElement(elems[0], {
|
|
424
|
+
center: viewCenter,
|
|
425
|
+
viewScaleInfo,
|
|
426
|
+
viewSizeInfo,
|
|
427
|
+
start,
|
|
428
|
+
end,
|
|
429
|
+
resizeType,
|
|
430
|
+
sharer
|
|
431
|
+
});
|
|
432
|
+
elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
|
|
436
|
+
const calcOpts = { ignore: !!elems[0].angle };
|
|
437
|
+
elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts);
|
|
438
|
+
elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts);
|
|
439
|
+
if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
|
|
440
|
+
deepResizeGroupElement(elems[0], {
|
|
441
|
+
w: calculator.toGridNum(resizedElemSize.w, calcOpts),
|
|
442
|
+
h: calculator.toGridNum(resizedElemSize.h, calcOpts)
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
elems[0].w = calculator.toGridNum(resizedElemSize.w, calcOpts);
|
|
447
|
+
elems[0].h = calculator.toGridNum(resizedElemSize.h, calcOpts);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
307
450
|
updateSelectedElementList([elems[0]]);
|
|
451
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
452
|
+
modifyOptions: {
|
|
453
|
+
type: 'updateElement',
|
|
454
|
+
content: {
|
|
455
|
+
element: elems[0],
|
|
456
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
457
|
+
}
|
|
458
|
+
},
|
|
459
|
+
viewSizeInfo,
|
|
460
|
+
viewScaleInfo
|
|
461
|
+
});
|
|
308
462
|
viewer.drawFrame();
|
|
309
463
|
}
|
|
310
464
|
}
|
|
@@ -317,6 +471,9 @@ export const MiddlewareSelector = (opts) => {
|
|
|
317
471
|
},
|
|
318
472
|
pointEnd(e) {
|
|
319
473
|
inBusyMode = null;
|
|
474
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
475
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
476
|
+
sharer.setSharedStorage(keyIsMoving, false);
|
|
320
477
|
const data = sharer.getActiveStorage('data');
|
|
321
478
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
322
479
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
@@ -380,7 +537,11 @@ export const MiddlewareSelector = (opts) => {
|
|
|
380
537
|
sharer.setActiveStorage('contextWidth', viewInfo.contextSize.contextWidth);
|
|
381
538
|
}
|
|
382
539
|
if (data && ['drag', 'drag-list', 'drag-list-end', 'resize'].includes(actionType)) {
|
|
383
|
-
|
|
540
|
+
let type = 'dragElement';
|
|
541
|
+
if (type === 'resize') {
|
|
542
|
+
type = 'resizeElement';
|
|
543
|
+
}
|
|
544
|
+
eventHub.trigger(eventChange, { data, type });
|
|
384
545
|
}
|
|
385
546
|
viewer.drawFrame();
|
|
386
547
|
};
|
|
@@ -392,9 +553,17 @@ export const MiddlewareSelector = (opts) => {
|
|
|
392
553
|
viewer.drawFrame();
|
|
393
554
|
},
|
|
394
555
|
doubleClick(e) {
|
|
395
|
-
var _a, _b;
|
|
556
|
+
var _a, _b, _c, _d, _e, _f;
|
|
557
|
+
if (sharer.getSharedStorage(keyEnableSelectInGroup) === false) {
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
396
560
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
397
|
-
|
|
561
|
+
sharer.setSharedStorage(keySelectedElementController, null);
|
|
562
|
+
sharer.setSharedStorage(keySelectedElementList, []);
|
|
563
|
+
if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) === true) {
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
if (target.elements.length === 1 && ((_c = target.elements[0]) === null || _c === void 0 ? void 0 : _c.type) === 'group') {
|
|
398
567
|
const pushResult = pushGroupQueue(target.elements[0]);
|
|
399
568
|
if (pushResult === true) {
|
|
400
569
|
sharer.setSharedStorage(keyActionType, null);
|
|
@@ -402,16 +571,18 @@ export const MiddlewareSelector = (opts) => {
|
|
|
402
571
|
return;
|
|
403
572
|
}
|
|
404
573
|
}
|
|
405
|
-
else if (target.elements.length === 1 && ((
|
|
574
|
+
else if (target.elements.length === 1 && ((_d = target.elements[0]) === null || _d === void 0 ? void 0 : _d.type) === 'text') {
|
|
406
575
|
eventHub.trigger(middlewareEventTextEdit, {
|
|
407
576
|
element: target.elements[0],
|
|
408
577
|
groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
|
|
578
|
+
position: getElementPositionFromList((_e = target.elements[0]) === null || _e === void 0 ? void 0 : _e.uuid, ((_f = sharer.getActiveStorage('data')) === null || _f === void 0 ? void 0 : _f.elements) || []),
|
|
409
579
|
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
410
580
|
});
|
|
411
581
|
}
|
|
412
582
|
sharer.setSharedStorage(keyActionType, null);
|
|
413
583
|
},
|
|
414
584
|
beforeDrawFrame({ snapshot }) {
|
|
585
|
+
var _a;
|
|
415
586
|
const { activeStore, sharedStore } = snapshot;
|
|
416
587
|
const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
|
|
417
588
|
const sharer = opts.sharer;
|
|
@@ -426,6 +597,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
426
597
|
const areaEnd = sharedStore[keyAreaEnd];
|
|
427
598
|
const groupQueue = sharedStore[keyGroupQueue];
|
|
428
599
|
const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
|
|
600
|
+
const isMoving = sharedStore[keyIsMoving];
|
|
429
601
|
const drawBaseOpts = { calculator, viewScaleInfo, viewSizeInfo };
|
|
430
602
|
const selectedElementController = elem
|
|
431
603
|
? calcElementSizeController(elem, {
|
|
@@ -434,21 +606,56 @@ export const MiddlewareSelector = (opts) => {
|
|
|
434
606
|
viewScaleInfo
|
|
435
607
|
})
|
|
436
608
|
: null;
|
|
609
|
+
const isLock = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.lock);
|
|
437
610
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
438
611
|
drawGroupQueueVertexesWrappers(helperContext, groupQueueVertexesList, drawBaseOpts);
|
|
439
612
|
if (hoverElement && actionType !== 'drag') {
|
|
440
|
-
|
|
613
|
+
if (isLock) {
|
|
614
|
+
drawLockVertexesWrapper(helperContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
615
|
+
groupQueue,
|
|
616
|
+
controllerSize: 10,
|
|
617
|
+
viewScaleInfo
|
|
618
|
+
}) }));
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
|
|
622
|
+
}
|
|
441
623
|
}
|
|
442
|
-
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
443
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign({}, drawBaseOpts));
|
|
624
|
+
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
625
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
|
|
626
|
+
if (actionType === 'drag') {
|
|
627
|
+
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
628
|
+
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
629
|
+
drawReferenceLines(helperContext, {
|
|
630
|
+
xLines,
|
|
631
|
+
yLines
|
|
632
|
+
});
|
|
633
|
+
}
|
|
444
634
|
}
|
|
445
635
|
}
|
|
446
636
|
else {
|
|
447
637
|
if (hoverElement && actionType !== 'drag') {
|
|
448
|
-
|
|
638
|
+
if (isLock) {
|
|
639
|
+
drawLockVertexesWrapper(helperContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
640
|
+
groupQueue,
|
|
641
|
+
controllerSize: 10,
|
|
642
|
+
viewScaleInfo
|
|
643
|
+
}) }));
|
|
644
|
+
}
|
|
645
|
+
else {
|
|
646
|
+
drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
|
|
647
|
+
}
|
|
449
648
|
}
|
|
450
|
-
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
451
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign({}, drawBaseOpts));
|
|
649
|
+
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
650
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
|
|
651
|
+
if (actionType === 'drag') {
|
|
652
|
+
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
653
|
+
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
654
|
+
drawReferenceLines(helperContext, {
|
|
655
|
+
xLines,
|
|
656
|
+
yLines
|
|
657
|
+
});
|
|
658
|
+
}
|
|
452
659
|
}
|
|
453
660
|
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
454
661
|
drawArea(helperContext, { start: areaStart, end: areaEnd });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Data, Element, PointSize, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
|
|
2
|
+
export declare function calcReferenceInfo(uuid: string, opts: {
|
|
3
|
+
data: Data;
|
|
4
|
+
groupQueue: Element<'group'>[];
|
|
5
|
+
calculator: ViewCalculator;
|
|
6
|
+
viewScaleInfo: ViewScaleInfo;
|
|
7
|
+
viewSizeInfo: ViewSizeInfo;
|
|
8
|
+
}): {
|
|
9
|
+
offsetX: number | null;
|
|
10
|
+
offsetY: number | null;
|
|
11
|
+
yLines: PointSize[][];
|
|
12
|
+
xLines: PointSize[][];
|
|
13
|
+
} | null;
|