@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,397 +1,420 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Viewport = void 0;
4
- const designable_shared_1 = require("@thienvu18/designable-shared");
5
- const reactive_1 = require("@formily/reactive");
1
+ 'use strict'
2
+ Object.defineProperty(exports, '__esModule', { value: true })
3
+ exports.Viewport = void 0
4
+ const designable_shared_1 = require('@thienvu18/designable-shared')
5
+ const reactive_1 = require('@formily/reactive')
6
6
  /**
7
7
  * 视口模型
8
8
  */
9
9
  class Viewport {
10
- constructor(props) {
11
- this.scrollX = 0;
12
- this.scrollY = 0;
13
- this.width = 0;
14
- this.height = 0;
15
- this.mounted = false;
16
- this.nodeElementsStore = {};
17
- this.workspace = props.workspace;
18
- this.engine = props.engine;
19
- this.moveSensitive = props.moveSensitive ?? false;
20
- this.moveInsertionType = props.moveInsertionType ?? 'all';
21
- this.viewportElement = props.viewportElement;
22
- this.contentWindow = props.contentWindow;
23
- this.nodeIdAttrName = props.nodeIdAttrName;
24
- this.digestViewport();
25
- this.makeObservable();
26
- this.attachEvents();
27
- }
28
- get isScrollLeft() {
29
- return this.scrollX === 0;
30
- }
31
- get isScrollTop() {
32
- return this.scrollY === 0;
33
- }
34
- get isScrollRight() {
35
- if (this.isIframe) {
36
- return (this.width + this.contentWindow.scrollX >=
37
- this.contentWindow?.document?.body?.scrollWidth);
38
- }
39
- else if (this.viewportElement) {
40
- return (this.viewportElement.offsetWidth + this.scrollX >=
41
- this.viewportElement.scrollWidth);
42
- }
43
- }
44
- get isScrollBottom() {
45
- if (this.isIframe) {
46
- if (!this.contentWindow?.document?.body)
47
- return false;
48
- return (this.height + this.contentWindow.scrollY >=
49
- this.contentWindow.document.body.scrollHeight);
50
- }
51
- else if (this.viewportElement) {
52
- if (!this.viewportElement)
53
- return false;
54
- return (this.viewportElement.offsetHeight + this.viewportElement.scrollTop >=
55
- this.viewportElement.scrollHeight);
56
- }
57
- }
58
- get viewportRoot() {
59
- return this.isIframe
60
- ? this.contentWindow?.document?.body
61
- : this.viewportElement;
62
- }
63
- get isMaster() {
64
- return this.contentWindow === designable_shared_1.globalThisPolyfill;
65
- }
66
- get isIframe() {
67
- return !!this.contentWindow?.frameElement && !this.isMaster;
68
- }
69
- get scrollContainer() {
70
- return this.isIframe ? this.contentWindow : this.viewportElement;
71
- }
72
- get rect() {
73
- const viewportElement = this.viewportElement;
74
- if (viewportElement)
75
- return viewportElement.getBoundingClientRect();
76
- }
77
- get innerRect() {
78
- const rect = this.rect;
79
- return new designable_shared_1.Rect(0, 0, rect?.width, rect?.height);
80
- }
81
- get offsetX() {
82
- const rect = this.rect;
83
- if (!rect)
84
- return 0;
85
- return rect.x;
86
- }
87
- get offsetY() {
88
- const rect = this.rect;
89
- if (!rect)
90
- return 0;
91
- return rect.y;
92
- }
93
- get scale() {
94
- if (!this.viewportElement)
95
- return 1;
96
- const clientRect = this.viewportElement.getBoundingClientRect();
97
- const offsetWidth = this.viewportElement.offsetWidth;
98
- if (!clientRect.width || !offsetWidth)
99
- return 1;
100
- return Math.round(clientRect.width / offsetWidth);
101
- }
102
- get dragScrollXDelta() {
103
- return this.scrollX - this.dragStartSnapshot.scrollX;
104
- }
105
- get dragScrollYDelta() {
106
- return this.scrollY - this.dragStartSnapshot.scrollY;
107
- }
108
- cacheElements() {
109
- this.nodeElementsStore = {};
110
- this.viewportRoot
111
- ?.querySelectorAll(`*[${this.nodeIdAttrName}]`)
112
- .forEach((element) => {
113
- const id = element.getAttribute(this.nodeIdAttrName);
114
- this.nodeElementsStore[id] = this.nodeElementsStore[id] || [];
115
- this.nodeElementsStore[id].push(element);
116
- });
117
- }
118
- clearCache() {
119
- this.nodeElementsStore = {};
120
- }
121
- getCurrentData() {
122
- const data = {};
123
- if (this.isIframe) {
124
- data.scrollX = this.contentWindow?.scrollX || 0;
125
- data.scrollY = this.contentWindow?.scrollY || 0;
126
- data.width = this.contentWindow?.innerWidth || 0;
127
- data.height = this.contentWindow?.innerHeight || 0;
128
- }
129
- else if (this.viewportElement) {
130
- data.scrollX = this.viewportElement?.scrollLeft || 0;
131
- data.scrollY = this.viewportElement?.scrollTop || 0;
132
- data.width = this.viewportElement?.clientWidth || 0;
133
- data.height = this.viewportElement?.clientHeight || 0;
134
- }
135
- return data;
136
- }
137
- takeDragStartSnapshot() {
138
- this.dragStartSnapshot = this.getCurrentData();
139
- }
140
- digestViewport() {
141
- Object.assign(this, this.getCurrentData());
142
- }
143
- elementFromPoint(point) {
144
- if (this.contentWindow?.document) {
145
- return this.contentWindow.document.elementFromPoint(point.x, point.y);
146
- }
147
- }
148
- matchViewport(target) {
149
- if (this.isIframe) {
150
- return (target === this.viewportElement ||
151
- target === this.contentWindow ||
152
- target === this.contentWindow?.document);
153
- }
154
- else {
155
- return target === this.viewportElement;
156
- }
157
- }
158
- attachEvents() {
159
- const engine = this.engine;
160
- (0, designable_shared_1.cancelIdle)(this.attachRequest);
161
- this.attachRequest = (0, designable_shared_1.requestIdle)(() => {
162
- if (!engine)
163
- return;
164
- if (this.isIframe) {
165
- this.workspace.attachEvents(this.contentWindow, this.contentWindow);
166
- }
167
- else if ((0, designable_shared_1.isHTMLElement)(this.viewportElement)) {
168
- this.workspace.attachEvents(this.viewportElement, this.contentWindow);
169
- }
170
- });
171
- }
172
- detachEvents() {
173
- if (this.isIframe) {
174
- this.workspace.detachEvents(this.contentWindow);
175
- this.workspace.detachEvents(this.viewportElement);
176
- }
177
- else if (this.viewportElement) {
178
- this.workspace.detachEvents(this.viewportElement);
179
- }
180
- }
181
- onMount(element, contentWindow) {
182
- this.mounted = true;
183
- this.viewportElement = element;
184
- this.contentWindow = contentWindow;
185
- this.attachEvents();
186
- this.digestViewport();
187
- }
188
- onUnmount() {
189
- this.mounted = false;
190
- this.detachEvents();
191
- }
192
- isPointInViewport(point, sensitive) {
193
- if (!this.rect)
194
- return false;
195
- if (!this.containsElement(document.elementFromPoint(point.x, point.y))) {
196
- return false;
197
- }
198
- return (0, designable_shared_1.isPointInRect)(point, this.rect, sensitive);
199
- }
200
- isRectInViewport(rect) {
201
- if (!this.rect)
202
- return false;
203
- if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
204
- return false;
205
- }
206
- return (0, designable_shared_1.isRectInRect)(rect, this.rect);
207
- }
208
- isPointInViewportArea(point, sensitive) {
209
- if (!this.rect)
210
- return false;
211
- return (0, designable_shared_1.isPointInRect)(point, this.rect, sensitive);
212
- }
213
- isOffsetPointInViewport(point, sensitive) {
214
- if (!this.innerRect)
215
- return false;
216
- if (!this.containsElement(document.elementFromPoint(point.x, point.y)))
217
- return false;
218
- return (0, designable_shared_1.isPointInRect)(point, this.innerRect, sensitive);
219
- }
220
- isOffsetRectInViewport(rect) {
221
- if (!this.innerRect)
222
- return false;
223
- if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
224
- return false;
225
- }
226
- return (0, designable_shared_1.isRectInRect)(rect, this.innerRect);
227
- }
228
- makeObservable() {
229
- (0, reactive_1.define)(this, {
230
- scrollX: reactive_1.observable.ref,
231
- scrollY: reactive_1.observable.ref,
232
- width: reactive_1.observable.ref,
233
- height: reactive_1.observable.ref,
234
- digestViewport: reactive_1.action,
235
- viewportElement: reactive_1.observable.ref,
236
- contentWindow: reactive_1.observable.ref,
237
- });
238
- }
239
- findElementById(id) {
240
- if (!id)
241
- return;
242
- if (this.nodeElementsStore[id])
243
- return this.nodeElementsStore[id][0];
244
- return this.viewportRoot?.querySelector(`*[${this.nodeIdAttrName}='${id}']`);
245
- }
246
- findElementsById(id) {
247
- if (!id)
248
- return [];
249
- if (this.nodeElementsStore[id])
250
- return this.nodeElementsStore[id];
251
- return Array.from(this.viewportRoot?.querySelectorAll(`*[${this.nodeIdAttrName}='${id}']`) ?? []);
252
- }
253
- containsElement(element) {
254
- let root = this.viewportElement;
255
- if (root === element)
256
- return true;
257
- return root?.contains(element);
258
- }
259
- getOffsetPoint(topPoint) {
260
- const data = this.getCurrentData();
261
- return {
262
- x: topPoint.x - this.offsetX + data.scrollX,
263
- y: topPoint.y - this.offsetY + data.scrollY,
264
- };
265
- }
266
- //相对于页面
267
- getElementRect(element) {
268
- const rect = element.getBoundingClientRect();
269
- const offsetWidth = element['offsetWidth']
270
- ? element['offsetWidth']
271
- : rect.width;
272
- const offsetHeight = element['offsetHeight']
273
- ? element['offsetHeight']
274
- : rect.height;
275
- return new designable_shared_1.Rect(rect.x, rect.y, this.scale !== 1 ? offsetWidth : rect.width, this.scale !== 1 ? offsetHeight : rect.height);
276
- }
277
- //相对于页面
278
- getElementRectById(id) {
279
- const elements = this.findElementsById(id);
280
- const rect = (0, designable_shared_1.calcBoundingRect)(elements.map((element) => this.getElementRect(element)));
10
+ constructor(props) {
11
+ this.scrollX = 0
12
+ this.scrollY = 0
13
+ this.width = 0
14
+ this.height = 0
15
+ this.mounted = false
16
+ this.nodeElementsStore = {}
17
+ this.workspace = props.workspace
18
+ this.engine = props.engine
19
+ this.moveSensitive = props.moveSensitive ?? false
20
+ this.moveInsertionType = props.moveInsertionType ?? 'all'
21
+ this.viewportElement = props.viewportElement
22
+ this.contentWindow = props.contentWindow
23
+ this.nodeIdAttrName = props.nodeIdAttrName
24
+ this.digestViewport()
25
+ this.makeObservable()
26
+ this.attachEvents()
27
+ }
28
+ get isScrollLeft() {
29
+ return this.scrollX === 0
30
+ }
31
+ get isScrollTop() {
32
+ return this.scrollY === 0
33
+ }
34
+ get isScrollRight() {
35
+ if (this.isIframe) {
36
+ return (
37
+ this.width + this.contentWindow.scrollX >=
38
+ this.contentWindow?.document?.body?.scrollWidth
39
+ )
40
+ } else if (this.viewportElement) {
41
+ return (
42
+ this.viewportElement.offsetWidth + this.scrollX >=
43
+ this.viewportElement.scrollWidth
44
+ )
45
+ }
46
+ }
47
+ get isScrollBottom() {
48
+ if (this.isIframe) {
49
+ if (!this.contentWindow?.document?.body) return false
50
+ return (
51
+ this.height + this.contentWindow.scrollY >=
52
+ this.contentWindow.document.body.scrollHeight
53
+ )
54
+ } else if (this.viewportElement) {
55
+ if (!this.viewportElement) return false
56
+ return (
57
+ this.viewportElement.offsetHeight + this.viewportElement.scrollTop >=
58
+ this.viewportElement.scrollHeight
59
+ )
60
+ }
61
+ }
62
+ get viewportRoot() {
63
+ return this.isIframe
64
+ ? this.contentWindow?.document?.body
65
+ : this.viewportElement
66
+ }
67
+ get isMaster() {
68
+ return this.contentWindow === designable_shared_1.globalThisPolyfill
69
+ }
70
+ get isIframe() {
71
+ return !!this.contentWindow?.frameElement && !this.isMaster
72
+ }
73
+ get scrollContainer() {
74
+ return this.isIframe ? this.contentWindow : this.viewportElement
75
+ }
76
+ get rect() {
77
+ const viewportElement = this.viewportElement
78
+ if (viewportElement) return viewportElement.getBoundingClientRect()
79
+ }
80
+ get innerRect() {
81
+ const rect = this.rect
82
+ return new designable_shared_1.Rect(0, 0, rect?.width, rect?.height)
83
+ }
84
+ get offsetX() {
85
+ const rect = this.rect
86
+ if (!rect) return 0
87
+ return rect.x
88
+ }
89
+ get offsetY() {
90
+ const rect = this.rect
91
+ if (!rect) return 0
92
+ return rect.y
93
+ }
94
+ get scale() {
95
+ if (!this.viewportElement) return 1
96
+ const clientRect = this.viewportElement.getBoundingClientRect()
97
+ const offsetWidth = this.viewportElement.offsetWidth
98
+ if (!clientRect.width || !offsetWidth) return 1
99
+ return Math.round(clientRect.width / offsetWidth)
100
+ }
101
+ get dragScrollXDelta() {
102
+ return this.scrollX - this.dragStartSnapshot.scrollX
103
+ }
104
+ get dragScrollYDelta() {
105
+ return this.scrollY - this.dragStartSnapshot.scrollY
106
+ }
107
+ cacheElements() {
108
+ this.nodeElementsStore = {}
109
+ this.viewportRoot
110
+ ?.querySelectorAll(`*[${this.nodeIdAttrName}]`)
111
+ .forEach((element) => {
112
+ const id = element.getAttribute(this.nodeIdAttrName)
113
+ this.nodeElementsStore[id] = this.nodeElementsStore[id] || []
114
+ this.nodeElementsStore[id].push(element)
115
+ })
116
+ }
117
+ clearCache() {
118
+ this.nodeElementsStore = {}
119
+ }
120
+ getCurrentData() {
121
+ const data = {}
122
+ if (this.isIframe) {
123
+ data.scrollX = this.contentWindow?.scrollX || 0
124
+ data.scrollY = this.contentWindow?.scrollY || 0
125
+ data.width = this.contentWindow?.innerWidth || 0
126
+ data.height = this.contentWindow?.innerHeight || 0
127
+ } else if (this.viewportElement) {
128
+ data.scrollX = this.viewportElement?.scrollLeft || 0
129
+ data.scrollY = this.viewportElement?.scrollTop || 0
130
+ data.width = this.viewportElement?.clientWidth || 0
131
+ data.height = this.viewportElement?.clientHeight || 0
132
+ }
133
+ return data
134
+ }
135
+ takeDragStartSnapshot() {
136
+ this.dragStartSnapshot = this.getCurrentData()
137
+ }
138
+ digestViewport() {
139
+ Object.assign(this, this.getCurrentData())
140
+ }
141
+ elementFromPoint(point) {
142
+ if (this.contentWindow?.document) {
143
+ return this.contentWindow.document.elementFromPoint(point.x, point.y)
144
+ }
145
+ }
146
+ matchViewport(target) {
147
+ if (this.isIframe) {
148
+ return (
149
+ target === this.viewportElement ||
150
+ target === this.contentWindow ||
151
+ target === this.contentWindow?.document
152
+ )
153
+ } else {
154
+ return target === this.viewportElement
155
+ }
156
+ }
157
+ attachEvents() {
158
+ const engine = this.engine
159
+ ;(0, designable_shared_1.cancelIdle)(this.attachRequest)
160
+ this.attachRequest = (0, designable_shared_1.requestIdle)(() => {
161
+ if (!engine) return
162
+ if (this.isIframe) {
163
+ this.workspace.attachEvents(this.contentWindow, this.contentWindow)
164
+ } else if ((0, designable_shared_1.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
+ } else if (this.viewportElement) {
174
+ this.workspace.detachEvents(this.viewportElement)
175
+ }
176
+ }
177
+ onMount(element, contentWindow) {
178
+ this.mounted = true
179
+ this.viewportElement = element
180
+ this.contentWindow = contentWindow
181
+ this.attachEvents()
182
+ this.digestViewport()
183
+ }
184
+ onUnmount() {
185
+ this.mounted = false
186
+ this.detachEvents()
187
+ }
188
+ isPointInViewport(point, sensitive) {
189
+ if (!this.rect) return false
190
+ if (!this.containsElement(document.elementFromPoint(point.x, point.y))) {
191
+ return false
192
+ }
193
+ return (0, designable_shared_1.isPointInRect)(point, this.rect, sensitive)
194
+ }
195
+ isRectInViewport(rect) {
196
+ if (!this.rect) return false
197
+ if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
198
+ return false
199
+ }
200
+ return (0, designable_shared_1.isRectInRect)(rect, this.rect)
201
+ }
202
+ isPointInViewportArea(point, sensitive) {
203
+ if (!this.rect) return false
204
+ return (0, designable_shared_1.isPointInRect)(point, this.rect, sensitive)
205
+ }
206
+ isOffsetPointInViewport(point, sensitive) {
207
+ if (!this.innerRect) return false
208
+ if (!this.containsElement(document.elementFromPoint(point.x, point.y)))
209
+ return false
210
+ return (0, designable_shared_1.isPointInRect)(
211
+ point,
212
+ this.innerRect,
213
+ sensitive
214
+ )
215
+ }
216
+ isOffsetRectInViewport(rect) {
217
+ if (!this.innerRect) return false
218
+ if (!this.containsElement(document.elementFromPoint(rect.x, rect.y))) {
219
+ return false
220
+ }
221
+ return (0, designable_shared_1.isRectInRect)(rect, this.innerRect)
222
+ }
223
+ makeObservable() {
224
+ ;(0, reactive_1.define)(this, {
225
+ scrollX: reactive_1.observable.ref,
226
+ scrollY: reactive_1.observable.ref,
227
+ width: reactive_1.observable.ref,
228
+ height: reactive_1.observable.ref,
229
+ digestViewport: reactive_1.action,
230
+ viewportElement: reactive_1.observable.ref,
231
+ contentWindow: reactive_1.observable.ref,
232
+ })
233
+ }
234
+ findElementById(id) {
235
+ if (!id) return
236
+ if (this.nodeElementsStore[id]) return this.nodeElementsStore[id][0]
237
+ return this.viewportRoot?.querySelector(`*[${this.nodeIdAttrName}='${id}']`)
238
+ }
239
+ findElementsById(id) {
240
+ if (!id) return []
241
+ if (this.nodeElementsStore[id]) return this.nodeElementsStore[id]
242
+ return Array.from(
243
+ this.viewportRoot?.querySelectorAll(
244
+ `*[${this.nodeIdAttrName}='${id}']`
245
+ ) ?? []
246
+ )
247
+ }
248
+ containsElement(element) {
249
+ let root = this.viewportElement
250
+ if (root === element) return true
251
+ return root?.contains(element)
252
+ }
253
+ getOffsetPoint(topPoint) {
254
+ const data = this.getCurrentData()
255
+ return {
256
+ x: topPoint.x - this.offsetX + data.scrollX,
257
+ y: topPoint.y - this.offsetY + data.scrollY,
258
+ }
259
+ }
260
+ //相对于页面
261
+ getElementRect(element) {
262
+ const rect = element.getBoundingClientRect()
263
+ const offsetWidth = element['offsetWidth']
264
+ ? element['offsetWidth']
265
+ : rect.width
266
+ const offsetHeight = element['offsetHeight']
267
+ ? element['offsetHeight']
268
+ : rect.height
269
+ return new designable_shared_1.Rect(
270
+ rect.x,
271
+ rect.y,
272
+ this.scale !== 1 ? offsetWidth : rect.width,
273
+ this.scale !== 1 ? offsetHeight : rect.height
274
+ )
275
+ }
276
+ //相对于页面
277
+ getElementRectById(id) {
278
+ const elements = this.findElementsById(id)
279
+ const rect = (0, designable_shared_1.calcBoundingRect)(
280
+ elements.map((element) => this.getElementRect(element))
281
+ )
282
+ if (rect) {
283
+ if (this.isIframe) {
284
+ return new designable_shared_1.Rect(
285
+ rect.x + this.offsetX,
286
+ rect.y + this.offsetY,
287
+ rect.width,
288
+ rect.height
289
+ )
290
+ } else {
291
+ return new designable_shared_1.Rect(
292
+ rect.x,
293
+ rect.y,
294
+ rect.width,
295
+ rect.height
296
+ )
297
+ }
298
+ }
299
+ }
300
+ //相对于视口
301
+ getElementOffsetRect(element) {
302
+ const elementRect = element.getBoundingClientRect()
303
+ if (elementRect) {
304
+ if (this.isIframe) {
305
+ return new designable_shared_1.Rect(
306
+ elementRect.x + this.contentWindow.scrollX,
307
+ elementRect.y + this.contentWindow.scrollY,
308
+ elementRect.width,
309
+ elementRect.height
310
+ )
311
+ } else {
312
+ return new designable_shared_1.Rect(
313
+ (elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
314
+ this.scale,
315
+ (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
316
+ this.scale,
317
+ elementRect.width,
318
+ elementRect.height
319
+ )
320
+ }
321
+ }
322
+ }
323
+ //相对于视口
324
+ getElementOffsetRectById(id) {
325
+ const elements = this.findElementsById(id)
326
+ if (!elements.length) return
327
+ const elementRect = (0, designable_shared_1.calcBoundingRect)(
328
+ elements.map((element) => this.getElementRect(element))
329
+ )
330
+ if (elementRect) {
331
+ if (this.isIframe) {
332
+ return new designable_shared_1.Rect(
333
+ elementRect.x + this.contentWindow.scrollX,
334
+ elementRect.y + this.contentWindow.scrollY,
335
+ elementRect.width,
336
+ elementRect.height
337
+ )
338
+ } else {
339
+ return new designable_shared_1.Rect(
340
+ (elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
341
+ this.scale,
342
+ (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
343
+ this.scale,
344
+ elementRect.width,
345
+ elementRect.height
346
+ )
347
+ }
348
+ }
349
+ }
350
+ getValidNodeElement(node) {
351
+ const getNodeElement = (node) => {
352
+ if (!node) return
353
+ const ele = this.findElementById(node.id)
354
+ if (ele) {
355
+ return ele
356
+ } else {
357
+ return getNodeElement(node.parent)
358
+ }
359
+ }
360
+ return getNodeElement(node)
361
+ }
362
+ getChildrenRect(node) {
363
+ if (!node?.children?.length) return
364
+ return (0, designable_shared_1.calcBoundingRect)(
365
+ node.children.reduce((buf, child) => {
366
+ const rect = this.getValidNodeRect(child)
281
367
  if (rect) {
282
- if (this.isIframe) {
283
- return new designable_shared_1.Rect(rect.x + this.offsetX, rect.y + this.offsetY, rect.width, rect.height);
284
- }
285
- else {
286
- return new designable_shared_1.Rect(rect.x, rect.y, rect.width, rect.height);
287
- }
288
- }
289
- }
290
- //相对于视口
291
- getElementOffsetRect(element) {
292
- const elementRect = element.getBoundingClientRect();
293
- if (elementRect) {
294
- if (this.isIframe) {
295
- return new designable_shared_1.Rect(elementRect.x + this.contentWindow.scrollX, elementRect.y + this.contentWindow.scrollY, elementRect.width, elementRect.height);
296
- }
297
- else {
298
- return new designable_shared_1.Rect((elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
299
- this.scale, (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
300
- this.scale, elementRect.width, elementRect.height);
301
- }
302
- }
303
- }
304
- //相对于视口
305
- getElementOffsetRectById(id) {
306
- const elements = this.findElementsById(id);
307
- if (!elements.length)
308
- return;
309
- const elementRect = (0, designable_shared_1.calcBoundingRect)(elements.map((element) => this.getElementRect(element)));
310
- if (elementRect) {
311
- if (this.isIframe) {
312
- return new designable_shared_1.Rect(elementRect.x + this.contentWindow.scrollX, elementRect.y + this.contentWindow.scrollY, elementRect.width, elementRect.height);
313
- }
314
- else {
315
- return new designable_shared_1.Rect((elementRect.x - this.offsetX + this.viewportElement.scrollLeft) /
316
- this.scale, (elementRect.y - this.offsetY + this.viewportElement.scrollTop) /
317
- this.scale, elementRect.width, elementRect.height);
318
- }
319
- }
320
- }
321
- getValidNodeElement(node) {
322
- const getNodeElement = (node) => {
323
- if (!node)
324
- return;
325
- const ele = this.findElementById(node.id);
326
- if (ele) {
327
- return ele;
328
- }
329
- else {
330
- return getNodeElement(node.parent);
331
- }
332
- };
333
- return getNodeElement(node);
334
- }
335
- getChildrenRect(node) {
336
- if (!node?.children?.length)
337
- return;
338
- return (0, designable_shared_1.calcBoundingRect)(node.children.reduce((buf, child) => {
339
- const rect = this.getValidNodeRect(child);
340
- if (rect) {
341
- return buf.concat(rect);
342
- }
343
- return buf;
344
- }, []));
345
- }
346
- getChildrenOffsetRect(node) {
347
- if (!node?.children?.length)
348
- return;
349
- return (0, designable_shared_1.calcBoundingRect)(node.children.reduce((buf, child) => {
350
- const rect = this.getValidNodeOffsetRect(child);
351
- if (rect) {
352
- return buf.concat(rect);
353
- }
354
- return buf;
355
- }, []));
356
- }
357
- getValidNodeRect(node) {
358
- if (!node)
359
- return;
360
- const rect = this.getElementRectById(node.id);
361
- if (node && node === node.root && node.isInOperation) {
362
- if (!rect)
363
- return this.rect;
364
- return (0, designable_shared_1.calcBoundingRect)([this.rect, rect]);
368
+ return buf.concat(rect)
365
369
  }
370
+ return buf
371
+ }, [])
372
+ )
373
+ }
374
+ getChildrenOffsetRect(node) {
375
+ if (!node?.children?.length) return
376
+ return (0, designable_shared_1.calcBoundingRect)(
377
+ node.children.reduce((buf, child) => {
378
+ const rect = this.getValidNodeOffsetRect(child)
366
379
  if (rect) {
367
- return rect;
380
+ return buf.concat(rect)
368
381
  }
369
- else {
370
- return this.getChildrenRect(node);
371
- }
372
- }
373
- getValidNodeOffsetRect(node) {
374
- if (!node)
375
- return;
376
- const rect = this.getElementOffsetRectById(node.id);
377
- if (node && node === node.root && node.isInOperation) {
378
- if (!rect)
379
- return this.innerRect;
380
- return (0, designable_shared_1.calcBoundingRect)([this.innerRect, rect]);
381
- }
382
- if (rect) {
383
- return rect;
384
- }
385
- else {
386
- return this.getChildrenOffsetRect(node);
387
- }
388
- }
389
- getValidNodeLayout(node) {
390
- if (!node)
391
- return 'vertical';
392
- if (node.parent?.designerProps?.inlineChildrenLayout)
393
- return 'horizontal';
394
- return (0, designable_shared_1.calcElementLayout)(this.findElementById(node.id));
395
- }
382
+ return buf
383
+ }, [])
384
+ )
385
+ }
386
+ getValidNodeRect(node) {
387
+ if (!node) return
388
+ const rect = this.getElementRectById(node.id)
389
+ if (node && node === node.root && node.isInOperation) {
390
+ if (!rect) return this.rect
391
+ return (0, designable_shared_1.calcBoundingRect)([this.rect, rect])
392
+ }
393
+ if (rect) {
394
+ return rect
395
+ } else {
396
+ return this.getChildrenRect(node)
397
+ }
398
+ }
399
+ getValidNodeOffsetRect(node) {
400
+ if (!node) return
401
+ const rect = this.getElementOffsetRectById(node.id)
402
+ if (node && node === node.root && node.isInOperation) {
403
+ if (!rect) return this.innerRect
404
+ return (0, designable_shared_1.calcBoundingRect)([this.innerRect, rect])
405
+ }
406
+ if (rect) {
407
+ return rect
408
+ } else {
409
+ return this.getChildrenOffsetRect(node)
410
+ }
411
+ }
412
+ getValidNodeLayout(node) {
413
+ if (!node) return 'vertical'
414
+ if (node.parent?.designerProps?.inlineChildrenLayout) return 'horizontal'
415
+ return (0, designable_shared_1.calcElementLayout)(
416
+ this.findElementById(node.id)
417
+ )
418
+ }
396
419
  }
397
- exports.Viewport = Viewport;
420
+ exports.Viewport = Viewport