@vuu-ui/vuu-layout 2.1.18 → 2.1.19-beta.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 (353) hide show
  1. package/package.json +15 -18
  2. package/src/Component.js +14 -0
  3. package/src/LayoutContainer.css.js +24 -0
  4. package/src/LayoutContainer.js +26 -0
  5. package/src/debug.js +16 -0
  6. package/src/dock-layout/DockLayout.css.js +36 -0
  7. package/src/dock-layout/DockLayout.js +43 -0
  8. package/src/dock-layout/Drawer.css.js +150 -0
  9. package/src/dock-layout/Drawer.js +82 -0
  10. package/src/dock-layout/index.js +2 -0
  11. package/src/drag-drop/BoxModel.js +337 -0
  12. package/src/drag-drop/DragState.js +119 -0
  13. package/src/drag-drop/Draggable.js +140 -0
  14. package/src/drag-drop/DropTarget.js +286 -0
  15. package/src/drag-drop/DropTargetRenderer.js +275 -0
  16. package/src/drag-drop/dragDropTypes.js +0 -0
  17. package/src/drag-drop/index.js +3 -0
  18. package/src/flexbox/Flexbox.css.js +45 -0
  19. package/src/flexbox/Flexbox.js +45 -0
  20. package/src/flexbox/FlexboxLayout.js +27 -0
  21. package/src/flexbox/Splitter.css.js +57 -0
  22. package/src/flexbox/Splitter.js +112 -0
  23. package/src/flexbox/flexbox-utils.js +92 -0
  24. package/src/flexbox/flexboxTypes.js +0 -0
  25. package/src/flexbox/index.js +2 -0
  26. package/src/flexbox/useSplitterResizing.js +181 -0
  27. package/src/index.js +20 -0
  28. package/src/layout-action.js +20 -0
  29. package/src/layout-header/ActionButton.js +15 -0
  30. package/src/layout-header/Header.css.js +32 -0
  31. package/src/layout-header/Header.js +99 -0
  32. package/src/layout-header/index.js +1 -0
  33. package/src/layout-header/useHeader.js +76 -0
  34. package/src/layout-provider/LayoutProvider.js +242 -0
  35. package/src/layout-provider/LayoutProviderContext.js +13 -0
  36. package/src/layout-provider/index.js +2 -0
  37. package/src/layout-provider/useLayoutDragDrop.js +147 -0
  38. package/src/layout-reducer/flexUtils.js +186 -0
  39. package/src/layout-reducer/index.js +4 -0
  40. package/src/layout-reducer/insert-layout-element.js +179 -0
  41. package/src/layout-reducer/layout-reducer.js +121 -0
  42. package/src/layout-reducer/layoutTypes.js +34 -0
  43. package/src/layout-reducer/layoutUtils.js +178 -0
  44. package/src/layout-reducer/move-layout-element.js +18 -0
  45. package/src/layout-reducer/remove-layout-element.js +161 -0
  46. package/src/layout-reducer/replace-layout-element.js +70 -0
  47. package/src/layout-reducer/resize-flex-children.js +48 -0
  48. package/src/layout-reducer/wrap-layout-element.js +134 -0
  49. package/src/layout-view/View.css.js +76 -0
  50. package/src/layout-view/View.js +116 -0
  51. package/src/layout-view/useView.js +69 -0
  52. package/src/layout-view/useViewBroadcastChannel.js +29 -0
  53. package/src/layout-view/useViewResize.js +27 -0
  54. package/src/layout-view/viewTypes.js +0 -0
  55. package/src/layout-view-actions/ViewContext.js +11 -0
  56. package/src/layout-view-actions/useViewActionDispatcher.js +116 -0
  57. package/src/layout-view-actions/useViewContributions.js +31 -0
  58. package/src/palette/Palette.css.js +31 -0
  59. package/src/palette/Palette.js +85 -0
  60. package/src/palette/index.js +1 -0
  61. package/src/placeholder/LayoutStartPanel.css.js +35 -0
  62. package/src/placeholder/LayoutStartPanel.js +57 -0
  63. package/src/placeholder/Placeholder.css.js +20 -0
  64. package/src/placeholder/Placeholder.js +33 -0
  65. package/src/placeholder/index.js +1 -0
  66. package/src/responsive/index.js +2 -0
  67. package/src/responsive/measureMinimumNodeSize.js +24 -0
  68. package/src/responsive/useResizeObserver.js +109 -0
  69. package/src/responsive/utils.js +27 -0
  70. package/src/stack/Stack.css.js +44 -0
  71. package/src/stack/Stack.js +98 -0
  72. package/src/stack/StackLayout.js +116 -0
  73. package/src/stack/index.js +3 -0
  74. package/src/stack/stackTypes.js +0 -0
  75. package/src/tabs/TabPanel.css.js +17 -0
  76. package/src/tabs/TabPanel.js +11 -0
  77. package/src/tabs/index.js +1 -0
  78. package/src/tools/config-wrapper/ConfigWrapper.js +55 -0
  79. package/src/tools/config-wrapper/index.js +1 -0
  80. package/src/tools/devtools-box/layout-configurator.css.js +113 -0
  81. package/src/tools/devtools-tree/layout-tree-viewer.css.js +17 -0
  82. package/src/tools/index.js +3 -0
  83. package/src/use-persistent-state.js +43 -0
  84. package/src/utils/index.js +5 -0
  85. package/src/utils/pathUtils.js +212 -0
  86. package/src/utils/propUtils.js +15 -0
  87. package/src/utils/refUtils.js +5 -0
  88. package/src/utils/styleUtils.js +9 -0
  89. package/src/utils/typeOf.js +15 -0
  90. package/types/dock-layout/DockLayout.d.ts +4 -4
  91. package/types/dock-layout/Drawer.d.ts +4 -4
  92. package/types/drag-drop/BoxModel.d.ts +7 -7
  93. package/types/flexbox/FlexboxLayout.d.ts +4 -4
  94. package/types/flexbox/Splitter.d.ts +1 -1
  95. package/types/layout-reducer/layoutUtils.d.ts +1 -1
  96. package/types/layout-reducer/remove-layout-element.d.ts +1 -1
  97. package/types/layout-reducer/replace-layout-element.d.ts +2 -2
  98. package/types/layout-reducer/resize-flex-children.d.ts +2 -2
  99. package/types/layout-view/useView.d.ts +1 -1
  100. package/types/placeholder/Placeholder.d.ts +4 -4
  101. package/types/responsive/overflowUtils.d.ts +2 -2
  102. package/types/stack/StackLayout.d.ts +4 -4
  103. package/types/tools/devtools-box/layout-configurator.d.ts +26 -26
  104. package/types/tools/devtools-tree/layout-tree-viewer.d.ts +2 -2
  105. package/types/utils/pathUtils.d.ts +1 -1
  106. package/cjs/Component.js +0 -14
  107. package/cjs/Component.js.map +0 -1
  108. package/cjs/LayoutContainer.css.js +0 -6
  109. package/cjs/LayoutContainer.css.js.map +0 -1
  110. package/cjs/LayoutContainer.js +0 -33
  111. package/cjs/LayoutContainer.js.map +0 -1
  112. package/cjs/dock-layout/DockLayout.css.js +0 -6
  113. package/cjs/dock-layout/DockLayout.css.js.map +0 -1
  114. package/cjs/dock-layout/DockLayout.js +0 -41
  115. package/cjs/dock-layout/DockLayout.js.map +0 -1
  116. package/cjs/dock-layout/Drawer.css.js +0 -6
  117. package/cjs/dock-layout/Drawer.css.js.map +0 -1
  118. package/cjs/dock-layout/Drawer.js +0 -95
  119. package/cjs/dock-layout/Drawer.js.map +0 -1
  120. package/cjs/drag-drop/BoxModel.js +0 -416
  121. package/cjs/drag-drop/BoxModel.js.map +0 -1
  122. package/cjs/drag-drop/DragState.js +0 -161
  123. package/cjs/drag-drop/DragState.js.map +0 -1
  124. package/cjs/drag-drop/Draggable.js +0 -192
  125. package/cjs/drag-drop/Draggable.js.map +0 -1
  126. package/cjs/drag-drop/DropTarget.js +0 -257
  127. package/cjs/drag-drop/DropTarget.js.map +0 -1
  128. package/cjs/drag-drop/DropTargetRenderer.js +0 -218
  129. package/cjs/drag-drop/DropTargetRenderer.js.map +0 -1
  130. package/cjs/flexbox/Flexbox.css.js +0 -6
  131. package/cjs/flexbox/Flexbox.css.js.map +0 -1
  132. package/cjs/flexbox/Flexbox.js +0 -69
  133. package/cjs/flexbox/Flexbox.js.map +0 -1
  134. package/cjs/flexbox/FlexboxLayout.js +0 -30
  135. package/cjs/flexbox/FlexboxLayout.js.map +0 -1
  136. package/cjs/flexbox/Splitter.css.js +0 -6
  137. package/cjs/flexbox/Splitter.css.js.map +0 -1
  138. package/cjs/flexbox/Splitter.js +0 -122
  139. package/cjs/flexbox/Splitter.js.map +0 -1
  140. package/cjs/flexbox/flexbox-utils.js +0 -95
  141. package/cjs/flexbox/flexbox-utils.js.map +0 -1
  142. package/cjs/flexbox/useSplitterResizing.js +0 -197
  143. package/cjs/flexbox/useSplitterResizing.js.map +0 -1
  144. package/cjs/index.js +0 -122
  145. package/cjs/index.js.map +0 -1
  146. package/cjs/layout-action.js +0 -24
  147. package/cjs/layout-action.js.map +0 -1
  148. package/cjs/layout-header/Header.css.js +0 -6
  149. package/cjs/layout-header/Header.css.js.map +0 -1
  150. package/cjs/layout-header/Header.js +0 -152
  151. package/cjs/layout-header/Header.js.map +0 -1
  152. package/cjs/layout-header/useHeader.js +0 -85
  153. package/cjs/layout-header/useHeader.js.map +0 -1
  154. package/cjs/layout-provider/LayoutProvider.js +0 -304
  155. package/cjs/layout-provider/LayoutProvider.js.map +0 -1
  156. package/cjs/layout-provider/LayoutProviderContext.js +0 -23
  157. package/cjs/layout-provider/LayoutProviderContext.js.map +0 -1
  158. package/cjs/layout-provider/useLayoutDragDrop.js +0 -177
  159. package/cjs/layout-provider/useLayoutDragDrop.js.map +0 -1
  160. package/cjs/layout-reducer/flexUtils.js +0 -227
  161. package/cjs/layout-reducer/flexUtils.js.map +0 -1
  162. package/cjs/layout-reducer/insert-layout-element.js +0 -286
  163. package/cjs/layout-reducer/insert-layout-element.js.map +0 -1
  164. package/cjs/layout-reducer/layout-reducer.js +0 -202
  165. package/cjs/layout-reducer/layout-reducer.js.map +0 -1
  166. package/cjs/layout-reducer/layoutTypes.js +0 -40
  167. package/cjs/layout-reducer/layoutTypes.js.map +0 -1
  168. package/cjs/layout-reducer/layoutUtils.js +0 -237
  169. package/cjs/layout-reducer/layoutUtils.js.map +0 -1
  170. package/cjs/layout-reducer/move-layout-element.js +0 -31
  171. package/cjs/layout-reducer/move-layout-element.js.map +0 -1
  172. package/cjs/layout-reducer/remove-layout-element.js +0 -237
  173. package/cjs/layout-reducer/remove-layout-element.js.map +0 -1
  174. package/cjs/layout-reducer/replace-layout-element.js +0 -96
  175. package/cjs/layout-reducer/replace-layout-element.js.map +0 -1
  176. package/cjs/layout-reducer/resize-flex-children.js +0 -62
  177. package/cjs/layout-reducer/resize-flex-children.js.map +0 -1
  178. package/cjs/layout-reducer/wrap-layout-element.js +0 -211
  179. package/cjs/layout-reducer/wrap-layout-element.js.map +0 -1
  180. package/cjs/layout-view/View.css.js +0 -6
  181. package/cjs/layout-view/View.css.js.map +0 -1
  182. package/cjs/layout-view/View.js +0 -160
  183. package/cjs/layout-view/View.js.map +0 -1
  184. package/cjs/layout-view/useView.js +0 -75
  185. package/cjs/layout-view/useView.js.map +0 -1
  186. package/cjs/layout-view/useViewBroadcastChannel.js +0 -35
  187. package/cjs/layout-view/useViewBroadcastChannel.js.map +0 -1
  188. package/cjs/layout-view/useViewResize.js +0 -42
  189. package/cjs/layout-view/useViewResize.js.map +0 -1
  190. package/cjs/layout-view-actions/ViewContext.js +0 -16
  191. package/cjs/layout-view-actions/ViewContext.js.map +0 -1
  192. package/cjs/layout-view-actions/useViewActionDispatcher.js +0 -112
  193. package/cjs/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  194. package/cjs/layout-view-actions/useViewContributions.js +0 -33
  195. package/cjs/layout-view-actions/useViewContributions.js.map +0 -1
  196. package/cjs/palette/Palette.css.js +0 -6
  197. package/cjs/palette/Palette.css.js.map +0 -1
  198. package/cjs/palette/Palette.js +0 -115
  199. package/cjs/palette/Palette.js.map +0 -1
  200. package/cjs/placeholder/LayoutStartPanel.css.js +0 -6
  201. package/cjs/placeholder/LayoutStartPanel.css.js.map +0 -1
  202. package/cjs/placeholder/LayoutStartPanel.js +0 -56
  203. package/cjs/placeholder/LayoutStartPanel.js.map +0 -1
  204. package/cjs/placeholder/Placeholder.css.js +0 -6
  205. package/cjs/placeholder/Placeholder.css.js.map +0 -1
  206. package/cjs/placeholder/Placeholder.js +0 -34
  207. package/cjs/placeholder/Placeholder.js.map +0 -1
  208. package/cjs/responsive/useResizeObserver.js +0 -118
  209. package/cjs/responsive/useResizeObserver.js.map +0 -1
  210. package/cjs/responsive/utils.js +0 -34
  211. package/cjs/responsive/utils.js.map +0 -1
  212. package/cjs/stack/Stack.css.js +0 -6
  213. package/cjs/stack/Stack.css.js.map +0 -1
  214. package/cjs/stack/Stack.js +0 -150
  215. package/cjs/stack/Stack.js.map +0 -1
  216. package/cjs/stack/StackLayout.js +0 -116
  217. package/cjs/stack/StackLayout.js.map +0 -1
  218. package/cjs/use-persistent-state.js +0 -63
  219. package/cjs/use-persistent-state.js.map +0 -1
  220. package/cjs/utils/pathUtils.js +0 -293
  221. package/cjs/utils/pathUtils.js.map +0 -1
  222. package/cjs/utils/propUtils.js +0 -27
  223. package/cjs/utils/propUtils.js.map +0 -1
  224. package/cjs/utils/refUtils.js +0 -12
  225. package/cjs/utils/refUtils.js.map +0 -1
  226. package/cjs/utils/styleUtils.js +0 -15
  227. package/cjs/utils/styleUtils.js.map +0 -1
  228. package/cjs/utils/typeOf.js +0 -27
  229. package/cjs/utils/typeOf.js.map +0 -1
  230. package/esm/Component.js +0 -12
  231. package/esm/Component.js.map +0 -1
  232. package/esm/LayoutContainer.css.js +0 -4
  233. package/esm/LayoutContainer.css.js.map +0 -1
  234. package/esm/LayoutContainer.js +0 -31
  235. package/esm/LayoutContainer.js.map +0 -1
  236. package/esm/dock-layout/DockLayout.css.js +0 -4
  237. package/esm/dock-layout/DockLayout.css.js.map +0 -1
  238. package/esm/dock-layout/DockLayout.js +0 -39
  239. package/esm/dock-layout/DockLayout.js.map +0 -1
  240. package/esm/dock-layout/Drawer.css.js +0 -4
  241. package/esm/dock-layout/Drawer.css.js.map +0 -1
  242. package/esm/dock-layout/Drawer.js +0 -93
  243. package/esm/dock-layout/Drawer.js.map +0 -1
  244. package/esm/drag-drop/BoxModel.js +0 -409
  245. package/esm/drag-drop/BoxModel.js.map +0 -1
  246. package/esm/drag-drop/DragState.js +0 -159
  247. package/esm/drag-drop/DragState.js.map +0 -1
  248. package/esm/drag-drop/Draggable.js +0 -190
  249. package/esm/drag-drop/Draggable.js.map +0 -1
  250. package/esm/drag-drop/DropTarget.js +0 -253
  251. package/esm/drag-drop/DropTarget.js.map +0 -1
  252. package/esm/drag-drop/DropTargetRenderer.js +0 -216
  253. package/esm/drag-drop/DropTargetRenderer.js.map +0 -1
  254. package/esm/flexbox/Flexbox.css.js +0 -4
  255. package/esm/flexbox/Flexbox.css.js.map +0 -1
  256. package/esm/flexbox/Flexbox.js +0 -67
  257. package/esm/flexbox/Flexbox.js.map +0 -1
  258. package/esm/flexbox/FlexboxLayout.js +0 -28
  259. package/esm/flexbox/FlexboxLayout.js.map +0 -1
  260. package/esm/flexbox/Splitter.css.js +0 -4
  261. package/esm/flexbox/Splitter.css.js.map +0 -1
  262. package/esm/flexbox/Splitter.js +0 -120
  263. package/esm/flexbox/Splitter.js.map +0 -1
  264. package/esm/flexbox/flexbox-utils.js +0 -89
  265. package/esm/flexbox/flexbox-utils.js.map +0 -1
  266. package/esm/flexbox/useSplitterResizing.js +0 -195
  267. package/esm/flexbox/useSplitterResizing.js.map +0 -1
  268. package/esm/index.js +0 -33
  269. package/esm/index.js.map +0 -1
  270. package/esm/layout-action.js +0 -22
  271. package/esm/layout-action.js.map +0 -1
  272. package/esm/layout-header/Header.css.js +0 -4
  273. package/esm/layout-header/Header.css.js.map +0 -1
  274. package/esm/layout-header/Header.js +0 -150
  275. package/esm/layout-header/Header.js.map +0 -1
  276. package/esm/layout-header/useHeader.js +0 -83
  277. package/esm/layout-header/useHeader.js.map +0 -1
  278. package/esm/layout-provider/LayoutProvider.js +0 -297
  279. package/esm/layout-provider/LayoutProvider.js.map +0 -1
  280. package/esm/layout-provider/LayoutProviderContext.js +0 -20
  281. package/esm/layout-provider/LayoutProviderContext.js.map +0 -1
  282. package/esm/layout-provider/useLayoutDragDrop.js +0 -175
  283. package/esm/layout-provider/useLayoutDragDrop.js.map +0 -1
  284. package/esm/layout-reducer/flexUtils.js +0 -218
  285. package/esm/layout-reducer/flexUtils.js.map +0 -1
  286. package/esm/layout-reducer/insert-layout-element.js +0 -282
  287. package/esm/layout-reducer/insert-layout-element.js.map +0 -1
  288. package/esm/layout-reducer/layout-reducer.js +0 -200
  289. package/esm/layout-reducer/layout-reducer.js.map +0 -1
  290. package/esm/layout-reducer/layoutTypes.js +0 -36
  291. package/esm/layout-reducer/layoutTypes.js.map +0 -1
  292. package/esm/layout-reducer/layoutUtils.js +0 -226
  293. package/esm/layout-reducer/layoutUtils.js.map +0 -1
  294. package/esm/layout-reducer/move-layout-element.js +0 -29
  295. package/esm/layout-reducer/move-layout-element.js.map +0 -1
  296. package/esm/layout-reducer/remove-layout-element.js +0 -235
  297. package/esm/layout-reducer/remove-layout-element.js.map +0 -1
  298. package/esm/layout-reducer/replace-layout-element.js +0 -92
  299. package/esm/layout-reducer/replace-layout-element.js.map +0 -1
  300. package/esm/layout-reducer/resize-flex-children.js +0 -59
  301. package/esm/layout-reducer/resize-flex-children.js.map +0 -1
  302. package/esm/layout-reducer/wrap-layout-element.js +0 -209
  303. package/esm/layout-reducer/wrap-layout-element.js.map +0 -1
  304. package/esm/layout-view/View.css.js +0 -4
  305. package/esm/layout-view/View.css.js.map +0 -1
  306. package/esm/layout-view/View.js +0 -158
  307. package/esm/layout-view/View.js.map +0 -1
  308. package/esm/layout-view/useView.js +0 -73
  309. package/esm/layout-view/useView.js.map +0 -1
  310. package/esm/layout-view/useViewBroadcastChannel.js +0 -33
  311. package/esm/layout-view/useViewBroadcastChannel.js.map +0 -1
  312. package/esm/layout-view/useViewResize.js +0 -40
  313. package/esm/layout-view/useViewResize.js.map +0 -1
  314. package/esm/layout-view-actions/ViewContext.js +0 -12
  315. package/esm/layout-view-actions/ViewContext.js.map +0 -1
  316. package/esm/layout-view-actions/useViewActionDispatcher.js +0 -110
  317. package/esm/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  318. package/esm/layout-view-actions/useViewContributions.js +0 -31
  319. package/esm/layout-view-actions/useViewContributions.js.map +0 -1
  320. package/esm/palette/Palette.css.js +0 -4
  321. package/esm/palette/Palette.css.js.map +0 -1
  322. package/esm/palette/Palette.js +0 -112
  323. package/esm/palette/Palette.js.map +0 -1
  324. package/esm/placeholder/LayoutStartPanel.css.js +0 -4
  325. package/esm/placeholder/LayoutStartPanel.css.js.map +0 -1
  326. package/esm/placeholder/LayoutStartPanel.js +0 -54
  327. package/esm/placeholder/LayoutStartPanel.js.map +0 -1
  328. package/esm/placeholder/Placeholder.css.js +0 -4
  329. package/esm/placeholder/Placeholder.css.js.map +0 -1
  330. package/esm/placeholder/Placeholder.js +0 -32
  331. package/esm/placeholder/Placeholder.js.map +0 -1
  332. package/esm/responsive/useResizeObserver.js +0 -112
  333. package/esm/responsive/useResizeObserver.js.map +0 -1
  334. package/esm/responsive/utils.js +0 -31
  335. package/esm/responsive/utils.js.map +0 -1
  336. package/esm/stack/Stack.css.js +0 -4
  337. package/esm/stack/Stack.css.js.map +0 -1
  338. package/esm/stack/Stack.js +0 -148
  339. package/esm/stack/Stack.js.map +0 -1
  340. package/esm/stack/StackLayout.js +0 -114
  341. package/esm/stack/StackLayout.js.map +0 -1
  342. package/esm/use-persistent-state.js +0 -58
  343. package/esm/use-persistent-state.js.map +0 -1
  344. package/esm/utils/pathUtils.js +0 -280
  345. package/esm/utils/pathUtils.js.map +0 -1
  346. package/esm/utils/propUtils.js +0 -23
  347. package/esm/utils/propUtils.js.map +0 -1
  348. package/esm/utils/refUtils.js +0 -10
  349. package/esm/utils/refUtils.js.map +0 -1
  350. package/esm/utils/styleUtils.js +0 -13
  351. package/esm/utils/styleUtils.js.map +0 -1
  352. package/esm/utils/typeOf.js +0 -23
  353. package/esm/utils/typeOf.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoxModel.js","sources":["../../../../packages/vuu-layout/src/drag-drop/BoxModel.ts"],"sourcesContent":["import { ReactElement } from \"react\";\nimport { boxContainsPoint, isContainer, LayoutModel } from \"@vuu-ui/vuu-utils\";\nimport { getProps, typeOf } from \"../utils\";\nimport { DragDropRect, DropPos, RelativePosition } from \"./dragDropTypes\";\n\nexport const positionValues = {\n north: 1,\n east: 2,\n south: 4,\n west: 8,\n header: 16,\n centre: 32,\n absolute: 64,\n};\n\nexport const RelativeDropPosition = {\n AFTER: \"after\" as RelativePosition,\n BEFORE: \"before\" as RelativePosition,\n};\n\nexport const Position = Object.freeze({\n North: _position(\"north\"),\n East: _position(\"east\"),\n South: _position(\"south\"),\n West: _position(\"west\"),\n Header: _position(\"header\"),\n Centre: _position(\"centre\"),\n Absolute: _position(\"absolute\"),\n});\n\nfunction _position(str: keyof typeof positionValues) {\n return Object.freeze({\n offset:\n str === \"north\" || str === \"west\"\n ? 0\n : str === \"south\" || str === \"east\"\n ? 1\n : NaN,\n valueOf: function () {\n return positionValues[str];\n },\n toString: function () {\n return str;\n },\n North: str === \"north\",\n South: str === \"south\",\n East: str === \"east\",\n West: str === \"west\",\n Header: str === \"header\",\n Centre: str === \"centre\",\n NorthOrSouth: str === \"north\" || str === \"south\",\n EastOrWest: str === \"east\" || str === \"west\",\n NorthOrWest: str === \"north\" || str === \"west\",\n SouthOrEast: str === \"east\" || str === \"south\",\n Absolute: str === \"absolute\",\n });\n}\n\nconst NORTH = Position.North,\n SOUTH = Position.South,\n EAST = Position.East,\n WEST = Position.West,\n HEADER = Position.Header,\n CENTRE = Position.Centre;\n\nexport interface Measurements {\n [key: string]: DragDropRect;\n}\n\nexport class BoxModel {\n //TODO we should accept initial let,top offsets here\n // if dropTargets are supplied, we will only allow drop operations directly on these targets\n // TODO we will need to make this more flexible e.g allowing drop anywhere within these target\n static measure(\n model: ReactElement,\n dropTargetPaths: string[] = [],\n ): Measurements {\n const measurements: Measurements = {};\n measureRootComponent(model, measurements, dropTargetPaths);\n return measurements;\n }\n\n static allBoxesContainingPoint(\n layout: LayoutModel,\n measurements: Measurements,\n x: number,\n y: number,\n validDropTargets?: string[],\n ) {\n return allBoxesContainingPoint(\n layout,\n measurements,\n x,\n y,\n validDropTargets,\n ).reverse();\n }\n}\n\nexport function pointPositionWithinRect(\n x: number,\n y: number,\n rect: DragDropRect,\n borderZone = 30,\n) {\n const width = rect.right - rect.left;\n const height = rect.bottom - rect.top;\n const posX = x - rect.left;\n const posY = y - rect.top;\n let closeToTheEdge = 0;\n\n if (posX < borderZone) closeToTheEdge += 8;\n if (posX > width - borderZone) closeToTheEdge += 2;\n if (posY < borderZone) closeToTheEdge += 1;\n if (posY > height - borderZone) closeToTheEdge += 4;\n\n return { pctX: posX / width, pctY: posY / height, closeToTheEdge };\n}\n\nexport function getPosition(\n x: number,\n y: number,\n rect: DragDropRect,\n targetOrientation?: \"row\" | \"column\",\n): DropPos {\n const { BEFORE, AFTER } = RelativeDropPosition;\n const { pctX, pctY, closeToTheEdge } = pointPositionWithinRect(x, y, rect);\n let position;\n let tab;\n\n if (targetOrientation === \"row\") {\n position = pctX < 0.5 ? WEST : EAST;\n } else if (rect.header && boxContainsPoint(rect.header, x, y)) {\n position = HEADER;\n\n if (rect.Stack) {\n const tabCount = rect.Stack.length;\n if (tabCount === 0) {\n tab = {\n index: -1,\n left: rect.left,\n positionRelativeToTab: AFTER,\n width: 0,\n };\n } else {\n //TODO account for gaps between tabs\n const targetTab = rect.Stack.find(\n ({ left, right }) => x >= left && x <= right,\n );\n if (targetTab) {\n const tabWidth = targetTab.right - targetTab.left;\n tab = {\n index: rect.Stack.indexOf(targetTab),\n left: targetTab.left,\n positionRelativeToTab:\n (x - targetTab.left) / tabWidth < 0.5 ? BEFORE : AFTER,\n width: tabWidth,\n };\n } else {\n const lastTab = rect.Stack[tabCount - 1];\n tab = {\n left: lastTab.right,\n width: 0,\n index: tabCount,\n positionRelativeToTab: AFTER,\n };\n }\n }\n } else if (rect.header.titleWidth) {\n const tabWidth = rect.header.titleWidth;\n tab = {\n index: -1,\n left: rect.left,\n positionRelativeToTab:\n (x - rect.left) / tabWidth < 0.5 ? BEFORE : AFTER,\n width: tabWidth,\n };\n } else {\n tab = {\n left: rect.left,\n width: 0,\n positionRelativeToTab: BEFORE,\n index: -1,\n };\n }\n } else {\n position = getPositionWithinBox(x, y, rect, pctX, pctY);\n }\n return { position: position!, x, y, closeToTheEdge, tab };\n}\n\nfunction getPositionWithinBox(\n x: number,\n y: number,\n rect: DragDropRect,\n pctX: number,\n pctY: number,\n) {\n const centerBox = getCenteredBox(rect, 0.2);\n if (boxContainsPoint(centerBox, x, y)) {\n return CENTRE;\n } else {\n const quadrant = `${pctY < 0.5 ? \"north\" : \"south\"}${\n pctX < 0.5 ? \"west\" : \"east\"\n }`;\n\n switch (quadrant) {\n case \"northwest\":\n return pctX > pctY ? NORTH : WEST;\n case \"northeast\":\n return 1 - pctX > pctY ? NORTH : EAST;\n case \"southeast\":\n return pctX > pctY ? EAST : SOUTH;\n case \"southwest\":\n return 1 - pctX > pctY ? WEST : SOUTH;\n default:\n }\n }\n}\n\nfunction getCenteredBox(\n { right, left, top, bottom }: DragDropRect,\n pctSize: number,\n) {\n const pctOffset = (1 - pctSize) / 2;\n const w = (right - left) * pctOffset;\n const h = (bottom - top) * pctOffset;\n return { left: left + w, top: top + h, right: right - w, bottom: bottom - h };\n}\n\nfunction measureRootComponent(\n rootComponent: ReactElement,\n measurements: Measurements,\n dropTargets: string[],\n) {\n const {\n id,\n \"data-path\": dataPath,\n path = dataPath,\n } = getProps(rootComponent);\n const type = typeOf(rootComponent) as string;\n\n if (id && path) {\n const [rect, el] = measureComponentDomElement(rootComponent);\n measureComponent(rootComponent, rect, el, measurements);\n if (isContainer(type)) {\n collectChildMeasurements(rootComponent, measurements, dropTargets);\n }\n }\n}\n\nfunction measureComponent(\n component: LayoutModel,\n rect: DragDropRect,\n el: HTMLElement,\n measurements: Measurements,\n) {\n const {\n \"data-path\": dataPath,\n path = dataPath,\n header,\n } = getProps(component);\n\n measurements[path] = rect;\n\n const type = typeOf(component);\n if (header || type === \"Stack\") {\n const query = type === \"Stack\" ? \".vuuTabstrip\" : \".vuuHeader\";\n const headerEl = el.querySelector(query);\n if (headerEl) {\n const { top, left, right, bottom } = headerEl.getBoundingClientRect();\n measurements[path].header = {\n top: Math.round(top),\n left: Math.round(left),\n right: Math.round(right),\n bottom: Math.round(bottom),\n };\n if (type === \"Stack\") {\n measurements[path].Stack = Array.from(\n headerEl.querySelectorAll(\".vuuTab\"),\n )\n .map((tab) => tab.getBoundingClientRect())\n .map(({ left, right }) => ({ left, right }));\n } else {\n const titleEl = headerEl.querySelector('[class^=\"vuuHeader-title\"]');\n const { header } = measurements[path];\n if (titleEl && header) {\n header.titleWidth = titleEl.clientWidth;\n }\n }\n }\n }\n\n return measurements[path];\n}\n\nfunction collectChildMeasurements(\n component: LayoutModel,\n measurements: Measurements,\n dropTargets: string[],\n preX = 0,\n posX = 0,\n preY = 0,\n posY = 0,\n) {\n const {\n children,\n \"data-path\": dataPath,\n path = dataPath,\n style,\n active = 0,\n } = getProps(component);\n\n const type = typeOf(component);\n const isFlexbox = type === \"Flexbox\";\n const isStack = type === \"Stack\";\n const isTower = isFlexbox && style.flexDirection === \"column\";\n const isTerrace = isFlexbox && style.flexDirection === \"row\";\n\n const childrenToMeasure = isStack\n ? children.filter((_child: ReactElement, idx: number) => idx === active)\n : children.filter(omitDragging);\n\n type measuredTuple = [DragDropRect, HTMLElement, ReactElement];\n // Collect all the measurements in first pass ...\n const childMeasurements: measuredTuple[] = childrenToMeasure.map(\n (child: ReactElement) => {\n const [rect, el] = measureComponentDomElement(child);\n\n return [\n {\n ...rect,\n top: rect.top - preY,\n right: rect.right + posX,\n bottom: rect.bottom + posY,\n left: rect.left - preX,\n },\n el,\n child,\n ];\n },\n );\n\n // ...so that, in the second pass, we can identify gaps ...\n const expandedMeasurements = childMeasurements.map(\n ([rect, el, child], i, all) => {\n // generate a 'local' splitter adjustment for children adjacent to splitters\n let localPreX;\n let localPosX;\n let localPreY;\n let localPosY;\n let gapPre;\n let gapPos;\n const n = all.length - 1;\n if (isTerrace) {\n gapPre = i === 0 ? 0 : rect.left - all[i - 1][0].right;\n gapPos = i === n ? 0 : all[i + 1][0].left - rect.right;\n // we don't need to divide the leading gap, as half the gap will\n // already have been assigned to the preceeding child in the\n // previous loop iteration.\n localPreX = i === 0 ? 0 : gapPre === 0 ? 0 : gapPre;\n localPosX = i === n ? 0 : gapPos === 0 ? 0 : gapPos - gapPos / 2;\n rect.left -= localPreX;\n rect.right += localPosX;\n localPreY = preY;\n localPosY = posY;\n } else if (isTower) {\n gapPre = i === 0 ? 0 : rect.top - all[i - 1][0].bottom;\n gapPos = i === n ? 0 : all[i + 1][0].top - rect.bottom;\n // we don't need to divide the leading gap, as half the gap will\n // already have been assigned to the preceeding child in the\n // previous loop iteration.\n localPreY = i === 0 ? 0 : gapPre === 0 ? 0 : gapPre;\n localPosY = i === n ? 0 : gapPos === 0 ? 0 : gapPos - gapPos / 2;\n rect.top -= localPreY;\n rect.bottom += localPosY;\n localPreX = preX;\n localPosX = posX;\n }\n\n const componentMeasurements = measureComponent(\n child,\n rect,\n el,\n measurements,\n );\n\n const childType = typeOf(child) as string;\n if (isContainer(childType)) {\n collectChildMeasurements(\n child,\n measurements,\n dropTargets,\n localPreX,\n localPosX,\n localPreY,\n localPosY,\n );\n }\n return componentMeasurements;\n },\n );\n if (childMeasurements.length) {\n measurements[path].children = expandedMeasurements;\n }\n}\n\nfunction omitDragging(component: ReactElement) {\n const { id } = getProps(component);\n const el = document.getElementById(id);\n if (el) {\n return el.dataset.dragging !== \"true\";\n } else {\n console.warn(`BoxModel: no element found with id #${id}`);\n return false;\n }\n}\n\nfunction measureComponentDomElement(\n component: LayoutModel,\n): [DragDropRect, HTMLElement, LayoutModel] {\n const { id } = getProps(component) as { id: string };\n if (id === undefined) {\n throw Error(\"`BoxModel.measureComponentElement, component has no id\");\n }\n const el = document.getElementById(id);\n if (!el) {\n throw Error(\n \"BoxModel.measureComponentElement, no DOM element found for component\",\n );\n }\n // Note: height and width are not required for dropTarget identification, but\n // are used in sizing calculations on drop\n const { top, left, right, bottom, height, width } =\n el.getBoundingClientRect();\n let scrolling = undefined;\n const type = typeOf(component) as string;\n if (isContainer(type)) {\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > height) {\n scrolling = { id, scrollHeight, scrollTop: el.scrollTop };\n }\n }\n return [\n {\n top: Math.round(top),\n left: Math.round(left),\n right: Math.round(right),\n bottom: Math.round(bottom),\n height: Math.round(height),\n width: Math.round(width),\n scrolling,\n },\n el,\n component,\n ];\n}\n\nfunction allBoxesContainingPoint(\n component: LayoutModel,\n measurements: Measurements,\n x: number,\n y: number,\n dropTargets?: string[],\n boxes: LayoutModel[] = [],\n): LayoutModel[] {\n const {\n children,\n \"data-path\": dataPath,\n path = dataPath,\n } = getProps(component);\n\n const type = typeOf(component) as string;\n const rect = measurements[path];\n if (!boxContainsPoint(rect, x, y)) return boxes;\n\n if (dropTargets && dropTargets.length) {\n if (dropTargets.includes(path)) {\n boxes.push(component);\n } else if (\n dropTargets.some((dropTargetPath) => dropTargetPath.startsWith(path))\n ) {\n // keep going\n } else {\n return boxes;\n }\n } else {\n boxes.push(component);\n }\n\n if (!isContainer(type)) {\n return boxes;\n }\n\n if (rect.header && boxContainsPoint(rect.header, x, y)) {\n return boxes;\n }\n\n if (rect.scrolling) {\n scrollIntoViewIfNeccesary(rect, x, y);\n }\n\n for (let i = 0; i < children.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (type === \"Stack\" && (component.props as any).active !== i) {\n continue;\n }\n const nestedBoxes = allBoxesContainingPoint(\n children[i],\n measurements,\n x,\n y,\n dropTargets,\n );\n if (nestedBoxes.length) {\n return boxes.concat(nestedBoxes);\n }\n }\n return boxes;\n}\n\nfunction scrollIntoViewIfNeccesary(\n { top, bottom, scrolling }: DragDropRect,\n x: number,\n y: number,\n) {\n if (scrolling) {\n const { id, scrollTop, scrollHeight } = scrolling;\n const height = bottom - top;\n if (scrollTop === 0 && bottom - y < 50) {\n const scrollMax = scrollHeight - height;\n const el = document.getElementById(id) as HTMLElement;\n el.scrollTo({ left: 0, top: scrollMax, behavior: \"smooth\" });\n scrolling.scrollTop = scrollMax;\n } else if (scrollTop > 0 && y - top < 50) {\n const el = document.getElementById(id) as HTMLElement;\n el.scrollTo({ left: 0, top: 0, behavior: \"smooth\" });\n scrolling.scrollTop = 0;\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n"],"names":["left","right","header"],"mappings":"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"}
