@thienvu18/designable-core 2.0.0 → 2.0.2

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 (385) hide show
  1. package/esm/drivers/DragDropDriver.d.ts +12 -12
  2. package/esm/drivers/DragDropDriver.js +127 -105
  3. package/esm/drivers/KeyboardDriver.d.ts +5 -5
  4. package/esm/drivers/KeyboardDriver.js +41 -40
  5. package/esm/drivers/MouseClickDriver.d.ts +6 -6
  6. package/esm/drivers/MouseClickDriver.js +55 -47
  7. package/esm/drivers/MouseMoveDriver.d.ts +6 -6
  8. package/esm/drivers/MouseMoveDriver.js +30 -28
  9. package/esm/drivers/ViewportResizeDriver.d.ts +9 -9
  10. package/esm/drivers/ViewportResizeDriver.js +56 -59
  11. package/esm/drivers/ViewportScrollDriver.d.ts +6 -6
  12. package/esm/drivers/ViewportScrollDriver.js +29 -27
  13. package/esm/drivers/index.d.ts +6 -6
  14. package/esm/drivers/index.js +6 -6
  15. package/esm/effects/index.d.ts +11 -11
  16. package/esm/effects/index.js +11 -11
  17. package/esm/effects/useAutoScrollEffect.d.ts +2 -2
  18. package/esm/effects/useAutoScrollEffect.js +70 -59
  19. package/esm/effects/useContentEditableEffect.d.ts +2 -2
  20. package/esm/effects/useContentEditableEffect.js +174 -150
  21. package/esm/effects/useCursorEffect.d.ts +2 -2
  22. package/esm/effects/useCursorEffect.js +58 -54
  23. package/esm/effects/useDragDropEffect.d.ts +2 -2
  24. package/esm/effects/useDragDropEffect.js +170 -145
  25. package/esm/effects/useFreeSelectionEffect.d.ts +2 -2
  26. package/esm/effects/useFreeSelectionEffect.js +58 -36
  27. package/esm/effects/useKeyboardEffect.d.ts +2 -2
  28. package/esm/effects/useKeyboardEffect.js +16 -16
  29. package/esm/effects/useResizeEffect.d.ts +2 -2
  30. package/esm/effects/useResizeEffect.js +84 -73
  31. package/esm/effects/useSelectionEffect.d.ts +2 -2
  32. package/esm/effects/useSelectionEffect.js +62 -65
  33. package/esm/effects/useTranslateEffect.d.ts +2 -2
  34. package/esm/effects/useTranslateEffect.js +55 -52
  35. package/esm/effects/useViewportEffect.d.ts +2 -2
  36. package/esm/effects/useViewportEffect.js +26 -28
  37. package/esm/effects/useWorkspaceEffect.d.ts +2 -2
  38. package/esm/effects/useWorkspaceEffect.js +30 -27
  39. package/esm/events/cursor/AbstractCursorEvent.d.ts +15 -15
  40. package/esm/events/cursor/AbstractCursorEvent.js +35 -33
  41. package/esm/events/cursor/DragMoveEvent.d.ts +7 -4
  42. package/esm/events/cursor/DragMoveEvent.js +5 -5
  43. package/esm/events/cursor/DragStartEvent.d.ts +7 -4
  44. package/esm/events/cursor/DragStartEvent.js +5 -5
  45. package/esm/events/cursor/DragStopEvent.d.ts +7 -4
  46. package/esm/events/cursor/DragStopEvent.js +5 -5
  47. package/esm/events/cursor/MouseClickEvent.d.ts +12 -6
  48. package/esm/events/cursor/MouseClickEvent.js +9 -9
  49. package/esm/events/cursor/MouseMoveEvent.d.ts +7 -4
  50. package/esm/events/cursor/MouseMoveEvent.js +5 -5
  51. package/esm/events/cursor/index.d.ts +5 -5
  52. package/esm/events/cursor/index.js +5 -5
  53. package/esm/events/history/AbstractHistoryEvent.d.ts +4 -4
  54. package/esm/events/history/AbstractHistoryEvent.js +3 -3
  55. package/esm/events/history/HistoryGotoEvent.d.ts +7 -4
  56. package/esm/events/history/HistoryGotoEvent.js +5 -5
  57. package/esm/events/history/HistoryPushEvent.d.ts +7 -4
  58. package/esm/events/history/HistoryPushEvent.js +5 -5
  59. package/esm/events/history/HistoryRedoEvent.d.ts +7 -4
  60. package/esm/events/history/HistoryRedoEvent.js +5 -5
  61. package/esm/events/history/HistoryUndoEvent.d.ts +7 -4
  62. package/esm/events/history/HistoryUndoEvent.js +5 -5
  63. package/esm/events/history/index.d.ts +4 -4
  64. package/esm/events/history/index.js +4 -4
  65. package/esm/events/index.d.ts +6 -6
  66. package/esm/events/index.js +6 -6
  67. package/esm/events/keyboard/AbstractKeyboardEvent.d.ts +13 -13
  68. package/esm/events/keyboard/AbstractKeyboardEvent.js +34 -36
  69. package/esm/events/keyboard/KeyDownEvent.d.ts +7 -4
  70. package/esm/events/keyboard/KeyDownEvent.js +5 -5
  71. package/esm/events/keyboard/KeyUpEvent.d.ts +7 -4
  72. package/esm/events/keyboard/KeyUpEvent.js +5 -5
  73. package/esm/events/keyboard/index.d.ts +2 -2
  74. package/esm/events/keyboard/index.js +2 -2
  75. package/esm/events/mutation/AbstractMutationNodeEvent.d.ts +9 -9
  76. package/esm/events/mutation/AbstractMutationNodeEvent.js +3 -3
  77. package/esm/events/mutation/AppendNodeEvent.d.ts +7 -4
  78. package/esm/events/mutation/AppendNodeEvent.js +5 -5
  79. package/esm/events/mutation/CloneNodeEvent.d.ts +7 -4
  80. package/esm/events/mutation/CloneNodeEvent.js +5 -5
  81. package/esm/events/mutation/DragNodeEvent.d.ts +7 -4
  82. package/esm/events/mutation/DragNodeEvent.js +5 -5
  83. package/esm/events/mutation/DropNodeEvent.d.ts +7 -4
  84. package/esm/events/mutation/DropNodeEvent.js +5 -5
  85. package/esm/events/mutation/FromNodeEvent.d.ts +9 -9
  86. package/esm/events/mutation/FromNodeEvent.js +4 -4
  87. package/esm/events/mutation/HoverNodeEvent.d.ts +7 -4
  88. package/esm/events/mutation/HoverNodeEvent.js +5 -5
  89. package/esm/events/mutation/InsertAfterEvent.d.ts +7 -4
  90. package/esm/events/mutation/InsertAfterEvent.js +5 -5
  91. package/esm/events/mutation/InsertBeforeEvent.d.ts +7 -4
  92. package/esm/events/mutation/InsertBeforeEvent.js +5 -5
  93. package/esm/events/mutation/InsertChildrenEvent.d.ts +7 -4
  94. package/esm/events/mutation/InsertChildrenEvent.js +5 -5
  95. package/esm/events/mutation/PrependNodeEvent.d.ts +7 -4
  96. package/esm/events/mutation/PrependNodeEvent.js +5 -5
  97. package/esm/events/mutation/RemoveNodeEvent.d.ts +7 -4
  98. package/esm/events/mutation/RemoveNodeEvent.js +5 -5
  99. package/esm/events/mutation/SelectNodeEvent.d.ts +7 -4
  100. package/esm/events/mutation/SelectNodeEvent.js +5 -5
  101. package/esm/events/mutation/UnSelectNodeEvent.d.ts +7 -4
  102. package/esm/events/mutation/UnSelectNodeEvent.js +5 -5
  103. package/esm/events/mutation/UpdateChildrenEvent.d.ts +7 -4
  104. package/esm/events/mutation/UpdateChildrenEvent.js +5 -5
  105. package/esm/events/mutation/UpdateNodePropsEvent.d.ts +7 -4
  106. package/esm/events/mutation/UpdateNodePropsEvent.js +5 -5
  107. package/esm/events/mutation/UserSelectNodeEvent.d.ts +7 -4
  108. package/esm/events/mutation/UserSelectNodeEvent.js +5 -5
  109. package/esm/events/mutation/WrapNodeEvent.d.ts +7 -4
  110. package/esm/events/mutation/WrapNodeEvent.js +5 -5
  111. package/esm/events/mutation/index.d.ts +16 -16
  112. package/esm/events/mutation/index.js +16 -16
  113. package/esm/events/viewport/AbstractViewportEvent.d.ts +12 -12
  114. package/esm/events/viewport/AbstractViewportEvent.js +12 -12
  115. package/esm/events/viewport/ViewportResizeEvent.d.ts +7 -4
  116. package/esm/events/viewport/ViewportResizeEvent.js +5 -5
  117. package/esm/events/viewport/ViewportScrollEvent.d.ts +7 -4
  118. package/esm/events/viewport/ViewportScrollEvent.js +5 -5
  119. package/esm/events/viewport/index.d.ts +2 -2
  120. package/esm/events/viewport/index.js +2 -2
  121. package/esm/events/workbench/AbstractWorkspaceEvent.d.ts +5 -5
  122. package/esm/events/workbench/AbstractWorkspaceEvent.js +3 -3
  123. package/esm/events/workbench/AddWorkspaceEvent.d.ts +7 -4
  124. package/esm/events/workbench/AddWorkspaceEvent.js +5 -5
  125. package/esm/events/workbench/RemoveWorkspaceEvent.d.ts +7 -4
  126. package/esm/events/workbench/RemoveWorkspaceEvent.js +5 -5
  127. package/esm/events/workbench/SwitchWorkspaceEvent.d.ts +7 -4
  128. package/esm/events/workbench/SwitchWorkspaceEvent.js +5 -5
  129. package/esm/events/workbench/index.d.ts +3 -3
  130. package/esm/events/workbench/index.js +3 -3
  131. package/esm/exports.d.ts +5 -5
  132. package/esm/exports.js +5 -5
  133. package/esm/externals.d.ts +25 -12
  134. package/esm/externals.js +57 -50
  135. package/esm/index.d.ts +1 -1
  136. package/esm/index.js +11 -12
  137. package/esm/internals.d.ts +3 -3
  138. package/esm/internals.js +34 -30
  139. package/esm/models/Cursor.d.ts +48 -48
  140. package/esm/models/Cursor.js +129 -125
  141. package/esm/models/Engine.d.ts +24 -24
  142. package/esm/models/Engine.js +73 -73
  143. package/esm/models/History.d.ts +26 -26
  144. package/esm/models/History.js +86 -87
  145. package/esm/models/Hover.d.ts +10 -10
  146. package/esm/models/Hover.js +33 -32
  147. package/esm/models/Keyboard.d.ts +25 -25
  148. package/esm/models/Keyboard.js +95 -94
  149. package/esm/models/MoveHelper.d.ts +57 -54
  150. package/esm/models/MoveHelper.js +304 -290
  151. package/esm/models/Operation.d.ts +25 -25
  152. package/esm/models/Operation.js +59 -60
  153. package/esm/models/Screen.d.ts +25 -25
  154. package/esm/models/Screen.js +67 -67
  155. package/esm/models/Selection.d.ts +25 -25
  156. package/esm/models/Selection.js +143 -149
  157. package/esm/models/Shortcut.d.ts +16 -16
  158. package/esm/models/Shortcut.js +56 -57
  159. package/esm/models/SnapLine.d.ts +24 -24
  160. package/esm/models/SnapLine.js +96 -105
  161. package/esm/models/SpaceBlock.d.ts +41 -36
  162. package/esm/models/SpaceBlock.js +154 -115
  163. package/esm/models/TransformHelper.d.ts +88 -74
  164. package/esm/models/TransformHelper.js +546 -450
  165. package/esm/models/TreeNode.d.ts +117 -109
  166. package/esm/models/TreeNode.js +743 -732
  167. package/esm/models/Viewport.d.ts +83 -81
  168. package/esm/models/Viewport.js +406 -384
  169. package/esm/models/Workbench.d.ts +21 -21
  170. package/esm/models/Workbench.js +90 -88
  171. package/esm/models/Workspace.d.ts +33 -33
  172. package/esm/models/Workspace.js +87 -83
  173. package/esm/models/index.d.ts +13 -13
  174. package/esm/models/index.js +13 -13
  175. package/esm/presets.d.ts +20 -4
  176. package/esm/presets.js +67 -35
  177. package/esm/registry.d.ts +21 -15
  178. package/esm/registry.js +106 -108
  179. package/esm/shortcuts/CursorSwitch.d.ts +2 -2
  180. package/esm/shortcuts/CursorSwitch.js +9 -9
  181. package/esm/shortcuts/MultiSelection.d.ts +5 -5
  182. package/esm/shortcuts/MultiSelection.js +23 -23
  183. package/esm/shortcuts/NodeMutation.d.ts +4 -4
  184. package/esm/shortcuts/NodeMutation.js +33 -33
  185. package/esm/shortcuts/QuickSelection.d.ts +3 -3
  186. package/esm/shortcuts/QuickSelection.js +71 -78
  187. package/esm/shortcuts/UndoRedo.d.ts +3 -3
  188. package/esm/shortcuts/UndoRedo.js +25 -25
  189. package/esm/shortcuts/index.d.ts +5 -5
  190. package/esm/shortcuts/index.js +5 -5
  191. package/esm/types.d.ts +138 -105
  192. package/esm/types.js +1 -1
  193. package/lib/drivers/DragDropDriver.d.ts +12 -12
  194. package/lib/drivers/DragDropDriver.js +131 -109
  195. package/lib/drivers/KeyboardDriver.d.ts +5 -5
  196. package/lib/drivers/KeyboardDriver.js +45 -44
  197. package/lib/drivers/MouseClickDriver.d.ts +6 -6
  198. package/lib/drivers/MouseClickDriver.js +59 -51
  199. package/lib/drivers/MouseMoveDriver.d.ts +6 -6
  200. package/lib/drivers/MouseMoveDriver.js +34 -32
  201. package/lib/drivers/ViewportResizeDriver.d.ts +9 -9
  202. package/lib/drivers/ViewportResizeDriver.js +69 -63
  203. package/lib/drivers/ViewportScrollDriver.d.ts +6 -6
  204. package/lib/drivers/ViewportScrollDriver.js +34 -31
  205. package/lib/drivers/index.d.ts +6 -6
  206. package/lib/drivers/index.js +38 -22
  207. package/lib/effects/index.d.ts +11 -11
  208. package/lib/effects/index.js +43 -27
  209. package/lib/effects/useAutoScrollEffect.d.ts +2 -2
  210. package/lib/effects/useAutoScrollEffect.js +81 -63
  211. package/lib/effects/useContentEditableEffect.d.ts +2 -2
  212. package/lib/effects/useContentEditableEffect.js +178 -154
  213. package/lib/effects/useCursorEffect.d.ts +2 -2
  214. package/lib/effects/useCursorEffect.js +57 -58
  215. package/lib/effects/useDragDropEffect.d.ts +2 -2
  216. package/lib/effects/useDragDropEffect.js +175 -149
  217. package/lib/effects/useFreeSelectionEffect.d.ts +2 -2
  218. package/lib/effects/useFreeSelectionEffect.js +60 -40
  219. package/lib/effects/useKeyboardEffect.d.ts +2 -2
  220. package/lib/effects/useKeyboardEffect.js +20 -20
  221. package/lib/effects/useResizeEffect.d.ts +2 -2
  222. package/lib/effects/useResizeEffect.js +88 -77
  223. package/lib/effects/useSelectionEffect.d.ts +2 -2
  224. package/lib/effects/useSelectionEffect.js +69 -69
  225. package/lib/effects/useTranslateEffect.d.ts +2 -2
  226. package/lib/effects/useTranslateEffect.js +59 -56
  227. package/lib/effects/useViewportEffect.d.ts +2 -2
  228. package/lib/effects/useViewportEffect.js +30 -32
  229. package/lib/effects/useWorkspaceEffect.d.ts +2 -2
  230. package/lib/effects/useWorkspaceEffect.js +34 -31
  231. package/lib/events/cursor/AbstractCursorEvent.d.ts +15 -15
  232. package/lib/events/cursor/AbstractCursorEvent.js +42 -37
  233. package/lib/events/cursor/DragMoveEvent.d.ts +7 -4
  234. package/lib/events/cursor/DragMoveEvent.js +9 -9
  235. package/lib/events/cursor/DragStartEvent.d.ts +7 -4
  236. package/lib/events/cursor/DragStartEvent.js +9 -9
  237. package/lib/events/cursor/DragStopEvent.d.ts +7 -4
  238. package/lib/events/cursor/DragStopEvent.js +9 -9
  239. package/lib/events/cursor/MouseClickEvent.d.ts +12 -6
  240. package/lib/events/cursor/MouseClickEvent.js +14 -14
  241. package/lib/events/cursor/MouseMoveEvent.d.ts +7 -4
  242. package/lib/events/cursor/MouseMoveEvent.js +9 -9
  243. package/lib/events/cursor/index.d.ts +5 -5
  244. package/lib/events/cursor/index.js +37 -21
  245. package/lib/events/history/AbstractHistoryEvent.d.ts +4 -4
  246. package/lib/events/history/AbstractHistoryEvent.js +7 -7
  247. package/lib/events/history/HistoryGotoEvent.d.ts +7 -4
  248. package/lib/events/history/HistoryGotoEvent.js +9 -9
  249. package/lib/events/history/HistoryPushEvent.d.ts +7 -4
  250. package/lib/events/history/HistoryPushEvent.js +9 -9
  251. package/lib/events/history/HistoryRedoEvent.d.ts +7 -4
  252. package/lib/events/history/HistoryRedoEvent.js +9 -9
  253. package/lib/events/history/HistoryUndoEvent.d.ts +7 -4
  254. package/lib/events/history/HistoryUndoEvent.js +9 -9
  255. package/lib/events/history/index.d.ts +4 -4
  256. package/lib/events/history/index.js +36 -20
  257. package/lib/events/index.d.ts +6 -6
  258. package/lib/events/index.js +38 -22
  259. package/lib/events/keyboard/AbstractKeyboardEvent.d.ts +13 -13
  260. package/lib/events/keyboard/AbstractKeyboardEvent.js +38 -40
  261. package/lib/events/keyboard/KeyDownEvent.d.ts +7 -4
  262. package/lib/events/keyboard/KeyDownEvent.js +9 -9
  263. package/lib/events/keyboard/KeyUpEvent.d.ts +7 -4
  264. package/lib/events/keyboard/KeyUpEvent.js +9 -9
  265. package/lib/events/keyboard/index.d.ts +2 -2
  266. package/lib/events/keyboard/index.js +34 -18
  267. package/lib/events/mutation/AbstractMutationNodeEvent.d.ts +9 -9
  268. package/lib/events/mutation/AbstractMutationNodeEvent.js +7 -7
  269. package/lib/events/mutation/AppendNodeEvent.d.ts +7 -4
  270. package/lib/events/mutation/AppendNodeEvent.js +9 -9
  271. package/lib/events/mutation/CloneNodeEvent.d.ts +7 -4
  272. package/lib/events/mutation/CloneNodeEvent.js +9 -9
  273. package/lib/events/mutation/DragNodeEvent.d.ts +7 -4
  274. package/lib/events/mutation/DragNodeEvent.js +9 -9
  275. package/lib/events/mutation/DropNodeEvent.d.ts +7 -4
  276. package/lib/events/mutation/DropNodeEvent.js +9 -9
  277. package/lib/events/mutation/FromNodeEvent.d.ts +9 -9
  278. package/lib/events/mutation/FromNodeEvent.js +8 -8
  279. package/lib/events/mutation/HoverNodeEvent.d.ts +7 -4
  280. package/lib/events/mutation/HoverNodeEvent.js +9 -9
  281. package/lib/events/mutation/InsertAfterEvent.d.ts +7 -4
  282. package/lib/events/mutation/InsertAfterEvent.js +9 -9
  283. package/lib/events/mutation/InsertBeforeEvent.d.ts +7 -4
  284. package/lib/events/mutation/InsertBeforeEvent.js +9 -9
  285. package/lib/events/mutation/InsertChildrenEvent.d.ts +7 -4
  286. package/lib/events/mutation/InsertChildrenEvent.js +9 -9
  287. package/lib/events/mutation/PrependNodeEvent.d.ts +7 -4
  288. package/lib/events/mutation/PrependNodeEvent.js +9 -9
  289. package/lib/events/mutation/RemoveNodeEvent.d.ts +7 -4
  290. package/lib/events/mutation/RemoveNodeEvent.js +9 -9
  291. package/lib/events/mutation/SelectNodeEvent.d.ts +7 -4
  292. package/lib/events/mutation/SelectNodeEvent.js +9 -9
  293. package/lib/events/mutation/UnSelectNodeEvent.d.ts +7 -4
  294. package/lib/events/mutation/UnSelectNodeEvent.js +9 -9
  295. package/lib/events/mutation/UpdateChildrenEvent.d.ts +7 -4
  296. package/lib/events/mutation/UpdateChildrenEvent.js +9 -9
  297. package/lib/events/mutation/UpdateNodePropsEvent.d.ts +7 -4
  298. package/lib/events/mutation/UpdateNodePropsEvent.js +9 -9
  299. package/lib/events/mutation/UserSelectNodeEvent.d.ts +7 -4
  300. package/lib/events/mutation/UserSelectNodeEvent.js +9 -9
  301. package/lib/events/mutation/WrapNodeEvent.d.ts +7 -4
  302. package/lib/events/mutation/WrapNodeEvent.js +9 -9
  303. package/lib/events/mutation/index.d.ts +16 -16
  304. package/lib/events/mutation/index.js +48 -32
  305. package/lib/events/viewport/AbstractViewportEvent.d.ts +12 -12
  306. package/lib/events/viewport/AbstractViewportEvent.js +16 -16
  307. package/lib/events/viewport/ViewportResizeEvent.d.ts +7 -4
  308. package/lib/events/viewport/ViewportResizeEvent.js +9 -9
  309. package/lib/events/viewport/ViewportScrollEvent.d.ts +7 -4
  310. package/lib/events/viewport/ViewportScrollEvent.js +9 -9
  311. package/lib/events/viewport/index.d.ts +2 -2
  312. package/lib/events/viewport/index.js +34 -18
  313. package/lib/events/workbench/AbstractWorkspaceEvent.d.ts +5 -5
  314. package/lib/events/workbench/AbstractWorkspaceEvent.js +7 -7
  315. package/lib/events/workbench/AddWorkspaceEvent.d.ts +7 -4
  316. package/lib/events/workbench/AddWorkspaceEvent.js +9 -9
  317. package/lib/events/workbench/RemoveWorkspaceEvent.d.ts +7 -4
  318. package/lib/events/workbench/RemoveWorkspaceEvent.js +9 -9
  319. package/lib/events/workbench/SwitchWorkspaceEvent.d.ts +7 -4
  320. package/lib/events/workbench/SwitchWorkspaceEvent.js +9 -9
  321. package/lib/events/workbench/index.d.ts +3 -3
  322. package/lib/events/workbench/index.js +35 -19
  323. package/lib/exports.d.ts +5 -5
  324. package/lib/exports.js +37 -21
  325. package/lib/externals.d.ts +25 -12
  326. package/lib/externals.js +81 -63
  327. package/lib/index.d.ts +1 -1
  328. package/lib/index.js +65 -40
  329. package/lib/internals.d.ts +3 -3
  330. package/lib/internals.js +43 -36
  331. package/lib/models/Cursor.d.ts +48 -48
  332. package/lib/models/Cursor.js +140 -129
  333. package/lib/models/Engine.d.ts +24 -24
  334. package/lib/models/Engine.js +77 -77
  335. package/lib/models/History.d.ts +26 -26
  336. package/lib/models/History.js +90 -91
  337. package/lib/models/Hover.d.ts +10 -10
  338. package/lib/models/Hover.js +37 -36
  339. package/lib/models/Keyboard.d.ts +25 -25
  340. package/lib/models/Keyboard.js +103 -98
  341. package/lib/models/MoveHelper.d.ts +57 -54
  342. package/lib/models/MoveHelper.js +316 -294
  343. package/lib/models/Operation.d.ts +25 -25
  344. package/lib/models/Operation.js +63 -64
  345. package/lib/models/Screen.d.ts +25 -25
  346. package/lib/models/Screen.js +71 -71
  347. package/lib/models/Selection.d.ts +25 -25
  348. package/lib/models/Selection.js +151 -153
  349. package/lib/models/Shortcut.d.ts +16 -16
  350. package/lib/models/Shortcut.js +65 -61
  351. package/lib/models/SnapLine.d.ts +24 -24
  352. package/lib/models/SnapLine.js +99 -109
  353. package/lib/models/SpaceBlock.d.ts +41 -36
  354. package/lib/models/SpaceBlock.js +156 -119
  355. package/lib/models/TransformHelper.d.ts +88 -74
  356. package/lib/models/TransformHelper.js +561 -454
  357. package/lib/models/TreeNode.d.ts +117 -109
  358. package/lib/models/TreeNode.js +739 -736
  359. package/lib/models/Viewport.d.ts +83 -81
  360. package/lib/models/Viewport.js +411 -388
  361. package/lib/models/Workbench.d.ts +21 -21
  362. package/lib/models/Workbench.js +92 -92
  363. package/lib/models/Workspace.d.ts +33 -33
  364. package/lib/models/Workspace.js +86 -87
  365. package/lib/models/index.d.ts +13 -13
  366. package/lib/models/index.js +45 -29
  367. package/lib/presets.d.ts +20 -4
  368. package/lib/presets.js +41 -38
  369. package/lib/registry.d.ts +21 -15
  370. package/lib/registry.js +112 -111
  371. package/lib/shortcuts/CursorSwitch.d.ts +2 -2
  372. package/lib/shortcuts/CursorSwitch.js +12 -12
  373. package/lib/shortcuts/MultiSelection.d.ts +5 -5
  374. package/lib/shortcuts/MultiSelection.js +30 -26
  375. package/lib/shortcuts/NodeMutation.d.ts +4 -4
  376. package/lib/shortcuts/NodeMutation.js +36 -36
  377. package/lib/shortcuts/QuickSelection.d.ts +3 -3
  378. package/lib/shortcuts/QuickSelection.js +74 -81
  379. package/lib/shortcuts/UndoRedo.d.ts +3 -3
  380. package/lib/shortcuts/UndoRedo.js +28 -28
  381. package/lib/shortcuts/index.d.ts +5 -5
  382. package/lib/shortcuts/index.js +37 -21
  383. package/lib/types.d.ts +138 -105
  384. package/lib/types.js +2 -2
  385. package/package.json +18 -18
