@thienvu18/designable-core 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +1 -0
  3. package/esm/drivers/DragDropDriver.d.ts +14 -0
  4. package/esm/drivers/DragDropDriver.js +111 -0
  5. package/esm/drivers/KeyboardDriver.d.ts +7 -0
  6. package/esm/drivers/KeyboardDriver.js +46 -0
  7. package/esm/drivers/MouseClickDriver.d.ts +8 -0
  8. package/esm/drivers/MouseClickDriver.js +51 -0
  9. package/esm/drivers/MouseMoveDriver.d.ts +8 -0
  10. package/esm/drivers/MouseMoveDriver.js +31 -0
  11. package/esm/drivers/ViewportResizeDriver.d.ts +11 -0
  12. package/esm/drivers/ViewportResizeDriver.js +64 -0
  13. package/esm/drivers/ViewportScrollDriver.d.ts +8 -0
  14. package/esm/drivers/ViewportScrollDriver.js +30 -0
  15. package/esm/drivers/index.d.ts +6 -0
  16. package/esm/drivers/index.js +6 -0
  17. package/esm/effects/index.d.ts +11 -0
  18. package/esm/effects/index.js +11 -0
  19. package/esm/effects/useAutoScrollEffect.d.ts +2 -0
  20. package/esm/effects/useAutoScrollEffect.js +65 -0
  21. package/esm/effects/useContentEditableEffect.d.ts +2 -0
  22. package/esm/effects/useContentEditableEffect.js +163 -0
  23. package/esm/effects/useCursorEffect.d.ts +2 -0
  24. package/esm/effects/useCursorEffect.js +57 -0
  25. package/esm/effects/useDragDropEffect.d.ts +2 -0
  26. package/esm/effects/useDragDropEffect.js +155 -0
  27. package/esm/effects/useFreeSelectionEffect.d.ts +2 -0
  28. package/esm/effects/useFreeSelectionEffect.js +39 -0
  29. package/esm/effects/useKeyboardEffect.d.ts +2 -0
  30. package/esm/effects/useKeyboardEffect.js +17 -0
  31. package/esm/effects/useResizeEffect.d.ts +2 -0
  32. package/esm/effects/useResizeEffect.js +77 -0
  33. package/esm/effects/useSelectionEffect.d.ts +2 -0
  34. package/esm/effects/useSelectionEffect.js +70 -0
  35. package/esm/effects/useTranslateEffect.d.ts +2 -0
  36. package/esm/effects/useTranslateEffect.js +55 -0
  37. package/esm/effects/useViewportEffect.d.ts +2 -0
  38. package/esm/effects/useViewportEffect.js +29 -0
  39. package/esm/effects/useWorkspaceEffect.d.ts +2 -0
  40. package/esm/effects/useWorkspaceEffect.js +28 -0
  41. package/esm/events/cursor/AbstractCursorEvent.d.ts +21 -0
  42. package/esm/events/cursor/AbstractCursorEvent.js +37 -0
  43. package/esm/events/cursor/DragMoveEvent.d.ts +5 -0
  44. package/esm/events/cursor/DragMoveEvent.js +7 -0
  45. package/esm/events/cursor/DragStartEvent.d.ts +5 -0
  46. package/esm/events/cursor/DragStartEvent.js +7 -0
  47. package/esm/events/cursor/DragStopEvent.d.ts +5 -0
  48. package/esm/events/cursor/DragStopEvent.js +7 -0
  49. package/esm/events/cursor/MouseClickEvent.d.ts +8 -0
  50. package/esm/events/cursor/MouseClickEvent.js +13 -0
  51. package/esm/events/cursor/MouseMoveEvent.d.ts +5 -0
  52. package/esm/events/cursor/MouseMoveEvent.js +7 -0
  53. package/esm/events/cursor/index.d.ts +5 -0
  54. package/esm/events/cursor/index.js +5 -0
  55. package/esm/events/history/AbstractHistoryEvent.d.ts +6 -0
  56. package/esm/events/history/AbstractHistoryEvent.js +5 -0
  57. package/esm/events/history/HistoryGotoEvent.d.ts +5 -0
  58. package/esm/events/history/HistoryGotoEvent.js +7 -0
  59. package/esm/events/history/HistoryPushEvent.d.ts +5 -0
  60. package/esm/events/history/HistoryPushEvent.js +7 -0
  61. package/esm/events/history/HistoryRedoEvent.d.ts +5 -0
  62. package/esm/events/history/HistoryRedoEvent.js +7 -0
  63. package/esm/events/history/HistoryUndoEvent.d.ts +5 -0
  64. package/esm/events/history/HistoryUndoEvent.js +7 -0
  65. package/esm/events/history/index.d.ts +4 -0
  66. package/esm/events/history/index.js +4 -0
  67. package/esm/events/index.d.ts +6 -0
  68. package/esm/events/index.js +6 -0
  69. package/esm/events/keyboard/AbstractKeyboardEvent.d.ts +15 -0
  70. package/esm/events/keyboard/AbstractKeyboardEvent.js +38 -0
  71. package/esm/events/keyboard/KeyDownEvent.d.ts +5 -0
  72. package/esm/events/keyboard/KeyDownEvent.js +7 -0
  73. package/esm/events/keyboard/KeyUpEvent.d.ts +5 -0
  74. package/esm/events/keyboard/KeyUpEvent.js +7 -0
  75. package/esm/events/keyboard/index.d.ts +2 -0
  76. package/esm/events/keyboard/index.js +2 -0
  77. package/esm/events/mutation/AbstractMutationNodeEvent.d.ts +13 -0
  78. package/esm/events/mutation/AbstractMutationNodeEvent.js +5 -0
  79. package/esm/events/mutation/AppendNodeEvent.d.ts +5 -0
  80. package/esm/events/mutation/AppendNodeEvent.js +7 -0
  81. package/esm/events/mutation/CloneNodeEvent.d.ts +5 -0
  82. package/esm/events/mutation/CloneNodeEvent.js +7 -0
  83. package/esm/events/mutation/DragNodeEvent.d.ts +5 -0
  84. package/esm/events/mutation/DragNodeEvent.js +7 -0
  85. package/esm/events/mutation/DropNodeEvent.d.ts +5 -0
  86. package/esm/events/mutation/DropNodeEvent.js +7 -0
  87. package/esm/events/mutation/FromNodeEvent.d.ts +13 -0
  88. package/esm/events/mutation/FromNodeEvent.js +6 -0
  89. package/esm/events/mutation/HoverNodeEvent.d.ts +5 -0
  90. package/esm/events/mutation/HoverNodeEvent.js +7 -0
  91. package/esm/events/mutation/InsertAfterEvent.d.ts +5 -0
  92. package/esm/events/mutation/InsertAfterEvent.js +7 -0
  93. package/esm/events/mutation/InsertBeforeEvent.d.ts +5 -0
  94. package/esm/events/mutation/InsertBeforeEvent.js +7 -0
  95. package/esm/events/mutation/InsertChildrenEvent.d.ts +5 -0
  96. package/esm/events/mutation/InsertChildrenEvent.js +7 -0
  97. package/esm/events/mutation/PrependNodeEvent.d.ts +5 -0
  98. package/esm/events/mutation/PrependNodeEvent.js +7 -0
  99. package/esm/events/mutation/RemoveNodeEvent.d.ts +5 -0
  100. package/esm/events/mutation/RemoveNodeEvent.js +7 -0
  101. package/esm/events/mutation/SelectNodeEvent.d.ts +5 -0
  102. package/esm/events/mutation/SelectNodeEvent.js +7 -0
  103. package/esm/events/mutation/UnSelectNodeEvent.d.ts +5 -0
  104. package/esm/events/mutation/UnSelectNodeEvent.js +7 -0
  105. package/esm/events/mutation/UpdateChildrenEvent.d.ts +5 -0
  106. package/esm/events/mutation/UpdateChildrenEvent.js +7 -0
  107. package/esm/events/mutation/UpdateNodePropsEvent.d.ts +5 -0
  108. package/esm/events/mutation/UpdateNodePropsEvent.js +7 -0
  109. package/esm/events/mutation/UserSelectNodeEvent.d.ts +5 -0
  110. package/esm/events/mutation/UserSelectNodeEvent.js +7 -0
  111. package/esm/events/mutation/WrapNodeEvent.d.ts +5 -0
  112. package/esm/events/mutation/WrapNodeEvent.js +7 -0
  113. package/esm/events/mutation/index.d.ts +16 -0
  114. package/esm/events/mutation/index.js +16 -0
  115. package/esm/events/viewport/AbstractViewportEvent.d.ts +16 -0
  116. package/esm/events/viewport/AbstractViewportEvent.js +15 -0
  117. package/esm/events/viewport/ViewportResizeEvent.d.ts +5 -0
  118. package/esm/events/viewport/ViewportResizeEvent.js +7 -0
  119. package/esm/events/viewport/ViewportScrollEvent.d.ts +5 -0
  120. package/esm/events/viewport/ViewportScrollEvent.js +7 -0
  121. package/esm/events/viewport/index.d.ts +2 -0
  122. package/esm/events/viewport/index.js +2 -0
  123. package/esm/events/workbench/AbstractWorkspaceEvent.d.ts +7 -0
  124. package/esm/events/workbench/AbstractWorkspaceEvent.js +5 -0
  125. package/esm/events/workbench/AddWorkspaceEvent.d.ts +5 -0
  126. package/esm/events/workbench/AddWorkspaceEvent.js +7 -0
  127. package/esm/events/workbench/RemoveWorkspaceEvent.d.ts +5 -0
  128. package/esm/events/workbench/RemoveWorkspaceEvent.js +7 -0
  129. package/esm/events/workbench/SwitchWorkspaceEvent.d.ts +5 -0
  130. package/esm/events/workbench/SwitchWorkspaceEvent.js +7 -0
  131. package/esm/events/workbench/index.d.ts +3 -0
  132. package/esm/events/workbench/index.js +3 -0
  133. package/esm/exports.d.ts +5 -0
  134. package/esm/exports.js +5 -0
  135. package/esm/externals.d.ts +12 -0
  136. package/esm/externals.js +58 -0
  137. package/esm/index.d.ts +1 -0
  138. package/esm/index.js +15 -0
  139. package/esm/internals.d.ts +3 -0
  140. package/esm/internals.js +33 -0
  141. package/esm/models/Cursor.d.ts +60 -0
  142. package/esm/models/Cursor.js +133 -0
  143. package/esm/models/Engine.d.ts +29 -0
  144. package/esm/models/Engine.js +83 -0
  145. package/esm/models/History.d.ts +34 -0
  146. package/esm/models/History.js +96 -0
  147. package/esm/models/Hover.d.ts +14 -0
  148. package/esm/models/Hover.js +36 -0
  149. package/esm/models/Keyboard.d.ts +29 -0
  150. package/esm/models/Keyboard.js +102 -0
  151. package/esm/models/MoveHelper.d.ts +66 -0
  152. package/esm/models/MoveHelper.js +313 -0
  153. package/esm/models/Operation.d.ts +29 -0
  154. package/esm/models/Operation.js +66 -0
  155. package/esm/models/Screen.d.ts +31 -0
  156. package/esm/models/Screen.js +71 -0
  157. package/esm/models/Selection.d.ts +29 -0
  158. package/esm/models/Selection.js +155 -0
  159. package/esm/models/Shortcut.d.ts +20 -0
  160. package/esm/models/Shortcut.js +64 -0
  161. package/esm/models/SnapLine.d.ts +27 -0
  162. package/esm/models/SnapLine.js +110 -0
  163. package/esm/models/SpaceBlock.d.ts +40 -0
  164. package/esm/models/SpaceBlock.js +126 -0
  165. package/esm/models/TransformHelper.d.ts +80 -0
  166. package/esm/models/TransformHelper.js +455 -0
  167. package/esm/models/TreeNode.d.ts +115 -0
  168. package/esm/models/TreeNode.js +747 -0
  169. package/esm/models/Viewport.d.ts +90 -0
  170. package/esm/models/Viewport.js +393 -0
  171. package/esm/models/Workbench.d.ts +23 -0
  172. package/esm/models/Workbench.js +95 -0
  173. package/esm/models/Workspace.d.ts +41 -0
  174. package/esm/models/Workspace.js +92 -0
  175. package/esm/models/index.d.ts +13 -0
  176. package/esm/models/index.js +13 -0
  177. package/esm/presets.d.ts +4 -0
  178. package/esm/presets.js +38 -0
  179. package/esm/registry.d.ts +16 -0
  180. package/esm/registry.js +113 -0
  181. package/esm/shortcuts/CursorSwitch.d.ts +2 -0
  182. package/esm/shortcuts/CursorSwitch.js +10 -0
  183. package/esm/shortcuts/MultiSelection.d.ts +5 -0
  184. package/esm/shortcuts/MultiSelection.js +27 -0
  185. package/esm/shortcuts/NodeMutation.d.ts +7 -0
  186. package/esm/shortcuts/NodeMutation.js +40 -0
  187. package/esm/shortcuts/QuickSelection.d.ts +3 -0
  188. package/esm/shortcuts/QuickSelection.js +84 -0
  189. package/esm/shortcuts/UndoRedo.d.ts +3 -0
  190. package/esm/shortcuts/UndoRedo.js +27 -0
  191. package/esm/shortcuts/index.d.ts +5 -0
  192. package/esm/shortcuts/index.js +5 -0
  193. package/esm/types.d.ts +131 -0
  194. package/esm/types.js +1 -0
  195. package/lib/drivers/DragDropDriver.d.ts +14 -0
  196. package/lib/drivers/DragDropDriver.js +115 -0
  197. package/lib/drivers/KeyboardDriver.d.ts +7 -0
  198. package/lib/drivers/KeyboardDriver.js +50 -0
  199. package/lib/drivers/MouseClickDriver.d.ts +8 -0
  200. package/lib/drivers/MouseClickDriver.js +55 -0
  201. package/lib/drivers/MouseMoveDriver.d.ts +8 -0
  202. package/lib/drivers/MouseMoveDriver.js +35 -0
  203. package/lib/drivers/ViewportResizeDriver.d.ts +11 -0
  204. package/lib/drivers/ViewportResizeDriver.js +68 -0
  205. package/lib/drivers/ViewportScrollDriver.d.ts +8 -0
  206. package/lib/drivers/ViewportScrollDriver.js +34 -0
  207. package/lib/drivers/index.d.ts +6 -0
  208. package/lib/drivers/index.js +22 -0
  209. package/lib/effects/index.d.ts +11 -0
  210. package/lib/effects/index.js +27 -0
  211. package/lib/effects/useAutoScrollEffect.d.ts +2 -0
  212. package/lib/effects/useAutoScrollEffect.js +69 -0
  213. package/lib/effects/useContentEditableEffect.d.ts +2 -0
  214. package/lib/effects/useContentEditableEffect.js +167 -0
  215. package/lib/effects/useCursorEffect.d.ts +2 -0
  216. package/lib/effects/useCursorEffect.js +61 -0
  217. package/lib/effects/useDragDropEffect.d.ts +2 -0
  218. package/lib/effects/useDragDropEffect.js +159 -0
  219. package/lib/effects/useFreeSelectionEffect.d.ts +2 -0
  220. package/lib/effects/useFreeSelectionEffect.js +43 -0
  221. package/lib/effects/useKeyboardEffect.d.ts +2 -0
  222. package/lib/effects/useKeyboardEffect.js +21 -0
  223. package/lib/effects/useResizeEffect.d.ts +2 -0
  224. package/lib/effects/useResizeEffect.js +81 -0
  225. package/lib/effects/useSelectionEffect.d.ts +2 -0
  226. package/lib/effects/useSelectionEffect.js +74 -0
  227. package/lib/effects/useTranslateEffect.d.ts +2 -0
  228. package/lib/effects/useTranslateEffect.js +59 -0
  229. package/lib/effects/useViewportEffect.d.ts +2 -0
  230. package/lib/effects/useViewportEffect.js +33 -0
  231. package/lib/effects/useWorkspaceEffect.d.ts +2 -0
  232. package/lib/effects/useWorkspaceEffect.js +32 -0
  233. package/lib/events/cursor/AbstractCursorEvent.d.ts +21 -0
  234. package/lib/events/cursor/AbstractCursorEvent.js +41 -0
  235. package/lib/events/cursor/DragMoveEvent.d.ts +5 -0
  236. package/lib/events/cursor/DragMoveEvent.js +11 -0
  237. package/lib/events/cursor/DragStartEvent.d.ts +5 -0
  238. package/lib/events/cursor/DragStartEvent.js +11 -0
  239. package/lib/events/cursor/DragStopEvent.d.ts +5 -0
  240. package/lib/events/cursor/DragStopEvent.js +11 -0
  241. package/lib/events/cursor/MouseClickEvent.d.ts +8 -0
  242. package/lib/events/cursor/MouseClickEvent.js +18 -0
  243. package/lib/events/cursor/MouseMoveEvent.d.ts +5 -0
  244. package/lib/events/cursor/MouseMoveEvent.js +11 -0
  245. package/lib/events/cursor/index.d.ts +5 -0
  246. package/lib/events/cursor/index.js +21 -0
  247. package/lib/events/history/AbstractHistoryEvent.d.ts +6 -0
  248. package/lib/events/history/AbstractHistoryEvent.js +9 -0
  249. package/lib/events/history/HistoryGotoEvent.d.ts +5 -0
  250. package/lib/events/history/HistoryGotoEvent.js +11 -0
  251. package/lib/events/history/HistoryPushEvent.d.ts +5 -0
  252. package/lib/events/history/HistoryPushEvent.js +11 -0
  253. package/lib/events/history/HistoryRedoEvent.d.ts +5 -0
  254. package/lib/events/history/HistoryRedoEvent.js +11 -0
  255. package/lib/events/history/HistoryUndoEvent.d.ts +5 -0
  256. package/lib/events/history/HistoryUndoEvent.js +11 -0
  257. package/lib/events/history/index.d.ts +4 -0
  258. package/lib/events/history/index.js +20 -0
  259. package/lib/events/index.d.ts +6 -0
  260. package/lib/events/index.js +22 -0
  261. package/lib/events/keyboard/AbstractKeyboardEvent.d.ts +15 -0
  262. package/lib/events/keyboard/AbstractKeyboardEvent.js +42 -0
  263. package/lib/events/keyboard/KeyDownEvent.d.ts +5 -0
  264. package/lib/events/keyboard/KeyDownEvent.js +11 -0
  265. package/lib/events/keyboard/KeyUpEvent.d.ts +5 -0
  266. package/lib/events/keyboard/KeyUpEvent.js +11 -0
  267. package/lib/events/keyboard/index.d.ts +2 -0
  268. package/lib/events/keyboard/index.js +18 -0
  269. package/lib/events/mutation/AbstractMutationNodeEvent.d.ts +13 -0
  270. package/lib/events/mutation/AbstractMutationNodeEvent.js +9 -0
  271. package/lib/events/mutation/AppendNodeEvent.d.ts +5 -0
  272. package/lib/events/mutation/AppendNodeEvent.js +11 -0
  273. package/lib/events/mutation/CloneNodeEvent.d.ts +5 -0
  274. package/lib/events/mutation/CloneNodeEvent.js +11 -0
  275. package/lib/events/mutation/DragNodeEvent.d.ts +5 -0
  276. package/lib/events/mutation/DragNodeEvent.js +11 -0
  277. package/lib/events/mutation/DropNodeEvent.d.ts +5 -0
  278. package/lib/events/mutation/DropNodeEvent.js +11 -0
  279. package/lib/events/mutation/FromNodeEvent.d.ts +13 -0
  280. package/lib/events/mutation/FromNodeEvent.js +10 -0
  281. package/lib/events/mutation/HoverNodeEvent.d.ts +5 -0
  282. package/lib/events/mutation/HoverNodeEvent.js +11 -0
  283. package/lib/events/mutation/InsertAfterEvent.d.ts +5 -0
  284. package/lib/events/mutation/InsertAfterEvent.js +11 -0
  285. package/lib/events/mutation/InsertBeforeEvent.d.ts +5 -0
  286. package/lib/events/mutation/InsertBeforeEvent.js +11 -0
  287. package/lib/events/mutation/InsertChildrenEvent.d.ts +5 -0
  288. package/lib/events/mutation/InsertChildrenEvent.js +11 -0
  289. package/lib/events/mutation/PrependNodeEvent.d.ts +5 -0
  290. package/lib/events/mutation/PrependNodeEvent.js +11 -0
  291. package/lib/events/mutation/RemoveNodeEvent.d.ts +5 -0
  292. package/lib/events/mutation/RemoveNodeEvent.js +11 -0
  293. package/lib/events/mutation/SelectNodeEvent.d.ts +5 -0
  294. package/lib/events/mutation/SelectNodeEvent.js +11 -0
  295. package/lib/events/mutation/UnSelectNodeEvent.d.ts +5 -0
  296. package/lib/events/mutation/UnSelectNodeEvent.js +11 -0
  297. package/lib/events/mutation/UpdateChildrenEvent.d.ts +5 -0
  298. package/lib/events/mutation/UpdateChildrenEvent.js +11 -0
  299. package/lib/events/mutation/UpdateNodePropsEvent.d.ts +5 -0
  300. package/lib/events/mutation/UpdateNodePropsEvent.js +11 -0
  301. package/lib/events/mutation/UserSelectNodeEvent.d.ts +5 -0
  302. package/lib/events/mutation/UserSelectNodeEvent.js +11 -0
  303. package/lib/events/mutation/WrapNodeEvent.d.ts +5 -0
  304. package/lib/events/mutation/WrapNodeEvent.js +11 -0
  305. package/lib/events/mutation/index.d.ts +16 -0
  306. package/lib/events/mutation/index.js +32 -0
  307. package/lib/events/viewport/AbstractViewportEvent.d.ts +16 -0
  308. package/lib/events/viewport/AbstractViewportEvent.js +19 -0
  309. package/lib/events/viewport/ViewportResizeEvent.d.ts +5 -0
  310. package/lib/events/viewport/ViewportResizeEvent.js +11 -0
  311. package/lib/events/viewport/ViewportScrollEvent.d.ts +5 -0
  312. package/lib/events/viewport/ViewportScrollEvent.js +11 -0
  313. package/lib/events/viewport/index.d.ts +2 -0
  314. package/lib/events/viewport/index.js +18 -0
  315. package/lib/events/workbench/AbstractWorkspaceEvent.d.ts +7 -0
  316. package/lib/events/workbench/AbstractWorkspaceEvent.js +9 -0
  317. package/lib/events/workbench/AddWorkspaceEvent.d.ts +5 -0
  318. package/lib/events/workbench/AddWorkspaceEvent.js +11 -0
  319. package/lib/events/workbench/RemoveWorkspaceEvent.d.ts +5 -0
  320. package/lib/events/workbench/RemoveWorkspaceEvent.js +11 -0
  321. package/lib/events/workbench/SwitchWorkspaceEvent.d.ts +5 -0
  322. package/lib/events/workbench/SwitchWorkspaceEvent.js +11 -0
  323. package/lib/events/workbench/index.d.ts +3 -0
  324. package/lib/events/workbench/index.js +19 -0
  325. package/lib/exports.d.ts +5 -0
  326. package/lib/exports.js +21 -0
  327. package/lib/externals.d.ts +12 -0
  328. package/lib/externals.js +71 -0
  329. package/lib/index.d.ts +1 -0
  330. package/lib/index.js +43 -0
  331. package/lib/internals.d.ts +3 -0
  332. package/lib/internals.js +39 -0
  333. package/lib/models/Cursor.d.ts +60 -0
  334. package/lib/models/Cursor.js +137 -0
  335. package/lib/models/Engine.d.ts +29 -0
  336. package/lib/models/Engine.js +87 -0
  337. package/lib/models/History.d.ts +34 -0
  338. package/lib/models/History.js +100 -0
  339. package/lib/models/Hover.d.ts +14 -0
  340. package/lib/models/Hover.js +40 -0
  341. package/lib/models/Keyboard.d.ts +29 -0
  342. package/lib/models/Keyboard.js +106 -0
  343. package/lib/models/MoveHelper.d.ts +66 -0
  344. package/lib/models/MoveHelper.js +317 -0
  345. package/lib/models/Operation.d.ts +29 -0
  346. package/lib/models/Operation.js +70 -0
  347. package/lib/models/Screen.d.ts +31 -0
  348. package/lib/models/Screen.js +75 -0
  349. package/lib/models/Selection.d.ts +29 -0
  350. package/lib/models/Selection.js +159 -0
  351. package/lib/models/Shortcut.d.ts +20 -0
  352. package/lib/models/Shortcut.js +68 -0
  353. package/lib/models/SnapLine.d.ts +27 -0
  354. package/lib/models/SnapLine.js +114 -0
  355. package/lib/models/SpaceBlock.d.ts +40 -0
  356. package/lib/models/SpaceBlock.js +130 -0
  357. package/lib/models/TransformHelper.d.ts +80 -0
  358. package/lib/models/TransformHelper.js +459 -0
  359. package/lib/models/TreeNode.d.ts +115 -0
  360. package/lib/models/TreeNode.js +751 -0
  361. package/lib/models/Viewport.d.ts +90 -0
  362. package/lib/models/Viewport.js +397 -0
  363. package/lib/models/Workbench.d.ts +23 -0
  364. package/lib/models/Workbench.js +99 -0
  365. package/lib/models/Workspace.d.ts +41 -0
  366. package/lib/models/Workspace.js +96 -0
  367. package/lib/models/index.d.ts +13 -0
  368. package/lib/models/index.js +29 -0
  369. package/lib/presets.d.ts +4 -0
  370. package/lib/presets.js +41 -0
  371. package/lib/registry.d.ts +16 -0
  372. package/lib/registry.js +116 -0
  373. package/lib/shortcuts/CursorSwitch.d.ts +2 -0
  374. package/lib/shortcuts/CursorSwitch.js +13 -0
  375. package/lib/shortcuts/MultiSelection.d.ts +5 -0
  376. package/lib/shortcuts/MultiSelection.js +30 -0
  377. package/lib/shortcuts/NodeMutation.d.ts +7 -0
  378. package/lib/shortcuts/NodeMutation.js +43 -0
  379. package/lib/shortcuts/QuickSelection.d.ts +3 -0
  380. package/lib/shortcuts/QuickSelection.js +87 -0
  381. package/lib/shortcuts/UndoRedo.d.ts +3 -0
  382. package/lib/shortcuts/UndoRedo.js +30 -0
  383. package/lib/shortcuts/index.d.ts +5 -0
  384. package/lib/shortcuts/index.js +21 -0
  385. package/lib/types.d.ts +131 -0
  386. package/lib/types.js +2 -0
  387. package/package.json +48 -0