@@ -1,159 +0,0 @@
1
- import { pointPositionWithinRect } from './BoxModel.js';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- const SCALE_FACTOR = 0.4;
7
- class DragState {
8
- constructor(zone, mouseX, mouseY, measurements, intrinsicSize) {
9
- __publicField(this, "constraint");
10
- __publicField(this, "x");
11
- __publicField(this, "y");
12
- __publicField(this, "intrinsicSize");
13
- this.init(zone, mouseX, mouseY, measurements, intrinsicSize);
14
- }
15
- init(zone, mouseX, mouseY, rect, intrinsicSize) {
16
- const { left: x, top: y } = rect;
17
- const { pctX, pctY } = pointPositionWithinRect(mouseX, mouseY, rect);
18
- const scaleFactor = SCALE_FACTOR;
19
- const leadX = pctX * rect.width;
20
- const trailX = rect.width - leadX;
21
- const leadY = pctY * rect.height;
22
- const trailY = rect.height - leadY;
23
- const scaledWidth = rect.width * scaleFactor, scaledHeight = rect.height * scaleFactor;
24
- const scaleDiff = 1 - scaleFactor;
25
- const leadXScaleDiff = leadX * scaleDiff;
26
- const leadYScaleDiff = leadY * scaleDiff;
27
- const trailXScaleDiff = trailX * scaleDiff;
28
- const trailYScaleDiff = trailY * scaleDiff;
29
- this.intrinsicSize = intrinsicSize;
30
- this.constraint = {
31
- zone: {
32
- x: {
33
- lo: zone.left,
34
- hi: zone.right
35
- },
36
- y: {
37
- lo: zone.top,
38
- hi: zone.bottom
39
- }
40
- },
41
- pos: {
42
- x: {
43
- lo: (
44
- /* left */
45
- zone.left - leadXScaleDiff
46
- ),
47
- hi: (
48
- /* right */
49
- zone.right - rect.width + trailXScaleDiff
50
- )
51
- },
52
- y: {
53
- lo: (
54
- /* top */
55
- zone.top - leadYScaleDiff
56
- ),
57
- hi: (
58
- /* bottom */
59
- zone.bottom - rect.height + trailYScaleDiff
60
- )
61
- }
62
- },
63
- mouse: {
64
- x: {
65
- lo: (
66
- /* left */
67
- zone.left + scaledWidth * pctX
68
- ),
69
- hi: (
70
- /* right */
71
- zone.right - scaledWidth * (1 - pctX)
72
- )
73
- },
74
- y: {
75
- lo: (
76
- /* top */
77
- zone.top + scaledHeight * pctY
78
- ),
79
- hi: (
80
- /* bottom */
81
- zone.bottom - scaledHeight * (1 - pctY)
82
- )
83
- }
84
- }
85
- };
86
- this.x = {
87
- pos: x,
88
- lo: false,
89
- hi: false,
90
- mousePos: mouseX,
91
- mousePct: pctX
92
- };
93
- this.y = {
94
- pos: y,
95
- lo: false,
96
- hi: false,
97
- mousePos: mouseY,
98
- mousePct: pctY
99
- };
100
- }
101
- outOfBounds() {
102
- return this.x.lo || this.x.hi || this.y.lo || this.y.hi;
103
- }
104
- inBounds() {
105
- return !this.outOfBounds();
106
- }
107
- dropX() {
108
- return this.dropXY("x");
109
- }
110
- dropY() {
111
- return this.dropXY("y");
112
- }
113
- hasIntrinsicSize() {
114
- return this?.intrinsicSize?.height && this?.intrinsicSize?.width;
115
- }
116
- /*
117
- * diff = mouse movement, signed int
118
- * xy = 'x' or 'y'
119
- */
120
- //todo, diff can be calculated in here
121
- update(xy, mousePos) {
122
- const state = this[xy], mouseConstraint = this.constraint.mouse[xy], posConstraint = this.constraint.pos[xy], previousPos = state.pos;
123
- const diff = mousePos - state.mousePos;
124
- if (diff < 0) {
125
- if (state.lo) ; else if (mousePos < mouseConstraint.lo) {
126
- state.lo = true;
127
- state.pos = posConstraint.lo;
128
- } else if (state.hi) {
129
- if (mousePos < mouseConstraint.hi) {
130
- state.hi = false;
131
- state.pos += diff;
132
- }
133
- } else {
134
- state.pos += diff;
135
- }
136
- } else if (diff > 0) {
137
- if (state.hi) ; else if (mousePos > mouseConstraint.hi) {
138
- state.hi = true;
139
- state.pos = posConstraint.hi;
140
- } else if (state.lo) {
141
- if (mousePos > mouseConstraint.lo) {
142
- state.lo = false;
143
- state.pos += diff;
144
- }
145
- } else {
146
- state.pos += diff;
147
- }
148
- }
149
- state.mousePos = mousePos;
150
- return previousPos !== state.pos;
151
- }
152
- dropXY(dir) {
153
- const pos = this[dir], rect = this.constraint.zone[dir];
154
- return pos.lo ? Math.max(rect.lo, pos.mousePos) : pos.hi ? Math.min(pos.mousePos, Math.round(rect.hi) - 1) : pos.mousePos;
155
- }
156
- }
157
-
158
- export { DragState };
159
- //# sourceMappingURL=DragState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DragState.js","sources":["../../../../packages/vuu-layout/src/drag-drop/DragState.ts"],"sourcesContent":["import { pointPositionWithinRect } from './BoxModel';\nimport { DragDropRect } from './dragDropTypes';\n\nconst SCALE_FACTOR = 0.4;\n\nexport type IntrinsicSizes = {\n height?: number;\n width?: number;\n};\n\ninterface ZoneRange {\n hi: number;\n lo: number;\n}\ntype DragConstraint = {\n zone: {\n x: ZoneRange;\n y: ZoneRange;\n };\n pos: {\n x: ZoneRange;\n y: ZoneRange;\n };\n mouse: {\n x: ZoneRange;\n y: ZoneRange;\n };\n};\n\ninterface ExtendedZoneRange {\n lo: boolean;\n hi: boolean;\n mousePct: number;\n mousePos: number;\n pos: number;\n}\n\nexport class DragState {\n public constraint!: DragConstraint;\n public x!: ExtendedZoneRange;\n public y!: ExtendedZoneRange;\n public intrinsicSize: IntrinsicSizes | undefined;\n\n constructor(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n measurements: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n this.init(zone, mouseX, mouseY, measurements, intrinsicSize);\n }\n\n init(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n rect: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n const { left: x, top: y } = rect;\n\n const { pctX, pctY } = pointPositionWithinRect(mouseX, mouseY, rect);\n\n // We are applying a scale factor of 0.4 to the draggee. This is purely a visual\n // effect - the actual box size remains the original size. The 'leading' values\n // represent the difference between the visual scaled down box and the actual box.\n\n const scaleFactor = SCALE_FACTOR;\n\n const leadX = pctX * rect.width;\n const trailX = rect.width - leadX;\n const leadY = pctY * rect.height;\n const trailY = rect.height - leadY;\n\n // When we assign position to rect using css. positioning units are applied to the\n // unscaled shape, so we have to adjust values to take scaling into account.\n const scaledWidth = rect.width * scaleFactor,\n scaledHeight = rect.height * scaleFactor;\n\n const scaleDiff = 1 - scaleFactor;\n const leadXScaleDiff = leadX * scaleDiff;\n const leadYScaleDiff = leadY * scaleDiff;\n const trailXScaleDiff = trailX * scaleDiff;\n const trailYScaleDiff = trailY * scaleDiff;\n\n this.intrinsicSize = intrinsicSize;\n\n this.constraint = {\n zone: {\n x: {\n lo: zone.left,\n hi: zone.right\n },\n y: {\n lo: zone.top,\n hi: zone.bottom\n }\n },\n\n pos: {\n x: {\n lo: /* left */ zone.left - leadXScaleDiff,\n hi: /* right */ zone.right - rect.width + trailXScaleDiff\n },\n y: {\n lo: /* top */ zone.top - leadYScaleDiff,\n hi: /* bottom */ zone.bottom - rect.height + trailYScaleDiff\n }\n },\n mouse: {\n x: {\n lo: /* left */ zone.left + scaledWidth * pctX,\n hi: /* right */ zone.right - scaledWidth * (1 - pctX)\n },\n y: {\n lo: /* top */ zone.top + scaledHeight * pctY,\n hi: /* bottom */ zone.bottom - scaledHeight * (1 - pctY)\n }\n }\n };\n\n this.x = {\n pos: x,\n lo: false,\n hi: false,\n mousePos: mouseX,\n mousePct: pctX\n };\n this.y = {\n pos: y,\n lo: false,\n hi: false,\n mousePos: mouseY,\n mousePct: pctY\n };\n }\n\n outOfBounds() {\n return this.x.lo || this.x.hi || this.y.lo || this.y.hi;\n }\n\n inBounds() {\n return !this.outOfBounds();\n }\n\n dropX() {\n return this.dropXY('x');\n }\n\n dropY() {\n return this.dropXY('y');\n }\n\n hasIntrinsicSize(): number | undefined {\n return this?.intrinsicSize?.height && this?.intrinsicSize?.width;\n }\n\n /*\n * diff = mouse movement, signed int\n * xy = 'x' or 'y'\n */\n //todo, diff can be calculated in here\n update(xy: 'x' | 'y', mousePos: number) {\n const state = this[xy],\n mouseConstraint = this.constraint.mouse[xy],\n posConstraint = this.constraint.pos[xy],\n previousPos = state.pos;\n\n const diff = mousePos - state.mousePos;\n\n //xy==='x' && console.log(`update: state.lo=${state.lo}, mPos=${mousePos}, mC.lo=${mouseConstraint.lo}, prevPos=${previousPos}, diff=${diff} ` );\n\n if (diff < 0) {\n if (state.lo) {\n /* do nothing */\n } else if (mousePos < mouseConstraint.lo) {\n state.lo = true;\n state.pos = posConstraint.lo;\n } else if (state.hi) {\n if (mousePos < mouseConstraint.hi) {\n state.hi = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n } else if (diff > 0) {\n if (state.hi) {\n /* do nothing */\n } else if (mousePos > mouseConstraint.hi) {\n state.hi = true;\n state.pos = posConstraint.hi;\n } else if (state.lo) {\n if (mousePos > mouseConstraint.lo) {\n state.lo = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n }\n\n state.mousePos = mousePos;\n\n return previousPos !== state.pos;\n }\n\n private dropXY(this: DragState, dir: 'x' | 'y') {\n const pos = this[dir],\n rect = this.constraint.zone[dir];\n // why not do the rounding +/- 1 on the rect initially - this is all it is usef for\n return pos.lo\n ? Math.max(rect.lo, pos.mousePos)\n : pos.hi\n ? Math.min(pos.mousePos, Math.round(rect.hi) - 1)\n : pos.mousePos;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,190 +0,0 @@
1
- import { findTarget, followPath } from '../utils/pathUtils.js';
2
- import { getProps } from '../utils/propUtils.js';
3
- import { BoxModel } from './BoxModel.js';
4
- import { DragState } from './DragState.js';
5
- import { identifyDropTarget, DropTarget } from './DropTarget.js';
6
- import DropTargetCanvas from './DropTargetRenderer.js';
7
-
8
- let _dragStartCallback;
9
- let _dragMoveCallback;
10
- let _dragEndCallback;
11
- let _dragStartX;
12
- let _dragStartY;
13
- let _dragContainer;
14
- let _dragState;
15
- let _dropTarget = null;
16
- let _validDropTargetPaths;
17
- let _dragInstructions;
18
- let _measurements;
19
- let _simpleDrag;
20
- let _dragThreshold;
21
- let _mouseDownTimer = null;
22
- const DEFAULT_DRAG_THRESHOLD = 3;
23
- const _dropTargetRenderer = new DropTargetCanvas();
24
- const SCALE_FACTOR = 0.4;
25
- function getDragContainer(rootContainer, dragContainerPath) {
26
- if (dragContainerPath) {
27
- return followPath(rootContainer, dragContainerPath);
28
- } else {
29
- return findTarget(
30
- rootContainer,
31
- // TODO dropTarget is not good
32
- (props) => props.dropTarget
33
- );
34
- }
35
- }
36
- const Draggable = {
37
- handleMousedown(e, dragStartCallback, dragInstructions = {}) {
38
- _dragStartCallback = dragStartCallback;
39
- _dragInstructions = dragInstructions;
40
- _dragStartX = e.clientX;
41
- _dragStartY = e.clientY;
42
- _dragThreshold = dragInstructions.dragThreshold === void 0 ? DEFAULT_DRAG_THRESHOLD : dragInstructions.dragThreshold;
43
- if (_dragThreshold === 0) {
44
- _dragStartCallback(e, 0, 0);
45
- } else {
46
- window.addEventListener("mousemove", preDragMousemoveHandler, false);
47
- window.addEventListener("mouseup", preDragMouseupHandler, false);
48
- _mouseDownTimer = window.setTimeout(() => {
49
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
50
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
51
- _dragStartCallback?.(e, 0, 0);
52
- }, 500);
53
- }
54
- e.preventDefault();
55
- },
56
- // called from handleDragStart (_dragCallback)
57
- initDrag(rootContainer, dragContainerPath, { top, left, right, bottom }, dragPos, dragHandler, intrinsicSize, dropTargets) {
58
- ({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);
59
- return initDrag(
60
- rootContainer,
61
- dragContainerPath,
62
- { top, left, right, bottom },
63
- dragPos,
64
- intrinsicSize,
65
- dropTargets
66
- );
67
- }
68
- };
69
- function preDragMousemoveHandler(e) {
70
- const x_diff = e.clientX - _dragStartX ;
71
- const y_diff = e.clientY - _dragStartY ;
72
- const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));
73
- if (mouseMoveDistance > _dragThreshold) {
74
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
75
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
76
- _dragStartCallback?.(e, x_diff, y_diff);
77
- _dragStartCallback = null;
78
- }
79
- }
80
- function preDragMouseupHandler() {
81
- if (_mouseDownTimer) {
82
- window.clearTimeout(_mouseDownTimer);
83
- _mouseDownTimer = null;
84
- }
85
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
86
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
87
- }
88
- function initDrag(rootContainer, dragContainerPath, dragRect, dragPos, intrinsicSize, dropTargets) {
89
- _dragContainer = getDragContainer(rootContainer, dragContainerPath);
90
- const { "data-path": dataPath, path = dataPath } = getProps(_dragContainer);
91
- if (dropTargets) {
92
- const dropPaths = dropTargets.map((id) => findTarget(rootContainer, (props) => props.id === id)).map((target) => target.props.path);
93
- _validDropTargetPaths = dropPaths;
94
- }
95
- _measurements = BoxModel.measure(_dragContainer, dropTargets);
96
- const dragZone = _measurements[path];
97
- _dragState = new DragState(
98
- dragZone,
99
- dragPos.x,
100
- dragPos.y,
101
- dragRect,
102
- intrinsicSize
103
- );
104
- const pctX = Math.round(_dragState.x.mousePct * 100);
105
- const pctY = Math.round(_dragState.y.mousePct * 100);
106
- window.addEventListener("mousemove", dragMousemoveHandler, false);
107
- window.addEventListener("mouseup", dragMouseupHandler, false);
108
- window.addEventListener("keydown", dragKeydownHandler, false);
109
- _simpleDrag = false;
110
- _dropTargetRenderer.prepare(dragRect, "tab-only");
111
- return _dragInstructions.DoNotTransform ? "transform:none" : (
112
- // scale factor should be applied in caller, not here
113
- `transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`
114
- );
115
- }
116
- function dragMousemoveHandler(evt) {
117
- const x = evt.clientX;
118
- const y = evt.clientY;
119
- const dragState = _dragState;
120
- const currentDropTarget = _dropTarget;
121
- let dropTarget;
122
- let newX, newY;
123
- if (dragState.update("x", x)) {
124
- newX = dragState.x.pos;
125
- }
126
- if (dragState.update("y", y)) {
127
- newY = dragState.y.pos;
128
- }
129
- if (newX === void 0 && newY === void 0) ; else {
130
- _dragMoveCallback?.(newX, newY);
131
- }
132
- if (_simpleDrag || _dragContainer === void 0) {
133
- return;
134
- }
135
- if (dragState.inBounds()) {
136
- dropTarget = identifyDropTarget(
137
- x,
138
- y,
139
- _dragContainer,
140
- _measurements,
141
- dragState.hasIntrinsicSize(),
142
- _validDropTargetPaths
143
- );
144
- } else {
145
- dropTarget = identifyDropTarget(
146
- dragState.dropX(),
147
- dragState.dropY(),
148
- _dragContainer,
149
- _measurements
150
- );
151
- }
152
- if (currentDropTarget) {
153
- if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {
154
- _dropTarget = null;
155
- }
156
- }
157
- if (dropTarget) {
158
- _dropTargetRenderer.draw(dropTarget, dragState);
159
- _dropTarget = dropTarget;
160
- }
161
- }
162
- function dragKeydownHandler(evt) {
163
- if (evt.key === "Escape") {
164
- _dropTarget = null;
165
- onDragEnd();
166
- }
167
- }
168
- function dragMouseupHandler() {
169
- onDragEnd();
170
- }
171
- function onDragEnd() {
172
- if (_dropTarget) {
173
- const dropTarget = _dropTargetRenderer.hoverDropTarget || DropTarget.getActiveDropTarget(_dropTarget);
174
- _dragEndCallback?.(dropTarget);
175
- _dropTarget = null;
176
- } else {
177
- _dragEndCallback?.();
178
- }
179
- _dragMoveCallback = null;
180
- _dragEndCallback = null;
181
- _dragContainer = void 0;
182
- _dropTargetRenderer.clear();
183
- _validDropTargetPaths = void 0;
184
- window.removeEventListener("mousemove", dragMousemoveHandler, false);
185
- window.removeEventListener("mouseup", dragMouseupHandler, false);
186
- window.removeEventListener("keydown", dragKeydownHandler, false);
187
- }
188
-
189
- export { Draggable };
190
- //# sourceMappingURL=Draggable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Draggable.js","sources":["../../../../packages/vuu-layout/src/drag-drop/Draggable.ts"],"sourcesContent":["import { rect } from \"@vuu-ui/vuu-utils\";\nimport { ReactElement } from \"react\";\nimport { findTarget, followPath, getProps } from \"../utils\";\nimport { BoxModel, Measurements } from \"./BoxModel\";\nimport { DragDropRect } from \"./dragDropTypes\";\nimport { DragState, IntrinsicSizes } from \"./DragState\";\nimport { DropTarget, identifyDropTarget } from \"./DropTarget\";\nimport DropTargetRenderer from \"./DropTargetRenderer\";\n\nexport type DragStartCallback = (e: MouseEvent, x: number, y: number) => void;\nexport type DragMoveCallback = (\n x: number | undefined,\n y: number | undefined,\n) => void;\nexport type DragEndCallback = (droppedTarget?: Partial<DropTarget>) => void;\nexport type DragInstructions = {\n DoNotRemove?: boolean;\n DoNotTransform?: boolean;\n dragThreshold?: number;\n DriftHomeIfNoDropTarget?: boolean;\n RemoveDraggableOnDragEnd?: boolean;\n};\n\nlet _dragStartCallback: DragStartCallback | null;\nlet _dragMoveCallback: DragMoveCallback | null;\nlet _dragEndCallback: DragEndCallback | null;\n\nlet _dragStartX: number;\nlet _dragStartY: number;\nlet _dragContainer: ReactElement | undefined;\nlet _dragState: DragState;\nlet _dropTarget: DropTarget | null = null;\nlet _validDropTargetPaths: string[] | undefined;\nlet _dragInstructions: DragInstructions;\nlet _measurements: Measurements;\nlet _simpleDrag: boolean;\nlet _dragThreshold: number;\nlet _mouseDownTimer: number | null = null;\n\nconst DEFAULT_DRAG_THRESHOLD = 3;\nconst _dropTargetRenderer = new DropTargetRenderer();\nconst SCALE_FACTOR = 0.4;\n\nfunction getDragContainer(\n rootContainer: ReactElement,\n dragContainerPath: string,\n) {\n if (dragContainerPath) {\n return followPath(rootContainer, dragContainerPath) as ReactElement;\n } else {\n return findTarget(\n rootContainer,\n // TODO dropTarget is not good\n (props) => props.dropTarget,\n ) as ReactElement;\n }\n}\n\nexport const Draggable = {\n handleMousedown(\n e: MouseEvent,\n dragStartCallback: DragStartCallback,\n dragInstructions: DragInstructions = {},\n ) {\n _dragStartCallback = dragStartCallback;\n _dragInstructions = dragInstructions;\n\n _dragStartX = e.clientX;\n _dragStartY = e.clientY;\n\n _dragThreshold =\n dragInstructions.dragThreshold === undefined\n ? DEFAULT_DRAG_THRESHOLD\n : dragInstructions.dragThreshold;\n\n if (_dragThreshold === 0) {\n // maybe this should be -1\n _dragStartCallback(e, 0, 0);\n } else {\n window.addEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", preDragMouseupHandler, false);\n\n _mouseDownTimer = window.setTimeout(() => {\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, 0, 0);\n }, 500);\n }\n\n e.preventDefault();\n },\n\n // called from handleDragStart (_dragCallback)\n initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n { top, left, right, bottom }: rect,\n dragPos: { x: number; y: number },\n dragHandler: {\n drag: DragMoveCallback;\n drop: DragEndCallback;\n },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[],\n ) {\n ({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);\n return initDrag(\n rootContainer,\n dragContainerPath,\n { top, left, right, bottom } as DragDropRect,\n dragPos,\n intrinsicSize,\n dropTargets,\n );\n },\n};\n\nfunction preDragMousemoveHandler(e: MouseEvent) {\n const x = true;\n const y = true;\n\n const x_diff = x ? e.clientX - _dragStartX : 0;\n const y_diff = y ? e.clientY - _dragStartY : 0;\n const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));\n\n // when we do finally move the draggee, we are going to 'jump' by the amount of the drag threshold, should we\n // attempt to animate this ?\n if (mouseMoveDistance > _dragThreshold) {\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, x_diff, y_diff);\n _dragStartCallback = null;\n }\n}\n\nfunction preDragMouseupHandler() {\n if (_mouseDownTimer) {\n window.clearTimeout(_mouseDownTimer);\n _mouseDownTimer = null;\n }\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n}\n\nfunction initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n dragRect: DragDropRect,\n dragPos: { x: number; y: number },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[],\n) {\n _dragContainer = getDragContainer(rootContainer, dragContainerPath);\n\n const { \"data-path\": dataPath, path = dataPath } = getProps(_dragContainer);\n\n if (dropTargets) {\n const dropPaths = dropTargets\n .map((id) => findTarget(rootContainer, (props) => props.id === id))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((target) => (target as any).props.path);\n _validDropTargetPaths = dropPaths;\n }\n\n // const start = window.performance.now();\n // translate the layout $position to drag-oriented co-ordinates, ignoring splitters\n\n _measurements = BoxModel.measure(_dragContainer, dropTargets);\n // console.log({ _measurements });\n // onsole.log({ measurements: _measurements });\n // const end = window.performance.now();\n // console.log(`[Draggable] measurements took ${end - start}ms`, _measurements);\n\n const dragZone = _measurements[path];\n\n _dragState = new DragState(\n dragZone,\n dragPos.x,\n dragPos.y,\n dragRect,\n intrinsicSize,\n );\n\n const pctX = Math.round(_dragState.x.mousePct * 100);\n const pctY = Math.round(_dragState.y.mousePct * 100);\n\n window.addEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", dragMouseupHandler, false);\n window.addEventListener(\"keydown\", dragKeydownHandler, false);\n\n _simpleDrag = false;\n\n _dropTargetRenderer.prepare(dragRect, \"tab-only\");\n\n return _dragInstructions.DoNotTransform\n ? \"transform:none\"\n : // scale factor should be applied in caller, not here\n `transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`;\n}\n\nfunction dragMousemoveHandler(evt: MouseEvent) {\n const x = evt.clientX;\n const y = evt.clientY;\n const dragState = _dragState;\n const currentDropTarget = _dropTarget;\n let dropTarget;\n let newX, newY;\n\n if (dragState.update(\"x\", x)) {\n newX = dragState.x.pos;\n }\n\n if (dragState.update(\"y\", y)) {\n newY = dragState.y.pos;\n }\n\n if (newX === undefined && newY === undefined) {\n //onsole.log('both x and y are unchanged');\n } else {\n _dragMoveCallback?.(newX, newY);\n }\n\n if (_simpleDrag || _dragContainer === undefined) {\n return;\n }\n\n if (dragState.inBounds()) {\n dropTarget = identifyDropTarget(\n x,\n y,\n _dragContainer,\n _measurements,\n dragState.hasIntrinsicSize(),\n _validDropTargetPaths,\n );\n } else {\n dropTarget = identifyDropTarget(\n dragState.dropX(),\n dragState.dropY(),\n _dragContainer,\n _measurements,\n );\n }\n\n // did we have an existing droptarget which is no longer such ...\n if (currentDropTarget) {\n if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {\n _dropTarget = null;\n }\n }\n\n if (dropTarget) {\n _dropTargetRenderer.draw(dropTarget, dragState);\n _dropTarget = dropTarget;\n }\n}\n\nfunction dragKeydownHandler(evt: KeyboardEvent) {\n if (evt.key === \"Escape\") {\n _dropTarget = null;\n onDragEnd();\n }\n}\n\nfunction dragMouseupHandler() {\n onDragEnd();\n}\n\nfunction onDragEnd() {\n if (_dropTarget) {\n const dropTarget =\n _dropTargetRenderer.hoverDropTarget ||\n DropTarget.getActiveDropTarget(_dropTarget);\n\n _dragEndCallback?.(dropTarget as DropTarget);\n\n _dropTarget = null;\n } else {\n _dragEndCallback?.();\n }\n\n _dragMoveCallback = null;\n _dragEndCallback = null;\n\n _dragContainer = undefined;\n _dropTargetRenderer.clear();\n _validDropTargetPaths = undefined;\n window.removeEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", dragMouseupHandler, false);\n window.removeEventListener(\"keydown\", dragKeydownHandler, false);\n}\n"],"names":["DropTargetRenderer"],"mappings":"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"}