@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,161 +0,0 @@
1
- 'use strict';
2
-
3
- var BoxModel = require('./BoxModel.js');
4
-
5
- var __defProp = Object.defineProperty;
6
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- const SCALE_FACTOR = 0.4;
9
- class DragState {
10
- constructor(zone, mouseX, mouseY, measurements, intrinsicSize) {
11
- __publicField(this, "constraint");
12
- __publicField(this, "x");
13
- __publicField(this, "y");
14
- __publicField(this, "intrinsicSize");
15
- this.init(zone, mouseX, mouseY, measurements, intrinsicSize);
16
- }
17
- init(zone, mouseX, mouseY, rect, intrinsicSize) {
18
- const { left: x, top: y } = rect;
19
- const { pctX, pctY } = BoxModel.pointPositionWithinRect(mouseX, mouseY, rect);
20
- const scaleFactor = SCALE_FACTOR;
21
- const leadX = pctX * rect.width;
22
- const trailX = rect.width - leadX;
23
- const leadY = pctY * rect.height;
24
- const trailY = rect.height - leadY;
25
- const scaledWidth = rect.width * scaleFactor, scaledHeight = rect.height * scaleFactor;
26
- const scaleDiff = 1 - scaleFactor;
27
- const leadXScaleDiff = leadX * scaleDiff;
28
- const leadYScaleDiff = leadY * scaleDiff;
29
- const trailXScaleDiff = trailX * scaleDiff;
30
- const trailYScaleDiff = trailY * scaleDiff;
31
- this.intrinsicSize = intrinsicSize;
32
- this.constraint = {
33
- zone: {
34
- x: {
35
- lo: zone.left,
36
- hi: zone.right
37
- },
38
- y: {
39
- lo: zone.top,
40
- hi: zone.bottom
41
- }
42
- },
43
- pos: {
44
- x: {
45
- lo: (
46
- /* left */
47
- zone.left - leadXScaleDiff
48
- ),
49
- hi: (
50
- /* right */
51
- zone.right - rect.width + trailXScaleDiff
52
- )
53
- },
54
- y: {
55
- lo: (
56
- /* top */
57
- zone.top - leadYScaleDiff
58
- ),
59
- hi: (
60
- /* bottom */
61
- zone.bottom - rect.height + trailYScaleDiff
62
- )
63
- }
64
- },
65
- mouse: {
66
- x: {
67
- lo: (
68
- /* left */
69
- zone.left + scaledWidth * pctX
70
- ),
71
- hi: (
72
- /* right */
73
- zone.right - scaledWidth * (1 - pctX)
74
- )
75
- },
76
- y: {
77
- lo: (
78
- /* top */
79
- zone.top + scaledHeight * pctY
80
- ),
81
- hi: (
82
- /* bottom */
83
- zone.bottom - scaledHeight * (1 - pctY)
84
- )
85
- }
86
- }
87
- };
88
- this.x = {
89
- pos: x,
90
- lo: false,
91
- hi: false,
92
- mousePos: mouseX,
93
- mousePct: pctX
94
- };
95
- this.y = {
96
- pos: y,
97
- lo: false,
98
- hi: false,
99
- mousePos: mouseY,
100
- mousePct: pctY
101
- };
102
- }
103
- outOfBounds() {
104
- return this.x.lo || this.x.hi || this.y.lo || this.y.hi;
105
- }
106
- inBounds() {
107
- return !this.outOfBounds();
108
- }
109
- dropX() {
110
- return this.dropXY("x");
111
- }
112
- dropY() {
113
- return this.dropXY("y");
114
- }
115
- hasIntrinsicSize() {
116
- return this?.intrinsicSize?.height && this?.intrinsicSize?.width;
117
- }
118
- /*
119
- * diff = mouse movement, signed int
120
- * xy = 'x' or 'y'
121
- */
122
- //todo, diff can be calculated in here
123
- update(xy, mousePos) {
124
- const state = this[xy], mouseConstraint = this.constraint.mouse[xy], posConstraint = this.constraint.pos[xy], previousPos = state.pos;
125
- const diff = mousePos - state.mousePos;
126
- if (diff < 0) {
127
- if (state.lo) ; else if (mousePos < mouseConstraint.lo) {
128
- state.lo = true;
129
- state.pos = posConstraint.lo;
130
- } else if (state.hi) {
131
- if (mousePos < mouseConstraint.hi) {
132
- state.hi = false;
133
- state.pos += diff;
134
- }
135
- } else {
136
- state.pos += diff;
137
- }
138
- } else if (diff > 0) {
139
- if (state.hi) ; else if (mousePos > mouseConstraint.hi) {
140
- state.hi = true;
141
- state.pos = posConstraint.hi;
142
- } else if (state.lo) {
143
- if (mousePos > mouseConstraint.lo) {
144
- state.lo = false;
145
- state.pos += diff;
146
- }
147
- } else {
148
- state.pos += diff;
149
- }
150
- }
151
- state.mousePos = mousePos;
152
- return previousPos !== state.pos;
153
- }
154
- dropXY(dir) {
155
- const pos = this[dir], rect = this.constraint.zone[dir];
156
- return pos.lo ? Math.max(rect.lo, pos.mousePos) : pos.hi ? Math.min(pos.mousePos, Math.round(rect.hi) - 1) : pos.mousePos;
157
- }
158
- }
159
-
160
- exports.DragState = DragState;
161
- //# 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":["pointPositionWithinRect"],"mappings":"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"}
@@ -1,192 +0,0 @@
1
- 'use strict';
2
-
3
- var pathUtils = require('../utils/pathUtils.js');
4
- var propUtils = require('../utils/propUtils.js');
5
- var BoxModel = require('./BoxModel.js');
6
- var DragState = require('./DragState.js');
7
- var DropTarget = require('./DropTarget.js');
8
- var DropTargetRenderer = require('./DropTargetRenderer.js');
9
-
10
- let _dragStartCallback;
11
- let _dragMoveCallback;
12
- let _dragEndCallback;
13
- let _dragStartX;
14
- let _dragStartY;
15
- let _dragContainer;
16
- let _dragState;
17
- let _dropTarget = null;
18
- let _validDropTargetPaths;
19
- let _dragInstructions;
20
- let _measurements;
21
- let _simpleDrag;
22
- let _dragThreshold;
23
- let _mouseDownTimer = null;
24
- const DEFAULT_DRAG_THRESHOLD = 3;
25
- const _dropTargetRenderer = new DropTargetRenderer();
26
- const SCALE_FACTOR = 0.4;
27
- function getDragContainer(rootContainer, dragContainerPath) {
28
- if (dragContainerPath) {
29
- return pathUtils.followPath(rootContainer, dragContainerPath);
30
- } else {
31
- return pathUtils.findTarget(
32
- rootContainer,
33
- // TODO dropTarget is not good
34
- (props) => props.dropTarget
35
- );
36
- }
37
- }
38
- const Draggable = {
39
- handleMousedown(e, dragStartCallback, dragInstructions = {}) {
40
- _dragStartCallback = dragStartCallback;
41
- _dragInstructions = dragInstructions;
42
- _dragStartX = e.clientX;
43
- _dragStartY = e.clientY;
44
- _dragThreshold = dragInstructions.dragThreshold === void 0 ? DEFAULT_DRAG_THRESHOLD : dragInstructions.dragThreshold;
45
- if (_dragThreshold === 0) {
46
- _dragStartCallback(e, 0, 0);
47
- } else {
48
- window.addEventListener("mousemove", preDragMousemoveHandler, false);
49
- window.addEventListener("mouseup", preDragMouseupHandler, false);
50
- _mouseDownTimer = window.setTimeout(() => {
51
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
52
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
53
- _dragStartCallback?.(e, 0, 0);
54
- }, 500);
55
- }
56
- e.preventDefault();
57
- },
58
- // called from handleDragStart (_dragCallback)
59
- initDrag(rootContainer, dragContainerPath, { top, left, right, bottom }, dragPos, dragHandler, intrinsicSize, dropTargets) {
60
- ({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);
61
- return initDrag(
62
- rootContainer,
63
- dragContainerPath,
64
- { top, left, right, bottom },
65
- dragPos,
66
- intrinsicSize,
67
- dropTargets
68
- );
69
- }
70
- };
71
- function preDragMousemoveHandler(e) {
72
- const x_diff = e.clientX - _dragStartX ;
73
- const y_diff = e.clientY - _dragStartY ;
74
- const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));
75
- if (mouseMoveDistance > _dragThreshold) {
76
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
77
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
78
- _dragStartCallback?.(e, x_diff, y_diff);
79
- _dragStartCallback = null;
80
- }
81
- }
82
- function preDragMouseupHandler() {
83
- if (_mouseDownTimer) {
84
- window.clearTimeout(_mouseDownTimer);
85
- _mouseDownTimer = null;
86
- }
87
- window.removeEventListener("mousemove", preDragMousemoveHandler, false);
88
- window.removeEventListener("mouseup", preDragMouseupHandler, false);
89
- }
90
- function initDrag(rootContainer, dragContainerPath, dragRect, dragPos, intrinsicSize, dropTargets) {
91
- _dragContainer = getDragContainer(rootContainer, dragContainerPath);
92
- const { "data-path": dataPath, path = dataPath } = propUtils.getProps(_dragContainer);
93
- if (dropTargets) {
94
- const dropPaths = dropTargets.map((id) => pathUtils.findTarget(rootContainer, (props) => props.id === id)).map((target) => target.props.path);
95
- _validDropTargetPaths = dropPaths;
96
- }
97
- _measurements = BoxModel.BoxModel.measure(_dragContainer, dropTargets);
98
- const dragZone = _measurements[path];
99
- _dragState = new DragState.DragState(
100
- dragZone,
101
- dragPos.x,
102
- dragPos.y,
103
- dragRect,
104
- intrinsicSize
105
- );
106
- const pctX = Math.round(_dragState.x.mousePct * 100);
107
- const pctY = Math.round(_dragState.y.mousePct * 100);
108
- window.addEventListener("mousemove", dragMousemoveHandler, false);
109
- window.addEventListener("mouseup", dragMouseupHandler, false);
110
- window.addEventListener("keydown", dragKeydownHandler, false);
111
- _simpleDrag = false;
112
- _dropTargetRenderer.prepare(dragRect, "tab-only");
113
- return _dragInstructions.DoNotTransform ? "transform:none" : (
114
- // scale factor should be applied in caller, not here
115
- `transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`
116
- );
117
- }
118
- function dragMousemoveHandler(evt) {
119
- const x = evt.clientX;
120
- const y = evt.clientY;
121
- const dragState = _dragState;
122
- const currentDropTarget = _dropTarget;
123
- let dropTarget;
124
- let newX, newY;
125
- if (dragState.update("x", x)) {
126
- newX = dragState.x.pos;
127
- }
128
- if (dragState.update("y", y)) {
129
- newY = dragState.y.pos;
130
- }
131
- if (newX === void 0 && newY === void 0) ; else {
132
- _dragMoveCallback?.(newX, newY);
133
- }
134
- if (_simpleDrag || _dragContainer === void 0) {
135
- return;
136
- }
137
- if (dragState.inBounds()) {
138
- dropTarget = DropTarget.identifyDropTarget(
139
- x,
140
- y,
141
- _dragContainer,
142
- _measurements,
143
- dragState.hasIntrinsicSize(),
144
- _validDropTargetPaths
145
- );
146
- } else {
147
- dropTarget = DropTarget.identifyDropTarget(
148
- dragState.dropX(),
149
- dragState.dropY(),
150
- _dragContainer,
151
- _measurements
152
- );
153
- }
154
- if (currentDropTarget) {
155
- if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {
156
- _dropTarget = null;
157
- }
158
- }
159
- if (dropTarget) {
160
- _dropTargetRenderer.draw(dropTarget, dragState);
161
- _dropTarget = dropTarget;
162
- }
163
- }
164
- function dragKeydownHandler(evt) {
165
- if (evt.key === "Escape") {
166
- _dropTarget = null;
167
- onDragEnd();
168
- }
169
- }
170
- function dragMouseupHandler() {
171
- onDragEnd();
172
- }
173
- function onDragEnd() {
174
- if (_dropTarget) {
175
- const dropTarget = _dropTargetRenderer.hoverDropTarget || DropTarget.DropTarget.getActiveDropTarget(_dropTarget);
176
- _dragEndCallback?.(dropTarget);
177
- _dropTarget = null;
178
- } else {
179
- _dragEndCallback?.();
180
- }
181
- _dragMoveCallback = null;
182
- _dragEndCallback = null;
183
- _dragContainer = void 0;
184
- _dropTargetRenderer.clear();
185
- _validDropTargetPaths = void 0;
186
- window.removeEventListener("mousemove", dragMousemoveHandler, false);
187
- window.removeEventListener("mouseup", dragMouseupHandler, false);
188
- window.removeEventListener("keydown", dragKeydownHandler, false);
189
- }
190
-
191
- exports.Draggable = Draggable;
192
- //# 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":["followPath","findTarget","getProps","BoxModel","DragState","identifyDropTarget","DropTarget"],"mappings":"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"}
@@ -1,257 +0,0 @@
1
- 'use strict';
2
-
3
- require('@vuu-ui/vuu-utils');
4
- require('react');
5
- var propUtils = require('../utils/propUtils.js');
6
- var typeOf = require('../utils/typeOf.js');
7
- var BoxModel = require('./BoxModel.js');
8
-
9
- var __defProp = Object.defineProperty;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
12
- const isTabstrip = (dropTarget) => dropTarget.pos.tab && typeOf.typeOf(dropTarget.component) === "Stack" && dropTarget.pos.position.Header;
13
- const { north, south, east, west } = BoxModel.positionValues;
14
- const eastwest = east + west;
15
- const northsouth = north + south;
16
- class DropTarget {
17
- constructor({
18
- component,
19
- pos,
20
- clientRect,
21
- nextDropTarget
22
- }) {
23
- __publicField(this, "active");
24
- __publicField(this, "box");
25
- __publicField(this, "clientRect");
26
- __publicField(this, "component");
27
- __publicField(this, "dropRect");
28
- __publicField(this, "nextDropTarget");
29
- __publicField(this, "pos");
30
- this.component = component;
31
- this.pos = pos;
32
- this.clientRect = clientRect;
33
- this.nextDropTarget = nextDropTarget;
34
- this.active = false;
35
- this.dropRect = void 0;
36
- }
37
- targetTabPos(tab) {
38
- const { left: tabLeft, width: tabWidth, positionRelativeToTab } = tab;
39
- return positionRelativeToTab === BoxModel.RelativeDropPosition.BEFORE ? tabLeft : tabLeft + tabWidth;
40
- }
41
- /**
42
- * Determine what will be rendered by the dropTargetRenderer
43
- *
44
- * @param {*} lineWidth
45
- * @param {*} dragState
46
- * @returns {l, t, r, b, tabLeft, tabWidth, tabHeight}
47
- */
48
- getTargetDropOutline(lineWidth, dragState) {
49
- if (this.pos.tab) {
50
- return this.getDropTabOutline(lineWidth, this.pos.tab);
51
- } else if (dragState && dragState.hasIntrinsicSize()) {
52
- return this.getIntrinsicDropRect(dragState);
53
- } else {
54
- const [l, t, r, b] = this.getDropRectOutline(
55
- lineWidth,
56
- dragState
57
- );
58
- return { l, t, r, b };
59
- }
60
- }
61
- getDropTabOutline(lineWidth, tab) {
62
- const {
63
- clientRect: { top, left, right, bottom, header }
64
- } = this;
65
- const inset = 0;
66
- const gap = Math.round(lineWidth / 2) + inset;
67
- const t = Math.round(top);
68
- const l = Math.round(left + gap);
69
- const r = Math.round(right - gap);
70
- const b = Math.round(bottom - gap);
71
- const tabLeft = this.targetTabPos(tab);
72
- const tabWidth = 60;
73
- const tabHeight = (header?.bottom ?? 0) - (header?.top ?? 0);
74
- return { l, t, r, b, tabLeft, tabWidth, tabHeight };
75
- }
76
- getIntrinsicDropRect(dragState) {
77
- const { pos, clientRect: rect2 } = this;
78
- const { x, y } = dragState;
79
- let height = dragState.intrinsicSize?.height ?? 0;
80
- let width = dragState.intrinsicSize?.height ?? 0;
81
- if (height && height > rect2.height) {
82
- console.log(`DropTarget: we're going to blow the gaff`);
83
- height = rect2.height;
84
- } else if (width && width > rect2.width) {
85
- console.log(`DropTarget: we're going to blow the gaff`);
86
- width = rect2.width;
87
- }
88
- const left = Math.min(
89
- rect2.right - width,
90
- Math.max(rect2.left, Math.round(pos.x - x.mousePct * width))
91
- );
92
- const top = Math.min(
93
- rect2.bottom - height,
94
- Math.max(rect2.top, Math.round(pos.y - y.mousePct * height))
95
- );
96
- const [l, t, r, b] = this.dropRect = [
97
- left,
98
- top,
99
- left + width,
100
- top + height
101
- ];
102
- const guideLines = pos.position.EastOrWest ? [l, rect2.top, l, rect2.bottom, r, rect2.top, r, rect2.bottom] : [rect2.left, t, rect2.right, t, rect2.left, b, rect2.right, b];
103
- return { l, r, t, b, guideLines };
104
- }
105
- /**
106
- * @returns [left, top, right, bottom]
107
- */
108
- getDropRectOutline(lineWidth, dragState) {
109
- const { pos, clientRect: rect2 } = this;
110
- const { width: suggestedWidth, height: suggestedHeight, position } = pos;
111
- const { width: intrinsicWidth, height: intrinsicHeight } = dragState?.intrinsicSize ?? {};
112
- const sizeHeight = intrinsicHeight ?? suggestedHeight ?? 0;
113
- const sizeWidth = intrinsicWidth ?? suggestedWidth ?? 0;
114
- this.dropRect = void 0;
115
- const { top: t, left: l, right: r, bottom: b } = rect2;
116
- const inset = 0;
117
- const gap = Math.round(lineWidth / 2) + inset;
118
- switch (position) {
119
- case BoxModel.Position.North:
120
- case BoxModel.Position.Header: {
121
- const halfHeight = Math.round((b - t) / 2);
122
- const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
123
- return sizeWidth && l + sizeWidth < r ? [l + gap, t + gap, l + sizeWidth - gap, t + gap + height] : [l + gap, t + gap, r - gap, t + gap + height];
124
- }
125
- case BoxModel.Position.West: {
126
- const halfWidth = Math.round((r - l) / 2);
127
- const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
128
- return sizeHeight && t + sizeHeight < b ? [l + gap, t + gap, l - gap + width, t + sizeHeight + gap] : [l + gap, t + gap, l - gap + width, b - gap];
129
- }
130
- case BoxModel.Position.East: {
131
- const halfWidth = Math.round((r - l) / 2);
132
- const width = sizeWidth ? Math.min(halfWidth, Math.round(sizeWidth)) : halfWidth;
133
- return sizeHeight && t + sizeHeight < b ? [r - gap - width, t + gap, r - gap, t + sizeHeight + gap] : [r - gap - width, t + gap, r - gap, b - gap];
134
- }
135
- case BoxModel.Position.South: {
136
- const halfHeight = Math.round((b - t) / 2);
137
- const height = sizeHeight ? Math.min(halfHeight, Math.round(sizeHeight)) : halfHeight;
138
- return sizeWidth && l + sizeWidth < r ? [l + gap, b - gap - height, l + sizeWidth - gap, b - gap] : [l + gap, b - gap - height, r - gap, b - gap];
139
- }
140
- case BoxModel.Position.Centre: {
141
- return [l + gap, t + gap, r - gap, b - gap];
142
- }
143
- default:
144
- console.warn(`DropTarget does not recognize position ${position}`);
145
- return null;
146
- }
147
- }
148
- activate() {
149
- this.active = true;
150
- return this;
151
- }
152
- toArray() {
153
- let dropTarget = this;
154
- const dropTargets = [dropTarget];
155
- while (dropTarget = dropTarget.nextDropTarget) {
156
- dropTargets.push(dropTarget);
157
- }
158
- return dropTargets;
159
- }
160
- static getActiveDropTarget(dropTarget) {
161
- return dropTarget === null ? null : dropTarget?.active ? dropTarget : DropTarget.getActiveDropTarget(dropTarget.nextDropTarget);
162
- }
163
- }
164
- function identifyDropTarget(x, y, rootLayout, measurements, intrinsicSize, validDropTargets) {
165
- let dropTarget = null;
166
- const allBoxesContainingPoint = BoxModel.BoxModel.allBoxesContainingPoint(
167
- rootLayout,
168
- measurements,
169
- x,
170
- y,
171
- validDropTargets
172
- );
173
- if (allBoxesContainingPoint.length) {
174
- const [component, ...containers] = allBoxesContainingPoint;
175
- const {
176
- "data-path": dataPath,
177
- path = dataPath,
178
- "data-row-placeholder": isRowPlaceholder
179
- } = propUtils.getProps(component);
180
- const clientRect = measurements[path];
181
- const placeholderOrientation = intrinsicSize && isRowPlaceholder ? "row" : void 0;
182
- const pos = BoxModel.getPosition(x, y, clientRect, placeholderOrientation);
183
- const box = measurements[path];
184
- const nextDropTarget = ([nextTarget, ...targets]) => {
185
- if (pos.position?.Header || pos.closeToTheEdge) {
186
- const targetPosition = getTargetPosition(
187
- nextTarget,
188
- pos,
189
- box,
190
- measurements,
191
- x,
192
- y
193
- );
194
- if (targetPosition) {
195
- const [containerPos, clientRect2] = targetPosition;
196
- return new DropTarget({
197
- component: nextTarget,
198
- pos: containerPos,
199
- clientRect: clientRect2,
200
- nextDropTarget: nextDropTarget(targets) ?? null
201
- });
202
- } else if (targets.length) {
203
- return nextDropTarget(targets);
204
- }
205
- }
206
- };
207
- dropTarget = new DropTarget({
208
- component,
209
- pos,
210
- clientRect,
211
- nextDropTarget: nextDropTarget(containers) ?? null
212
- }).activate();
213
- }
214
- return dropTarget;
215
- }
216
- function getTargetPosition(container, { closeToTheEdge, position }, box, measurements, x, y) {
217
- if (!container || container.type === "LayoutContainer") {
218
- return;
219
- }
220
- const containingBox = measurements[container.props.path];
221
- const closeToTop = closeToTheEdge & BoxModel.positionValues.north;
222
- const closeToRight = closeToTheEdge & BoxModel.positionValues.east;
223
- const closeToBottom = closeToTheEdge & BoxModel.positionValues.south;
224
- const closeToLeft = closeToTheEdge & BoxModel.positionValues.west;
225
- const atTop = (closeToTop || position.Header) && Math.round(box.top) === Math.round(containingBox.top);
226
- const atRight = closeToRight && Math.round(box.right) === Math.round(containingBox.right);
227
- const atBottom = closeToBottom && Math.round(box.bottom) === Math.round(containingBox.bottom);
228
- const atLeft = closeToLeft && Math.round(box.left) === Math.round(containingBox.left);
229
- if (atTop || atRight || atBottom || atLeft) {
230
- const { "data-path": dataPath, path = dataPath } = container.props;
231
- const clientRect = measurements[path];
232
- const containerPos = BoxModel.getPosition(x, y, clientRect);
233
- if ((isVBox(container) || isTabbedContainer(container)) && closeToTheEdge & eastwest) {
234
- containerPos.width = 120;
235
- return [containerPos, clientRect];
236
- } else if ((isHBox(container) || isTabbedContainer(container)) && (position.Header || closeToTheEdge & northsouth)) {
237
- containerPos.height = 120;
238
- return [containerPos, clientRect];
239
- }
240
- }
241
- }
242
- function isTabbedContainer(component) {
243
- return typeOf.typeOf(component) === "Stack";
244
- }
245
- function isVBox(component) {
246
- return typeOf.typeOf(component) === "Flexbox" && // eslint-disable-next-line @typescript-eslint/no-explicit-any
247
- component.props.style.flexDirection === "column";
248
- }
249
- function isHBox(component) {
250
- return typeOf.typeOf(component) === "Flexbox" && // eslint-disable-next-line @typescript-eslint/no-explicit-any
251
- component.props.style.flexDirection === "row";
252
- }
253
-
254
- exports.DropTarget = DropTarget;
255
- exports.identifyDropTarget = identifyDropTarget;
256
- exports.isTabstrip = isTabstrip;
257
- //# sourceMappingURL=DropTarget.js.map