@thienvu18/designable-core 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/esm/drivers/DragDropDriver.d.ts +12 -12
  2. package/esm/drivers/DragDropDriver.js +127 -105
  3. package/esm/drivers/KeyboardDriver.d.ts +5 -5
  4. package/esm/drivers/KeyboardDriver.js +41 -40
  5. package/esm/drivers/MouseClickDriver.d.ts +6 -6
  6. package/esm/drivers/MouseClickDriver.js +55 -47
  7. package/esm/drivers/MouseMoveDriver.d.ts +6 -6
  8. package/esm/drivers/MouseMoveDriver.js +30 -28
  9. package/esm/drivers/ViewportResizeDriver.d.ts +9 -9
  10. package/esm/drivers/ViewportResizeDriver.js +56 -59
  11. package/esm/drivers/ViewportScrollDriver.d.ts +6 -6
  12. package/esm/drivers/ViewportScrollDriver.js +29 -27
  13. package/esm/drivers/index.d.ts +6 -6
  14. package/esm/drivers/index.js +6 -6
  15. package/esm/effects/index.d.ts +11 -11
  16. package/esm/effects/index.js +11 -11
  17. package/esm/effects/useAutoScrollEffect.d.ts +2 -2
  18. package/esm/effects/useAutoScrollEffect.js +70 -59
  19. package/esm/effects/useContentEditableEffect.d.ts +2 -2
  20. package/esm/effects/useContentEditableEffect.js +174 -150
  21. package/esm/effects/useCursorEffect.d.ts +2 -2
  22. package/esm/effects/useCursorEffect.js +58 -54
  23. package/esm/effects/useDragDropEffect.d.ts +2 -2
  24. package/esm/effects/useDragDropEffect.js +170 -145
  25. package/esm/effects/useFreeSelectionEffect.d.ts +2 -2
  26. package/esm/effects/useFreeSelectionEffect.js +58 -36
  27. package/esm/effects/useKeyboardEffect.d.ts +2 -2
  28. package/esm/effects/useKeyboardEffect.js +16 -16
  29. package/esm/effects/useResizeEffect.d.ts +2 -2
  30. package/esm/effects/useResizeEffect.js +84 -73
  31. package/esm/effects/useSelectionEffect.d.ts +2 -2
  32. package/esm/effects/useSelectionEffect.js +62 -65
  33. package/esm/effects/useTranslateEffect.d.ts +2 -2
  34. package/esm/effects/useTranslateEffect.js +55 -52
  35. package/esm/effects/useViewportEffect.d.ts +2 -2
  36. package/esm/effects/useViewportEffect.js +26 -28
  37. package/esm/effects/useWorkspaceEffect.d.ts +2 -2
  38. package/esm/effects/useWorkspaceEffect.js +30 -27
  39. package/esm/events/cursor/AbstractCursorEvent.d.ts +15 -15
  40. package/esm/events/cursor/AbstractCursorEvent.js +35 -33
  41. package/esm/events/cursor/DragMoveEvent.d.ts +7 -4
  42. package/esm/events/cursor/DragMoveEvent.js +5 -5
  43. package/esm/events/cursor/DragStartEvent.d.ts +7 -4
  44. package/esm/events/cursor/DragStartEvent.js +5 -5
  45. package/esm/events/cursor/DragStopEvent.d.ts +7 -4
  46. package/esm/events/cursor/DragStopEvent.js +5 -5
  47. package/esm/events/cursor/MouseClickEvent.d.ts +12 -6
  48. package/esm/events/cursor/MouseClickEvent.js +9 -9
  49. package/esm/events/cursor/MouseMoveEvent.d.ts +7 -4
  50. package/esm/events/cursor/MouseMoveEvent.js +5 -5
  51. package/esm/events/cursor/index.d.ts +5 -5
  52. package/esm/events/cursor/index.js +5 -5
  53. package/esm/events/history/AbstractHistoryEvent.d.ts +4 -4
  54. package/esm/events/history/AbstractHistoryEvent.js +3 -3
  55. package/esm/events/history/HistoryGotoEvent.d.ts +7 -4
  56. package/esm/events/history/HistoryGotoEvent.js +5 -5
  57. package/esm/events/history/HistoryPushEvent.d.ts +7 -4
  58. package/esm/events/history/HistoryPushEvent.js +5 -5
  59. package/esm/events/history/HistoryRedoEvent.d.ts +7 -4
  60. package/esm/events/history/HistoryRedoEvent.js +5 -5
  61. package/esm/events/history/HistoryUndoEvent.d.ts +7 -4
  62. package/esm/events/history/HistoryUndoEvent.js +5 -5
  63. package/esm/events/history/index.d.ts +4 -4
  64. package/esm/events/history/index.js +4 -4
  65. package/esm/events/index.d.ts +6 -6
  66. package/esm/events/index.js +6 -6
  67. package/esm/events/keyboard/AbstractKeyboardEvent.d.ts +13 -13
  68. package/esm/events/keyboard/AbstractKeyboardEvent.js +34 -36
  69. package/esm/events/keyboard/KeyDownEvent.d.ts +7 -4
  70. package/esm/events/keyboard/KeyDownEvent.js +5 -5
  71. package/esm/events/keyboard/KeyUpEvent.d.ts +7 -4
  72. package/esm/events/keyboard/KeyUpEvent.js +5 -5
  73. package/esm/events/keyboard/index.d.ts +2 -2
  74. package/esm/events/keyboard/index.js +2 -2
  75. package/esm/events/mutation/AbstractMutationNodeEvent.d.ts +9 -9
  76. package/esm/events/mutation/AbstractMutationNodeEvent.js +3 -3
  77. package/esm/events/mutation/AppendNodeEvent.d.ts +7 -4
  78. package/esm/events/mutation/AppendNodeEvent.js +5 -5
  79. package/esm/events/mutation/CloneNodeEvent.d.ts +7 -4
  80. package/esm/events/mutation/CloneNodeEvent.js +5 -5
  81. package/esm/events/mutation/DragNodeEvent.d.ts +7 -4
  82. package/esm/events/mutation/DragNodeEvent.js +5 -5
  83. package/esm/events/mutation/DropNodeEvent.d.ts +7 -4
  84. package/esm/events/mutation/DropNodeEvent.js +5 -5
  85. package/esm/events/mutation/FromNodeEvent.d.ts +9 -9
  86. package/esm/events/mutation/FromNodeEvent.js +4 -4
  87. package/esm/events/mutation/HoverNodeEvent.d.ts +7 -4
  88. package/esm/events/mutation/HoverNodeEvent.js +5 -5
  89. package/esm/events/mutation/InsertAfterEvent.d.ts +7 -4
  90. package/esm/events/mutation/InsertAfterEvent.js +5 -5
  91. package/esm/events/mutation/InsertBeforeEvent.d.ts +7 -4
  92. package/esm/events/mutation/InsertBeforeEvent.js +5 -5
  93. package/esm/events/mutation/InsertChildrenEvent.d.ts +7 -4
  94. package/esm/events/mutation/InsertChildrenEvent.js +5 -5
  95. package/esm/events/mutation/PrependNodeEvent.d.ts +7 -4
  96. package/esm/events/mutation/PrependNodeEvent.js +5 -5
  97. package/esm/events/mutation/RemoveNodeEvent.d.ts +7 -4
  98. package/esm/events/mutation/RemoveNodeEvent.js +5 -5
  99. package/esm/events/mutation/SelectNodeEvent.d.ts +7 -4
  100. package/esm/events/mutation/SelectNodeEvent.js +5 -5
  101. package/esm/events/mutation/UnSelectNodeEvent.d.ts +7 -4
  102. package/esm/events/mutation/UnSelectNodeEvent.js +5 -5
  103. package/esm/events/mutation/UpdateChildrenEvent.d.ts +7 -4
  104. package/esm/events/mutation/UpdateChildrenEvent.js +5 -5
  105. package/esm/events/mutation/UpdateNodePropsEvent.d.ts +7 -4
  106. package/esm/events/mutation/UpdateNodePropsEvent.js +5 -5
  107. package/esm/events/mutation/UserSelectNodeEvent.d.ts +7 -4
  108. package/esm/events/mutation/UserSelectNodeEvent.js +5 -5
  109. package/esm/events/mutation/WrapNodeEvent.d.ts +7 -4
  110. package/esm/events/mutation/WrapNodeEvent.js +5 -5
  111. package/esm/events/mutation/index.d.ts +16 -16
  112. package/esm/events/mutation/index.js +16 -16
  113. package/esm/events/viewport/AbstractViewportEvent.d.ts +12 -12
  114. package/esm/events/viewport/AbstractViewportEvent.js +12 -12
  115. package/esm/events/viewport/ViewportResizeEvent.d.ts +7 -4
  116. package/esm/events/viewport/ViewportResizeEvent.js +5 -5
  117. package/esm/events/viewport/ViewportScrollEvent.d.ts +7 -4
  118. package/esm/events/viewport/ViewportScrollEvent.js +5 -5
  119. package/esm/events/viewport/index.d.ts +2 -2
  120. package/esm/events/viewport/index.js +2 -2
  121. package/esm/events/workbench/AbstractWorkspaceEvent.d.ts +5 -5
  122. package/esm/events/workbench/AbstractWorkspaceEvent.js +3 -3
  123. package/esm/events/workbench/AddWorkspaceEvent.d.ts +7 -4
  124. package/esm/events/workbench/AddWorkspaceEvent.js +5 -5
  125. package/esm/events/workbench/RemoveWorkspaceEvent.d.ts +7 -4
  126. package/esm/events/workbench/RemoveWorkspaceEvent.js +5 -5
  127. package/esm/events/workbench/SwitchWorkspaceEvent.d.ts +7 -4
  128. package/esm/events/workbench/SwitchWorkspaceEvent.js +5 -5
  129. package/esm/events/workbench/index.d.ts +3 -3
  130. package/esm/events/workbench/index.js +3 -3
  131. package/esm/exports.d.ts +5 -5
  132. package/esm/exports.js +5 -5
  133. package/esm/externals.d.ts +25 -12
  134. package/esm/externals.js +57 -50
  135. package/esm/index.d.ts +1 -1
  136. package/esm/index.js +11 -12
  137. package/esm/internals.d.ts +3 -3
  138. package/esm/internals.js +34 -30
  139. package/esm/models/Cursor.d.ts +48 -48
  140. package/esm/models/Cursor.js +129 -125
  141. package/esm/models/Engine.d.ts +24 -24
  142. package/esm/models/Engine.js +73 -73
  143. package/esm/models/History.d.ts +26 -26
  144. package/esm/models/History.js +86 -87
  145. package/esm/models/Hover.d.ts +10 -10
  146. package/esm/models/Hover.js +33 -32
  147. package/esm/models/Keyboard.d.ts +25 -25
  148. package/esm/models/Keyboard.js +95 -94
  149. package/esm/models/MoveHelper.d.ts +57 -54
  150. package/esm/models/MoveHelper.js +304 -290
  151. package/esm/models/Operation.d.ts +25 -25
  152. package/esm/models/Operation.js +59 -60
  153. package/esm/models/Screen.d.ts +25 -25
  154. package/esm/models/Screen.js +67 -67
  155. package/esm/models/Selection.d.ts +25 -25
  156. package/esm/models/Selection.js +143 -149
  157. package/esm/models/Shortcut.d.ts +16 -16
  158. package/esm/models/Shortcut.js +56 -57
  159. package/esm/models/SnapLine.d.ts +24 -24
  160. package/esm/models/SnapLine.js +96 -105
  161. package/esm/models/SpaceBlock.d.ts +41 -36
  162. package/esm/models/SpaceBlock.js +154 -115
  163. package/esm/models/TransformHelper.d.ts +88 -74
  164. package/esm/models/TransformHelper.js +546 -450
  165. package/esm/models/TreeNode.d.ts +117 -109
  166. package/esm/models/TreeNode.js +743 -732
  167. package/esm/models/Viewport.d.ts +83 -81
  168. package/esm/models/Viewport.js +406 -384
  169. package/esm/models/Workbench.d.ts +21 -21
  170. package/esm/models/Workbench.js +90 -88
  171. package/esm/models/Workspace.d.ts +33 -33
  172. package/esm/models/Workspace.js +87 -83
  173. package/esm/models/index.d.ts +13 -13
  174. package/esm/models/index.js +13 -13
  175. package/esm/presets.d.ts +20 -4
  176. package/esm/presets.js +67 -35
  177. package/esm/registry.d.ts +21 -15
  178. package/esm/registry.js +106 -108
  179. package/esm/shortcuts/CursorSwitch.d.ts +2 -2
  180. package/esm/shortcuts/CursorSwitch.js +9 -9
  181. package/esm/shortcuts/MultiSelection.d.ts +5 -5
  182. package/esm/shortcuts/MultiSelection.js +23 -23
  183. package/esm/shortcuts/NodeMutation.d.ts +4 -4
  184. package/esm/shortcuts/NodeMutation.js +33 -33
  185. package/esm/shortcuts/QuickSelection.d.ts +3 -3
  186. package/esm/shortcuts/QuickSelection.js +71 -78
  187. package/esm/shortcuts/UndoRedo.d.ts +3 -3
  188. package/esm/shortcuts/UndoRedo.js +25 -25
  189. package/esm/shortcuts/index.d.ts +5 -5
  190. package/esm/shortcuts/index.js +5 -5
  191. package/esm/types.d.ts +138 -105
  192. package/esm/types.js +1 -1
  193. package/lib/drivers/DragDropDriver.d.ts +12 -12
  194. package/lib/drivers/DragDropDriver.js +131 -109
  195. package/lib/drivers/KeyboardDriver.d.ts +5 -5
  196. package/lib/drivers/KeyboardDriver.js +45 -44
  197. package/lib/drivers/MouseClickDriver.d.ts +6 -6
  198. package/lib/drivers/MouseClickDriver.js +59 -51
  199. package/lib/drivers/MouseMoveDriver.d.ts +6 -6
  200. package/lib/drivers/MouseMoveDriver.js +34 -32
  201. package/lib/drivers/ViewportResizeDriver.d.ts +9 -9
  202. package/lib/drivers/ViewportResizeDriver.js +69 -63
  203. package/lib/drivers/ViewportScrollDriver.d.ts +6 -6
  204. package/lib/drivers/ViewportScrollDriver.js +34 -31
  205. package/lib/drivers/index.d.ts +6 -6
  206. package/lib/drivers/index.js +38 -22
  207. package/lib/effects/index.d.ts +11 -11
  208. package/lib/effects/index.js +43 -27
  209. package/lib/effects/useAutoScrollEffect.d.ts +2 -2
  210. package/lib/effects/useAutoScrollEffect.js +81 -63
  211. package/lib/effects/useContentEditableEffect.d.ts +2 -2
  212. package/lib/effects/useContentEditableEffect.js +178 -154
  213. package/lib/effects/useCursorEffect.d.ts +2 -2
  214. package/lib/effects/useCursorEffect.js +57 -58
  215. package/lib/effects/useDragDropEffect.d.ts +2 -2
  216. package/lib/effects/useDragDropEffect.js +175 -149
  217. package/lib/effects/useFreeSelectionEffect.d.ts +2 -2
  218. package/lib/effects/useFreeSelectionEffect.js +60 -40
  219. package/lib/effects/useKeyboardEffect.d.ts +2 -2
  220. package/lib/effects/useKeyboardEffect.js +20 -20
  221. package/lib/effects/useResizeEffect.d.ts +2 -2
  222. package/lib/effects/useResizeEffect.js +88 -77
  223. package/lib/effects/useSelectionEffect.d.ts +2 -2
  224. package/lib/effects/useSelectionEffect.js +69 -69
  225. package/lib/effects/useTranslateEffect.d.ts +2 -2
  226. package/lib/effects/useTranslateEffect.js +59 -56
  227. package/lib/effects/useViewportEffect.d.ts +2 -2
  228. package/lib/effects/useViewportEffect.js +30 -32
  229. package/lib/effects/useWorkspaceEffect.d.ts +2 -2
  230. package/lib/effects/useWorkspaceEffect.js +34 -31
  231. package/lib/events/cursor/AbstractCursorEvent.d.ts +15 -15
  232. package/lib/events/cursor/AbstractCursorEvent.js +42 -37
  233. package/lib/events/cursor/DragMoveEvent.d.ts +7 -4
  234. package/lib/events/cursor/DragMoveEvent.js +9 -9
  235. package/lib/events/cursor/DragStartEvent.d.ts +7 -4
  236. package/lib/events/cursor/DragStartEvent.js +9 -9
  237. package/lib/events/cursor/DragStopEvent.d.ts +7 -4
  238. package/lib/events/cursor/DragStopEvent.js +9 -9
  239. package/lib/events/cursor/MouseClickEvent.d.ts +12 -6
  240. package/lib/events/cursor/MouseClickEvent.js +14 -14
  241. package/lib/events/cursor/MouseMoveEvent.d.ts +7 -4
  242. package/lib/events/cursor/MouseMoveEvent.js +9 -9
  243. package/lib/events/cursor/index.d.ts +5 -5
  244. package/lib/events/cursor/index.js +37 -21
  245. package/lib/events/history/AbstractHistoryEvent.d.ts +4 -4
  246. package/lib/events/history/AbstractHistoryEvent.js +7 -7
  247. package/lib/events/history/HistoryGotoEvent.d.ts +7 -4
  248. package/lib/events/history/HistoryGotoEvent.js +9 -9
  249. package/lib/events/history/HistoryPushEvent.d.ts +7 -4
  250. package/lib/events/history/HistoryPushEvent.js +9 -9
  251. package/lib/events/history/HistoryRedoEvent.d.ts +7 -4
  252. package/lib/events/history/HistoryRedoEvent.js +9 -9
  253. package/lib/events/history/HistoryUndoEvent.d.ts +7 -4
  254. package/lib/events/history/HistoryUndoEvent.js +9 -9
  255. package/lib/events/history/index.d.ts +4 -4
  256. package/lib/events/history/index.js +36 -20
  257. package/lib/events/index.d.ts +6 -6
  258. package/lib/events/index.js +38 -22
  259. package/lib/events/keyboard/AbstractKeyboardEvent.d.ts +13 -13
  260. package/lib/events/keyboard/AbstractKeyboardEvent.js +38 -40
  261. package/lib/events/keyboard/KeyDownEvent.d.ts +7 -4
  262. package/lib/events/keyboard/KeyDownEvent.js +9 -9
  263. package/lib/events/keyboard/KeyUpEvent.d.ts +7 -4
  264. package/lib/events/keyboard/KeyUpEvent.js +9 -9
  265. package/lib/events/keyboard/index.d.ts +2 -2
  266. package/lib/events/keyboard/index.js +34 -18
  267. package/lib/events/mutation/AbstractMutationNodeEvent.d.ts +9 -9
  268. package/lib/events/mutation/AbstractMutationNodeEvent.js +7 -7
  269. package/lib/events/mutation/AppendNodeEvent.d.ts +7 -4
  270. package/lib/events/mutation/AppendNodeEvent.js +9 -9
  271. package/lib/events/mutation/CloneNodeEvent.d.ts +7 -4
  272. package/lib/events/mutation/CloneNodeEvent.js +9 -9
  273. package/lib/events/mutation/DragNodeEvent.d.ts +7 -4
  274. package/lib/events/mutation/DragNodeEvent.js +9 -9
  275. package/lib/events/mutation/DropNodeEvent.d.ts +7 -4
  276. package/lib/events/mutation/DropNodeEvent.js +9 -9
  277. package/lib/events/mutation/FromNodeEvent.d.ts +9 -9
  278. package/lib/events/mutation/FromNodeEvent.js +8 -8
  279. package/lib/events/mutation/HoverNodeEvent.d.ts +7 -4
  280. package/lib/events/mutation/HoverNodeEvent.js +9 -9
  281. package/lib/events/mutation/InsertAfterEvent.d.ts +7 -4
  282. package/lib/events/mutation/InsertAfterEvent.js +9 -9
  283. package/lib/events/mutation/InsertBeforeEvent.d.ts +7 -4
  284. package/lib/events/mutation/InsertBeforeEvent.js +9 -9
  285. package/lib/events/mutation/InsertChildrenEvent.d.ts +7 -4
  286. package/lib/events/mutation/InsertChildrenEvent.js +9 -9
  287. package/lib/events/mutation/PrependNodeEvent.d.ts +7 -4
  288. package/lib/events/mutation/PrependNodeEvent.js +9 -9
  289. package/lib/events/mutation/RemoveNodeEvent.d.ts +7 -4
  290. package/lib/events/mutation/RemoveNodeEvent.js +9 -9
  291. package/lib/events/mutation/SelectNodeEvent.d.ts +7 -4
  292. package/lib/events/mutation/SelectNodeEvent.js +9 -9
  293. package/lib/events/mutation/UnSelectNodeEvent.d.ts +7 -4
  294. package/lib/events/mutation/UnSelectNodeEvent.js +9 -9
  295. package/lib/events/mutation/UpdateChildrenEvent.d.ts +7 -4
  296. package/lib/events/mutation/UpdateChildrenEvent.js +9 -9
  297. package/lib/events/mutation/UpdateNodePropsEvent.d.ts +7 -4
  298. package/lib/events/mutation/UpdateNodePropsEvent.js +9 -9
  299. package/lib/events/mutation/UserSelectNodeEvent.d.ts +7 -4
  300. package/lib/events/mutation/UserSelectNodeEvent.js +9 -9
  301. package/lib/events/mutation/WrapNodeEvent.d.ts +7 -4
  302. package/lib/events/mutation/WrapNodeEvent.js +9 -9
  303. package/lib/events/mutation/index.d.ts +16 -16
  304. package/lib/events/mutation/index.js +48 -32
  305. package/lib/events/viewport/AbstractViewportEvent.d.ts +12 -12
  306. package/lib/events/viewport/AbstractViewportEvent.js +16 -16
  307. package/lib/events/viewport/ViewportResizeEvent.d.ts +7 -4
  308. package/lib/events/viewport/ViewportResizeEvent.js +9 -9
  309. package/lib/events/viewport/ViewportScrollEvent.d.ts +7 -4
  310. package/lib/events/viewport/ViewportScrollEvent.js +9 -9
  311. package/lib/events/viewport/index.d.ts +2 -2
  312. package/lib/events/viewport/index.js +34 -18
  313. package/lib/events/workbench/AbstractWorkspaceEvent.d.ts +5 -5
  314. package/lib/events/workbench/AbstractWorkspaceEvent.js +7 -7
  315. package/lib/events/workbench/AddWorkspaceEvent.d.ts +7 -4
  316. package/lib/events/workbench/AddWorkspaceEvent.js +9 -9
  317. package/lib/events/workbench/RemoveWorkspaceEvent.d.ts +7 -4
  318. package/lib/events/workbench/RemoveWorkspaceEvent.js +9 -9
  319. package/lib/events/workbench/SwitchWorkspaceEvent.d.ts +7 -4
  320. package/lib/events/workbench/SwitchWorkspaceEvent.js +9 -9
  321. package/lib/events/workbench/index.d.ts +3 -3
  322. package/lib/events/workbench/index.js +35 -19
  323. package/lib/exports.d.ts +5 -5
  324. package/lib/exports.js +37 -21
  325. package/lib/externals.d.ts +25 -12
  326. package/lib/externals.js +81 -63
  327. package/lib/index.d.ts +1 -1
  328. package/lib/index.js +65 -40
  329. package/lib/internals.d.ts +3 -3
  330. package/lib/internals.js +43 -36
  331. package/lib/models/Cursor.d.ts +48 -48
  332. package/lib/models/Cursor.js +140 -129
  333. package/lib/models/Engine.d.ts +24 -24
  334. package/lib/models/Engine.js +77 -77
  335. package/lib/models/History.d.ts +26 -26
  336. package/lib/models/History.js +90 -91
  337. package/lib/models/Hover.d.ts +10 -10
  338. package/lib/models/Hover.js +37 -36
  339. package/lib/models/Keyboard.d.ts +25 -25
  340. package/lib/models/Keyboard.js +103 -98
  341. package/lib/models/MoveHelper.d.ts +57 -54
  342. package/lib/models/MoveHelper.js +316 -294
  343. package/lib/models/Operation.d.ts +25 -25
  344. package/lib/models/Operation.js +63 -64
  345. package/lib/models/Screen.d.ts +25 -25
  346. package/lib/models/Screen.js +71 -71
  347. package/lib/models/Selection.d.ts +25 -25
  348. package/lib/models/Selection.js +151 -153
  349. package/lib/models/Shortcut.d.ts +16 -16
  350. package/lib/models/Shortcut.js +65 -61
  351. package/lib/models/SnapLine.d.ts +24 -24
  352. package/lib/models/SnapLine.js +99 -109
  353. package/lib/models/SpaceBlock.d.ts +41 -36
  354. package/lib/models/SpaceBlock.js +156 -119
  355. package/lib/models/TransformHelper.d.ts +88 -74
  356. package/lib/models/TransformHelper.js +561 -454
  357. package/lib/models/TreeNode.d.ts +117 -109
  358. package/lib/models/TreeNode.js +739 -736
  359. package/lib/models/Viewport.d.ts +83 -81
  360. package/lib/models/Viewport.js +411 -388
  361. package/lib/models/Workbench.d.ts +21 -21
  362. package/lib/models/Workbench.js +92 -92
  363. package/lib/models/Workspace.d.ts +33 -33
  364. package/lib/models/Workspace.js +86 -87
  365. package/lib/models/index.d.ts +13 -13
  366. package/lib/models/index.js +45 -29
  367. package/lib/presets.d.ts +20 -4
  368. package/lib/presets.js +41 -38
  369. package/lib/registry.d.ts +21 -15
  370. package/lib/registry.js +112 -111
  371. package/lib/shortcuts/CursorSwitch.d.ts +2 -2
  372. package/lib/shortcuts/CursorSwitch.js +12 -12
  373. package/lib/shortcuts/MultiSelection.d.ts +5 -5
  374. package/lib/shortcuts/MultiSelection.js +30 -26
  375. package/lib/shortcuts/NodeMutation.d.ts +4 -4
  376. package/lib/shortcuts/NodeMutation.js +36 -36
  377. package/lib/shortcuts/QuickSelection.d.ts +3 -3
  378. package/lib/shortcuts/QuickSelection.js +74 -81
  379. package/lib/shortcuts/UndoRedo.d.ts +3 -3
  380. package/lib/shortcuts/UndoRedo.js +28 -28
  381. package/lib/shortcuts/index.d.ts +5 -5
  382. package/lib/shortcuts/index.js +37 -21
  383. package/lib/types.d.ts +138 -105
  384. package/lib/types.js +2 -2
  385. package/package.json +18 -18
