@idraw/core 0.4.0-beta.9 → 0.4.0

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