@idraw/core 0.4.3 → 1.0.0-alpha.1

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