@@ -1,393 +1,415 @@
1
- import { calcBoundingRect, calcElementLayout, isHTMLElement, isPointInRect, requestIdle, cancelIdle, globalThisPolyfill, Rect, isRectInRect, } from '@thienvu18/designable-shared';
2
- import { action, define, observable } from '@formily/reactive';
1
+ import { action, define, observable } from '@formily/reactive'
2
+ import {
3
+ Rect,
4
+ calcBoundingRect,
5
+ calcElementLayout,
6
+ cancelIdle,
7
+ globalThisPolyfill,
8
+ isHTMLElement,
9
+ isPointInRect,
10
+ isRectInRect,
11
+ requestIdle,
12
+ } from '@thienvu18/designable-shared'
3
13
  /**
4
14
  * 视口模型
5
15
  */
6
16
  export class Viewport {
7
- constructor(props) {
8
- this.scrollX = 0;
9
- this.scrollY = 0;
10
- this.width = 0;
11
- this.height = 0;
12
- this.mounted = false;
13
- this.nodeElementsStore = {};
14
- this.workspace = props.workspace;
15
- this.engine = props.engine;
16
- this.moveSensitive = props.moveSensitive ?? false;
17
- this.moveInsertionType = props.moveInsertionType ?? 'all';
18
- this.viewportElement = props.viewportElement;
19
- this.contentWindow = props.contentWindow;
20
- this.nodeIdAttrName = props.nodeIdAttrName;
21
- this.digestViewport();
22
- this.makeObservable();
23
- this.attachEvents();
24
- }
25
- get isScrollLeft() {
26
- return this.scrollX === 0;
27
- }
28
- get isScrollTop() {
29
- return this.scrollY === 0;
30
- }
31
- get isScrollRight() {
32
- if (this.isIframe) {
33
- return (this.width + this.contentWindow.scrollX >=
34
- this.contentWindow?.document?.body?.scrollWidth);
35
- }
36
- else if (this.viewportElement) {
37
- return (this.viewportElement.offsetWidth + this.scrollX >=
38
- this.viewportElement.scrollWidth);
39
- }
40
- }
41
- get isScrollBottom() {
42
- if (this.isIframe) {
43
- if (!this.contentWindow?.document?.body)
44
- return false;
45
- return (this.height + this.contentWindow.scrollY >=
46
- this.contentWindow.document.body.scrollHeight);
47
- }
48
- else if (this.viewportElement) {
49
- if (!this.viewportElement)
50
- return false;
51
- return (this.viewportElement.offsetHeight + this.viewportElement.scrollTop >=
52
- this.viewportElement.scrollHeight);
53
- }
54
- }
55
- get viewportRoot() {
56
- return this.isIframe
57
- ? this.contentWindow?.document?.body
58
- : this.viewportElement;
59
- }
60
- get isMaster() {
61
- return this.contentWindow === globalThisPolyfill;
62
- }
63
- get isIframe() {
64
- return !!this.contentWindow?.frameElement && !this.isMaster;
65
- }
66
- get scrollContainer() {
67
- return this.isIframe ? this.contentWindow : this.viewportElement;
68
- }
69
- get rect() {
70
- const viewportElement = this.viewportElement;
71
- if (viewportElement)
72
- return viewportElement.getBoundingClientRect();
73
- }
74
- get innerRect() {
75
- const rect = this.rect;
76
- return new Rect(0, 0, rect?.width, rect?.height);
77
- }
78
- get offsetX() {
79
- const rect = this.rect;
80
- if (!rect)
81
- return 0;
82
- return rect.x;
83
- }
84
- get offsetY() {
85
- const rect = this.rect;
86
- if (!rect)
87
- return 0;
88
- return rect.y;
89
- }
90
- get scale() {
91
- if (!this.viewportElement)
92
- return 1;
93
- const clientRect = this.viewportElement.getBoundingClientRect();
94
- const offsetWidth = this.viewportElement.offsetWidth;
95
- if (!clientRect.width || !offsetWidth)
96
- return 1;
97
- return Math.round(clientRect.width / offsetWidth);
98
- }
99
- get dragScrollXDelta() {
100
- return this.scrollX - this.dragStartSnapshot.scrollX;
101
- }
102
- get dragScrollYDelta() {
103
- return this.scrollY - this.dragStartSnapshot.scrollY;
104
- }
105
- cacheElements() {
106
- this.nodeElementsStore = {};
107
- this.viewportRoot
108
- ?.querySelectorAll(`*[${this.nodeIdAttrName}]`)
109
- .forEach((element) => {
110
- const id = element.getAttribute(this.nodeIdAttrName);
111
- this.nodeElementsStore[id] = this.nodeElementsStore[id] || [];
112
- this.nodeElementsStore[id].push(element);
113
- });
114
- }
115
- clearCache() {
116
- this.nodeElementsStore = {};
117
- }
118
- getCurrentData() {
119
- const data = {};
120
- if (this.isIframe) {
121
- data.scrollX = this.contentWindow?.scrollX || 0;
122
- data.scrollY = this.contentWindow?.scrollY || 0;
123
- data.width = this.contentWindow?.innerWidth || 0;
124
- data.height = this.contentWindow?.innerHeight || 0;
125
- }
126
- else if (this.viewportElement) {
127
- data.scrollX = this.viewportElement?.scrollLeft || 0;
128
- data.scrollY = this.viewportElement?.scrollTop || 0;
129
- data.width = this.viewportElement?.clientWidth || 0;
130
- data.height = this.viewportElement?.clientHeight || 0;
131
- }
132
- return data;
133
- }
134
- takeDragStartSnapshot() {
135
- this.dragStartSnapshot = this.getCurrentData();
136
- }
137
- digestViewport() {
138
- Object.assign(this, this.getCurrentData());
139
- }
140
- elementFromPoint(point) {
141
- if (this.contentWindow?.document) {
142
- return this.contentWindow.document.elementFromPoint(point.x, point.y);
143
- }
144
- }
145
- matchViewport(target) {
146
- if (this.isIframe) {
147
- return (target === this.viewportElement ||
148
- target === this.contentWindow ||
149
- target === this.contentWindow?.document);
150
- }
151
- else {
152
- return target === this.viewportElement;
153
- }
154
- }
155
- attachEvents() {
156
- const engine = this.engine;
157
- cancelIdle(this.attachRequest);
158
- this.attachRequest = requestIdle(() => {
159
- if (!engine)
160
- return;
161
- if (this.isIframe) {
162
- this.workspace.attachEvents(this.contentWindow, this.contentWindow);
163
- }
164
- else if (isHTMLElement(this.viewportElement)) {
165
- this.workspace.attachEvents(this.viewportElement, this.contentWindow);
166
- }
167
- });
168
- }
169
- detachEvents() {
170
- if (this.isIframe) {
171
- this.workspace.detachEvents(this.contentWindow);
172
- this.workspace.detachEvents(this.viewportElement);
173
- }
174
- else if (this.viewportElement) {
175
- this.workspace.detachEvents(this.viewportElement);
176
- }
177
- }
178
- onMount(element, contentWindow) {
179
- this.mounted = true;
180
- this.viewportElement = element;
181
- this.contentWindow = contentWindow;
182
- this.attachEvents();
183
- this.digestViewport();
184
- }
185
- onUnmount() {
186
- this.mounted = false;
187
- this.detachEvents();
188
- }
189
- isPointInViewport(point, sensitive) {
190
- if (!this.rect)
191
- return false;
192
- if (!this.containsElement(document.elementFromPoint(point.x, point.y))) {
193
- return false;
194
- }
195
- return isPointInRect(point, this.rect, sensitive);
196
- }
197
- isRectInViewport(rect) {
198
- if (!this.rect)
199
- return false;
200
- if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
201
- return false;
202
- }
203
- return isRectInRect(rect, this.rect);
204
- }
205
- isPointInViewportArea(point, sensitive) {
206
- if (!this.rect)
207
- return false;
208
- return isPointInRect(point, this.rect, sensitive);
209
- }
210
- isOffsetPointInViewport(point, sensitive) {
211
- if (!this.innerRect)
212
- return false;
213
- if (!this.containsElement(document.elementFromPoint(point.x, point.y)))
214
- return false;
215
- return isPointInRect(point, this.innerRect, sensitive);
216
- }
217
- isOffsetRectInViewport(rect) {
218
- if (!this.innerRect)
219
- return false;
220
- if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
221
- return false;
222
- }
223
- return isRectInRect(rect, this.innerRect);
224
- }
225
- makeObservable() {
226
- define(this, {
227
- scrollX: observable.ref,
228
- scrollY: observable.ref,
229
- width: observable.ref,
230
- height: observable.ref,
231
- digestViewport: action,
232
- viewportElement: observable.ref,
233
- contentWindow: observable.ref,
234
- });
235
- }
236
- findElementById(id) {
237
- if (!id)
238
- return;
239
- if (this.nodeElementsStore[id])
240
- return this.nodeElementsStore[id][0];
241
- return this.viewportRoot?.querySelector(`*[${this.nodeIdAttrName}='${id}']`);
242
- }
243
- findElementsById(id) {
244
- if (!id)
245
- return [];
246
- if (this.nodeElementsStore[id])
247
- return this.nodeElementsStore[id];
248
- return Array.from(this.viewportRoot?.querySelectorAll(`*[${this.nodeIdAttrName}='${id}']`) ?? []);
249
- }
250
- containsElement(element) {
251
- let root = this.viewportElement;
252
- if (root === element)
253
- return true;
254
- return root?.contains(element);
255
- }
256
- getOffsetPoint(topPoint) {
257
- const data = this.getCurrentData();
258
- return {
259
- x: topPoint.x - this.offsetX + data.scrollX,
260
- y: topPoint.y - this.offsetY + data.scrollY,
261
- };
262
- }
263
- //相对于页面
264
- getElementRect(element) {
265
- const rect = element.getBoundingClientRect();
266
- const offsetWidth = element['offsetWidth']
267
- ? element['offsetWidth']
268
- : rect.width;
269
- const offsetHeight = element['offsetHeight']
270
- ? element['offsetHeight']
271
- : rect.height;
272
- return new Rect(rect.x, rect.y, this.scale !== 1 ? offsetWidth : rect.width, this.scale !== 1 ? offsetHeight : rect.height);
273
- }
274
- //相对于页面
275
- getElementRectById(id) {
276
- const elements = this.findElementsById(id);
277
- const rect = calcBoundingRect(elements.map((element) => this.getElementRect(element)));
17
+ constructor(props) {
18
+ this.scrollX = 0
19
+ this.scrollY = 0
20
+ this.width = 0
21
+ this.height = 0
22
+ this.mounted = false
23
+ this.nodeElementsStore = {}
24
+ this.workspace = props.workspace
25
+ this.engine = props.engine
26
+ this.moveSensitive = props.moveSensitive ?? false
27
+ this.moveInsertionType = props.moveInsertionType ?? 'all'
28
+ this.viewportElement = props.viewportElement
29
+ this.contentWindow = props.contentWindow
30
+ this.nodeIdAttrName = props.nodeIdAttrName
31
+ this.digestViewport()
32
+ this.makeObservable()
33
+ this.attachEvents()
34
+ }
35
+ get isScrollLeft() {
36
+ return this.scrollX === 0
37
+ }
38
+ get isScrollTop() {
39
+ return this.scrollY === 0
40
+ }
41
+ get isScrollRight() {
42
+ if (this.isIframe) {
43
+ return (
44
+ this.width + this.contentWindow.scrollX >=
45
+ this.contentWindow?.document?.body?.scrollWidth
46
+ )
47
+ } else if (this.viewportElement) {
48
+ return (
49
+ this.viewportElement.offsetWidth + this.scrollX >=
50
+ this.viewportElement.scrollWidth
51
+ )
52
+ }
53
+ }
54
+ get isScrollBottom() {
55
+ if (this.isIframe) {
56
+ if (!this.contentWindow?.document?.body) return false
57
+ return (
58
+ this.height + this.contentWindow.scrollY >=
59
+ this.contentWindow.document.body.scrollHeight
60
+ )
61
+ } else if (this.viewportElement) {
62
+ if (!this.viewportElement) return false
63
+ return (
64
+ this.viewportElement.offsetHeight + this.viewportElement.scrollTop >=
65
+ this.viewportElement.scrollHeight
66
+ )
67
+ }
68
+ }
69
+ get viewportRoot() {
70
+ return this.isIframe
71
+ ? this.contentWindow?.document?.body
72
+ : this.viewportElement
73
+ }
74
+ get isMaster() {
75
+ return this.contentWindow === globalThisPolyfill
76
+ }
77
+ get isIframe() {
78
+ return !!this.contentWindow?.frameElement && !this.isMaster
79
+ }
80
+ get scrollContainer() {
81
+ return this.isIframe ? this.contentWindow : this.viewportElement
82
+ }
83
+ get rect() {
84
+ const viewportElement = this.viewportElement
85
+ if (viewportElement) return viewportElement.getBoundingClientRect()
86
+ }
87
+ get innerRect() {
88
+ const rect = this.rect
89
+ return new Rect(0, 0, rect?.width, rect?.height)
90
+ }
91
+ get offsetX() {
92
+ const rect = this.rect
93
+ if (!rect) return 0
94
+ return rect.x
95
+ }
96
+ get offsetY() {
97
+ const rect = this.rect
98
+ if (!rect) return 0
99
+ return rect.y
100
+ }
101
+ get scale() {
102
+ if (!this.viewportElement) return 1
103
+ const clientRect = this.viewportElement.getBoundingClientRect()
104
+ const offsetWidth = this.viewportElement.offsetWidth
105
+ if (!clientRect.width || !offsetWidth) return 1
106
+ return Math.round(clientRect.width / offsetWidth)
107
+ }
108
+ get dragScrollXDelta() {
109
+ return this.scrollX - this.dragStartSnapshot.scrollX
110
+ }
111
+ get dragScrollYDelta() {
112
+ return this.scrollY - this.dragStartSnapshot.scrollY
113
+ }
114
+ cacheElements() {
115
+ this.nodeElementsStore = {}
116
+ this.viewportRoot
117
+ ?.querySelectorAll(`*[${this.nodeIdAttrName}]`)
118
+ .forEach((element) => {
119
+ const id = element.getAttribute(this.nodeIdAttrName)
120
+ this.nodeElementsStore[id] = this.nodeElementsStore[id] || []
121
+ this.nodeElementsStore[id].push(element)
122
+ })
123
+ }
124
+ clearCache() {
125
+ this.nodeElementsStore = {}
126
+ }
127
+ getCurrentData() {
128
+ const data = {}
129
+ if (this.isIframe) {
130
+ data.scrollX = this.contentWindow?.scrollX || 0
131
+ data.scrollY = this.contentWindow?.scrollY || 0
132
+ data.width = this.contentWindow?.innerWidth || 0
133
+ data.height = this.contentWindow?.innerHeight || 0
134
+ } else if (this.viewportElement) {
135
+ data.scrollX = this.viewportElement?.scrollLeft || 0
136
+ data.scrollY = this.viewportElement?.scrollTop || 0
137
+ data.width = this.viewportElement?.clientWidth || 0
138
+ data.height = this.viewportElement?.clientHeight || 0
139
+ }
140
+ return data
141
+ }
142
+ takeDragStartSnapshot() {
143
+ this.dragStartSnapshot = this.getCurrentData()
144
+ }
145
+ digestViewport() {
146
+ Object.assign(this, this.getCurrentData())
147
+ }
148
+ elementFromPoint(point) {
149
+ if (this.contentWindow?.document) {
150
+ return this.contentWindow.document.elementFromPoint(point.x, point.y)
151
+ }
152
+ }
153
+ matchViewport(target) {
154
+ if (this.isIframe) {
155
+ return (
156
+ target === this.viewportElement ||
157
+ target === this.contentWindow ||
158
+ target === this.contentWindow?.document
159
+ )
160
+ } else {
161
+ return target === this.viewportElement
162
+ }
163
+ }
164
+ attachEvents() {
165
+ const engine = this.engine
166
+ cancelIdle(this.attachRequest)
167
+ this.attachRequest = requestIdle(() => {
168
+ if (!engine) return
169
+ if (this.isIframe) {
170
+ this.workspace.attachEvents(this.contentWindow, this.contentWindow)
171
+ } else if (isHTMLElement(this.viewportElement)) {
172
+ this.workspace.attachEvents(this.viewportElement, this.contentWindow)
173
+ }
174
+ })
175
+ }
176
+ detachEvents() {
177
+ if (this.isIframe) {
178
+ this.workspace.detachEvents(this.contentWindow)
179
+ this.workspace.detachEvents(this.viewportElement)
180
+ } else if (this.viewportElement) {
181
+ this.workspace.detachEvents(this.viewportElement)
182
+ }
183
+ }
184
+ onMount(element, contentWindow) {
185
+ this.mounted = true
186
+ this.viewportElement = element
187
+ this.contentWindow = contentWindow
188
+ this.attachEvents()
189
+ this.digestViewport()
190
+ }
191
+ onUnmount() {
192
+ this.mounted = false
193
+ this.detachEvents()
194
+ }
195
+ isPointInViewport(point, sensitive) {
196
+ if (!this.rect) return false
197
+ if (!this.containsElement(document.elementFromPoint(point.x, point.y))) {
198
+ return false
199
+ }
200
+ return isPointInRect(point, this.rect, sensitive)
201
+ }
202
+ isRectInViewport(rect) {
203
+ if (!this.rect) return false
204
+ if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
205
+ return false
206
+ }
207
+ return isRectInRect(rect, this.rect)
208
+ }
209
+ isPointInViewportArea(point, sensitive) {
210
+ if (!this.rect) return false
211
+ return isPointInRect(point, this.rect, sensitive)
212
+ }
213
+ isOffsetPointInViewport(point, sensitive) {
214
+ if (!this.innerRect) return false
215
+ if (!this.containsElement(document.elementFromPoint(point.x, point.y)))
216
+ return false
217
+ return isPointInRect(point, this.innerRect, sensitive)
218
+ }
219
+ isOffsetRectInViewport(rect) {
220
+ if (!this.innerRect) return false
221
+ if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
222
+ return false
223
+ }
224
+ return isRectInRect(rect, this.innerRect)
225
+ }
226
+ makeObservable() {
227
+ define(this, {
228
+ scrollX: observable.ref,
229
+ scrollY: observable.ref,
230
+ width: observable.ref,
231
+ height: observable.ref,
232
+ digestViewport: action,
233
+ viewportElement: observable.ref,
234
+ contentWindow: observable.ref,
235
+ })
236
+ }
237
+ findElementById(id) {
238
+ if (!id) return
239
+ if (this.nodeElementsStore[id]) return this.nodeElementsStore[id][0]
240
+ return this.viewportRoot?.querySelector(`*[${this.nodeIdAttrName}='${id}']`)
241
+ }
242
+ findElementsById(id) {
243
+ if (!id) return []
244
+ if (this.nodeElementsStore[id]) return this.nodeElementsStore[id]
245
+ return Array.from(
246
+ this.viewportRoot?.querySelectorAll(
247
+ `*[${this.nodeIdAttrName}='${id}']`
248
+ ) ?? []
249
+ )
250
+ }
251
+ containsElement(element) {
252
+ let root = this.viewportElement
253
+ if (root === element) return true
254
+ return root?.contains(element)
255
+ }
256
+ getOffsetPoint(topPoint) {
257
+ const data = this.getCurrentData()
258
+ return {
259
+ x: topPoint.x - this.offsetX + data.scrollX,
260
+ y: topPoint.y - this.offsetY + data.scrollY,
261
+ }
262
+ }
263
+ //相对于页面
264
+ getElementRect(element) {
265
+ const rect = element.getBoundingClientRect()
266
+ const offsetWidth = element['offsetWidth']
267
+ ? element['offsetWidth']
268
+ : rect.width
269
+ const offsetHeight = element['offsetHeight']
270
+ ? element['offsetHeight']
271
+ : rect.height
272
+ return new Rect(
273
+ rect.x,
274
+ rect.y,
275
+ this.scale !== 1 ? offsetWidth : rect.width,
276
+ this.scale !== 1 ? offsetHeight : rect.height
277
+ )
278
+ }
279
+ //相对于页面
280
+ getElementRectById(id) {
281
+ const elements = this.findElementsById(id)
282
+ const rect = calcBoundingRect(
283
+ elements.map((element) => this.getElementRect(element))
284
+ )
285
+ if (rect) {
286
+ if (this.isIframe) {
287
+ return new Rect(
288
+ rect.x + this.offsetX,
289
+ rect.y + this.offsetY,
290
+ rect.width,
291
+ rect.height
292
+ )
293
+ } else {
294
+ return new Rect(rect.x, rect.y, rect.width, rect.height)
295
+ }
296
+ }
297
+ }
298
+ //相对于视口
299
+ getElementOffsetRect(element) {
300
+ const elementRect = element.getBoundingClientRect()
301
+ if (elementRect) {
302
+ if (this.isIframe) {
303
+ return new Rect(
304
+ elementRect.x + this.contentWindow.scrollX,
305
+ elementRect.y + this.contentWindow.scrollY,
306
+ elementRect.width,
307
+ elementRect.height
308
+ )
309
+ } else {
310
+ return new Rect(
311
+ (elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
312
+ this.scale,
313
+ (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
314
+ this.scale,
315
+ elementRect.width,
316
+ elementRect.height
317
+ )
318
+ }
319
+ }
320
+ }
321
+ //相对于视口
322
+ getElementOffsetRectById(id) {
323
+ const elements = this.findElementsById(id)
324
+ if (!elements.length) return
325
+ const elementRect = calcBoundingRect(
326
+ elements.map((element) => this.getElementRect(element))
327
+ )
328
+ if (elementRect) {
329
+ if (this.isIframe) {
330
+ return new Rect(
331
+ elementRect.x + this.contentWindow.scrollX,
332
+ elementRect.y + this.contentWindow.scrollY,
333
+ elementRect.width,
334
+ elementRect.height
335
+ )
336
+ } else {
337
+ return new Rect(
338
+ (elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
339
+ this.scale,
340
+ (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
341
+ this.scale,
342
+ elementRect.width,
343
+ elementRect.height
344
+ )
345
+ }
346
+ }
347
+ }
348
+ getValidNodeElement(node) {
349
+ const getNodeElement = (node) => {
350
+ if (!node) return
351
+ const ele = this.findElementById(node.id)
352
+ if (ele) {
353
+ return ele
354
+ } else {
355
+ return getNodeElement(node.parent)
356
+ }
357
+ }
358
+ return getNodeElement(node)
359
+ }
360
+ getChildrenRect(node) {
361
+ if (!node?.children?.length) return
362
+ return calcBoundingRect(
363
+ node.children.reduce((buf, child) => {
364
+ const rect = this.getValidNodeRect(child)
278
365
  if (rect) {
279
- if (this.isIframe) {
280
- return new Rect(rect.x + this.offsetX, rect.y + this.offsetY, rect.width, rect.height);
281
- }
282
- else {
283
- return new Rect(rect.x, rect.y, rect.width, rect.height);
284
- }
285
- }
286
- }
287
- //相对于视口
288
- getElementOffsetRect(element) {
289
- const elementRect = element.getBoundingClientRect();
290
- if (elementRect) {
291
- if (this.isIframe) {
292
- return new Rect(elementRect.x + this.contentWindow.scrollX, elementRect.y + this.contentWindow.scrollY, elementRect.width, elementRect.height);
293
- }
294
- else {
295
- return new Rect((elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
296
- this.scale, (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
297
- this.scale, elementRect.width, elementRect.height);
298
- }
299
- }
300
- }
301
- //相对于视口
302
- getElementOffsetRectById(id) {
303
- const elements = this.findElementsById(id);
304
- if (!elements.length)
305
- return;
306
- const elementRect = calcBoundingRect(elements.map((element) => this.getElementRect(element)));
307
- if (elementRect) {
308
- if (this.isIframe) {
309
- return new Rect(elementRect.x + this.contentWindow.scrollX, elementRect.y + this.contentWindow.scrollY, elementRect.width, elementRect.height);
310
- }
311
- else {
312
- return new Rect((elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
313
- this.scale, (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
314
- this.scale, elementRect.width, elementRect.height);
315
- }
316
- }
317
- }
318
- getValidNodeElement(node) {
319
- const getNodeElement = (node) => {
320
- if (!node)
321
- return;
322
- const ele = this.findElementById(node.id);
323
- if (ele) {
324
- return ele;
325
- }
326
- else {
327
- return getNodeElement(node.parent);
328
- }
329
- };
330
- return getNodeElement(node);
331
- }
332
- getChildrenRect(node) {
333
- if (!node?.children?.length)
334
- return;
335
- return calcBoundingRect(node.children.reduce((buf, child) => {
336
- const rect = this.getValidNodeRect(child);
337
- if (rect) {
338
- return buf.concat(rect);
339
- }
340
- return buf;
341
- }, []));
342
- }
343
- getChildrenOffsetRect(node) {
344
- if (!node?.children?.length)
345
- return;
346
- return calcBoundingRect(node.children.reduce((buf, child) => {
347
- const rect = this.getValidNodeOffsetRect(child);
348
- if (rect) {
349
- return buf.concat(rect);
350
- }
351
- return buf;
352
- }, []));
353
- }
354
- getValidNodeRect(node) {
355
- if (!node)
356
- return;
357
- const rect = this.getElementRectById(node.id);
358
- if (node && node === node.root && node.isInOperation) {
359
- if (!rect)
360
- return this.rect;
361
- return calcBoundingRect([this.rect, rect]);
366
+ return buf.concat(rect)
362
367
  }
368
+ return buf
369
+ }, [])
370
+ )
371
+ }
372
+ getChildrenOffsetRect(node) {
373
+ if (!node?.children?.length) return
374
+ return calcBoundingRect(
375
+ node.children.reduce((buf, child) => {
376
+ const rect = this.getValidNodeOffsetRect(child)
363
377
  if (rect) {
364
- return rect;
378
+ return buf.concat(rect)
365
379
  }
366
- else {
367
- return this.getChildrenRect(node);
368
- }
369
- }
370
- getValidNodeOffsetRect(node) {
371
- if (!node)
372
- return;
373
- const rect = this.getElementOffsetRectById(node.id);
374
- if (node && node === node.root && node.isInOperation) {
375
- if (!rect)
376
- return this.innerRect;
377
- return calcBoundingRect([this.innerRect, rect]);
378
- }
379
- if (rect) {
380
- return rect;
381
- }
382
- else {
383
- return this.getChildrenOffsetRect(node);
384
- }
385
- }
386
- getValidNodeLayout(node) {
387
- if (!node)
388
- return 'vertical';
389
- if (node.parent?.designerProps?.inlineChildrenLayout)
390
- return 'horizontal';
391
- return calcElementLayout(this.findElementById(node.id));
392
- }
380
+ return buf
381
+ }, [])
382
+ )
383
+ }
384
+ getValidNodeRect(node) {
385
+ if (!node) return
386
+ const rect = this.getElementRectById(node.id)
387
+ if (node && node === node.root && node.isInOperation) {
388
+ if (!rect) return this.rect
389
+ return calcBoundingRect([this.rect, rect])
390
+ }
391
+ if (rect) {
392
+ return rect
393
+ } else {
394
+ return this.getChildrenRect(node)
395
+ }
396
+ }
397
+ getValidNodeOffsetRect(node) {
398
+ if (!node) return
399
+ const rect = this.getElementOffsetRectById(node.id)
400
+ if (node && node === node.root && node.isInOperation) {
401
+ if (!rect) return this.innerRect
402
+ return calcBoundingRect([this.innerRect, rect])
403
+ }
404
+ if (rect) {
405
+ return rect
406
+ } else {
407
+ return this.getChildrenOffsetRect(node)
408
+ }
409
+ }
410
+ getValidNodeLayout(node) {
411
+ if (!node) return 'vertical'
412
+ if (node.parent?.designerProps?.inlineChildrenLayout) return 'horizontal'
413
+ return calcElementLayout(this.findElementById(node.id))
414
+ }
393
415
  }