@@ -0,0 +1,751 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TreeNode = void 0;
4
+ const reactive_1 = require("@formily/reactive");
5
+ const designable_shared_1 = require("@thienvu18/designable-shared");
6
+ const events_1 = require("../events");
7
+ const registry_1 = require("../registry");
8
+ const internals_1 = require("../internals");
9
+ const TreeNodes = new Map();
10
+ const CommonDesignerPropsMap = new Map();
11
+ const removeNode = (node) => {
12
+ if (node.parent) {
13
+ node.parent.children = node.parent.children.filter((child) => child !== node);
14
+ }
15
+ };
16
+ const resetNodesParent = (nodes, parent) => {
17
+ const resetDepth = (node) => {
18
+ node.depth = node.parent ? node.parent.depth + 1 : 0;
19
+ node.children.forEach(resetDepth);
20
+ };
21
+ const shallowReset = (node) => {
22
+ node.parent = parent;
23
+ node.root = parent.root;
24
+ resetDepth(node);
25
+ };
26
+ const deepReset = (node) => {
27
+ shallowReset(node);
28
+ resetNodesParent(node.children, node);
29
+ };
30
+ return nodes.map((node) => {
31
+ if (node === parent)
32
+ return node;
33
+ if (!parent.isSourceNode) {
34
+ if (node.isSourceNode) {
35
+ node = node.clone(parent);
36
+ resetDepth(node);
37
+ }
38
+ else if (!node.isRoot && node.isInOperation) {
39
+ node.operation?.selection.remove(node);
40
+ removeNode(node);
41
+ shallowReset(node);
42
+ }
43
+ else {
44
+ deepReset(node);
45
+ }
46
+ }
47
+ else {
48
+ deepReset(node);
49
+ }
50
+ if (!TreeNodes.has(node.id)) {
51
+ TreeNodes.set(node.id, node);
52
+ CommonDesignerPropsMap.set(node.componentName, node.designerProps);
53
+ }
54
+ return node;
55
+ });
56
+ };
57
+ const resetParent = (node, parent) => {
58
+ return resetNodesParent([node], parent)[0];
59
+ };
60
+ const resolveDesignerProps = (node, props) => {
61
+ if ((0, designable_shared_1.isFn)(props))
62
+ return props(node);
63
+ return props;
64
+ };
65
+ class TreeNode {
66
+ constructor(node, parent) {
67
+ this.depth = 0;
68
+ this.hidden = false;
69
+ this.componentName = 'NO_NAME_COMPONENT';
70
+ this.sourceName = '';
71
+ this.props = {};
72
+ this.children = [];
73
+ if (node instanceof TreeNode) {
74
+ return node;
75
+ }
76
+ this.id = node.id || (0, designable_shared_1.uid)();
77
+ if (parent) {
78
+ this.parent = parent;
79
+ this.depth = parent.depth + 1;
80
+ this.root = parent.root;
81
+ TreeNodes.set(this.id, this);
82
+ }
83
+ else {
84
+ this.root = this;
85
+ this.rootOperation = node.operation;
86
+ this.isSelfSourceNode = node.isSourceNode || false;
87
+ TreeNodes.set(this.id, this);
88
+ }
89
+ if (node) {
90
+ this.from(node);
91
+ }
92
+ this.makeObservable();
93
+ }
94
+ makeObservable() {
95
+ (0, reactive_1.define)(this, {
96
+ componentName: reactive_1.observable.ref,
97
+ props: reactive_1.observable,
98
+ hidden: reactive_1.observable.ref,
99
+ children: reactive_1.observable.shallow,
100
+ designerProps: reactive_1.observable.computed,
101
+ designerLocales: reactive_1.observable.computed,
102
+ wrap: reactive_1.action,
103
+ prepend: reactive_1.action,
104
+ append: reactive_1.action,
105
+ insertAfter: reactive_1.action,
106
+ insertBefore: reactive_1.action,
107
+ remove: reactive_1.action,
108
+ setProps: reactive_1.action,
109
+ setChildren: reactive_1.action,
110
+ setComponentName: reactive_1.action,
111
+ });
112
+ }
113
+ get designerProps() {
114
+ const behaviors = registry_1.GlobalRegistry.getDesignerBehaviors(this);
115
+ const designerProps = behaviors.reduce((buf, pattern) => {
116
+ if (!pattern.designerProps)
117
+ return buf;
118
+ Object.assign(buf, resolveDesignerProps(this, pattern.designerProps));
119
+ return buf;
120
+ }, {});
121
+ return designerProps;
122
+ }
123
+ get designerLocales() {
124
+ const behaviors = registry_1.GlobalRegistry.getDesignerBehaviors(this);
125
+ const designerLocales = behaviors.reduce((buf, pattern) => {
126
+ if (!pattern.designerLocales)
127
+ return buf;
128
+ (0, internals_1.mergeLocales)(buf, pattern.designerLocales);
129
+ return buf;
130
+ }, {});
131
+ return designerLocales;
132
+ }
133
+ get previous() {
134
+ if (this.parent === this || !this.parent)
135
+ return;
136
+ return this.parent.children[this.index - 1];
137
+ }
138
+ get next() {
139
+ if (this.parent === this || !this.parent)
140
+ return;
141
+ return this.parent.children[this.index + 1];
142
+ }
143
+ get siblings() {
144
+ if (this.parent) {
145
+ return this.parent.children.filter((node) => node !== this);
146
+ }
147
+ return [];
148
+ }
149
+ get index() {
150
+ if (this.parent === this || !this.parent)
151
+ return 0;
152
+ return this.parent.children.indexOf(this);
153
+ }
154
+ get descendants() {
155
+ return this.children.reduce((buf, node) => {
156
+ return buf.concat(node).concat(node.descendants);
157
+ }, []);
158
+ }
159
+ get isRoot() {
160
+ return this === this.root;
161
+ }
162
+ get isInOperation() {
163
+ return !!this.operation;
164
+ }
165
+ get lastChild() {
166
+ return this.children[this.children.length - 1];
167
+ }
168
+ get firstChild() {
169
+ return this.children[0];
170
+ }
171
+ get isSourceNode() {
172
+ return this.root.isSelfSourceNode;
173
+ }
174
+ get operation() {
175
+ return this.root?.rootOperation;
176
+ }
177
+ get viewport() {
178
+ return this.operation?.workspace?.viewport;
179
+ }
180
+ get outline() {
181
+ return this.operation?.workspace?.outline;
182
+ }
183
+ get moveLayout() {
184
+ return this.viewport?.getValidNodeLayout(this);
185
+ }
186
+ getElement(area = 'viewport') {
187
+ return this[area]?.findElementById(this.id);
188
+ }
189
+ getValidElement(area = 'viewport') {
190
+ return this[area]?.getValidNodeElement(this);
191
+ }
192
+ getElementRect(area = 'viewport') {
193
+ return this[area]?.getElementRect(this.getElement(area));
194
+ }
195
+ getValidElementRect(area = 'viewport') {
196
+ return this[area]?.getValidNodeRect(this);
197
+ }
198
+ getElementOffsetRect(area = 'viewport') {
199
+ return this[area]?.getElementOffsetRect(this.getElement(area));
200
+ }
201
+ getValidElementOffsetRect(area = 'viewport') {
202
+ return this[area]?.getValidNodeOffsetRect(this);
203
+ }
204
+ getPrevious(step = 1) {
205
+ return this.parent.children[this.index - step];
206
+ }
207
+ getAfter(step = 1) {
208
+ return this.parent.children[this.index + step];
209
+ }
210
+ getSibling(index = 0) {
211
+ return this.parent.children[index];
212
+ }
213
+ getParents(node) {
214
+ const _node = node || this;
215
+ return _node?.parent
216
+ ? [_node.parent].concat(this.getParents(_node.parent))
217
+ : [];
218
+ }
219
+ getParentByDepth(depth = 0) {
220
+ let parent = this.parent;
221
+ if (parent?.depth === depth) {
222
+ return parent;
223
+ }
224
+ else {
225
+ return parent?.getParentByDepth(depth);
226
+ }
227
+ }
228
+ getMessage(token) {
229
+ return registry_1.GlobalRegistry.getDesignerMessage(token, this.designerLocales);
230
+ }
231
+ isMyAncestor(node) {
232
+ if (node === this || this.parent === node)
233
+ return false;
234
+ return node.contains(this);
235
+ }
236
+ isMyParent(node) {
237
+ return this.parent === node;
238
+ }
239
+ isMyParents(node) {
240
+ if (node === this)
241
+ return false;
242
+ return this.isMyParent(node) || this.isMyAncestor(node);
243
+ }
244
+ isMyChild(node) {
245
+ return node.isMyParent(this);
246
+ }
247
+ isMyChildren(node) {
248
+ return node.isMyParents(this);
249
+ }
250
+ takeSnapshot(type) {
251
+ this.operation?.snapshot(type);
252
+ }
253
+ triggerMutation(event, callback, defaults) {
254
+ if (this.operation) {
255
+ const result = this.operation.dispatch(event, callback) ?? defaults;
256
+ this.takeSnapshot(event?.type);
257
+ return result;
258
+ }
259
+ else if ((0, designable_shared_1.isFn)(callback)) {
260
+ return callback();
261
+ }
262
+ return defaults;
263
+ }
264
+ find(finder) {
265
+ if (finder(this)) {
266
+ return this;
267
+ }
268
+ else {
269
+ let result = undefined;
270
+ this.eachChildren((node) => {
271
+ if (finder(node)) {
272
+ result = node;
273
+ return false;
274
+ }
275
+ });
276
+ return result;
277
+ }
278
+ }
279
+ findAll(finder) {
280
+ const results = [];
281
+ if (finder(this)) {
282
+ results.push(this);
283
+ }
284
+ this.eachChildren((node) => {
285
+ if (finder(node)) {
286
+ results.push(node);
287
+ }
288
+ });
289
+ return results;
290
+ }
291
+ distanceTo(node) {
292
+ if (this.root !== node.root) {
293
+ return Infinity;
294
+ }
295
+ if (this.parent !== node.parent) {
296
+ return Infinity;
297
+ }
298
+ return Math.abs(this.index - node.index);
299
+ }
300
+ crossSiblings(node) {
301
+ if (this.parent !== node.parent)
302
+ return [];
303
+ const minIndex = Math.min(this.index, node.index);
304
+ const maxIndex = Math.max(this.index, node.index);
305
+ const results = [];
306
+ for (let i = minIndex + 1; i < maxIndex; i++) {
307
+ results.push(this.parent.children[i]);
308
+ }
309
+ return results;
310
+ }
311
+ allowSibling(nodes) {
312
+ if (this.designerProps?.allowSiblings?.(this, nodes) === false)
313
+ return false;
314
+ return this.parent?.allowAppend(nodes);
315
+ }
316
+ allowDrop(parent) {
317
+ if (!(0, designable_shared_1.isFn)(this.designerProps.allowDrop))
318
+ return true;
319
+ return this.designerProps.allowDrop(parent);
320
+ }
321
+ allowAppend(nodes) {
322
+ if (!this.designerProps?.droppable)
323
+ return false;
324
+ if (this.designerProps?.allowAppend?.(this, nodes) === false)
325
+ return false;
326
+ if (nodes.some((node) => !node.allowDrop(this)))
327
+ return false;
328
+ if (this.root === this)
329
+ return true;
330
+ return true;
331
+ }
332
+ allowClone() {
333
+ if (this === this.root)
334
+ return false;
335
+ return this.designerProps.cloneable ?? true;
336
+ }
337
+ allowDrag() {
338
+ if (this === this.root && !this.isSourceNode)
339
+ return false;
340
+ return this.designerProps.draggable ?? true;
341
+ }
342
+ allowResize() {
343
+ if (this === this.root && !this.isSourceNode)
344
+ return false;
345
+ const { resizable } = this.designerProps;
346
+ if (!resizable)
347
+ return false;
348
+ if (resizable.width && resizable.height)
349
+ return ['x', 'y'];
350
+ if (resizable.width)
351
+ return ['x'];
352
+ return ['y'];
353
+ }
354
+ allowRotate() { }
355
+ allowRound() { }
356
+ allowScale() { }
357
+ allowTranslate() {
358
+ if (this === this.root && !this.isSourceNode)
359
+ return false;
360
+ const { translatable } = this.designerProps;
361
+ if (translatable?.x && translatable?.y)
362
+ return true;
363
+ return false;
364
+ }
365
+ allowDelete() {
366
+ if (this === this.root)
367
+ return false;
368
+ return this.designerProps.deletable ?? true;
369
+ }
370
+ findById(id) {
371
+ if (!id)
372
+ return;
373
+ if (this.id === id)
374
+ return this;
375
+ if (this.children?.length > 0) {
376
+ return TreeNodes.get(id);
377
+ }
378
+ }
379
+ contains(...nodes) {
380
+ return nodes.every((node) => {
381
+ if (node === this ||
382
+ node?.parent === this ||
383
+ node?.getParentByDepth(this.depth) === this) {
384
+ return true;
385
+ }
386
+ return false;
387
+ });
388
+ }
389
+ eachTree(callback) {
390
+ if ((0, designable_shared_1.isFn)(callback)) {
391
+ callback(this.root);
392
+ this.root?.eachChildren(callback);
393
+ }
394
+ }
395
+ eachChildren(callback) {
396
+ if ((0, designable_shared_1.isFn)(callback)) {
397
+ for (let i = 0; i < this.children.length; i++) {
398
+ const node = this.children[i];
399
+ if (callback(node) === false)
400
+ return;
401
+ node.eachChildren(callback);
402
+ }
403
+ }
404
+ }
405
+ resetNodesParent(nodes, parent) {
406
+ return resetNodesParent(nodes.filter((node) => node !== this), parent);
407
+ }
408
+ setProps(props) {
409
+ return this.triggerMutation(new events_1.UpdateNodePropsEvent({
410
+ target: this,
411
+ source: null,
412
+ }), () => {
413
+ Object.assign(this.props, props);
414
+ });
415
+ }
416
+ setComponentName(componentName) {
417
+ this.componentName = componentName;
418
+ }
419
+ prepend(...nodes) {
420
+ if (nodes.some((node) => node.contains(this)))
421
+ return [];
422
+ const originSourceParents = nodes.map((node) => node.parent);
423
+ const newNodes = this.resetNodesParent(nodes, this);
424
+ if (!newNodes.length)
425
+ return [];
426
+ return this.triggerMutation(new events_1.PrependNodeEvent({
427
+ originSourceParents,
428
+ target: this,
429
+ source: newNodes,
430
+ }), () => {
431
+ this.children = newNodes.concat(this.children);
432
+ return newNodes;
433
+ }, []);
434
+ }
435
+ append(...nodes) {
436
+ if (nodes.some((node) => node.contains(this)))
437
+ return [];
438
+ const originSourceParents = nodes.map((node) => node.parent);
439
+ const newNodes = this.resetNodesParent(nodes, this);
440
+ if (!newNodes.length)
441
+ return [];
442
+ return this.triggerMutation(new events_1.AppendNodeEvent({
443
+ originSourceParents,
444
+ target: this,
445
+ source: newNodes,
446
+ }), () => {
447
+ this.children = this.children.concat(newNodes);
448
+ return newNodes;
449
+ }, []);
450
+ }
451
+ wrap(wrapper) {
452
+ if (wrapper === this)
453
+ return;
454
+ const parent = this.parent;
455
+ return this.triggerMutation(new events_1.WrapNodeEvent({
456
+ target: this,
457
+ source: wrapper,
458
+ }), () => {
459
+ resetParent(this, wrapper);
460
+ resetParent(wrapper, parent);
461
+ return wrapper;
462
+ });
463
+ }
464
+ insertAfter(...nodes) {
465
+ const parent = this.parent;
466
+ if (nodes.some((node) => node.contains(this)))
467
+ return [];
468
+ if (parent?.children?.length) {
469
+ const originSourceParents = nodes.map((node) => node.parent);
470
+ const newNodes = this.resetNodesParent(nodes, parent);
471
+ if (!newNodes.length)
472
+ return [];
473
+ return this.triggerMutation(new events_1.InsertAfterEvent({
474
+ originSourceParents,
475
+ target: this,
476
+ source: newNodes,
477
+ }), () => {
478
+ parent.children = parent.children.reduce((buf, node) => {
479
+ if (node === this) {
480
+ return buf.concat([node]).concat(newNodes);
481
+ }
482
+ else {
483
+ return buf.concat([node]);
484
+ }
485
+ }, []);
486
+ return newNodes;
487
+ }, []);
488
+ }
489
+ return [];
490
+ }
491
+ insertBefore(...nodes) {
492
+ const parent = this.parent;
493
+ if (nodes.some((node) => node.contains(this)))
494
+ return [];
495
+ if (parent?.children?.length) {
496
+ const originSourceParents = nodes.map((node) => node.parent);
497
+ const newNodes = this.resetNodesParent(nodes, parent);
498
+ if (!newNodes.length)
499
+ return [];
500
+ return this.triggerMutation(new events_1.InsertBeforeEvent({
501
+ originSourceParents,
502
+ target: this,
503
+ source: newNodes,
504
+ }), () => {
505
+ parent.children = parent.children.reduce((buf, node) => {
506
+ if (node === this) {
507
+ return buf.concat(newNodes).concat([node]);
508
+ }
509
+ else {
510
+ return buf.concat([node]);
511
+ }
512
+ }, []);
513
+ return newNodes;
514
+ }, []);
515
+ }
516
+ return [];
517
+ }
518
+ insertChildren(start, ...nodes) {
519
+ if (nodes.some((node) => node.contains(this)))
520
+ return [];
521
+ if (this.children?.length) {
522
+ const originSourceParents = nodes.map((node) => node.parent);
523
+ const newNodes = this.resetNodesParent(nodes, this);
524
+ if (!newNodes.length)
525
+ return [];
526
+ return this.triggerMutation(new events_1.InsertChildrenEvent({
527
+ originSourceParents,
528
+ target: this,
529
+ source: newNodes,
530
+ }), () => {
531
+ this.children = this.children.reduce((buf, node, index) => {
532
+ if (index === start) {
533
+ return buf.concat(newNodes).concat([node]);
534
+ }
535
+ return buf.concat([node]);
536
+ }, []);
537
+ return newNodes;
538
+ }, []);
539
+ }
540
+ return [];
541
+ }
542
+ setChildren(...nodes) {
543
+ const originSourceParents = nodes.map((node) => node.parent);
544
+ const newNodes = this.resetNodesParent(nodes, this);
545
+ return this.triggerMutation(new events_1.UpdateChildrenEvent({
546
+ originSourceParents,
547
+ target: this,
548
+ source: newNodes,
549
+ }), () => {
550
+ this.children = newNodes;
551
+ return newNodes;
552
+ }, []);
553
+ }
554
+ /**
555
+ * @deprecated
556
+ * please use `setChildren`
557
+ */
558
+ setNodeChildren(...nodes) {
559
+ return this.setChildren(...nodes);
560
+ }
561
+ remove() {
562
+ return this.triggerMutation(new events_1.RemoveNodeEvent({
563
+ target: this,
564
+ source: null,
565
+ }), () => {
566
+ removeNode(this);
567
+ TreeNodes.delete(this.id);
568
+ });
569
+ }
570
+ clone(parent) {
571
+ const newNode = new TreeNode({
572
+ id: (0, designable_shared_1.uid)(),
573
+ componentName: this.componentName,
574
+ sourceName: this.sourceName,
575
+ props: (0, reactive_1.toJS)(this.props),
576
+ children: [],
577
+ }, parent ? parent : this.parent);
578
+ newNode.children = resetNodesParent(this.children.map((child) => {
579
+ return child.clone(newNode);
580
+ }), newNode);
581
+ return this.triggerMutation(new events_1.CloneNodeEvent({
582
+ target: this,
583
+ source: newNode,
584
+ }), () => newNode);
585
+ }
586
+ from(node) {
587
+ if (!node)
588
+ return;
589
+ return this.triggerMutation(new events_1.FromNodeEvent({
590
+ target: this,
591
+ source: node,
592
+ }), () => {
593
+ if (node.id && node.id !== this.id) {
594
+ TreeNodes.delete(this.id);
595
+ TreeNodes.set(node.id, this);
596
+ this.id = node.id;
597
+ }
598
+ if (node.componentName) {
599
+ this.componentName = node.componentName;
600
+ }
601
+ this.props = node.props ?? {};
602
+ if (node.hidden) {
603
+ this.hidden = node.hidden;
604
+ }
605
+ if (node.children) {
606
+ this.children =
607
+ node.children?.map?.((node) => {
608
+ return new TreeNode(node, this);
609
+ }) || [];
610
+ }
611
+ });
612
+ }
613
+ serialize() {
614
+ return {
615
+ id: this.id,
616
+ componentName: this.componentName,
617
+ sourceName: this.sourceName,
618
+ props: (0, reactive_1.toJS)(this.props),
619
+ hidden: this.hidden,
620
+ children: this.children.map((treeNode) => {
621
+ return treeNode.serialize();
622
+ }),
623
+ };
624
+ }
625
+ static create(node, parent) {
626
+ return new TreeNode(node, parent);
627
+ }
628
+ static findById(id) {
629
+ return TreeNodes.get(id);
630
+ }
631
+ static remove(nodes = []) {
632
+ for (let i = nodes.length - 1; i >= 0; i--) {
633
+ const node = nodes[i];
634
+ if (node.allowDelete()) {
635
+ const previous = node.previous;
636
+ const next = node.next;
637
+ node.remove();
638
+ node.operation?.selection.select(previous ? previous : next ? next : node.parent);
639
+ node.operation?.hover.clear();
640
+ }
641
+ }
642
+ }
643
+ static sort(nodes = []) {
644
+ return nodes.sort((before, after) => {
645
+ if (before.depth !== after.depth)
646
+ return 0;
647
+ return before.index - after.index >= 0 ? 1 : -1;
648
+ });
649
+ }
650
+ static clone(nodes = []) {
651
+ const groups = {};
652
+ const lastGroupNode = {};
653
+ const filterNestedNode = TreeNode.sort(nodes).filter((node) => {
654
+ return !nodes.some((parent) => {
655
+ return node.isMyParents(parent);
656
+ });
657
+ });
658
+ (0, designable_shared_1.each)(filterNestedNode, (node) => {
659
+ if (node === node.root)
660
+ return;
661
+ if (!node.allowClone())
662
+ return;
663
+ if (!node?.operation)
664
+ return;
665
+ groups[node?.parent?.id] = groups[node?.parent?.id] || [];
666
+ groups[node?.parent?.id].push(node);
667
+ if (lastGroupNode[node?.parent?.id]) {
668
+ if (node.index > lastGroupNode[node?.parent?.id].index) {
669
+ lastGroupNode[node?.parent?.id] = node;
670
+ }
671
+ }
672
+ else {
673
+ lastGroupNode[node?.parent?.id] = node;
674
+ }
675
+ });
676
+ const parents = new Map();
677
+ (0, designable_shared_1.each)(groups, (nodes, parentId) => {
678
+ const lastNode = lastGroupNode[parentId];
679
+ let insertPoint = lastNode;
680
+ (0, designable_shared_1.each)(nodes, (node) => {
681
+ const cloned = node.clone();
682
+ if (!cloned)
683
+ return;
684
+ if (node.operation?.selection.has(node) &&
685
+ insertPoint.parent.allowAppend([cloned])) {
686
+ insertPoint.insertAfter(cloned);
687
+ insertPoint = insertPoint.next;
688
+ }
689
+ else if (node.operation.selection.length === 1) {
690
+ const targetNode = node.operation?.tree.findById(node.operation.selection.first);
691
+ let cloneNodes = parents.get(targetNode);
692
+ if (!cloneNodes) {
693
+ cloneNodes = [];
694
+ parents.set(targetNode, cloneNodes);
695
+ }
696
+ if (targetNode && targetNode.allowAppend([cloned])) {
697
+ cloneNodes.push(cloned);
698
+ }
699
+ }
700
+ });
701
+ });
702
+ parents.forEach((nodes, target) => {
703
+ if (!nodes.length)
704
+ return;
705
+ target.append(...nodes);
706
+ });
707
+ }
708
+ static filterResizable(nodes = []) {
709
+ return nodes.filter((node) => node.allowResize());
710
+ }
711
+ static filterRotatable(nodes = []) {
712
+ return nodes.filter((node) => node.allowRotate());
713
+ }
714
+ static filterScalable(nodes = []) {
715
+ return nodes.filter((node) => node.allowScale());
716
+ }
717
+ static filterRoundable(nodes = []) {
718
+ return nodes.filter((node) => node.allowRound());
719
+ }
720
+ static filterTranslatable(nodes = []) {
721
+ return nodes.filter((node) => node.allowTranslate());
722
+ }
723
+ static filterDraggable(nodes = []) {
724
+ return nodes.reduce((buf, node) => {
725
+ if (!node.allowDrag())
726
+ return buf;
727
+ if ((0, designable_shared_1.isFn)(node?.designerProps?.getDragNodes)) {
728
+ const transformed = node.designerProps.getDragNodes(node);
729
+ return transformed ? buf.concat(transformed) : buf;
730
+ }
731
+ if (node.componentName === '$$ResourceNode$$')
732
+ return buf.concat(node.children);
733
+ return buf.concat([node]);
734
+ }, []);
735
+ }
736
+ static filterDroppable(nodes = [], parent) {
737
+ return nodes.reduce((buf, node) => {
738
+ if (!node.allowDrop(parent))
739
+ return buf;
740
+ if ((0, designable_shared_1.isFn)(node.designerProps?.getDropNodes)) {
741
+ const cloned = node.isSourceNode ? node.clone(node.parent) : node;
742
+ const transformed = node.designerProps.getDropNodes(cloned, parent);
743
+ return transformed ? buf.concat(transformed) : buf;
744
+ }
745
+ if (node.componentName === '$$ResourceNode$$')
746
+ return buf.concat(node.children);
747
+ return buf.concat([node]);
748
+ }, []);
749
+ }
750
+ }
751
+ exports.TreeNode = TreeNode;