@idraw/core 0.4.0-beta.4 → 0.4.0-beta.41

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