@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,455 @@
1
+ import { Point, calcEdgeLinesOfRect, calcBoundingRect, calcSpaceBlockOfRect, calcElementTranslate, calcDistanceOfSnapLineToEdges, Rect, isEqualRect, isLineSegment, calcClosestEdges, calcCombineSnapLineSegment, } from '@thienvu18/designable-shared';
2
+ import { observable, define, action } from '@formily/reactive';
3
+ import { SpaceBlock } from './SpaceBlock';
4
+ import { TreeNode } from './TreeNode';
5
+ import { SnapLine } from './SnapLine';
6
+ import { CursorDragType } from './Cursor';
7
+ export class TransformHelper {
8
+ constructor(props) {
9
+ this.dragNodes = [];
10
+ this.rulerSnapLines = [];
11
+ this.aroundSnapLines = [];
12
+ this.aroundSpaceBlocks = null;
13
+ this.viewportRectsStore = {};
14
+ this.dragStartTranslateStore = {};
15
+ this.dragStartSizeStore = {};
16
+ this.dragStartNodesRect = null;
17
+ this.snapping = false;
18
+ this.dragging = false;
19
+ this.snapped = false;
20
+ this.operation = props.operation;
21
+ this.makeObservable();
22
+ }
23
+ get tree() {
24
+ return this.operation.tree;
25
+ }
26
+ get cursor() {
27
+ return this.operation.engine.cursor;
28
+ }
29
+ get viewport() {
30
+ return this.operation.workspace.viewport;
31
+ }
32
+ get deltaX() {
33
+ return this.cursor.dragStartToCurrentDelta.clientX;
34
+ }
35
+ get deltaY() {
36
+ return this.cursor.dragStartToCurrentDelta.clientY;
37
+ }
38
+ get cursorPosition() {
39
+ const position = this.cursor.position;
40
+ return this.operation.workspace.viewport.getOffsetPoint(new Point(position.clientX, position.clientY));
41
+ }
42
+ get cursorDragNodesRect() {
43
+ if (this.type === 'translate') {
44
+ return new Rect(this.cursorPosition.x - this.dragStartCursorOffset.x, this.cursorPosition.y - this.dragStartCursorOffset.y, this.dragNodesRect.width, this.dragNodesRect.height);
45
+ }
46
+ else if (this.type === 'resize') {
47
+ const dragNodesRect = this.dragStartNodesRect;
48
+ const deltaX = this.cursor.dragStartToCurrentDelta.clientX;
49
+ const deltaY = this.cursor.dragStartToCurrentDelta.clientY;
50
+ switch (this.direction) {
51
+ case 'left-top':
52
+ return new Rect(this.cursorPosition.x - this.dragStartCursorOffset.x, this.cursorPosition.y - this.dragStartCursorOffset.y, dragNodesRect.width - deltaX, dragNodesRect.height - deltaY);
53
+ case 'left-center':
54
+ return new Rect(this.cursorPosition.x - this.dragStartCursorOffset.x, dragNodesRect.y, dragNodesRect.width - deltaX, dragNodesRect.height);
55
+ case 'left-bottom':
56
+ return new Rect(this.cursorPosition.x - this.dragStartCursorOffset.x, dragNodesRect.y, dragNodesRect.width - deltaX, dragNodesRect.height - deltaY);
57
+ case 'center-top':
58
+ return new Rect(dragNodesRect.x, this.cursorPosition.y - this.dragStartCursorOffset.y, dragNodesRect.width, dragNodesRect.height - deltaY);
59
+ case 'center-bottom':
60
+ return new Rect(dragNodesRect.x, dragNodesRect.y, dragNodesRect.width, dragNodesRect.height + deltaY);
61
+ case 'right-top':
62
+ return new Rect(dragNodesRect.x, this.cursorPosition.y - this.dragStartCursorOffset.y, dragNodesRect.width + deltaX, dragNodesRect.height - deltaY);
63
+ case 'right-center':
64
+ return new Rect(dragNodesRect.x, dragNodesRect.y, dragNodesRect.width + deltaX, dragNodesRect.height);
65
+ case 'right-bottom':
66
+ return new Rect(dragNodesRect.x, dragNodesRect.y, dragNodesRect.width + deltaX, dragNodesRect.height - deltaY);
67
+ }
68
+ }
69
+ }
70
+ get cursorDragNodesEdgeLines() {
71
+ return calcEdgeLinesOfRect(this.cursorDragNodesRect);
72
+ }
73
+ get dragNodesRect() {
74
+ if (this.draggingNodesRect)
75
+ return this.draggingNodesRect;
76
+ return calcBoundingRect(this.dragNodes.map((node) => node.getValidElementOffsetRect()));
77
+ }
78
+ get dragNodesEdgeLines() {
79
+ return calcEdgeLinesOfRect(this.dragNodesRect);
80
+ }
81
+ get cursorOffset() {
82
+ return new Point(this.cursorPosition.x - this.dragNodesRect.x, this.cursorPosition.y - this.dragNodesRect.y);
83
+ }
84
+ get dragStartCursor() {
85
+ const position = this.operation.engine.cursor.dragStartPosition;
86
+ return this.operation.workspace.viewport.getOffsetPoint(new Point(position.clientX, position.clientY));
87
+ }
88
+ get dragStartCursorOffset() {
89
+ return new Point(this.dragStartCursor.x - this.dragStartNodesRect.x, this.dragStartCursor.y - this.dragStartNodesRect.y);
90
+ }
91
+ get closestSnapLines() {
92
+ if (!this.dragging)
93
+ return [];
94
+ const results = [];
95
+ const cursorDragNodesEdgeLines = this.cursorDragNodesEdgeLines;
96
+ this.thresholdSnapLines.forEach((line) => {
97
+ const distance = calcDistanceOfSnapLineToEdges(line, cursorDragNodesEdgeLines);
98
+ if (distance < TransformHelper.threshold) {
99
+ const existed = results.findIndex((l) => l.distance > distance &&
100
+ l.distance > 0 &&
101
+ l.direction === line.direction);
102
+ if (existed > -1) {
103
+ results.splice(existed, 1);
104
+ }
105
+ results.push(line);
106
+ }
107
+ });
108
+ return results;
109
+ }
110
+ get closestSpaceBlocks() {
111
+ if (!this.dragging)
112
+ return [];
113
+ const cursorDragNodesEdgeLines = this.cursorDragNodesEdgeLines;
114
+ return this.thresholdSpaceBlocks.filter((block) => {
115
+ const line = block.snapLine;
116
+ if (!line)
117
+ return false;
118
+ return (calcDistanceOfSnapLineToEdges(line, cursorDragNodesEdgeLines) <
119
+ TransformHelper.threshold);
120
+ });
121
+ }
122
+ get thresholdSnapLines() {
123
+ if (!this.dragging)
124
+ return [];
125
+ const lines = [];
126
+ this.aroundSnapLines.forEach((line) => {
127
+ lines.push(line);
128
+ });
129
+ this.rulerSnapLines.forEach((line) => {
130
+ if (line.closest) {
131
+ lines.push(line);
132
+ }
133
+ });
134
+ for (let type in this.aroundSpaceBlocks) {
135
+ const block = this.aroundSpaceBlocks[type];
136
+ const line = block.snapLine;
137
+ if (line) {
138
+ lines.push(line);
139
+ }
140
+ }
141
+ return lines;
142
+ }
143
+ get thresholdSpaceBlocks() {
144
+ const results = [];
145
+ if (!this.dragging)
146
+ return [];
147
+ for (let type in this.aroundSpaceBlocks) {
148
+ const block = this.aroundSpaceBlocks[type];
149
+ if (!block.snapLine)
150
+ return [];
151
+ if (block.snapLine.distance !== 0)
152
+ return [];
153
+ if (block.isometrics.length) {
154
+ results.push(block);
155
+ results.push(...block.isometrics);
156
+ }
157
+ }
158
+ return results;
159
+ }
160
+ get measurerSpaceBlocks() {
161
+ const results = [];
162
+ if (!this.dragging || !this.snapped)
163
+ return [];
164
+ for (let type in this.aroundSpaceBlocks) {
165
+ if (this.aroundSpaceBlocks[type])
166
+ results.push(this.aroundSpaceBlocks[type]);
167
+ }
168
+ return results;
169
+ }
170
+ calcBaseTranslate(node) {
171
+ const dragStartTranslate = this.dragStartTranslateStore[node.id] ?? {
172
+ x: 0,
173
+ y: 0,
174
+ };
175
+ const x = dragStartTranslate.x + this.deltaX, y = dragStartTranslate.y + this.deltaY;
176
+ return { x, y };
177
+ }
178
+ calcBaseResize(node) {
179
+ const deltaX = this.deltaX;
180
+ const deltaY = this.deltaY;
181
+ const dragStartTranslate = this.dragStartTranslateStore[node.id] ?? {
182
+ x: 0,
183
+ y: 0,
184
+ };
185
+ const dragStartSize = this.dragStartSizeStore[node.id] ?? {
186
+ width: 0,
187
+ height: 0,
188
+ };
189
+ switch (this.direction) {
190
+ case 'left-top':
191
+ return new Rect(dragStartTranslate.x + deltaX, dragStartTranslate.y + deltaY, dragStartSize.width - deltaX, dragStartSize.height - deltaY);
192
+ case 'left-center':
193
+ return new Rect(dragStartTranslate.x + deltaX, dragStartTranslate.y, dragStartSize.width - deltaX, dragStartSize.height);
194
+ case 'left-bottom':
195
+ return new Rect(dragStartTranslate.x + deltaX, dragStartTranslate.y, dragStartSize.width - deltaX, dragStartSize.height + deltaY);
196
+ case 'center-bottom':
197
+ return new Rect(dragStartTranslate.x, dragStartTranslate.y, dragStartSize.width, dragStartSize.height + deltaY);
198
+ case 'center-top':
199
+ return new Rect(dragStartTranslate.x, dragStartTranslate.y + deltaY, dragStartSize.width, dragStartSize.height - deltaY);
200
+ case 'right-top':
201
+ return new Rect(dragStartTranslate.x, dragStartTranslate.y + deltaY, dragStartSize.width + deltaX, dragStartSize.height - deltaY);
202
+ case 'right-bottom':
203
+ return new Rect(dragStartTranslate.x, dragStartTranslate.y, dragStartSize.width + deltaX, dragStartSize.height + deltaY);
204
+ case 'right-center':
205
+ return new Rect(dragStartTranslate.x, dragStartTranslate.y, dragStartSize.width + deltaX, dragStartSize.height);
206
+ }
207
+ }
208
+ calcDragStartStore(nodes = []) {
209
+ this.dragStartNodesRect = this.dragNodesRect;
210
+ nodes.forEach((node) => {
211
+ const element = node.getElement();
212
+ const rect = node.getElementOffsetRect();
213
+ this.dragStartTranslateStore[node.id] = calcElementTranslate(element);
214
+ this.dragStartSizeStore[node.id] = {
215
+ width: rect.width,
216
+ height: rect.height,
217
+ };
218
+ });
219
+ }
220
+ calcRulerSnapLines(dragNodesRect) {
221
+ const edgeLines = calcEdgeLinesOfRect(dragNodesRect);
222
+ return this.rulerSnapLines.map((line) => {
223
+ line.distance = calcDistanceOfSnapLineToEdges(line, edgeLines);
224
+ return line;
225
+ });
226
+ }
227
+ calcAroundSnapLines(dragNodesRect) {
228
+ const results = [];
229
+ const edgeLines = calcEdgeLinesOfRect(dragNodesRect);
230
+ this.eachViewportNodes((refer, referRect) => {
231
+ if (this.dragNodes.includes(refer))
232
+ return;
233
+ const referLines = calcEdgeLinesOfRect(referRect);
234
+ const add = (line) => {
235
+ const [distance, edge] = calcClosestEdges(line, edgeLines);
236
+ const combined = calcCombineSnapLineSegment(line, edge);
237
+ if (distance < TransformHelper.threshold) {
238
+ if (this.snapping && distance !== 0)
239
+ return;
240
+ const snapLine = new SnapLine(this, {
241
+ ...combined,
242
+ distance,
243
+ });
244
+ const edge = snapLine.snapEdge(dragNodesRect);
245
+ if (this.type === 'translate') {
246
+ results.push(snapLine);
247
+ }
248
+ else if (edge !== 'hc' && edge !== 'vc') {
249
+ results.push(snapLine);
250
+ }
251
+ }
252
+ };
253
+ referLines.h.forEach(add);
254
+ referLines.v.forEach(add);
255
+ });
256
+ return results;
257
+ }
258
+ calcAroundSpaceBlocks(dragNodesRect) {
259
+ const closestSpaces = {};
260
+ this.eachViewportNodes((refer, referRect) => {
261
+ if (isEqualRect(dragNodesRect, referRect))
262
+ return;
263
+ const origin = calcSpaceBlockOfRect(dragNodesRect, referRect);
264
+ if (origin) {
265
+ const spaceBlock = new SpaceBlock(this, {
266
+ refer,
267
+ ...origin,
268
+ });
269
+ if (!closestSpaces[origin.type]) {
270
+ closestSpaces[origin.type] = spaceBlock;
271
+ }
272
+ else if (spaceBlock.distance < closestSpaces[origin.type].distance) {
273
+ closestSpaces[origin.type] = spaceBlock;
274
+ }
275
+ }
276
+ });
277
+ return closestSpaces;
278
+ }
279
+ calcViewportNodes() {
280
+ this.tree.eachTree((node) => {
281
+ const topRect = node.getValidElementRect();
282
+ const offsetRect = node.getValidElementOffsetRect();
283
+ if (this.dragNodes.includes(node))
284
+ return;
285
+ if (this.viewport.isRectInViewport(topRect)) {
286
+ this.viewportRectsStore[node.id] = offsetRect;
287
+ }
288
+ });
289
+ }
290
+ getNodeRect(node) {
291
+ return this.viewportRectsStore[node.id];
292
+ }
293
+ eachViewportNodes(visitor) {
294
+ for (let id in this.viewportRectsStore) {
295
+ visitor(this.tree.findById(id), this.viewportRectsStore[id]);
296
+ }
297
+ }
298
+ translate(node, handler) {
299
+ if (!this.dragging)
300
+ return;
301
+ const translate = this.calcBaseTranslate(node);
302
+ this.snapped = false;
303
+ this.snapping = false;
304
+ for (let line of this.closestSnapLines) {
305
+ line.translate(node, translate);
306
+ this.snapping = true;
307
+ this.snapped = true;
308
+ }
309
+ handler(translate);
310
+ if (this.snapping) {
311
+ this.dragMove();
312
+ this.snapping = false;
313
+ }
314
+ }
315
+ resize(node, handler) {
316
+ if (!this.dragging)
317
+ return;
318
+ const rect = this.calcBaseResize(node);
319
+ this.snapping = false;
320
+ this.snapping = false;
321
+ for (let line of this.closestSnapLines) {
322
+ line.resize(node, rect);
323
+ this.snapping = true;
324
+ this.snapped = true;
325
+ }
326
+ handler(rect);
327
+ if (this.snapping) {
328
+ this.dragMove();
329
+ this.snapping = false;
330
+ }
331
+ }
332
+ // rotate(node: TreeNode, handler: (rotate: number) => void) {}
333
+ // scale(node: TreeNode, handler: (scale: number) => void) {}
334
+ // round(node: TreeNode, handler: (round: number) => void) {}
335
+ findRulerSnapLine(id) {
336
+ return this.rulerSnapLines.find((item) => item.id === id);
337
+ }
338
+ addRulerSnapLine(line) {
339
+ if (!isLineSegment(line))
340
+ return;
341
+ if (!this.findRulerSnapLine(line.id)) {
342
+ this.rulerSnapLines.push(new SnapLine(this, { ...line, type: 'ruler' }));
343
+ }
344
+ }
345
+ removeRulerSnapLine(id) {
346
+ const matchedLineIndex = this.rulerSnapLines.findIndex((item) => item.id === id);
347
+ if (matchedLineIndex > -1) {
348
+ this.rulerSnapLines.splice(matchedLineIndex, 1);
349
+ }
350
+ }
351
+ dragStart(props) {
352
+ const dragNodes = props?.dragNodes;
353
+ const type = props?.type;
354
+ const direction = props?.direction;
355
+ if (type === 'resize') {
356
+ const nodes = TreeNode.filterResizable(dragNodes);
357
+ if (nodes.length) {
358
+ this.dragging = true;
359
+ this.type = type;
360
+ this.direction = direction;
361
+ this.dragNodes = nodes;
362
+ this.calcDragStartStore(nodes);
363
+ this.cursor.setDragType(CursorDragType.Resize);
364
+ }
365
+ }
366
+ else if (type === 'translate') {
367
+ const nodes = TreeNode.filterTranslatable(dragNodes);
368
+ if (nodes.length) {
369
+ this.dragging = true;
370
+ this.type = type;
371
+ this.direction = direction;
372
+ this.dragNodes = nodes;
373
+ this.calcDragStartStore(nodes);
374
+ this.cursor.setDragType(CursorDragType.Translate);
375
+ }
376
+ }
377
+ else if (type === 'rotate') {
378
+ const nodes = TreeNode.filterRotatable(dragNodes);
379
+ if (nodes.length) {
380
+ this.dragging = true;
381
+ this.type = type;
382
+ this.dragNodes = nodes;
383
+ this.calcDragStartStore(nodes);
384
+ this.cursor.setDragType(CursorDragType.Rotate);
385
+ }
386
+ }
387
+ else if (type === 'scale') {
388
+ const nodes = TreeNode.filterScalable(dragNodes);
389
+ if (nodes.length) {
390
+ this.dragging = true;
391
+ this.type = type;
392
+ this.dragNodes = nodes;
393
+ this.calcDragStartStore(nodes);
394
+ this.cursor.setDragType(CursorDragType.Scale);
395
+ }
396
+ }
397
+ else if (type === 'round') {
398
+ const nodes = TreeNode.filterRoundable(dragNodes);
399
+ if (nodes.length) {
400
+ this.dragging = true;
401
+ this.type = type;
402
+ this.dragNodes = nodes;
403
+ this.calcDragStartStore(nodes);
404
+ this.cursor.setDragType(CursorDragType.Round);
405
+ }
406
+ }
407
+ if (this.dragging) {
408
+ this.calcViewportNodes();
409
+ }
410
+ }
411
+ dragMove() {
412
+ if (!this.dragging)
413
+ return;
414
+ this.draggingNodesRect = null;
415
+ this.draggingNodesRect = this.dragNodesRect;
416
+ this.rulerSnapLines = this.calcRulerSnapLines(this.dragNodesRect);
417
+ this.aroundSnapLines = this.calcAroundSnapLines(this.dragNodesRect);
418
+ this.aroundSpaceBlocks = this.calcAroundSpaceBlocks(this.dragNodesRect);
419
+ }
420
+ dragEnd() {
421
+ this.dragging = false;
422
+ this.viewportRectsStore = {};
423
+ this.dragStartTranslateStore = {};
424
+ this.aroundSnapLines = [];
425
+ this.draggingNodesRect = null;
426
+ this.aroundSpaceBlocks = null;
427
+ this.dragStartNodesRect = null;
428
+ this.dragNodes = [];
429
+ this.cursor.setDragType(CursorDragType.Move);
430
+ }
431
+ makeObservable() {
432
+ define(this, {
433
+ snapped: observable.ref,
434
+ dragging: observable.ref,
435
+ snapping: observable.ref,
436
+ dragNodes: observable.ref,
437
+ aroundSnapLines: observable.ref,
438
+ aroundSpaceBlocks: observable.ref,
439
+ rulerSnapLines: observable.shallow,
440
+ closestSnapLines: observable.computed,
441
+ thresholdSnapLines: observable.computed,
442
+ thresholdSpaceBlocks: observable.computed,
443
+ measurerSpaceBlocks: observable.computed,
444
+ cursor: observable.computed,
445
+ cursorPosition: observable.computed,
446
+ cursorOffset: observable.computed,
447
+ dragStartCursor: observable.computed,
448
+ translate: action,
449
+ dragStart: action,
450
+ dragMove: action,
451
+ dragEnd: action,
452
+ });
453
+ }
454
+ }
455
+ TransformHelper.threshold = 6;
@@ -0,0 +1,115 @@
1
+ import { Operation } from './Operation';
2
+ import { IDesignerProps, IDesignerLocales } from '../types';
3
+ export interface ITreeNode {
4
+ componentName?: string;
5
+ sourceName?: string;
6
+ operation?: Operation;
7
+ hidden?: boolean;
8
+ isSourceNode?: boolean;
9
+ id?: string;
10
+ props?: Record<string | number | symbol, any>;
11
+ children?: ITreeNode[];
12
+ }
13
+ export interface INodeFinder {
14
+ (node: TreeNode): boolean;
15
+ }
16
+ export declare class TreeNode {
17
+ parent: TreeNode;
18
+ root: TreeNode;
19
+ rootOperation: Operation;
20
+ id: string;
21
+ depth: number;
22
+ hidden: boolean;
23
+ componentName: string;
24
+ sourceName: string;
25
+ props: ITreeNode['props'];
26
+ children: TreeNode[];
27
+ isSelfSourceNode: boolean;
28
+ constructor(node?: ITreeNode, parent?: TreeNode);
29
+ makeObservable(): void;
30
+ get designerProps(): IDesignerProps;
31
+ get designerLocales(): IDesignerLocales;
32
+ get previous(): TreeNode;
33
+ get next(): TreeNode;
34
+ get siblings(): TreeNode[];
35
+ get index(): number;
36
+ get descendants(): TreeNode[];
37
+ get isRoot(): boolean;
38
+ get isInOperation(): boolean;
39
+ get lastChild(): TreeNode;
40
+ get firstChild(): TreeNode;
41
+ get isSourceNode(): boolean;
42
+ get operation(): Operation;
43
+ get viewport(): import("./Viewport").Viewport;
44
+ get outline(): import("./Viewport").Viewport;
45
+ get moveLayout(): "vertical" | "horizontal";
46
+ getElement(area?: 'viewport' | 'outline'): HTMLElement;
47
+ getValidElement(area?: 'viewport' | 'outline'): Element;
48
+ getElementRect(area?: 'viewport' | 'outline'): import("@thienvu18/designable-shared").Rect;
49
+ getValidElementRect(area?: 'viewport' | 'outline'): import("@thienvu18/designable-shared").Rect;
50
+ getElementOffsetRect(area?: 'viewport' | 'outline'): import("@thienvu18/designable-shared").Rect;
51
+ getValidElementOffsetRect(area?: 'viewport' | 'outline'): import("@thienvu18/designable-shared").Rect;
52
+ getPrevious(step?: number): TreeNode;
53
+ getAfter(step?: number): TreeNode;
54
+ getSibling(index?: number): TreeNode;
55
+ getParents(node?: TreeNode): TreeNode[];
56
+ getParentByDepth(depth?: number): any;
57
+ getMessage(token: string): any;
58
+ isMyAncestor(node: TreeNode): boolean;
59
+ isMyParent(node: TreeNode): boolean;
60
+ isMyParents(node: TreeNode): boolean;
61
+ isMyChild(node: TreeNode): boolean;
62
+ isMyChildren(node: TreeNode): boolean;
63
+ takeSnapshot(type?: string): void;
64
+ triggerMutation<T>(event: any, callback?: () => T, defaults?: T): T;
65
+ find(finder: INodeFinder): TreeNode;
66
+ findAll(finder: INodeFinder): TreeNode[];
67
+ distanceTo(node: TreeNode): number;
68
+ crossSiblings(node: TreeNode): TreeNode[];
69
+ allowSibling(nodes: TreeNode[]): boolean;
70
+ allowDrop(parent: TreeNode): boolean;
71
+ allowAppend(nodes: TreeNode[]): boolean;
72
+ allowClone(): boolean;
73
+ allowDrag(): boolean;
74
+ allowResize(): false | Array<'x' | 'y'>;
75
+ allowRotate(): void;
76
+ allowRound(): void;
77
+ allowScale(): void;
78
+ allowTranslate(): boolean;
79
+ allowDelete(): boolean;
80
+ findById(id: string): TreeNode;
81
+ contains(...nodes: TreeNode[]): boolean;
82
+ eachTree(callback?: (node: TreeNode) => void | boolean): void;
83
+ eachChildren(callback?: (node: TreeNode) => void | boolean): void;
84
+ resetNodesParent(nodes: TreeNode[], parent: TreeNode): TreeNode[];
85
+ setProps(props?: any): void;
86
+ setComponentName(componentName: string): void;
87
+ prepend(...nodes: TreeNode[]): TreeNode[];
88
+ append(...nodes: TreeNode[]): TreeNode[];
89
+ wrap(wrapper: TreeNode): TreeNode;
90
+ insertAfter(...nodes: TreeNode[]): TreeNode[];
91
+ insertBefore(...nodes: TreeNode[]): TreeNode[];
92
+ insertChildren(start: number, ...nodes: TreeNode[]): TreeNode[];
93
+ setChildren(...nodes: TreeNode[]): TreeNode[];
94
+ /**
95
+ * @deprecated
96
+ * please use `setChildren`
97
+ */
98
+ setNodeChildren(...nodes: TreeNode[]): TreeNode[];
99
+ remove(): void;
100
+ clone(parent?: TreeNode): TreeNode;
101
+ from(node?: ITreeNode): void;
102
+ serialize(): ITreeNode;
103
+ static create(node: ITreeNode, parent?: TreeNode): TreeNode;
104
+ static findById(id: string): TreeNode;
105
+ static remove(nodes?: TreeNode[]): void;
106
+ static sort(nodes?: TreeNode[]): TreeNode[];
107
+ static clone(nodes?: TreeNode[]): void;
108
+ static filterResizable(nodes?: TreeNode[]): TreeNode[];
109
+ static filterRotatable(nodes?: TreeNode[]): TreeNode[];
110
+ static filterScalable(nodes?: TreeNode[]): TreeNode[];
111
+ static filterRoundable(nodes?: TreeNode[]): TreeNode[];
112
+ static filterTranslatable(nodes?: TreeNode[]): TreeNode[];
113
+ static filterDraggable(nodes?: TreeNode[]): any[];
114
+ static filterDroppable(nodes: TreeNode[], parent: TreeNode): any[];
115
+ }