@@ -1,155 +1,180 @@
1
- import { ClosestPosition, CursorType, CursorDragType, TreeNode, } from '../models';
2
- import { DragStartEvent, DragMoveEvent, DragStopEvent, ViewportScrollEvent, } from '../events';
3
- import { Point } from '@thienvu18/designable-shared';
1
+ import { Point } from '@thienvu18/designable-shared'
2
+ import {
3
+ DragMoveEvent,
4
+ DragStartEvent,
5
+ DragStopEvent,
6
+ ViewportScrollEvent,
7
+ } from '../events'
8
+ import {
9
+ ClosestPosition,
10
+ CursorDragType,
11
+ CursorType,
12
+ TreeNode,
13
+ } from '../models'
4
14
  export const useDragDropEffect = (engine) => {
5
- engine.subscribeTo(DragStartEvent, (event) => {
6
- if (engine.cursor.type !== CursorType.Normal)
7
- return;
8
- const target = event.data.target;
9
- const el = target?.closest(`
15
+ engine.subscribeTo(DragStartEvent, (event) => {
16
+ if (engine.cursor.type !== CursorType.Normal) return
17
+ const target = event.data.target
18
+ const el = target?.closest(`
10
19
  *[${engine.props.nodeIdAttrName}],
11
20
  *[${engine.props.sourceIdAttrName}],
12
21
  *[${engine.props.outlineNodeIdAttrName}]
13
- `);
14
- const handler = target?.closest(`*[${engine.props.nodeDragHandlerAttrName}]`);
15
- const helper = handler?.closest(`*[${engine.props.nodeSelectionIdAttrName}]`);
16
- if (!el?.getAttribute && !handler)
17
- return;
18
- const sourceId = el?.getAttribute(engine.props.sourceIdAttrName);
19
- const outlineId = el?.getAttribute(engine.props.outlineNodeIdAttrName);
20
- const handlerId = helper?.getAttribute(engine.props.nodeSelectionIdAttrName);
21
- const nodeId = el?.getAttribute(engine.props.nodeIdAttrName);
22
- engine.workbench.eachWorkspace((currentWorkspace) => {
23
- const operation = currentWorkspace.operation;
24
- const moveHelper = operation.moveHelper;
25
- if (nodeId || outlineId || handlerId) {
26
- const node = engine.findNodeById(outlineId || nodeId || handlerId);
27
- if (node) {
28
- if (!node.allowDrag())
29
- return;
30
- if (node === node.root)
31
- return;
32
- const validSelected = engine
33
- .getAllSelectedNodes()
34
- .filter((node) => node.allowDrag());
35
- if (validSelected.some((selectNode) => selectNode === node)) {
36
- moveHelper.dragStart({ dragNodes: TreeNode.sort(validSelected) });
37
- }
38
- else {
39
- moveHelper.dragStart({ dragNodes: [node] });
40
- }
41
- }
42
- }
43
- else if (sourceId) {
44
- const sourceNode = engine.findNodeById(sourceId);
45
- if (sourceNode) {
46
- moveHelper.dragStart({ dragNodes: [sourceNode] });
47
- }
48
- }
49
- });
50
- engine.cursor.setStyle('move');
51
- });
52
- engine.subscribeTo(DragMoveEvent, (event) => {
53
- if (engine.cursor.type !== CursorType.Normal)
54
- return;
55
- if (engine.cursor.dragType !== CursorDragType.Move)
56
- return;
57
- const target = event.data.target;
58
- const el = target?.closest(`
22
+ `)
23
+ const handler = target?.closest(
24
+ `*[${engine.props.nodeDragHandlerAttrName}]`
25
+ )
26
+ const helper = handler?.closest(
27
+ `*[${engine.props.nodeSelectionIdAttrName}]`
28
+ )
29
+ if (!el?.getAttribute && !handler) return
30
+ const sourceId = el?.getAttribute(engine.props.sourceIdAttrName)
31
+ const outlineId = el?.getAttribute(engine.props.outlineNodeIdAttrName)
32
+ const handlerId = helper?.getAttribute(engine.props.nodeSelectionIdAttrName)
33
+ const nodeId = el?.getAttribute(engine.props.nodeIdAttrName)
34
+ engine.workbench.eachWorkspace((currentWorkspace) => {
35
+ const operation = currentWorkspace.operation
36
+ const moveHelper = operation.moveHelper
37
+ if (nodeId || outlineId || handlerId) {
38
+ const node = engine.findNodeById(outlineId || nodeId || handlerId)
39
+ if (node) {
40
+ if (!node.allowDrag()) return
41
+ if (node === node.root) return
42
+ const validSelected = engine
43
+ .getAllSelectedNodes()
44
+ .filter((node) => node.allowDrag())
45
+ if (validSelected.some((selectNode) => selectNode === node)) {
46
+ moveHelper.dragStart({ dragNodes: TreeNode.sort(validSelected) })
47
+ } else {
48
+ moveHelper.dragStart({ dragNodes: [node] })
49
+ }
50
+ }
51
+ } else if (sourceId) {
52
+ const sourceNode = engine.findNodeById(sourceId)
53
+ if (sourceNode) {
54
+ moveHelper.dragStart({ dragNodes: [sourceNode] })
55
+ }
56
+ }
57
+ })
58
+ engine.cursor.setStyle('move')
59
+ })
60
+ engine.subscribeTo(DragMoveEvent, (event) => {
61
+ if (engine.cursor.type !== CursorType.Normal) return
62
+ if (engine.cursor.dragType !== CursorDragType.Move) return
63
+ const target = event.data.target
64
+ const el = target?.closest(`
59
65
  *[${engine.props.nodeIdAttrName}],
60
66
  *[${engine.props.outlineNodeIdAttrName}]
61
- `);
62
- const point = new Point(event.data.topClientX, event.data.topClientY);
63
- const nodeId = el?.getAttribute(engine.props.nodeIdAttrName);
64
- const outlineId = el?.getAttribute(engine.props.outlineNodeIdAttrName);
65
- engine.workbench.eachWorkspace((currentWorkspace) => {
66
- const operation = currentWorkspace.operation;
67
- const moveHelper = operation.moveHelper;
68
- const dragNodes = moveHelper.dragNodes;
69
- const tree = operation.tree;
70
- if (!dragNodes.length)
71
- return;
72
- const touchNode = tree.findById(outlineId || nodeId);
73
- moveHelper.dragMove({
74
- point,
75
- touchNode,
76
- });
77
- });
78
- });
79
- engine.subscribeTo(ViewportScrollEvent, (event) => {
80
- if (engine.cursor.type !== CursorType.Normal)
81
- return;
82
- if (engine.cursor.dragType !== CursorDragType.Move)
83
- return;
84
- const point = new Point(engine.cursor.position.topClientX, engine.cursor.position.topClientY);
85
- const currentWorkspace = event?.context?.workspace ?? engine.workbench.activeWorkspace;
86
- if (!currentWorkspace)
87
- return;
88
- const operation = currentWorkspace.operation;
89
- const moveHelper = operation.moveHelper;
90
- if (!moveHelper.dragNodes.length)
91
- return;
92
- const tree = operation.tree;
93
- const viewport = currentWorkspace.viewport;
94
- const outline = currentWorkspace.outline;
95
- const viewportTarget = viewport.elementFromPoint(point);
96
- const outlineTarget = outline.elementFromPoint(point);
97
- const viewportNodeElement = viewportTarget?.closest(`
67
+ `)
68
+ const point = new Point(event.data.topClientX, event.data.topClientY)
69
+ const nodeId = el?.getAttribute(engine.props.nodeIdAttrName)
70
+ const outlineId = el?.getAttribute(engine.props.outlineNodeIdAttrName)
71
+ engine.workbench.eachWorkspace((currentWorkspace) => {
72
+ const operation = currentWorkspace.operation
73
+ const moveHelper = operation.moveHelper
74
+ const dragNodes = moveHelper.dragNodes
75
+ const tree = operation.tree
76
+ if (!dragNodes.length) return
77
+ const touchNode = tree.findById(outlineId || nodeId)
78
+ moveHelper.dragMove({
79
+ point,
80
+ touchNode,
81
+ })
82
+ })
83
+ })
84
+ engine.subscribeTo(ViewportScrollEvent, (event) => {
85
+ if (engine.cursor.type !== CursorType.Normal) return
86
+ if (engine.cursor.dragType !== CursorDragType.Move) return
87
+ const point = new Point(
88
+ engine.cursor.position.topClientX,
89
+ engine.cursor.position.topClientY
90
+ )
91
+ const currentWorkspace =
92
+ event?.context?.workspace ?? engine.workbench.activeWorkspace
93
+ if (!currentWorkspace) return
94
+ const operation = currentWorkspace.operation
95
+ const moveHelper = operation.moveHelper
96
+ if (!moveHelper.dragNodes.length) return
97
+ const tree = operation.tree
98
+ const viewport = currentWorkspace.viewport
99
+ const outline = currentWorkspace.outline
100
+ const viewportTarget = viewport.elementFromPoint(point)
101
+ const outlineTarget = outline.elementFromPoint(point)
102
+ const viewportNodeElement = viewportTarget?.closest(`
98
103
  *[${engine.props.nodeIdAttrName}],
99
104
  *[${engine.props.outlineNodeIdAttrName}]
100
- `);
101
- const outlineNodeElement = outlineTarget?.closest(`
105
+ `)
106
+ const outlineNodeElement = outlineTarget?.closest(`
102
107
  *[${engine.props.nodeIdAttrName}],
103
108
  *[${engine.props.outlineNodeIdAttrName}]
104
- `);
105
- const nodeId = viewportNodeElement?.getAttribute(engine.props.nodeIdAttrName);
106
- const outlineNodeId = outlineNodeElement?.getAttribute(engine.props.outlineNodeIdAttrName);
107
- const touchNode = tree.findById(outlineNodeId || nodeId);
108
- moveHelper.dragMove({ point, touchNode });
109
- });
110
- engine.subscribeTo(DragStopEvent, () => {
111
- if (engine.cursor.type !== CursorType.Normal)
112
- return;
113
- if (engine.cursor.dragType !== CursorDragType.Move)
114
- return;
115
- engine.workbench.eachWorkspace((currentWorkspace) => {
116
- const operation = currentWorkspace.operation;
117
- const moveHelper = operation.moveHelper;
118
- const dragNodes = moveHelper.dragNodes;
119
- const closestNode = moveHelper.closestNode;
120
- const closestDirection = moveHelper.closestDirection;
121
- const selection = operation.selection;
122
- if (!dragNodes.length)
123
- return;
124
- if (dragNodes.length && closestNode && closestDirection) {
125
- if (closestDirection === ClosestPosition.After ||
126
- closestDirection === ClosestPosition.Under) {
127
- if (closestNode.allowSibling(dragNodes)) {
128
- selection.batchSafeSelect(closestNode.insertAfter(...TreeNode.filterDroppable(dragNodes, closestNode.parent)));
129
- }
130
- }
131
- else if (closestDirection === ClosestPosition.Before ||
132
- closestDirection === ClosestPosition.Upper) {
133
- if (closestNode.allowSibling(dragNodes)) {
134
- selection.batchSafeSelect(closestNode.insertBefore(...TreeNode.filterDroppable(dragNodes, closestNode.parent)));
135
- }
136
- }
137
- else if (closestDirection === ClosestPosition.Inner ||
138
- closestDirection === ClosestPosition.InnerAfter) {
139
- if (closestNode.allowAppend(dragNodes)) {
140
- selection.batchSafeSelect(closestNode.append(...TreeNode.filterDroppable(dragNodes, closestNode)));
141
- moveHelper.dragDrop({ dropNode: closestNode });
142
- }
143
- }
144
- else if (closestDirection === ClosestPosition.InnerBefore) {
145
- if (closestNode.allowAppend(dragNodes)) {
146
- selection.batchSafeSelect(closestNode.prepend(...TreeNode.filterDroppable(dragNodes, closestNode)));
147
- moveHelper.dragDrop({ dropNode: closestNode });
148
- }
149
- }
150
- }
151
- moveHelper.dragEnd();
152
- });
153
- engine.cursor.setStyle('');
154
- });
155
- };
109
+ `)
110
+ const nodeId = viewportNodeElement?.getAttribute(
111
+ engine.props.nodeIdAttrName
112
+ )
113
+ const outlineNodeId = outlineNodeElement?.getAttribute(
114
+ engine.props.outlineNodeIdAttrName
115
+ )
116
+ const touchNode = tree.findById(outlineNodeId || nodeId)
117
+ moveHelper.dragMove({ point, touchNode })
118
+ })
119
+ engine.subscribeTo(DragStopEvent, () => {
120
+ if (engine.cursor.type !== CursorType.Normal) return
121
+ if (engine.cursor.dragType !== CursorDragType.Move) return
122
+ engine.workbench.eachWorkspace((currentWorkspace) => {
123
+ const operation = currentWorkspace.operation
124
+ const moveHelper = operation.moveHelper
125
+ const dragNodes = moveHelper.dragNodes
126
+ const closestNode = moveHelper.closestNode
127
+ const closestDirection = moveHelper.closestDirection
128
+ const selection = operation.selection
129
+ if (!dragNodes.length) return
130
+ if (dragNodes.length && closestNode && closestDirection) {
131
+ if (
132
+ closestDirection === ClosestPosition.After ||
133
+ closestDirection === ClosestPosition.Under
134
+ ) {
135
+ if (closestNode.allowSibling(dragNodes)) {
136
+ selection.batchSafeSelect(
137
+ closestNode.insertAfter(
138
+ ...TreeNode.filterDroppable(dragNodes, closestNode.parent)
139
+ )
140
+ )
141
+ }
142
+ } else if (
143
+ closestDirection === ClosestPosition.Before ||
144
+ closestDirection === ClosestPosition.Upper
145
+ ) {
146
+ if (closestNode.allowSibling(dragNodes)) {
147
+ selection.batchSafeSelect(
148
+ closestNode.insertBefore(
149
+ ...TreeNode.filterDroppable(dragNodes, closestNode.parent)
150
+ )
151
+ )
152
+ }
153
+ } else if (
154
+ closestDirection === ClosestPosition.Inner ||
155
+ closestDirection === ClosestPosition.InnerAfter
156
+ ) {
157
+ if (closestNode.allowAppend(dragNodes)) {
158
+ selection.batchSafeSelect(
159
+ closestNode.append(
160
+ ...TreeNode.filterDroppable(dragNodes, closestNode)
161
+ )
162
+ )
163
+ moveHelper.dragDrop({ dropNode: closestNode })
164
+ }
165
+ } else if (closestDirection === ClosestPosition.InnerBefore) {
166
+ if (closestNode.allowAppend(dragNodes)) {
167
+ selection.batchSafeSelect(
168
+ closestNode.prepend(
169
+ ...TreeNode.filterDroppable(dragNodes, closestNode)
170
+ )
171
+ )
172
+ moveHelper.dragDrop({ dropNode: closestNode })
173
+ }
174
+ }
175
+ }
176
+ moveHelper.dragEnd()
177
+ })
178
+ engine.cursor.setStyle('')
179
+ })
180
+ }
@@ -1,2 +1,2 @@
1
- import { Engine } from '../models';
2
- export declare const useFreeSelectionEffect: (engine: Engine) => void;
1
+ import { Engine } from '../models'
2
+ export declare const useFreeSelectionEffect: (engine: Engine) => void
@@ -1,39 +1,61 @@
1
- import { DragStopEvent } from '../events';
2
- import { CursorType, CursorDragType } from '../models';
3
- import { calcRectByStartEndPoint, isCrossRectInRect, isRectInRect, Point, } from '@thienvu18/designable-shared';
1
+ import {
2
+ Point,
3
+ calcRectByStartEndPoint,
4
+ isCrossRectInRect,
5
+ isRectInRect,
6
+ } from '@thienvu18/designable-shared'
7
+ import { DragStopEvent } from '../events'
8
+ import { CursorDragType, CursorType } from '../models'
4
9
  export const useFreeSelectionEffect = (engine) => {
5
- engine.subscribeTo(DragStopEvent, (event) => {
6
- if (engine.cursor.dragType !== CursorDragType.Move) {
7
- return;
10
+ engine.subscribeTo(DragStopEvent, (event) => {
11
+ if (engine.cursor.dragType !== CursorDragType.Move) {
12
+ return
13
+ }
14
+ engine.workbench.eachWorkspace((workspace) => {
15
+ const viewport = workspace.viewport
16
+ const dragEndPoint = new Point(
17
+ event.data.topClientX,
18
+ event.data.topClientY
19
+ )
20
+ const dragStartOffsetPoint = viewport.getOffsetPoint(
21
+ new Point(
22
+ engine.cursor.dragStartPosition.topClientX,
23
+ engine.cursor.dragStartPosition.topClientY
24
+ )
25
+ )
26
+ const dragEndOffsetPoint = viewport.getOffsetPoint(
27
+ new Point(
28
+ engine.cursor.position.topClientX,
29
+ engine.cursor.position.topClientY
30
+ )
31
+ )
32
+ if (!viewport.isPointInViewport(dragEndPoint, false)) return
33
+ const tree = workspace.operation.tree
34
+ const selectionRect = calcRectByStartEndPoint(
35
+ dragStartOffsetPoint,
36
+ dragEndOffsetPoint,
37
+ viewport.dragScrollXDelta,
38
+ viewport.dragScrollYDelta
39
+ )
40
+ const selected = []
41
+ tree.eachChildren((node) => {
42
+ const nodeRect = viewport.getValidNodeOffsetRect(node)
43
+ if (nodeRect && isCrossRectInRect(selectionRect, nodeRect)) {
44
+ selected.push([node, nodeRect])
8
45
  }
9
- engine.workbench.eachWorkspace((workspace) => {
10
- const viewport = workspace.viewport;
11
- const dragEndPoint = new Point(event.data.topClientX, event.data.topClientY);
12
- const dragStartOffsetPoint = viewport.getOffsetPoint(new Point(engine.cursor.dragStartPosition.topClientX, engine.cursor.dragStartPosition.topClientY));
13
- const dragEndOffsetPoint = viewport.getOffsetPoint(new Point(engine.cursor.position.topClientX, engine.cursor.position.topClientY));
14
- if (!viewport.isPointInViewport(dragEndPoint, false))
15
- return;
16
- const tree = workspace.operation.tree;
17
- const selectionRect = calcRectByStartEndPoint(dragStartOffsetPoint, dragEndOffsetPoint, viewport.dragScrollXDelta, viewport.dragScrollYDelta);
18
- const selected = [];
19
- tree.eachChildren((node) => {
20
- const nodeRect = viewport.getValidNodeOffsetRect(node);
21
- if (nodeRect && isCrossRectInRect(selectionRect, nodeRect)) {
22
- selected.push([node, nodeRect]);
23
- }
24
- });
25
- const selectedNodes = selected.reduce((buf, [node, nodeRect]) => {
26
- if (isRectInRect(nodeRect, selectionRect)) {
27
- if (selected.some(([selectNode]) => selectNode.isMyParents(node))) {
28
- return buf;
29
- }
30
- }
31
- return buf.concat(node);
32
- }, []);
33
- workspace.operation.selection.batchSafeSelect(selectedNodes);
34
- });
35
- if (engine.cursor.type === CursorType.Selection) {
36
- engine.cursor.setType(CursorType.Normal);
46
+ })
47
+ const selectedNodes = selected.reduce((buf, [node, nodeRect]) => {
48
+ if (isRectInRect(nodeRect, selectionRect)) {
49
+ if (selected.some(([selectNode]) => selectNode.isMyParents(node))) {
50
+ return buf
51
+ }
37
52
  }
38
- });
39
- };
53
+ return buf.concat(node)
54
+ }, [])
55
+ workspace.operation.selection.batchSafeSelect(selectedNodes)
56
+ })
57
+ if (engine.cursor.type === CursorType.Selection) {
58
+ engine.cursor.setType(CursorType.Normal)
59
+ }
60
+ })
61
+ }
@@ -1,2 +1,2 @@
1
- import { Engine } from '../models';
2
- export declare const useKeyboardEffect: (engine: Engine) => void;
1
+ import { Engine } from '../models'
2
+ export declare const useKeyboardEffect: (engine: Engine) => void
@@ -1,17 +1,17 @@
1
- import { KeyDownEvent, KeyUpEvent } from '../events';
1
+ import { KeyDownEvent, KeyUpEvent } from '../events'
2
2
  export const useKeyboardEffect = (engine) => {
3
- engine.subscribeTo(KeyDownEvent, (event) => {
4
- const keyboard = engine.keyboard;
5
- if (!keyboard)
6
- return;
7
- const workspace = engine.workbench.activeWorkspace || engine.workbench.currentWorkspace;
8
- keyboard.handleKeyboard(event, workspace.getEventContext());
9
- });
10
- engine.subscribeTo(KeyUpEvent, (event) => {
11
- const keyboard = engine.keyboard;
12
- if (!keyboard)
13
- return;
14
- const workspace = engine.workbench.activeWorkspace || engine.workbench.currentWorkspace;
15
- keyboard.handleKeyboard(event, workspace.getEventContext());
16
- });
17
- };
3
+ engine.subscribeTo(KeyDownEvent, (event) => {
4
+ const keyboard = engine.keyboard
5
+ if (!keyboard) return
6
+ const workspace =
7
+ engine.workbench.activeWorkspace || engine.workbench.currentWorkspace
8
+ keyboard.handleKeyboard(event, workspace.getEventContext())
9
+ })
10
+ engine.subscribeTo(KeyUpEvent, (event) => {
11
+ const keyboard = engine.keyboard
12
+ if (!keyboard) return
13
+ const workspace =
14
+ engine.workbench.activeWorkspace || engine.workbench.currentWorkspace
15
+ keyboard.handleKeyboard(event, workspace.getEventContext())
16
+ })
17
+ }
@@ -1,2 +1,2 @@
1
- import { Engine } from '../models';
2
- export declare const useResizeEffect: (engine: Engine) => void;
1
+ import { Engine } from '../models'
2
+ export declare const useResizeEffect: (engine: Engine) => void
@@ -1,77 +1,88 @@
1
- import { CursorDragType } from '../models';
2
- import { DragStartEvent, DragMoveEvent, DragStopEvent } from '../events';
1
+ import { DragMoveEvent, DragStartEvent, DragStopEvent } from '../events'
2
+ import { CursorDragType } from '../models'
3
3
  export const useResizeEffect = (engine) => {
4
- const findStartNodeHandler = (target) => {
5
- const handler = target?.closest(`*[${engine.props.nodeResizeHandlerAttrName}]`);
6
- if (handler) {
7
- const direction = handler.getAttribute(engine.props.nodeResizeHandlerAttrName);
8
- if (direction) {
9
- const element = handler.closest(`*[${engine.props.nodeSelectionIdAttrName}]`);
10
- if (element) {
11
- const nodeId = element.getAttribute(engine.props.nodeSelectionIdAttrName);
12
- if (nodeId) {
13
- const node = engine.findNodeById(nodeId);
14
- if (node) {
15
- return { direction, node, element };
16
- }
17
- }
18
- }
4
+ const findStartNodeHandler = (target) => {
5
+ const handler = target?.closest(
6
+ `*[${engine.props.nodeResizeHandlerAttrName}]`
7
+ )
8
+ if (handler) {
9
+ const direction = handler.getAttribute(
10
+ engine.props.nodeResizeHandlerAttrName
11
+ )
12
+ if (direction) {
13
+ const element = handler.closest(
14
+ `*[${engine.props.nodeSelectionIdAttrName}]`
15
+ )
16
+ if (element) {
17
+ const nodeId = element.getAttribute(
18
+ engine.props.nodeSelectionIdAttrName
19
+ )
20
+ if (nodeId) {
21
+ const node = engine.findNodeById(nodeId)
22
+ if (node) {
23
+ return { direction, node, element }
19
24
  }
25
+ }
20
26
  }
21
- return;
22
- };
23
- engine.subscribeTo(DragStartEvent, (event) => {
24
- const target = event.data.target;
25
- const currentWorkspace = event.context?.workspace ?? engine.workbench.activeWorkspace;
26
- if (!currentWorkspace)
27
- return;
28
- const handler = findStartNodeHandler(target);
29
- const helper = currentWorkspace.operation.transformHelper;
30
- if (handler) {
31
- const selectionElement = handler.element.closest(`*[${engine.props.nodeSelectionIdAttrName}]`);
32
- if (selectionElement) {
33
- const nodeId = selectionElement.getAttribute(engine.props.nodeSelectionIdAttrName);
34
- if (nodeId) {
35
- const node = engine.findNodeById(nodeId);
36
- if (node) {
37
- helper.dragStart({
38
- dragNodes: [node],
39
- type: 'resize',
40
- direction: handler.direction,
41
- });
42
- }
43
- }
44
- }
45
- }
46
- });
47
- engine.subscribeTo(DragMoveEvent, (event) => {
48
- if (engine.cursor.dragType !== CursorDragType.Resize)
49
- return;
50
- const currentWorkspace = event.context?.workspace ?? engine.workbench.activeWorkspace;
51
- const helper = currentWorkspace?.operation.transformHelper;
52
- const dragNodes = helper.dragNodes;
53
- if (!dragNodes.length)
54
- return;
55
- helper.dragMove();
56
- dragNodes.forEach((node) => {
57
- const element = node.getElement();
58
- helper.resize(node, (rect) => {
59
- element.style.width = rect.width + 'px';
60
- element.style.height = rect.height + 'px';
61
- element.style.position = 'absolute';
62
- element.style.left = '0px';
63
- element.style.top = '0px';
64
- element.style.transform = `translate3d(${rect.x}px,${rect.y}px,0)`;
65
- });
66
- });
67
- });
68
- engine.subscribeTo(DragStopEvent, (event) => {
69
- if (engine.cursor.dragType !== CursorDragType.Resize)
70
- return;
71
- const currentWorkspace = event.context?.workspace ?? engine.workbench.activeWorkspace;
72
- const helper = currentWorkspace?.operation.transformHelper;
73
- if (helper) {
74
- helper.dragEnd();
27
+ }
28
+ }
29
+ return
30
+ }
31
+ engine.subscribeTo(DragStartEvent, (event) => {
32
+ const target = event.data.target
33
+ const currentWorkspace =
34
+ event.context?.workspace ?? engine.workbench.activeWorkspace
35
+ if (!currentWorkspace) return
36
+ const handler = findStartNodeHandler(target)
37
+ const helper = currentWorkspace.operation.transformHelper
38
+ if (handler) {
39
+ const selectionElement = handler.element.closest(
40
+ `*[${engine.props.nodeSelectionIdAttrName}]`
41
+ )
42
+ if (selectionElement) {
43
+ const nodeId = selectionElement.getAttribute(
44
+ engine.props.nodeSelectionIdAttrName
45
+ )
46
+ if (nodeId) {
47
+ const node = engine.findNodeById(nodeId)
48
+ if (node) {
49
+ helper.dragStart({
50
+ dragNodes: [node],
51
+ type: 'resize',
52
+ direction: handler.direction,
53
+ })
54
+ }
75
55
  }
76
- });
77
- };
56
+ }
57
+ }
58
+ })
59
+ engine.subscribeTo(DragMoveEvent, (event) => {
60
+ if (engine.cursor.dragType !== CursorDragType.Resize) return
61
+ const currentWorkspace =
62
+ event.context?.workspace ?? engine.workbench.activeWorkspace
63
+ const helper = currentWorkspace?.operation.transformHelper
64
+ const dragNodes = helper.dragNodes
65
+ if (!dragNodes.length) return
66
+ helper.dragMove()
67
+ dragNodes.forEach((node) => {
68
+ const element = node.getElement()
69
+ helper.resize(node, (rect) => {
70
+ element.style.width = rect.width + 'px'
71
+ element.style.height = rect.height + 'px'
72
+ element.style.position = 'absolute'
73
+ element.style.left = '0px'
74
+ element.style.top = '0px'
75
+ element.style.transform = `translate3d(${rect.x}px,${rect.y}px,0)`
76
+ })
77
+ })
78
+ })
79
+ engine.subscribeTo(DragStopEvent, (event) => {
80
+ if (engine.cursor.dragType !== CursorDragType.Resize) return
81
+ const currentWorkspace =
82
+ event.context?.workspace ?? engine.workbench.activeWorkspace
83
+ const helper = currentWorkspace?.operation.transformHelper
84
+ if (helper) {
85
+ helper.dragEnd()
86
+ }
87
+ })
88
+ }