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