@idraw/core 0.4.0-beta.4 → 0.4.0-beta.40
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/board/index.d.ts +46 -0
- package/dist/esm/board/index.js +371 -0
- package/dist/esm/board/sharer.d.ts +21 -0
- package/dist/esm/board/sharer.js +101 -0
- package/dist/esm/board/viewer.d.ts +32 -0
- package/dist/esm/board/viewer.js +165 -0
- package/dist/esm/board/watcher.d.ts +15 -0
- package/dist/esm/board/watcher.js +218 -0
- package/dist/esm/config.d.ts +28 -0
- package/dist/esm/config.js +34 -0
- package/dist/esm/index.d.ts +23 -9
- package/dist/esm/index.js +36 -12
- package/dist/esm/lib/cursor-image.d.ts +1 -0
- package/dist/esm/lib/cursor-image.js +1 -0
- package/dist/esm/lib/cursor.d.ts +3 -12
- package/dist/esm/lib/cursor.js +137 -112
- package/dist/esm/middleware/dragger/index.d.ts +2 -2
- package/dist/esm/middleware/dragger/index.js +5 -3
- package/dist/esm/middleware/info/config.d.ts +5 -0
- package/dist/esm/middleware/info/config.js +9 -0
- package/dist/esm/middleware/info/draw-info.d.ts +29 -0
- package/dist/esm/middleware/info/draw-info.js +113 -0
- package/dist/esm/middleware/info/index.d.ts +9 -0
- package/dist/esm/middleware/info/index.js +131 -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 +11 -0
- package/dist/esm/middleware/layout-selector/config.js +12 -0
- package/dist/esm/middleware/layout-selector/index.d.ts +5 -0
- package/dist/esm/middleware/layout-selector/index.js +349 -0
- package/dist/esm/middleware/layout-selector/types.d.ts +17 -0
- package/dist/esm/middleware/layout-selector/types.js +2 -0
- package/dist/esm/middleware/layout-selector/util.d.ts +9 -0
- package/dist/esm/middleware/layout-selector/util.js +63 -0
- package/dist/esm/middleware/pointer/index.d.ts +3 -0
- package/dist/esm/middleware/pointer/index.js +43 -0
- package/dist/esm/middleware/pointer/types.d.ts +3 -0
- package/dist/esm/middleware/pointer/types.js +1 -0
- package/dist/esm/middleware/ruler/config.d.ts +7 -0
- package/dist/esm/middleware/ruler/config.js +21 -0
- package/dist/esm/middleware/ruler/index.d.ts +3 -3
- package/dist/esm/middleware/ruler/index.js +33 -14
- 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 +20 -4
- package/dist/esm/middleware/ruler/util.js +97 -25
- package/dist/esm/middleware/scaler/index.d.ts +2 -3
- package/dist/esm/middleware/scaler/index.js +3 -2
- package/dist/esm/middleware/scroller/config.d.ts +4 -0
- package/dist/esm/middleware/scroller/config.js +10 -0
- package/dist/esm/middleware/scroller/index.d.ts +3 -2
- package/dist/esm/middleware/scroller/index.js +48 -6
- package/dist/esm/middleware/scroller/types.d.ts +11 -0
- package/dist/esm/middleware/scroller/types.js +1 -0
- package/dist/esm/middleware/scroller/util.d.ts +3 -2
- package/dist/esm/middleware/scroller/util.js +32 -43
- package/dist/esm/middleware/selector/config.d.ts +9 -1
- package/dist/esm/middleware/selector/config.js +17 -1
- package/dist/esm/middleware/selector/draw-auxiliary.d.ts +1 -0
- package/dist/esm/middleware/selector/draw-auxiliary.js +12 -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-debug.d.ts +5 -0
- package/dist/esm/middleware/selector/draw-debug.js +30 -0
- package/dist/esm/middleware/selector/draw-reference.d.ts +7 -0
- package/dist/esm/middleware/selector/draw-reference.js +31 -0
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +16 -1
- package/dist/esm/middleware/selector/draw-wrapper.js +57 -35
- package/dist/esm/middleware/selector/index.d.ts +11 -4
- package/dist/esm/middleware/selector/index.js +420 -70
- package/dist/esm/middleware/selector/pattern/icon-rotate.d.ts +4 -0
- package/dist/esm/middleware/selector/pattern/icon-rotate.js +88 -0
- package/dist/esm/middleware/selector/pattern/index.d.ts +8 -0
- package/dist/esm/middleware/selector/pattern/index.js +38 -0
- package/dist/esm/middleware/selector/reference.d.ts +13 -0
- package/dist/esm/middleware/selector/reference.js +267 -0
- package/dist/esm/middleware/selector/types.d.ts +10 -4
- package/dist/esm/middleware/selector/types.js +2 -1
- package/dist/esm/middleware/selector/util.d.ts +14 -7
- package/dist/esm/middleware/selector/util.js +45 -43
- package/dist/esm/middleware/text-editor/index.d.ts +20 -3
- package/dist/esm/middleware/text-editor/index.js +96 -19
- package/dist/index.global.js +4765 -1466
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -6
|
@@ -1,15 +1,29 @@
|
|
|
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 {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, getElementPositionMapFromList, deepResizeGroupElement, getElementSize, calcPointMoveElementInGroup, isSameElementSize } from '@idraw/util';
|
|
2
|
+
import { drawHoverVertexesWrapper, drawLockedVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
|
+
import { drawReferenceLines } from './draw-reference';
|
|
4
|
+
import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup } from './util';
|
|
5
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize, rotateControllerSize, rotateControllerPosition, defaultStyle } from './config';
|
|
6
|
+
import { calcReferenceInfo } from './reference';
|
|
7
|
+
import { coreEventKeys } from '../../config';
|
|
8
|
+
import { keyLayoutIsSelected, keyLayoutIsBusyMoving } from '../layout-selector';
|
|
9
|
+
import { createRotateControllerPattern } from './pattern';
|
|
10
|
+
import { MIDDLEWARE_INTERNAL_EVENT_SHOW_INFO_ANGLE } from '../info';
|
|
11
|
+
export { keySelectedElementList, keyHoverElement, keyActionType, keyResizeType, keyGroupQueue };
|
|
12
|
+
export const MiddlewareSelector = (opts, config) => {
|
|
13
|
+
let innerConfig = Object.assign(Object.assign({}, defaultStyle), config);
|
|
8
14
|
const { viewer, sharer, boardContent, calculator, eventHub } = opts;
|
|
9
|
-
const {
|
|
15
|
+
const { overlayContext } = boardContent;
|
|
10
16
|
let prevPoint = null;
|
|
17
|
+
let moveOriginalStartPoint = null;
|
|
18
|
+
let moveOriginalStartElementSize = null;
|
|
11
19
|
let inBusyMode = null;
|
|
20
|
+
let hasChangedData = null;
|
|
21
|
+
let rotateControllerPattern = createRotateControllerPattern({
|
|
22
|
+
fill: innerConfig.activeColor,
|
|
23
|
+
devicePixelRatio: sharer.getActiveViewSizeInfo().devicePixelRatio
|
|
24
|
+
});
|
|
12
25
|
sharer.setSharedStorage(keyActionType, null);
|
|
26
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, true);
|
|
13
27
|
const getActiveElements = () => {
|
|
14
28
|
return sharer.getSharedStorage(keySelectedElementList);
|
|
15
29
|
};
|
|
@@ -44,26 +58,44 @@ export const MiddlewareSelector = (opts) => {
|
|
|
44
58
|
}
|
|
45
59
|
sharer.setSharedStorage(keyHoverElementVertexes, vertexes);
|
|
46
60
|
};
|
|
47
|
-
const
|
|
48
|
-
sharer.
|
|
61
|
+
const updateSelectedElemenetController = () => {
|
|
62
|
+
const list = sharer.getSharedStorage(keySelectedElementList);
|
|
49
63
|
if (list.length === 1) {
|
|
50
64
|
const controller = calcElementSizeController(list[0], {
|
|
51
65
|
groupQueue: sharer.getSharedStorage(keyGroupQueue),
|
|
52
|
-
controllerSize
|
|
53
|
-
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
66
|
+
controllerSize,
|
|
67
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
68
|
+
rotateControllerPosition,
|
|
69
|
+
rotateControllerSize
|
|
54
70
|
});
|
|
55
71
|
sharer.setSharedStorage(keySelectedElementController, controller);
|
|
56
72
|
}
|
|
73
|
+
};
|
|
74
|
+
const updateSelectedElementList = (list, opts) => {
|
|
75
|
+
var _a;
|
|
76
|
+
sharer.setSharedStorage(keySelectedElementList, list);
|
|
77
|
+
if (list.length === 1) {
|
|
78
|
+
updateSelectedElemenetController();
|
|
79
|
+
sharer.setSharedStorage(keySelectedElementPosition, getElementPositionFromList(list[0].uuid, ((_a = sharer.getActiveStorage('data')) === null || _a === void 0 ? void 0 : _a.elements) || []));
|
|
80
|
+
}
|
|
57
81
|
else {
|
|
58
82
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
83
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
59
84
|
}
|
|
60
85
|
if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
|
|
61
|
-
|
|
86
|
+
const uuids = list.map((elem) => elem.uuid);
|
|
87
|
+
const data = sharer.getActiveStorage('data');
|
|
88
|
+
const positionMap = getElementPositionMapFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
89
|
+
eventHub.trigger(coreEventKeys.SELECT, {
|
|
90
|
+
type: 'clickCanvas',
|
|
91
|
+
uuids,
|
|
92
|
+
positions: list.map((elem) => [...positionMap[elem.uuid]])
|
|
93
|
+
});
|
|
62
94
|
}
|
|
63
95
|
};
|
|
64
96
|
const pointTargetBaseOptions = () => {
|
|
65
97
|
return {
|
|
66
|
-
ctx:
|
|
98
|
+
ctx: overlayContext,
|
|
67
99
|
calculator,
|
|
68
100
|
data: sharer.getActiveStorage('data'),
|
|
69
101
|
selectedElements: getActiveElements(),
|
|
@@ -71,7 +103,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
71
103
|
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
72
104
|
groupQueue: sharer.getSharedStorage(keyGroupQueue),
|
|
73
105
|
areaSize: null,
|
|
74
|
-
selectedElementController: sharer.getSharedStorage(keySelectedElementController)
|
|
106
|
+
selectedElementController: sharer.getSharedStorage(keySelectedElementController),
|
|
107
|
+
selectedElementPosition: sharer.getSharedStorage(keySelectedElementPosition)
|
|
75
108
|
};
|
|
76
109
|
};
|
|
77
110
|
const clear = () => {
|
|
@@ -86,9 +119,11 @@ export const MiddlewareSelector = (opts) => {
|
|
|
86
119
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
87
120
|
sharer.setSharedStorage(keySelectedElementListVertexes, null);
|
|
88
121
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
122
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
123
|
+
sharer.setSharedStorage(keyIsMoving, null);
|
|
89
124
|
};
|
|
90
125
|
clear();
|
|
91
|
-
const selectCallback = ({ uuids, positions }) => {
|
|
126
|
+
const selectCallback = ({ uuids = [], positions }) => {
|
|
92
127
|
let elements = [];
|
|
93
128
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
94
129
|
const data = sharer.getActiveStorage('data');
|
|
@@ -114,22 +149,50 @@ export const MiddlewareSelector = (opts) => {
|
|
|
114
149
|
viewer.drawFrame();
|
|
115
150
|
}
|
|
116
151
|
};
|
|
152
|
+
const selectClearCallback = () => {
|
|
153
|
+
clear();
|
|
154
|
+
viewer.drawFrame();
|
|
155
|
+
};
|
|
156
|
+
const setSnapToSnapCallback = (e) => {
|
|
157
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, !!e.enable);
|
|
158
|
+
};
|
|
159
|
+
const selectInGroupCallback = (e) => {
|
|
160
|
+
sharer.setSharedStorage(keyEnableSelectInGroup, !!e.enable);
|
|
161
|
+
};
|
|
117
162
|
return {
|
|
163
|
+
name: '@middleware/selector',
|
|
118
164
|
use() {
|
|
119
|
-
eventHub.on(
|
|
165
|
+
eventHub.on(coreEventKeys.SELECT, selectCallback);
|
|
166
|
+
eventHub.on(coreEventKeys.CLEAR_SELECT, selectClearCallback);
|
|
167
|
+
eventHub.on(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
|
|
168
|
+
eventHub.on(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
|
|
120
169
|
},
|
|
121
170
|
disuse() {
|
|
122
|
-
eventHub.off(
|
|
171
|
+
eventHub.off(coreEventKeys.SELECT, selectCallback);
|
|
172
|
+
eventHub.off(coreEventKeys.CLEAR_SELECT, selectClearCallback);
|
|
173
|
+
eventHub.off(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
|
|
174
|
+
eventHub.off(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
|
|
175
|
+
},
|
|
176
|
+
resetConfig(config) {
|
|
177
|
+
innerConfig = Object.assign(Object.assign({}, innerConfig), config);
|
|
123
178
|
},
|
|
124
179
|
hover: (e) => {
|
|
125
|
-
var _a, _b;
|
|
180
|
+
var _a, _b, _c, _d, _e;
|
|
181
|
+
const layoutIsSelected = sharer.getSharedStorage(keyLayoutIsSelected);
|
|
182
|
+
const layoutIsBusyMoving = sharer.getSharedStorage(keyLayoutIsBusyMoving);
|
|
183
|
+
if (layoutIsBusyMoving === true) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
126
186
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
127
187
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
128
188
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
129
189
|
const triggerCursor = (target) => {
|
|
190
|
+
if (layoutIsSelected === true) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
130
193
|
const cursor = target.type;
|
|
131
194
|
if (inBusyMode === null) {
|
|
132
|
-
eventHub.trigger(
|
|
195
|
+
eventHub.trigger(coreEventKeys.CURSOR, {
|
|
133
196
|
type: cursor,
|
|
134
197
|
groupQueue: target.groupQueue,
|
|
135
198
|
element: target.elements[0]
|
|
@@ -138,7 +201,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
138
201
|
};
|
|
139
202
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
140
203
|
const isInActiveGroup = isPointInViewActiveGroup(e.point, {
|
|
141
|
-
ctx:
|
|
204
|
+
ctx: overlayContext,
|
|
142
205
|
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
143
206
|
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
144
207
|
groupQueue: sharer.getSharedStorage(keyGroupQueue)
|
|
@@ -181,8 +244,27 @@ export const MiddlewareSelector = (opts) => {
|
|
|
181
244
|
calculator
|
|
182
245
|
}) }));
|
|
183
246
|
triggerCursor(target);
|
|
184
|
-
if (target.type ===
|
|
185
|
-
sharer.
|
|
247
|
+
if (target.type === null) {
|
|
248
|
+
if (sharer.getSharedStorage(keyHoverElement) || sharer.getSharedStorage(keyHoverElementVertexes)) {
|
|
249
|
+
sharer.setSharedStorage(keyHoverElement, null);
|
|
250
|
+
sharer.setSharedStorage(keyHoverElementVertexes, null);
|
|
251
|
+
viewer.drawFrame();
|
|
252
|
+
}
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (target.type === 'over-element' &&
|
|
256
|
+
sharer.getSharedStorage(keyActionType) === 'select' &&
|
|
257
|
+
target.elements.length === 1 &&
|
|
258
|
+
target.elements[0].uuid === ((_c = (_b = getActiveElements()) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.uuid)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (target.type === 'over-element' &&
|
|
262
|
+
sharer.getSharedStorage(keyActionType) === null &&
|
|
263
|
+
target.elements.length === 1 &&
|
|
264
|
+
target.elements[0].uuid === ((_d = sharer.getSharedStorage(keyHoverElement)) === null || _d === void 0 ? void 0 : _d.uuid)) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
186
268
|
updateHoverElement(target.elements[0]);
|
|
187
269
|
viewer.drawFrame();
|
|
188
270
|
return;
|
|
@@ -194,24 +276,31 @@ export const MiddlewareSelector = (opts) => {
|
|
|
194
276
|
}
|
|
195
277
|
},
|
|
196
278
|
pointStart: (e) => {
|
|
197
|
-
var _a, _b, _c, _d;
|
|
279
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
198
280
|
prevPoint = e.point;
|
|
199
|
-
|
|
281
|
+
moveOriginalStartPoint = e.point;
|
|
200
282
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
201
283
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
202
284
|
if (isPointInViewActiveGroup(e.point, {
|
|
203
|
-
ctx:
|
|
285
|
+
ctx: overlayContext,
|
|
204
286
|
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
205
287
|
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
206
288
|
groupQueue
|
|
207
289
|
})) {
|
|
208
290
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
291
|
+
const isLockedElement = ((_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.locked) === true;
|
|
209
292
|
updateHoverElement(null);
|
|
210
|
-
if (
|
|
293
|
+
if (((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
|
|
294
|
+
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
295
|
+
}
|
|
296
|
+
if (isLockedElement === true) {
|
|
297
|
+
clear();
|
|
298
|
+
}
|
|
299
|
+
else if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
211
300
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
212
301
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
213
302
|
}
|
|
214
|
-
else if ((
|
|
303
|
+
else if ((_f = target.type) === null || _f === void 0 ? void 0 : _f.startsWith('resize-')) {
|
|
215
304
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
216
305
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
217
306
|
}
|
|
@@ -231,14 +320,25 @@ export const MiddlewareSelector = (opts) => {
|
|
|
231
320
|
calculator
|
|
232
321
|
});
|
|
233
322
|
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
234
|
-
|
|
323
|
+
const isLockedElement = ((_g = target === null || target === void 0 ? void 0 : target.elements) === null || _g === void 0 ? void 0 : _g.length) === 1 && ((_j = (_h = target.elements[0]) === null || _h === void 0 ? void 0 : _h.operations) === null || _j === void 0 ? void 0 : _j.locked) === true;
|
|
324
|
+
updateHoverElement(null);
|
|
325
|
+
if (((_k = target === null || target === void 0 ? void 0 : target.elements) === null || _k === void 0 ? void 0 : _k.length) === 1) {
|
|
326
|
+
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
327
|
+
}
|
|
328
|
+
if (isLockedElement === true) {
|
|
329
|
+
clear();
|
|
330
|
+
sharer.setSharedStorage(keyActionType, 'area');
|
|
331
|
+
sharer.setSharedStorage(keyAreaStart, e.point);
|
|
332
|
+
updateSelectedElementList([], { triggerEvent: true });
|
|
333
|
+
}
|
|
334
|
+
else if (target.type === 'list-area') {
|
|
235
335
|
sharer.setSharedStorage(keyActionType, 'drag-list');
|
|
236
336
|
}
|
|
237
|
-
else if (target.type === 'over-element' && ((
|
|
337
|
+
else if (target.type === 'over-element' && ((_l = target === null || target === void 0 ? void 0 : target.elements) === null || _l === void 0 ? void 0 : _l.length) === 1) {
|
|
238
338
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
239
339
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
240
340
|
}
|
|
241
|
-
else if ((
|
|
341
|
+
else if ((_m = target.type) === null || _m === void 0 ? void 0 : _m.startsWith('resize-')) {
|
|
242
342
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
243
343
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
244
344
|
}
|
|
@@ -251,33 +351,94 @@ export const MiddlewareSelector = (opts) => {
|
|
|
251
351
|
viewer.drawFrame();
|
|
252
352
|
},
|
|
253
353
|
pointMove: (e) => {
|
|
354
|
+
var _a, _b, _c;
|
|
355
|
+
sharer.setSharedStorage(keyIsMoving, true);
|
|
254
356
|
const data = sharer.getActiveStorage('data');
|
|
255
357
|
const elems = getActiveElements();
|
|
256
358
|
const scale = sharer.getActiveStorage('scale') || 1;
|
|
359
|
+
const viewScaleInfo = sharer.getActiveViewScaleInfo();
|
|
360
|
+
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
257
361
|
const start = prevPoint;
|
|
362
|
+
const originalStart = moveOriginalStartPoint;
|
|
258
363
|
const end = e.point;
|
|
259
364
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
260
365
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
261
366
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
367
|
+
const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
|
|
262
368
|
if (actionType === 'drag') {
|
|
369
|
+
hasChangedData = true;
|
|
263
370
|
inBusyMode = 'drag';
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
elems
|
|
267
|
-
|
|
371
|
+
eventHub.trigger(MIDDLEWARE_INTERNAL_EVENT_SHOW_INFO_ANGLE, { show: false });
|
|
372
|
+
if (data &&
|
|
373
|
+
(elems === null || elems === void 0 ? void 0 : elems.length) === 1 &&
|
|
374
|
+
moveOriginalStartElementSize &&
|
|
375
|
+
originalStart &&
|
|
376
|
+
end &&
|
|
377
|
+
((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.locked) !== true) {
|
|
378
|
+
const { moveX, moveY } = calcPointMoveElementInGroup(originalStart, end, groupQueue);
|
|
379
|
+
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
380
|
+
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
381
|
+
if (enableSnapToGrid === true) {
|
|
382
|
+
const referenceInfo = calcReferenceInfo(elems[0].uuid, {
|
|
383
|
+
calculator,
|
|
384
|
+
data,
|
|
385
|
+
groupQueue,
|
|
386
|
+
viewScaleInfo,
|
|
387
|
+
viewSizeInfo
|
|
388
|
+
});
|
|
389
|
+
try {
|
|
390
|
+
if (referenceInfo) {
|
|
391
|
+
if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
|
|
392
|
+
totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
|
|
393
|
+
}
|
|
394
|
+
if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
|
|
395
|
+
totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
console.error(err);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
elems[0].x = calculator.toGridNum(moveOriginalStartElementSize.x + totalMoveX);
|
|
404
|
+
elems[0].y = calculator.toGridNum(moveOriginalStartElementSize.y + totalMoveY);
|
|
268
405
|
updateSelectedElementList([elems[0]]);
|
|
406
|
+
calculator.modifyVirtualFlatItemMap(data, {
|
|
407
|
+
modifyOptions: {
|
|
408
|
+
type: 'updateElement',
|
|
409
|
+
content: {
|
|
410
|
+
element: elems[0],
|
|
411
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
viewSizeInfo,
|
|
415
|
+
viewScaleInfo
|
|
416
|
+
});
|
|
269
417
|
}
|
|
270
418
|
viewer.drawFrame();
|
|
271
419
|
}
|
|
272
420
|
else if (actionType === 'drag-list') {
|
|
421
|
+
hasChangedData = true;
|
|
273
422
|
inBusyMode = 'drag-list';
|
|
274
|
-
if (data && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
|
|
423
|
+
if (data && originalStart && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
|
|
275
424
|
const moveX = (end.x - start.x) / scale;
|
|
276
425
|
const moveY = (end.y - start.y) / scale;
|
|
277
426
|
elems.forEach((elem) => {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
elem.
|
|
427
|
+
var _a;
|
|
428
|
+
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) !== true) {
|
|
429
|
+
elem.x = calculator.toGridNum(elem.x + moveX);
|
|
430
|
+
elem.y = calculator.toGridNum(elem.y + moveY);
|
|
431
|
+
calculator.modifyVirtualFlatItemMap(data, {
|
|
432
|
+
modifyOptions: {
|
|
433
|
+
type: 'updateElement',
|
|
434
|
+
content: {
|
|
435
|
+
element: elem,
|
|
436
|
+
position: getElementPositionFromList(elem.uuid, data.elements) || []
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
viewSizeInfo,
|
|
440
|
+
viewScaleInfo
|
|
441
|
+
});
|
|
281
442
|
}
|
|
282
443
|
});
|
|
283
444
|
sharer.setActiveStorage('data', data);
|
|
@@ -285,7 +446,12 @@ export const MiddlewareSelector = (opts) => {
|
|
|
285
446
|
viewer.drawFrame();
|
|
286
447
|
}
|
|
287
448
|
else if (actionType === 'resize') {
|
|
288
|
-
if (data &&
|
|
449
|
+
if (data &&
|
|
450
|
+
(elems === null || elems === void 0 ? void 0 : elems.length) === 1 &&
|
|
451
|
+
originalStart &&
|
|
452
|
+
moveOriginalStartElementSize &&
|
|
453
|
+
(resizeType === null || resizeType === void 0 ? void 0 : resizeType.startsWith('resize-'))) {
|
|
454
|
+
hasChangedData = true;
|
|
289
455
|
inBusyMode = 'resize';
|
|
290
456
|
const pointGroupQueue = [];
|
|
291
457
|
groupQueue.forEach((group) => {
|
|
@@ -298,18 +464,60 @@ export const MiddlewareSelector = (opts) => {
|
|
|
298
464
|
angle: 0 - angle
|
|
299
465
|
});
|
|
300
466
|
});
|
|
301
|
-
let resizeStart =
|
|
467
|
+
let resizeStart = originalStart;
|
|
302
468
|
let resizeEnd = end;
|
|
303
469
|
if (groupQueue.length > 0) {
|
|
304
|
-
resizeStart = rotatePointInGroup(
|
|
470
|
+
resizeStart = rotatePointInGroup(originalStart, pointGroupQueue);
|
|
305
471
|
resizeEnd = rotatePointInGroup(end, pointGroupQueue);
|
|
306
472
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
473
|
+
if (resizeType === 'resize-rotate') {
|
|
474
|
+
const controller = sharer.getSharedStorage(keySelectedElementController);
|
|
475
|
+
const viewVertexes = [
|
|
476
|
+
controller.topLeft.center,
|
|
477
|
+
controller.topRight.center,
|
|
478
|
+
controller.bottomLeft.center,
|
|
479
|
+
controller.bottomRight.center
|
|
480
|
+
];
|
|
481
|
+
const viewCenter = calcElementCenterFromVertexes(viewVertexes);
|
|
482
|
+
const resizedElemSize = rotateElement(moveOriginalStartElementSize, {
|
|
483
|
+
center: viewCenter,
|
|
484
|
+
viewScaleInfo,
|
|
485
|
+
viewSizeInfo,
|
|
486
|
+
start: originalStart,
|
|
487
|
+
end,
|
|
488
|
+
resizeType,
|
|
489
|
+
sharer
|
|
490
|
+
});
|
|
491
|
+
elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
const resizedElemSize = resizeElement(Object.assign(Object.assign({}, moveOriginalStartElementSize), { operations: elems[0].operations }), { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
|
|
495
|
+
const calcOpts = { ignore: !!moveOriginalStartElementSize.angle };
|
|
496
|
+
elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts);
|
|
497
|
+
elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts);
|
|
498
|
+
if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
|
|
499
|
+
deepResizeGroupElement(elems[0], {
|
|
500
|
+
w: calculator.toGridNum(resizedElemSize.w, calcOpts),
|
|
501
|
+
h: calculator.toGridNum(resizedElemSize.h, calcOpts)
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
elems[0].w = calculator.toGridNum(resizedElemSize.w, calcOpts);
|
|
506
|
+
elems[0].h = calculator.toGridNum(resizedElemSize.h, calcOpts);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
312
509
|
updateSelectedElementList([elems[0]]);
|
|
510
|
+
calculator.modifyVirtualFlatItemMap(data, {
|
|
511
|
+
modifyOptions: {
|
|
512
|
+
type: 'updateElement',
|
|
513
|
+
content: {
|
|
514
|
+
element: elems[0],
|
|
515
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
viewSizeInfo,
|
|
519
|
+
viewScaleInfo
|
|
520
|
+
});
|
|
313
521
|
viewer.drawFrame();
|
|
314
522
|
}
|
|
315
523
|
}
|
|
@@ -322,12 +530,20 @@ export const MiddlewareSelector = (opts) => {
|
|
|
322
530
|
},
|
|
323
531
|
pointEnd(e) {
|
|
324
532
|
inBusyMode = null;
|
|
533
|
+
sharer.setSharedStorage(keyIsMoving, false);
|
|
325
534
|
const data = sharer.getActiveStorage('data');
|
|
535
|
+
const selectedElements = sharer.getSharedStorage(keySelectedElementList);
|
|
536
|
+
const hoverElement = sharer.getSharedStorage(keyHoverElement);
|
|
326
537
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
327
538
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
328
539
|
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
329
540
|
let needDrawFrame = false;
|
|
330
541
|
prevPoint = null;
|
|
542
|
+
moveOriginalStartPoint = null;
|
|
543
|
+
moveOriginalStartElementSize = null;
|
|
544
|
+
if (actionType === 'drag') {
|
|
545
|
+
eventHub.trigger(MIDDLEWARE_INTERNAL_EVENT_SHOW_INFO_ANGLE, { show: true });
|
|
546
|
+
}
|
|
331
547
|
if (actionType === 'resize' && resizeType) {
|
|
332
548
|
sharer.setSharedStorage(keyResizeType, null);
|
|
333
549
|
needDrawFrame = true;
|
|
@@ -385,21 +601,38 @@ export const MiddlewareSelector = (opts) => {
|
|
|
385
601
|
sharer.setActiveStorage('contextWidth', viewInfo.contextSize.contextWidth);
|
|
386
602
|
}
|
|
387
603
|
if (data && ['drag', 'drag-list', 'drag-list-end', 'resize'].includes(actionType)) {
|
|
388
|
-
|
|
604
|
+
let type = 'dragElement';
|
|
605
|
+
if (type === 'resize') {
|
|
606
|
+
type = 'resizeElement';
|
|
607
|
+
}
|
|
608
|
+
if (hasChangedData) {
|
|
609
|
+
eventHub.trigger(coreEventKeys.CHANGE, { data, type, selectedElements, hoverElement });
|
|
610
|
+
hasChangedData = false;
|
|
611
|
+
}
|
|
389
612
|
}
|
|
390
613
|
viewer.drawFrame();
|
|
391
614
|
};
|
|
392
615
|
finalDrawFrame();
|
|
393
616
|
},
|
|
394
617
|
pointLeave() {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
618
|
+
inBusyMode = null;
|
|
619
|
+
sharer.setSharedStorage(keyResizeType, null);
|
|
620
|
+
eventHub.trigger(coreEventKeys.CURSOR, {
|
|
621
|
+
type: 'default'
|
|
622
|
+
});
|
|
398
623
|
},
|
|
399
624
|
doubleClick(e) {
|
|
400
|
-
var _a, _b;
|
|
625
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
626
|
+
if (sharer.getSharedStorage(keyEnableSelectInGroup) === false) {
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
401
629
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
402
|
-
|
|
630
|
+
sharer.setSharedStorage(keySelectedElementController, null);
|
|
631
|
+
sharer.setSharedStorage(keySelectedElementList, []);
|
|
632
|
+
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.locked) === true) {
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
if (target.elements.length === 1 && ((_c = target.elements[0]) === null || _c === void 0 ? void 0 : _c.type) === 'group') {
|
|
403
636
|
const pushResult = pushGroupQueue(target.elements[0]);
|
|
404
637
|
if (pushResult === true) {
|
|
405
638
|
sharer.setSharedStorage(keyActionType, null);
|
|
@@ -407,18 +640,74 @@ export const MiddlewareSelector = (opts) => {
|
|
|
407
640
|
return;
|
|
408
641
|
}
|
|
409
642
|
}
|
|
410
|
-
else if (target.elements.length === 1 &&
|
|
411
|
-
|
|
643
|
+
else if (target.elements.length === 1 &&
|
|
644
|
+
((_d = target.elements[0]) === null || _d === void 0 ? void 0 : _d.type) === 'text' &&
|
|
645
|
+
!((_f = (_e = target.elements[0]) === null || _e === void 0 ? void 0 : _e.operations) === null || _f === void 0 ? void 0 : _f.invisible)) {
|
|
646
|
+
eventHub.trigger(coreEventKeys.TEXT_EDIT, {
|
|
412
647
|
element: target.elements[0],
|
|
413
648
|
groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
|
|
649
|
+
position: getElementPositionFromList((_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.uuid, ((_h = sharer.getActiveStorage('data')) === null || _h === void 0 ? void 0 : _h.elements) || []),
|
|
414
650
|
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
415
651
|
});
|
|
416
652
|
}
|
|
417
653
|
sharer.setSharedStorage(keyActionType, null);
|
|
418
654
|
},
|
|
655
|
+
wheel() {
|
|
656
|
+
updateSelectedElemenetController();
|
|
657
|
+
},
|
|
658
|
+
wheelScale() {
|
|
659
|
+
updateSelectedElemenetController();
|
|
660
|
+
},
|
|
661
|
+
contextMenu: (e) => {
|
|
662
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
663
|
+
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
664
|
+
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
665
|
+
if (isPointInViewActiveGroup(e.point, {
|
|
666
|
+
ctx: overlayContext,
|
|
667
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
668
|
+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
669
|
+
groupQueue
|
|
670
|
+
})) {
|
|
671
|
+
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
672
|
+
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.locked) !== true) {
|
|
673
|
+
clear();
|
|
674
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
675
|
+
viewer.drawFrame();
|
|
676
|
+
}
|
|
677
|
+
else if (!((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length)) {
|
|
678
|
+
clear();
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
|
|
684
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
685
|
+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
686
|
+
calculator
|
|
687
|
+
});
|
|
688
|
+
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
689
|
+
if (((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1 && ((_g = (_f = target.elements[0]) === null || _f === void 0 ? void 0 : _f.operations) === null || _g === void 0 ? void 0 : _g.locked) !== true) {
|
|
690
|
+
clear();
|
|
691
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
692
|
+
viewer.drawFrame();
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
else if (!((_h = target === null || target === void 0 ? void 0 : target.elements) === null || _h === void 0 ? void 0 : _h.length)) {
|
|
696
|
+
clear();
|
|
697
|
+
}
|
|
698
|
+
},
|
|
419
699
|
beforeDrawFrame({ snapshot }) {
|
|
700
|
+
var _a;
|
|
701
|
+
const { activeColor, activeAreaColor, lockedColor, referenceColor } = innerConfig;
|
|
702
|
+
const style = { activeColor, activeAreaColor, lockedColor, referenceColor };
|
|
420
703
|
const { activeStore, sharedStore } = snapshot;
|
|
421
704
|
const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
|
|
705
|
+
if (rotateControllerPattern.fill !== activeColor) {
|
|
706
|
+
rotateControllerPattern = createRotateControllerPattern({
|
|
707
|
+
fill: innerConfig.activeColor,
|
|
708
|
+
devicePixelRatio
|
|
709
|
+
});
|
|
710
|
+
}
|
|
422
711
|
const sharer = opts.sharer;
|
|
423
712
|
const viewScaleInfo = { scale, offsetLeft, offsetTop, offsetRight, offsetBottom };
|
|
424
713
|
const viewSizeInfo = { width, height, contextHeight, contextWidth, devicePixelRatio };
|
|
@@ -431,32 +720,93 @@ export const MiddlewareSelector = (opts) => {
|
|
|
431
720
|
const areaEnd = sharedStore[keyAreaEnd];
|
|
432
721
|
const groupQueue = sharedStore[keyGroupQueue];
|
|
433
722
|
const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
|
|
434
|
-
const
|
|
435
|
-
const
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
723
|
+
const isMoving = sharedStore[keyIsMoving];
|
|
724
|
+
const enableSnapToGrid = sharedStore[keyEnableSnapToGrid];
|
|
725
|
+
const drawBaseOpts = { calculator, viewScaleInfo, viewSizeInfo, style };
|
|
726
|
+
let selectedElementController = sharedStore[keySelectedElementController];
|
|
727
|
+
if (selectedElementController && selectedElements.length === 1 && elem) {
|
|
728
|
+
if (!isSameElementSize(elem, selectedElementController.originalElementSize)) {
|
|
729
|
+
selectedElementController = calcElementSizeController(elem, {
|
|
730
|
+
groupQueue: groupQueue || [],
|
|
731
|
+
controllerSize,
|
|
732
|
+
viewScaleInfo,
|
|
733
|
+
rotateControllerPosition,
|
|
734
|
+
rotateControllerSize
|
|
735
|
+
});
|
|
736
|
+
sharer.setSharedStorage(keySelectedElementController, selectedElementController);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
const isHoverLocked = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.locked);
|
|
442
740
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
443
|
-
drawGroupQueueVertexesWrappers(
|
|
741
|
+
drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
|
|
444
742
|
if (hoverElement && actionType !== 'drag') {
|
|
445
|
-
|
|
743
|
+
if (isHoverLocked) {
|
|
744
|
+
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: selectedElementController, style }));
|
|
745
|
+
}
|
|
746
|
+
else {
|
|
747
|
+
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
748
|
+
}
|
|
446
749
|
}
|
|
447
750
|
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
448
|
-
drawSelectedElementControllersVertexes(
|
|
751
|
+
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', rotateControllerPattern: rotateControllerPattern.context2d, style }));
|
|
752
|
+
if (actionType === 'drag') {
|
|
753
|
+
if (enableSnapToGrid === true) {
|
|
754
|
+
const referenceInfo = calcReferenceInfo(elem.uuid, {
|
|
755
|
+
calculator,
|
|
756
|
+
data: activeStore.data,
|
|
757
|
+
groupQueue,
|
|
758
|
+
viewScaleInfo,
|
|
759
|
+
viewSizeInfo
|
|
760
|
+
});
|
|
761
|
+
if (referenceInfo) {
|
|
762
|
+
const { offsetX, offsetY, xLines, yLines } = referenceInfo;
|
|
763
|
+
if (offsetX === 0 || offsetY === 0) {
|
|
764
|
+
drawReferenceLines(overlayContext, {
|
|
765
|
+
xLines,
|
|
766
|
+
yLines,
|
|
767
|
+
style
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
}
|
|
449
773
|
}
|
|
450
774
|
}
|
|
451
775
|
else {
|
|
452
776
|
if (hoverElement && actionType !== 'drag') {
|
|
453
|
-
|
|
777
|
+
if (isHoverLocked) {
|
|
778
|
+
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: selectedElementController, style }));
|
|
779
|
+
}
|
|
780
|
+
else {
|
|
781
|
+
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
782
|
+
}
|
|
454
783
|
}
|
|
455
784
|
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
456
|
-
drawSelectedElementControllersVertexes(
|
|
785
|
+
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', rotateControllerPattern: rotateControllerPattern.context2d, style }));
|
|
786
|
+
if (actionType === 'drag') {
|
|
787
|
+
if (enableSnapToGrid === true) {
|
|
788
|
+
const referenceInfo = calcReferenceInfo(elem.uuid, {
|
|
789
|
+
calculator,
|
|
790
|
+
data: activeStore.data,
|
|
791
|
+
groupQueue,
|
|
792
|
+
viewScaleInfo,
|
|
793
|
+
viewSizeInfo
|
|
794
|
+
});
|
|
795
|
+
if (referenceInfo) {
|
|
796
|
+
const { offsetX, offsetY, xLines, yLines } = referenceInfo;
|
|
797
|
+
if (offsetX === 0 || offsetY === 0) {
|
|
798
|
+
drawReferenceLines(overlayContext, {
|
|
799
|
+
xLines,
|
|
800
|
+
yLines,
|
|
801
|
+
style
|
|
802
|
+
});
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
457
807
|
}
|
|
458
808
|
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
459
|
-
drawArea(
|
|
809
|
+
drawArea(overlayContext, { start: areaStart, end: areaEnd, style });
|
|
460
810
|
}
|
|
461
811
|
else if (['drag-list', 'drag-list-end'].includes(actionType)) {
|
|
462
812
|
const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
|
|
@@ -465,7 +815,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
465
815
|
calculator
|
|
466
816
|
});
|
|
467
817
|
if (listAreaSize) {
|
|
468
|
-
drawListArea(
|
|
818
|
+
drawListArea(overlayContext, { areaSize: listAreaSize, style });
|
|
469
819
|
}
|
|
470
820
|
}
|
|
471
821
|
}
|