@vuu-ui/vuu-layout 3.0.0-beta.3 → 3.1.0-beta.1

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 (337) hide show
  1. package/package.json +19 -16
  2. package/src/Component.mjs +14 -0
  3. package/src/LayoutContainer.css.js +24 -0
  4. package/src/LayoutContainer.mjs +26 -0
  5. package/src/debug.mjs +16 -0
  6. package/src/dock-layout/DockLayout.css.js +36 -0
  7. package/src/dock-layout/DockLayout.mjs +43 -0
  8. package/src/dock-layout/Drawer.css.js +150 -0
  9. package/src/dock-layout/Drawer.mjs +82 -0
  10. package/src/dock-layout/index.mjs +2 -0
  11. package/src/drag-drop/BoxModel.mjs +337 -0
  12. package/src/drag-drop/DragState.mjs +119 -0
  13. package/src/drag-drop/Draggable.mjs +140 -0
  14. package/src/drag-drop/DropTarget.mjs +286 -0
  15. package/src/drag-drop/DropTargetRenderer.mjs +275 -0
  16. package/src/drag-drop/dragDropTypes.mjs +0 -0
  17. package/src/drag-drop/index.mjs +3 -0
  18. package/src/flexbox/Flexbox.css.js +45 -0
  19. package/src/flexbox/Flexbox.mjs +45 -0
  20. package/src/flexbox/FlexboxLayout.mjs +27 -0
  21. package/src/flexbox/Splitter.css.js +57 -0
  22. package/src/flexbox/Splitter.mjs +112 -0
  23. package/src/flexbox/flexbox-utils.mjs +92 -0
  24. package/src/flexbox/flexboxTypes.mjs +0 -0
  25. package/src/flexbox/index.mjs +2 -0
  26. package/src/flexbox/useSplitterResizing.mjs +181 -0
  27. package/src/index.mjs +20 -0
  28. package/src/layout-action.mjs +20 -0
  29. package/src/layout-header/ActionButton.mjs +15 -0
  30. package/src/layout-header/Header.css.js +32 -0
  31. package/src/layout-header/Header.mjs +99 -0
  32. package/src/layout-header/index.mjs +1 -0
  33. package/src/layout-header/useHeader.mjs +76 -0
  34. package/src/layout-provider/LayoutProvider.mjs +242 -0
  35. package/src/layout-provider/LayoutProviderContext.mjs +13 -0
  36. package/src/layout-provider/index.mjs +2 -0
  37. package/src/layout-provider/useLayoutDragDrop.mjs +147 -0
  38. package/src/layout-reducer/flexUtils.mjs +186 -0
  39. package/src/layout-reducer/index.mjs +4 -0
  40. package/src/layout-reducer/insert-layout-element.mjs +179 -0
  41. package/src/layout-reducer/layout-reducer.mjs +121 -0
  42. package/src/layout-reducer/layoutTypes.mjs +34 -0
  43. package/src/layout-reducer/layoutUtils.mjs +178 -0
  44. package/src/layout-reducer/move-layout-element.mjs +18 -0
  45. package/src/layout-reducer/remove-layout-element.mjs +161 -0
  46. package/src/layout-reducer/replace-layout-element.mjs +70 -0
  47. package/src/layout-reducer/resize-flex-children.mjs +48 -0
  48. package/src/layout-reducer/wrap-layout-element.mjs +134 -0
  49. package/src/layout-view/View.css.js +76 -0
  50. package/src/layout-view/View.mjs +116 -0
  51. package/src/layout-view/useView.mjs +69 -0
  52. package/src/layout-view/useViewBroadcastChannel.mjs +29 -0
  53. package/src/layout-view/useViewResize.mjs +27 -0
  54. package/src/layout-view/viewTypes.mjs +0 -0
  55. package/src/layout-view-actions/ViewContext.mjs +11 -0
  56. package/src/layout-view-actions/useViewActionDispatcher.mjs +116 -0
  57. package/src/layout-view-actions/useViewContributions.mjs +31 -0
  58. package/src/palette/Palette.css.js +31 -0
  59. package/src/palette/Palette.mjs +85 -0
  60. package/src/palette/index.mjs +1 -0
  61. package/src/placeholder/LayoutStartPanel.css.js +35 -0
  62. package/src/placeholder/LayoutStartPanel.mjs +57 -0
  63. package/src/placeholder/Placeholder.css.js +20 -0
  64. package/src/placeholder/Placeholder.mjs +33 -0
  65. package/src/placeholder/index.mjs +1 -0
  66. package/src/responsive/index.mjs +2 -0
  67. package/src/responsive/measureMinimumNodeSize.mjs +24 -0
  68. package/src/responsive/useResizeObserver.mjs +109 -0
  69. package/src/responsive/utils.mjs +27 -0
  70. package/src/stack/Stack.css.js +44 -0
  71. package/src/stack/Stack.mjs +98 -0
  72. package/src/stack/StackLayout.mjs +116 -0
  73. package/src/stack/index.mjs +3 -0
  74. package/src/stack/stackTypes.mjs +0 -0
  75. package/src/tabs/TabPanel.css.js +17 -0
  76. package/src/tabs/TabPanel.mjs +11 -0
  77. package/src/tabs/index.mjs +1 -0
  78. package/src/tools/config-wrapper/ConfigWrapper.mjs +55 -0
  79. package/src/tools/config-wrapper/index.mjs +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.mjs +3 -0
  83. package/src/use-persistent-state.mjs +43 -0
  84. package/src/utils/index.mjs +5 -0
  85. package/src/utils/pathUtils.mjs +212 -0
  86. package/src/utils/propUtils.mjs +15 -0
  87. package/src/utils/refUtils.mjs +5 -0
  88. package/src/utils/styleUtils.mjs +9 -0
  89. package/src/utils/typeOf.mjs +15 -0
  90. package/cjs/Component.js +0 -14
  91. package/cjs/Component.js.map +0 -1
  92. package/cjs/LayoutContainer.css.js +0 -6
  93. package/cjs/LayoutContainer.css.js.map +0 -1
  94. package/cjs/LayoutContainer.js +0 -33
  95. package/cjs/LayoutContainer.js.map +0 -1
  96. package/cjs/dock-layout/DockLayout.css.js +0 -6
  97. package/cjs/dock-layout/DockLayout.css.js.map +0 -1
  98. package/cjs/dock-layout/DockLayout.js +0 -41
  99. package/cjs/dock-layout/DockLayout.js.map +0 -1
  100. package/cjs/dock-layout/Drawer.css.js +0 -6
  101. package/cjs/dock-layout/Drawer.css.js.map +0 -1
  102. package/cjs/dock-layout/Drawer.js +0 -95
  103. package/cjs/dock-layout/Drawer.js.map +0 -1
  104. package/cjs/drag-drop/BoxModel.js +0 -416
  105. package/cjs/drag-drop/BoxModel.js.map +0 -1
  106. package/cjs/drag-drop/DragState.js +0 -161
  107. package/cjs/drag-drop/DragState.js.map +0 -1
  108. package/cjs/drag-drop/Draggable.js +0 -192
  109. package/cjs/drag-drop/Draggable.js.map +0 -1
  110. package/cjs/drag-drop/DropTarget.js +0 -257
  111. package/cjs/drag-drop/DropTarget.js.map +0 -1
  112. package/cjs/drag-drop/DropTargetRenderer.js +0 -218
  113. package/cjs/drag-drop/DropTargetRenderer.js.map +0 -1
  114. package/cjs/flexbox/Flexbox.css.js +0 -6
  115. package/cjs/flexbox/Flexbox.css.js.map +0 -1
  116. package/cjs/flexbox/Flexbox.js +0 -69
  117. package/cjs/flexbox/Flexbox.js.map +0 -1
  118. package/cjs/flexbox/FlexboxLayout.js +0 -30
  119. package/cjs/flexbox/FlexboxLayout.js.map +0 -1
  120. package/cjs/flexbox/Splitter.css.js +0 -6
  121. package/cjs/flexbox/Splitter.css.js.map +0 -1
  122. package/cjs/flexbox/Splitter.js +0 -122
  123. package/cjs/flexbox/Splitter.js.map +0 -1
  124. package/cjs/flexbox/flexbox-utils.js +0 -95
  125. package/cjs/flexbox/flexbox-utils.js.map +0 -1
  126. package/cjs/flexbox/useSplitterResizing.js +0 -197
  127. package/cjs/flexbox/useSplitterResizing.js.map +0 -1
  128. package/cjs/index.js +0 -122
  129. package/cjs/index.js.map +0 -1
  130. package/cjs/layout-action.js +0 -24
  131. package/cjs/layout-action.js.map +0 -1
  132. package/cjs/layout-header/Header.css.js +0 -6
  133. package/cjs/layout-header/Header.css.js.map +0 -1
  134. package/cjs/layout-header/Header.js +0 -152
  135. package/cjs/layout-header/Header.js.map +0 -1
  136. package/cjs/layout-header/useHeader.js +0 -85
  137. package/cjs/layout-header/useHeader.js.map +0 -1
  138. package/cjs/layout-provider/LayoutProvider.js +0 -304
  139. package/cjs/layout-provider/LayoutProvider.js.map +0 -1
  140. package/cjs/layout-provider/LayoutProviderContext.js +0 -23
  141. package/cjs/layout-provider/LayoutProviderContext.js.map +0 -1
  142. package/cjs/layout-provider/useLayoutDragDrop.js +0 -177
  143. package/cjs/layout-provider/useLayoutDragDrop.js.map +0 -1
  144. package/cjs/layout-reducer/flexUtils.js +0 -227
  145. package/cjs/layout-reducer/flexUtils.js.map +0 -1
  146. package/cjs/layout-reducer/insert-layout-element.js +0 -286
  147. package/cjs/layout-reducer/insert-layout-element.js.map +0 -1
  148. package/cjs/layout-reducer/layout-reducer.js +0 -202
  149. package/cjs/layout-reducer/layout-reducer.js.map +0 -1
  150. package/cjs/layout-reducer/layoutTypes.js +0 -40
  151. package/cjs/layout-reducer/layoutTypes.js.map +0 -1
  152. package/cjs/layout-reducer/layoutUtils.js +0 -237
  153. package/cjs/layout-reducer/layoutUtils.js.map +0 -1
  154. package/cjs/layout-reducer/move-layout-element.js +0 -31
  155. package/cjs/layout-reducer/move-layout-element.js.map +0 -1
  156. package/cjs/layout-reducer/remove-layout-element.js +0 -237
  157. package/cjs/layout-reducer/remove-layout-element.js.map +0 -1
  158. package/cjs/layout-reducer/replace-layout-element.js +0 -96
  159. package/cjs/layout-reducer/replace-layout-element.js.map +0 -1
  160. package/cjs/layout-reducer/resize-flex-children.js +0 -62
  161. package/cjs/layout-reducer/resize-flex-children.js.map +0 -1
  162. package/cjs/layout-reducer/wrap-layout-element.js +0 -211
  163. package/cjs/layout-reducer/wrap-layout-element.js.map +0 -1
  164. package/cjs/layout-view/View.css.js +0 -6
  165. package/cjs/layout-view/View.css.js.map +0 -1
  166. package/cjs/layout-view/View.js +0 -160
  167. package/cjs/layout-view/View.js.map +0 -1
  168. package/cjs/layout-view/useView.js +0 -75
  169. package/cjs/layout-view/useView.js.map +0 -1
  170. package/cjs/layout-view/useViewBroadcastChannel.js +0 -35
  171. package/cjs/layout-view/useViewBroadcastChannel.js.map +0 -1
  172. package/cjs/layout-view/useViewResize.js +0 -42
  173. package/cjs/layout-view/useViewResize.js.map +0 -1
  174. package/cjs/layout-view-actions/ViewContext.js +0 -16
  175. package/cjs/layout-view-actions/ViewContext.js.map +0 -1
  176. package/cjs/layout-view-actions/useViewActionDispatcher.js +0 -112
  177. package/cjs/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  178. package/cjs/layout-view-actions/useViewContributions.js +0 -33
  179. package/cjs/layout-view-actions/useViewContributions.js.map +0 -1
  180. package/cjs/palette/Palette.css.js +0 -6
  181. package/cjs/palette/Palette.css.js.map +0 -1
  182. package/cjs/palette/Palette.js +0 -115
  183. package/cjs/palette/Palette.js.map +0 -1
  184. package/cjs/placeholder/LayoutStartPanel.css.js +0 -6
  185. package/cjs/placeholder/LayoutStartPanel.css.js.map +0 -1
  186. package/cjs/placeholder/LayoutStartPanel.js +0 -56
  187. package/cjs/placeholder/LayoutStartPanel.js.map +0 -1
  188. package/cjs/placeholder/Placeholder.css.js +0 -6
  189. package/cjs/placeholder/Placeholder.css.js.map +0 -1
  190. package/cjs/placeholder/Placeholder.js +0 -34
  191. package/cjs/placeholder/Placeholder.js.map +0 -1
  192. package/cjs/responsive/useResizeObserver.js +0 -118
  193. package/cjs/responsive/useResizeObserver.js.map +0 -1
  194. package/cjs/responsive/utils.js +0 -34
  195. package/cjs/responsive/utils.js.map +0 -1
  196. package/cjs/stack/Stack.css.js +0 -6
  197. package/cjs/stack/Stack.css.js.map +0 -1
  198. package/cjs/stack/Stack.js +0 -150
  199. package/cjs/stack/Stack.js.map +0 -1
  200. package/cjs/stack/StackLayout.js +0 -116
  201. package/cjs/stack/StackLayout.js.map +0 -1
  202. package/cjs/use-persistent-state.js +0 -63
  203. package/cjs/use-persistent-state.js.map +0 -1
  204. package/cjs/utils/pathUtils.js +0 -293
  205. package/cjs/utils/pathUtils.js.map +0 -1
  206. package/cjs/utils/propUtils.js +0 -27
  207. package/cjs/utils/propUtils.js.map +0 -1
  208. package/cjs/utils/refUtils.js +0 -12
  209. package/cjs/utils/refUtils.js.map +0 -1
  210. package/cjs/utils/styleUtils.js +0 -15
  211. package/cjs/utils/styleUtils.js.map +0 -1
  212. package/cjs/utils/typeOf.js +0 -27
  213. package/cjs/utils/typeOf.js.map +0 -1
  214. package/esm/Component.js +0 -12
  215. package/esm/Component.js.map +0 -1
  216. package/esm/LayoutContainer.css.js +0 -4
  217. package/esm/LayoutContainer.css.js.map +0 -1
  218. package/esm/LayoutContainer.js +0 -31
  219. package/esm/LayoutContainer.js.map +0 -1
  220. package/esm/dock-layout/DockLayout.css.js +0 -4
  221. package/esm/dock-layout/DockLayout.css.js.map +0 -1
  222. package/esm/dock-layout/DockLayout.js +0 -39
  223. package/esm/dock-layout/DockLayout.js.map +0 -1
  224. package/esm/dock-layout/Drawer.css.js +0 -4
  225. package/esm/dock-layout/Drawer.css.js.map +0 -1
  226. package/esm/dock-layout/Drawer.js +0 -93
  227. package/esm/dock-layout/Drawer.js.map +0 -1
  228. package/esm/drag-drop/BoxModel.js +0 -409
  229. package/esm/drag-drop/BoxModel.js.map +0 -1
  230. package/esm/drag-drop/DragState.js +0 -159
  231. package/esm/drag-drop/DragState.js.map +0 -1
  232. package/esm/drag-drop/Draggable.js +0 -190
  233. package/esm/drag-drop/Draggable.js.map +0 -1
  234. package/esm/drag-drop/DropTarget.js +0 -253
  235. package/esm/drag-drop/DropTarget.js.map +0 -1
  236. package/esm/drag-drop/DropTargetRenderer.js +0 -216
  237. package/esm/drag-drop/DropTargetRenderer.js.map +0 -1
  238. package/esm/flexbox/Flexbox.css.js +0 -4
  239. package/esm/flexbox/Flexbox.css.js.map +0 -1
  240. package/esm/flexbox/Flexbox.js +0 -67
  241. package/esm/flexbox/Flexbox.js.map +0 -1
  242. package/esm/flexbox/FlexboxLayout.js +0 -28
  243. package/esm/flexbox/FlexboxLayout.js.map +0 -1
  244. package/esm/flexbox/Splitter.css.js +0 -4
  245. package/esm/flexbox/Splitter.css.js.map +0 -1
  246. package/esm/flexbox/Splitter.js +0 -120
  247. package/esm/flexbox/Splitter.js.map +0 -1
  248. package/esm/flexbox/flexbox-utils.js +0 -89
  249. package/esm/flexbox/flexbox-utils.js.map +0 -1
  250. package/esm/flexbox/useSplitterResizing.js +0 -195
  251. package/esm/flexbox/useSplitterResizing.js.map +0 -1
  252. package/esm/index.js +0 -33
  253. package/esm/index.js.map +0 -1
  254. package/esm/layout-action.js +0 -22
  255. package/esm/layout-action.js.map +0 -1
  256. package/esm/layout-header/Header.css.js +0 -4
  257. package/esm/layout-header/Header.css.js.map +0 -1
  258. package/esm/layout-header/Header.js +0 -150
  259. package/esm/layout-header/Header.js.map +0 -1
  260. package/esm/layout-header/useHeader.js +0 -83
  261. package/esm/layout-header/useHeader.js.map +0 -1
  262. package/esm/layout-provider/LayoutProvider.js +0 -297
  263. package/esm/layout-provider/LayoutProvider.js.map +0 -1
  264. package/esm/layout-provider/LayoutProviderContext.js +0 -20
  265. package/esm/layout-provider/LayoutProviderContext.js.map +0 -1
  266. package/esm/layout-provider/useLayoutDragDrop.js +0 -175
  267. package/esm/layout-provider/useLayoutDragDrop.js.map +0 -1
  268. package/esm/layout-reducer/flexUtils.js +0 -218
  269. package/esm/layout-reducer/flexUtils.js.map +0 -1
  270. package/esm/layout-reducer/insert-layout-element.js +0 -282
  271. package/esm/layout-reducer/insert-layout-element.js.map +0 -1
  272. package/esm/layout-reducer/layout-reducer.js +0 -200
  273. package/esm/layout-reducer/layout-reducer.js.map +0 -1
  274. package/esm/layout-reducer/layoutTypes.js +0 -36
  275. package/esm/layout-reducer/layoutTypes.js.map +0 -1
  276. package/esm/layout-reducer/layoutUtils.js +0 -226
  277. package/esm/layout-reducer/layoutUtils.js.map +0 -1
  278. package/esm/layout-reducer/move-layout-element.js +0 -29
  279. package/esm/layout-reducer/move-layout-element.js.map +0 -1
  280. package/esm/layout-reducer/remove-layout-element.js +0 -235
  281. package/esm/layout-reducer/remove-layout-element.js.map +0 -1
  282. package/esm/layout-reducer/replace-layout-element.js +0 -92
  283. package/esm/layout-reducer/replace-layout-element.js.map +0 -1
  284. package/esm/layout-reducer/resize-flex-children.js +0 -59
  285. package/esm/layout-reducer/resize-flex-children.js.map +0 -1
  286. package/esm/layout-reducer/wrap-layout-element.js +0 -209
  287. package/esm/layout-reducer/wrap-layout-element.js.map +0 -1
  288. package/esm/layout-view/View.css.js +0 -4
  289. package/esm/layout-view/View.css.js.map +0 -1
  290. package/esm/layout-view/View.js +0 -158
  291. package/esm/layout-view/View.js.map +0 -1
  292. package/esm/layout-view/useView.js +0 -73
  293. package/esm/layout-view/useView.js.map +0 -1
  294. package/esm/layout-view/useViewBroadcastChannel.js +0 -33
  295. package/esm/layout-view/useViewBroadcastChannel.js.map +0 -1
  296. package/esm/layout-view/useViewResize.js +0 -40
  297. package/esm/layout-view/useViewResize.js.map +0 -1
  298. package/esm/layout-view-actions/ViewContext.js +0 -12
  299. package/esm/layout-view-actions/ViewContext.js.map +0 -1
  300. package/esm/layout-view-actions/useViewActionDispatcher.js +0 -110
  301. package/esm/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  302. package/esm/layout-view-actions/useViewContributions.js +0 -31
  303. package/esm/layout-view-actions/useViewContributions.js.map +0 -1
  304. package/esm/palette/Palette.css.js +0 -4
  305. package/esm/palette/Palette.css.js.map +0 -1
  306. package/esm/palette/Palette.js +0 -112
  307. package/esm/palette/Palette.js.map +0 -1
  308. package/esm/placeholder/LayoutStartPanel.css.js +0 -4
  309. package/esm/placeholder/LayoutStartPanel.css.js.map +0 -1
  310. package/esm/placeholder/LayoutStartPanel.js +0 -54
  311. package/esm/placeholder/LayoutStartPanel.js.map +0 -1
  312. package/esm/placeholder/Placeholder.css.js +0 -4
  313. package/esm/placeholder/Placeholder.css.js.map +0 -1
  314. package/esm/placeholder/Placeholder.js +0 -32
  315. package/esm/placeholder/Placeholder.js.map +0 -1
  316. package/esm/responsive/useResizeObserver.js +0 -112
  317. package/esm/responsive/useResizeObserver.js.map +0 -1
  318. package/esm/responsive/utils.js +0 -31
  319. package/esm/responsive/utils.js.map +0 -1
  320. package/esm/stack/Stack.css.js +0 -4
  321. package/esm/stack/Stack.css.js.map +0 -1
  322. package/esm/stack/Stack.js +0 -148
  323. package/esm/stack/Stack.js.map +0 -1
  324. package/esm/stack/StackLayout.js +0 -114
  325. package/esm/stack/StackLayout.js.map +0 -1
  326. package/esm/use-persistent-state.js +0 -58
  327. package/esm/use-persistent-state.js.map +0 -1
  328. package/esm/utils/pathUtils.js +0 -280
  329. package/esm/utils/pathUtils.js.map +0 -1
  330. package/esm/utils/propUtils.js +0 -23
  331. package/esm/utils/propUtils.js.map +0 -1
  332. package/esm/utils/refUtils.js +0 -10
  333. package/esm/utils/refUtils.js.map +0 -1
  334. package/esm/utils/styleUtils.js +0 -13
  335. package/esm/utils/styleUtils.js.map +0 -1
  336. package/esm/utils/typeOf.js +0 -23
  337. package/esm/utils/typeOf.js.map +0 -1
@@ -0,0 +1,212 @@
1
+ import { isContainer } from "@vuu-ui/vuu-utils";
2
+ import react, { isValidElement } from "react";
3
+ import { getProp, getProps } from "./propUtils.mjs";
4
+ import { typeOf } from "./typeOf.mjs";
5
+ const removeFinalPathSegment = (path)=>{
6
+ const pos = path.lastIndexOf(".");
7
+ if (-1 === pos) return path;
8
+ return path.slice(0, pos);
9
+ };
10
+ const getChildren = (c)=>react.isValidElement(c.props.children) ? [
11
+ c.props.children
12
+ ] : c.props.children;
13
+ const resolvePath = (source, path = "")=>{
14
+ const [step1, ...steps] = path.split(".");
15
+ if (step1?.startsWith("#")) {
16
+ const node = findTargetById(source, step1.slice(1), true);
17
+ if (node && steps.length) return resolvePath(node, steps.join("."));
18
+ } else if ("ACTIVE_CHILD" === step1) {
19
+ const { active } = getProps(source);
20
+ const children = getChildren(source);
21
+ const { path } = getProps(children[active]);
22
+ return path;
23
+ }
24
+ return "";
25
+ };
26
+ const resolveJSONPath = (source, path = "")=>{
27
+ const [step1, ...steps] = path.split(".");
28
+ if (step1?.startsWith("#")) {
29
+ const node = findTargetJSONById(source, step1.slice(1), true);
30
+ if (node && steps.length) return resolveJSONPath(node, steps.join("."));
31
+ } else if ("ACTIVE_CHILD" === step1) {
32
+ const { children, props } = source;
33
+ const { active } = props;
34
+ if ("number" == typeof active && children?.[active]) return children[active];
35
+ }
36
+ };
37
+ function followPathToParent(source, path) {
38
+ const { "data-path": dataPath, path: sourcePath = dataPath } = getProps(source);
39
+ if ("0" === path) return null;
40
+ if (path === sourcePath) return null;
41
+ return followPath(source, removeFinalPathSegment(path), true);
42
+ }
43
+ function findTarget(source, test) {
44
+ if (source) {
45
+ const { children, ...props } = getProps(source);
46
+ if (test(props)) return source;
47
+ if (react.Children.count(children) > 0) {
48
+ const array = react.isValidElement(children) ? [
49
+ children
50
+ ] : children;
51
+ for (const child of array){
52
+ const target = findTarget(child, test);
53
+ if (target) return target;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ function containerOf(source, target) {
59
+ if (target === source) return null;
60
+ const { path: sourcePath, children } = getProps(source);
61
+ const { idx, finalStep } = pathUtils_nextStep(sourcePath, getProp(target, "path"));
62
+ if (finalStep) return source;
63
+ if (void 0 === children || void 0 === children[idx]) return null;
64
+ return containerOf(children[idx], target);
65
+ }
66
+ const getChild = (children, idx)=>{
67
+ if (react.isValidElement(children) && 0 == idx) return children;
68
+ if (Array.isArray(children)) return children[idx];
69
+ };
70
+ function followPathToComponent(component, path) {
71
+ const paths = path.split(".");
72
+ let children = [
73
+ component
74
+ ];
75
+ for(let i = 0; i < paths.length; i++){
76
+ const idx = parseInt(paths[i]);
77
+ const child = children[idx];
78
+ if (i === paths.length - 1) return child;
79
+ children = getChildren(child);
80
+ }
81
+ }
82
+ const findTargetById = (source, id, throwIfNotFound = true)=>{
83
+ const { children, id: idProp } = source.props;
84
+ if (idProp === id) return source;
85
+ if (react.Children.count(children) > 0) {
86
+ const childArray = isValidElement(children) ? [
87
+ children
88
+ ] : children;
89
+ for (const child of childArray)if (isValidElement(child)) {
90
+ const target = findTargetById(child, id, false);
91
+ if (target) return target;
92
+ }
93
+ }
94
+ if (true === throwIfNotFound) throw Error(`pathUtils.findTargetById id #${id} not found in source`);
95
+ };
96
+ const findTargetJSONById = (source, id, throwIfNotFound = true)=>{
97
+ const { children, id: idProp } = source;
98
+ if (idProp === id) return source;
99
+ if (Array.isArray(children) && children.length > 0) {
100
+ for (const child of children)if (null !== child && "object" == typeof child) {
101
+ const target = findTargetJSONById(child, id, false);
102
+ if (target) return target;
103
+ }
104
+ }
105
+ if (true === throwIfNotFound) throw Error(`pathUtils.findTargetJSONById id #${id} not found in source`);
106
+ };
107
+ function followPath(source, path, throwIfNotFound = false) {
108
+ if (path.startsWith("#")) return findTargetById(source, path.slice(1), throwIfNotFound);
109
+ const { "data-path": dataPath, path: sourcePath = dataPath } = getProps(source);
110
+ if (0 !== path.indexOf(sourcePath)) throw Error(`pathUtils.followPath path ${path} is not within source path ${sourcePath}`);
111
+ const route = path.slice(sourcePath.length + 1);
112
+ if ("" === route) return source;
113
+ let target = source;
114
+ const paths = route.split(".");
115
+ for(let i = 0; i < paths.length; i++){
116
+ if (0 === react.Children.count(target.props.children)) {
117
+ const message = `element at 0.${paths.slice(0, i).join(".")} has no children, so cannot fulfill rest of path ${paths.slice(i).join(".")}`;
118
+ if (!throwIfNotFound) return void console.warn(message);
119
+ throw Error(message);
120
+ }
121
+ target = getChild(target.props.children, parseInt(paths[i]));
122
+ if (void 0 === target) {
123
+ const message = `model at 0.${paths.slice(0, i).join(".")} has no children that fulfill next step of path ${paths.slice(i).join(".")}`;
124
+ if (throwIfNotFound) throw Error(message);
125
+ console.warn(message);
126
+ }
127
+ }
128
+ return target;
129
+ }
130
+ function nextLeaf(root, path) {
131
+ const parent = followPathToParent(root, path);
132
+ let pathIndices = path.split(".").map((idx)=>parseInt(idx, 10));
133
+ if (parent) {
134
+ const lastIdx = pathIndices.pop();
135
+ const { children } = parent.props;
136
+ if (children.length - 1 > lastIdx) return firstLeaf(children[lastIdx + 1]);
137
+ {
138
+ const parentIdx = pathIndices.pop();
139
+ const nextParent = followPathToParent(root, getProp(parent, "path"));
140
+ if (nextParent && "number" == typeof parentIdx) {
141
+ pathIndices = nextParent.props.path.split(".").map((idx)=>parseInt(idx, 10));
142
+ if (nextParent.props.children.length - 1 > parentIdx) {
143
+ const nextStep = nextParent.props.children[parentIdx + 1];
144
+ if (isContainer(typeOf(nextStep))) return firstLeaf(nextStep);
145
+ return nextStep;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ return firstLeaf(root);
151
+ }
152
+ function previousLeaf(root, path) {
153
+ const pathIndices = path.split(".").map((idx)=>parseInt(idx, 10));
154
+ let lastIdx = pathIndices.pop();
155
+ let parent = followPathToParent(root, path);
156
+ if (null != parent && "number" == typeof lastIdx) {
157
+ const { children } = parent.props;
158
+ if (lastIdx > 0) return lastLeaf(children[lastIdx - 1]);
159
+ while(pathIndices.length > 1){
160
+ lastIdx = pathIndices.pop();
161
+ parent = followPathToParent(root, getProp(parent, "path"));
162
+ if (lastIdx > 0) {
163
+ const nextStep = parent.props.children[lastIdx - 1];
164
+ if (isContainer(typeOf(nextStep))) return lastLeaf(nextStep);
165
+ return nextStep;
166
+ }
167
+ }
168
+ }
169
+ return lastLeaf(root);
170
+ }
171
+ function firstLeaf(layoutRoot) {
172
+ if (isContainer(typeOf(layoutRoot))) {
173
+ const { children } = layoutRoot.props || layoutRoot;
174
+ return firstLeaf(children[0]);
175
+ }
176
+ return layoutRoot;
177
+ }
178
+ function lastLeaf(root) {
179
+ if (isContainer(typeOf(root))) {
180
+ const { children } = root.props || root;
181
+ return lastLeaf(children[children.length - 1]);
182
+ }
183
+ return root;
184
+ }
185
+ function pathUtils_nextStep(pathSoFar, targetPath, followPathToEnd = false) {
186
+ if (pathSoFar === targetPath) return {
187
+ idx: -1,
188
+ finalStep: true
189
+ };
190
+ const pathVisited = `${pathSoFar}.`;
191
+ if (!targetPath.startsWith(pathVisited)) throw Error("pathUtils nextStep has strayed from the path");
192
+ const endOfTheLine = followPathToEnd ? 0 : 1;
193
+ const paths = targetPath.replace(pathVisited, "").split(".").map((n)=>parseInt(n, 10));
194
+ return {
195
+ idx: paths[0],
196
+ finalStep: paths.length === endOfTheLine
197
+ };
198
+ }
199
+ function resetPath(model, path, additionalProps) {
200
+ if (getProp(model, "path") === path) return model;
201
+ const children = [];
202
+ react.Children.forEach(model.props.children, (child, i)=>{
203
+ if (getProp(child, "path")) children.push(resetPath(child, `${path}.${i}`));
204
+ else children.push(child);
205
+ });
206
+ const pathPropName = model.props["data-path"] ? "data-path" : "path";
207
+ return react.cloneElement(model, {
208
+ [pathPropName]: path,
209
+ ...additionalProps
210
+ }, children);
211
+ }
212
+ export { containerOf, findTarget, followPath, followPathToComponent, followPathToParent, getChild, nextLeaf, pathUtils_nextStep as nextStep, previousLeaf, resetPath, resolveJSONPath, resolvePath };
@@ -0,0 +1,15 @@
1
+ const NO_PROPS = {};
2
+ const getProp = (component, propName)=>{
3
+ const props = getProps(component);
4
+ return props[propName] ?? props[`data-${propName}`];
5
+ };
6
+ const getProps = (component)=>component?.props || component || NO_PROPS;
7
+ const getChildProp = (container)=>{
8
+ const props = getProps(container);
9
+ if (props.children) {
10
+ const { children: [target, ...rest] } = props;
11
+ if (rest.length > 0) console.warn(`getChild expected a single child, found ${rest.length + 1}`);
12
+ return target;
13
+ }
14
+ };
15
+ export { getChildProp, getProp, getProps };
@@ -0,0 +1,5 @@
1
+ function setRef(ref, value) {
2
+ if ("function" == typeof ref) ref(value);
3
+ else if (ref) ref.current = value;
4
+ }
5
+ export { setRef };
@@ -0,0 +1,9 @@
1
+ const expandFlex = (flex)=>{
2
+ if ('number' != typeof flex) throw Error(`"no support yet for flex value ${flex}`);
3
+ return {
4
+ flexBasis: 0,
5
+ flexGrow: 1,
6
+ flexShrink: 1
7
+ };
8
+ };
9
+ export { expandFlex };
@@ -0,0 +1,15 @@
1
+ function typeOf(element) {
2
+ if (element) {
3
+ const type = element.type;
4
+ if ("function" == typeof type || "object" == typeof type) {
5
+ const elementName = type.displayName || type.name || type.type?.name;
6
+ if ("string" == typeof elementName) return elementName;
7
+ }
8
+ if ("string" == typeof element.type) return element.type;
9
+ if (element.constructor) return element.constructor.displayName;
10
+ throw Error("typeOf unable to determine type of element");
11
+ }
12
+ }
13
+ const isTypeOf = (element, type)=>typeOf(element) === type;
14
+ const isLayoutJSON = (layout)=>void 0 !== layout && "type" in layout;
15
+ export { isLayoutJSON, isTypeOf, typeOf };
package/cjs/Component.js DELETED
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var vuuUtils = require('@vuu-ui/vuu-utils');
6
-
7
- const Component = React.forwardRef(function Component2({ resizeable, ...props }, ref) {
8
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: "Component", ref });
9
- });
10
- Component.displayName = "Component";
11
- vuuUtils.registerComponent("Component", Component, "component");
12
-
13
- module.exports = Component;
14
- //# sourceMappingURL=Component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Component.js","sources":["../../../packages/vuu-layout/src/Component.tsx"],"sourcesContent":["import React, { forwardRef, HTMLAttributes } from \"react\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\n\nexport interface ComponentProps extends HTMLAttributes<HTMLDivElement> {\n resizeable?: boolean;\n}\n\nconst Component = forwardRef(function Component(\n { resizeable, ...props }: ComponentProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n return <div {...props} className=\"Component\" ref={ref} />;\n}) as React.FunctionComponent<ComponentProps>;\nComponent.displayName = \"Component\";\n\nexport default Component;\n\nregisterComponent(\"Component\", Component, \"component\");\n"],"names":["forwardRef","Component","registerComponent"],"mappings":";;;;;;AAOM,MAAA,SAAA,GAAYA,iBAAW,SAASC,UAAAA,CACpC,EAAE,UAAY,EAAA,GAAG,KAAM,EAAA,EACvB,GACA,EAAA;AACA,EAAA,sCAAQ,KAAK,EAAA,EAAA,GAAG,KAAO,EAAA,SAAA,EAAU,aAAY,GAAU,EAAA,CAAA;AACzD,CAAC;AACD,SAAA,CAAU,WAAc,GAAA,WAAA;AAIxBC,0BAAkB,CAAA,WAAA,EAAa,WAAW,WAAW,CAAA;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var layoutContainerCss = ".vuuLayoutContainer {\n display: inline-block;\n outline: none;\n}\n\n[data-dragging=\"true\"] {\n position: absolute !important;\n z-index: 100;\n}\n\n.vuuSimpleDraggableWrapper {\n background-color: white;\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.2);\n}\n.vuuSimpleDraggableWrapper > * {\n height: 100%;\n width: 100%;\n}\n";
4
-
5
- module.exports = layoutContainerCss;
6
- //# sourceMappingURL=LayoutContainer.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutContainer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,33 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var vuuUtils = require('@vuu-ui/vuu-utils');
5
- var styles = require('@salt-ds/styles');
6
- var window = require('@salt-ds/window');
7
- var cx = require('clsx');
8
- var React = require('react');
9
- var LayoutContainer$1 = require('./LayoutContainer.css.js');
10
-
11
- const LayoutContainer = React.forwardRef(function LayoutContainer2({
12
- children,
13
- className: classNameProp,
14
- dropTarget,
15
- resizeable: _,
16
- // ignore, its just a marker used by the layout system
17
- ...htmlAttributes
18
- }, forwardedRef) {
19
- const targetWindow = window.useWindow();
20
- styles.useComponentCssInjection({
21
- testId: "vuu-layout-container",
22
- css: LayoutContainer$1,
23
- window: targetWindow
24
- });
25
- const className = cx("vuuLayoutContainer", classNameProp);
26
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, ref: forwardedRef, ...htmlAttributes, children });
27
- });
28
- const componentName = "LayoutContainer";
29
- LayoutContainer.displayName = componentName;
30
- vuuUtils.registerComponent(componentName, LayoutContainer, "container");
31
-
32
- exports.LayoutContainer = LayoutContainer;
33
- //# sourceMappingURL=LayoutContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutContainer.js","sources":["../../../packages/vuu-layout/src/LayoutContainer.tsx"],"sourcesContent":["import { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { ForwardedRef, forwardRef, HTMLAttributes } from \"react\";\n\nimport layoutContainerCss from \"./LayoutContainer.css\";\n\nexport interface LayoutContainerProps extends HTMLAttributes<HTMLDivElement> {\n dropTarget?: boolean;\n resizeable?: boolean;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LayoutContainer = forwardRef(function LayoutContainer(\n {\n children,\n className: classNameProp,\n dropTarget,\n resizeable: _, // ignore, its just a marker used by the layout system\n ...htmlAttributes\n }: LayoutContainerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-layout-container\",\n css: layoutContainerCss,\n window: targetWindow,\n });\n\n const className = cx(\"vuuLayoutContainer\", classNameProp);\n return (\n <div className={className} ref={forwardedRef} {...htmlAttributes}>\n {children}\n </div>\n );\n});\n\nconst componentName = \"LayoutContainer\";\n\nLayoutContainer.displayName = componentName;\n\nregisterComponent(componentName, LayoutContainer, \"container\");\n"],"names":["forwardRef","LayoutContainer","useWindow","useComponentCssInjection","layoutContainerCss","registerComponent"],"mappings":";;;;;;;;;;AAaa,MAAA,eAAA,GAAkBA,gBAAW,CAAA,SAASC,gBACjD,CAAA;AAAA,EACE,QAAA;AAAA,EACA,SAAW,EAAA,aAAA;AAAA,EACX,UAAA;AAAA,EACA,UAAY,EAAA,CAAA;AAAA;AAAA,EACZ,GAAG;AACL,CAAA,EACA,YACA,EAAA;AACA,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,iBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,oBAAA,EAAsB,aAAa,CAAA;AACxD,EAAA,sCACG,KAAI,EAAA,EAAA,SAAA,EAAsB,KAAK,YAAe,EAAA,GAAG,gBAC/C,QACH,EAAA,CAAA;AAEJ,CAAC;AAED,MAAM,aAAgB,GAAA,iBAAA;AAEtB,eAAA,CAAgB,WAAc,GAAA,aAAA;AAE9BC,0BAAkB,CAAA,aAAA,EAAe,iBAAiB,WAAW,CAAA;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var dockLayoutCss = ".vuuDockLayout {\n --chest-bg: var(--hw-chest-bg, inherit);\n --drawer-bg: var(--hw-drawer-bg, inherit);\n --drawer-size: var(--hw-drawer-size, 200px);\n --drawer-peek-size: var(--hw-drawer-peek-size, 32px);\n --drawer-transition-duration: var(--hw-drawer-transition-duration, 0.4s);\n background-color: var(--chest-bg);\n display: flex;\n}\n\n.vuuDockLayout-horizontal {\n flex-direction: row;\n}\n\n.vuuDockLayout-vertical {\n flex-direction: column;\n}\n\n.vuuDockLayout-content {\n background-color: var(--chest-bg);\n flex-grow: 1;\n flex-shrink: 1;\n overflow: hidden;\n /* position: relative; */\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.vuuDockLayout-horizontal .vuuDockLayout-content {\n flex-basis: 100%;\n}\n\n.vuuDockLayout-vertical .vuuDockLayout-content {\n flex-basis: 100%;\n}\n";
4
-
5
- module.exports = dockLayoutCss;
6
- //# sourceMappingURL=DockLayout.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DockLayout.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,41 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var vuuUtils = require('@vuu-ui/vuu-utils');
5
- var cx = require('clsx');
6
- var styles = require('@salt-ds/styles');
7
- var window = require('@salt-ds/window');
8
- var React = require('react');
9
- var Drawer = require('./Drawer.js');
10
- var DockLayout$1 = require('./DockLayout.css.js');
11
-
12
- const isDrawer = (component) => component.type === Drawer;
13
- const isVertical = (element) => (
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- element.props.position && // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- element.props.position.match(/top|bottom/)
17
- );
18
- const classBase = "vuuDockLayout";
19
- const DockLayout = (props) => {
20
- const targetWindow = window.useWindow();
21
- styles.useComponentCssInjection({
22
- testId: "vuu-dock-layput",
23
- css: DockLayout$1,
24
- window: targetWindow
25
- });
26
- const { children, className: classNameProp, id, style } = props;
27
- const childElements = React.useMemo(() => vuuUtils.asReactElements(children), [children]);
28
- const [drawers, content] = vuuUtils.partition(childElements, isDrawer);
29
- const [verticalDrawers, horizontalDrawers] = vuuUtils.partition(drawers, isVertical);
30
- const orientation = verticalDrawers.length === 0 ? "horizontal" : horizontalDrawers.length === 0 ? "vertical" : "both";
31
- const className = cx(classBase, classNameProp, `${classBase}-${orientation}`);
32
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, id, style, children: [
33
- drawers,
34
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-content`, children: content })
35
- ] });
36
- };
37
- DockLayout.displayName = "DockLayout";
38
- vuuUtils.registerComponent("DockLayout", DockLayout, "container");
39
-
40
- module.exports = DockLayout;
41
- //# sourceMappingURL=DockLayout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DockLayout.js","sources":["../../../../packages/vuu-layout/src/dock-layout/DockLayout.tsx"],"sourcesContent":["import {\n asReactElements,\n partition,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, ReactElement, useMemo } from \"react\";\nimport Drawer from \"./Drawer\";\n\nimport dockLayoutCss from \"./DockLayout.css\";\n\nconst isDrawer = (component: ReactElement) => component.type === Drawer;\nconst isVertical = (element: ReactElement) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (element.props as any).position &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (element.props as any).position.match(/top|bottom/);\n\nexport type DockLayoutProps = HTMLAttributes<HTMLDivElement>;\n\nconst classBase = \"vuuDockLayout\";\n\nconst DockLayout = (props: DockLayoutProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-dock-layput\",\n css: dockLayoutCss,\n window: targetWindow,\n });\n\n const { children, className: classNameProp, id, style } = props;\n const childElements = useMemo(() => asReactElements(children), [children]);\n\n const [drawers, content] = partition(childElements, isDrawer);\n const [verticalDrawers, horizontalDrawers] = partition(drawers, isVertical);\n const orientation =\n verticalDrawers.length === 0\n ? \"horizontal\"\n : horizontalDrawers.length === 0\n ? \"vertical\"\n : \"both\";\n\n const className = cx(classBase, classNameProp, `${classBase}-${orientation}`);\n\n return (\n <div className={className} id={id} style={style}>\n {drawers}\n <div className={`${classBase}-content`}>{content}</div>\n </div>\n );\n};\nDockLayout.displayName = \"DockLayout\";\n\nexport default DockLayout;\n\nregisterComponent(\"DockLayout\", DockLayout, \"container\");\n"],"names":["useWindow","useComponentCssInjection","dockLayoutCss","useMemo","asReactElements","partition","jsxs","registerComponent"],"mappings":";;;;;;;;;;;AAaA,MAAM,QAAW,GAAA,CAAC,SAA4B,KAAA,SAAA,CAAU,IAAS,KAAA,MAAA;AACjE,MAAM,aAAa,CAAC,OAAA;AAAA;AAAA,EAEjB,QAAQ,KAAc,CAAA,QAAA;AAAA,EAEtB,OAAQ,CAAA,KAAA,CAAc,QAAS,CAAA,KAAA,CAAM,YAAY;AAAA,CAAA;AAIpD,MAAM,SAAY,GAAA,eAAA;AAEZ,MAAA,UAAA,GAAa,CAAC,KAA2B,KAAA;AAC7C,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAC,YAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,QAAU,EAAA,SAAA,EAAW,aAAe,EAAA,EAAA,EAAI,OAAU,GAAA,KAAA;AAC1D,EAAM,MAAA,aAAA,GAAgBC,cAAQ,MAAMC,wBAAA,CAAgB,QAAQ,CAAG,EAAA,CAAC,QAAQ,CAAC,CAAA;AAEzE,EAAA,MAAM,CAAC,OAAS,EAAA,OAAO,CAAI,GAAAC,kBAAA,CAAU,eAAe,QAAQ,CAAA;AAC5D,EAAA,MAAM,CAAC,eAAiB,EAAA,iBAAiB,CAAI,GAAAA,kBAAA,CAAU,SAAS,UAAU,CAAA;AAC1E,EAAM,MAAA,WAAA,GACJ,gBAAgB,MAAW,KAAA,CAAA,GACvB,eACA,iBAAkB,CAAA,MAAA,KAAW,IAC3B,UACA,GAAA,MAAA;AAER,EAAM,MAAA,SAAA,GAAY,GAAG,SAAW,EAAA,aAAA,EAAe,GAAG,SAAS,CAAA,CAAA,EAAI,WAAW,CAAE,CAAA,CAAA;AAE5E,EAAA,uBACGC,eAAA,CAAA,KAAA,EAAA,EAAI,SAAsB,EAAA,EAAA,EAAQ,KAChC,EAAA,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,mCACA,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,YAAa,QAAQ,EAAA,OAAA,EAAA;AAAA,GACnD,EAAA,CAAA;AAEJ;AACA,UAAA,CAAW,WAAc,GAAA,YAAA;AAIzBC,0BAAkB,CAAA,YAAA,EAAc,YAAY,WAAW,CAAA;;;;"}
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var drawerCss = ".vuuDrawer {\n --drawer-leading-edge-border: solid 1px var(--salt-container-primary-borderColor, none);\n --vuu-close-icon-svg: var(--svg-chevron-double-right);\n\n transition: flex-basis;\n transition-duration: var(--drawer-transition-duration);\n position: relative;\n z-index: 1;\n flex-basis: 0;\n flex-grow: 1;\n flex-shrink: 1;\n min-width: 0;\n min-height: 0;\n display: flex;\n}\n\n.vuuDrawer-peekaboo {\n flex-basis: var(--drawer-peek-size);\n flex-grow: 0;\n flex-shrink: 0;\n}\n\n.vuuDrawer-inline.vuuDrawer-open {\n flex-basis: var(--drawer-size);\n flex-grow: 0;\n flex-shrink: 0;\n}\n\n.vuuDrawer-liner {\n background-color: var(--drawer-bg);\n overflow: hidden;\n position: relative;\n}\n\n.vuuDrawer-content {\n height: 100%;\n overflow: hidden;\n position: absolute;\n top: 0;\n right: var(--drawer-peek-size);\n transition: right;\n transition-duration: var(--drawer-transition-duration);\n width: 100%;\n flex: 1 1 100%;\n}\n\n.vuuDrawer-open .vuuDrawer-content {\n right: 0;\n}\n\n/* .vuuDrawer:not(.vuuDrawer-open) .vuuDrawer-liner > * {\n display: none;\n} */\n\n.vuuDrawer-left {\n border-right: var(--drawer-leading-edge-border);\n}\n.vuuDrawer-right {\n border-left: var(--drawer-leading-edge-border);\n}\n.vuuDrawer-top {\n border-bottom: var(--drawer-leading-edge-border);\n}\n.vuuDrawer-bottom {\n border-top: var(--drawer-leading-edge-border);\n}\n\n.vuuDrawer-left .vuuDrawer-liner,\n.vuuDrawer-right .vuuDrawer-liner {\n height: 100%;\n transition: width;\n}\n\n.vuuDrawer-top .vuuDrawer-liner,\n.vuuDrawer-bottom .vuuDrawer-liner {\n width: 100%;\n transition: height;\n}\n\n.vuuDrawer-inline .vuuDrawer-liner {\n width: 100%;\n height: 100%;\n}\n\n.vuuDrawer-over .vuuDrawer-liner {\n position: absolute;\n transition-duration: 0.4s;\n}\n\n.vuuDrawer-over.vuuDrawer-left .vuuDrawer-liner {\n top: 0;\n left: 0;\n width: 0;\n}\n\n.vuuDrawer-over.vuuDrawer-right .vuuDrawer-liner {\n top: 0;\n right: 0;\n width: 0;\n}\n\n.vuuDrawer-over.vuuDrawer-top .vuuDrawer-liner {\n height: 0;\n top: 0;\n left: 0;\n}\n\n.vuuDrawer-over.vuuDrawer-bottom .vuuDrawer-liner {\n bottom: 0;\n height: 0;\n left: 0;\n}\n\n.vuuDrawer-left.vuuDrawer-over.vuuDrawer-peekaboo .vuuDrawer-liner,\n.vuuDrawer-right.vuuDrawer-over.vuuDrawer-peekaboo .vuuDrawer-liner {\n width: var(--drawer-peek-size);\n}\n\n.vuuDrawer-top.vuuDrawer-over.vuuDrawer-peekaboo .vuuDrawer-liner,\n.vuuDrawer-bottom.vuuDrawer-over.vuuDrawer-peekaboo .vuuDrawer-liner {\n height: var(--drawer-peek-size);\n}\n\n.vuuDrawer-left.vuuDrawer-over.vuuDrawer-open .vuuDrawer-liner,\n.vuuDrawer-right.vuuDrawer-over.vuuDrawer-open .vuuDrawer-liner {\n width: var(--drawer-size);\n}\n\n.vuuDrawer-top.vuuDrawer-over.vuuDrawer-open .vuuDrawer-liner,\n.vuuDrawer-bottom.vuuDrawer-over.vuuDrawer-open .vuuDrawer-liner {\n height: var(--drawer-size);\n}\n\n.vuuDrawer-top,\n.vuuDrawer-left {\n order: 0;\n}\n\n.vuuDrawer-bottom,\n.vuuDrawer-right {\n order: 99;\n}\n\n.vuuDrawer-left,\n.vuuDrawer-right {\n flex-direction: column;\n}\n\n.vuuToggleButton-container {\n --saltButton-height: 28px;\n --saltButton-width: 28px;\n --vuu-icon-size: 12px;\n flex: 0 0 28px;\n}\n\n.vuuDrawer-open {\n --vuu-close-icon-svg: var(--svg-chevron-double-left);\n\n}\n";
4
-
5
- module.exports = drawerCss;
6
- //# sourceMappingURL=Drawer.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Drawer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,95 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var core = require('@salt-ds/core');
5
- var cx = require('clsx');
6
- var styles = require('@salt-ds/styles');
7
- var window = require('@salt-ds/window');
8
- var React = require('react');
9
- var Drawer$1 = require('./Drawer.css.js');
10
-
11
- const classBase = "vuuDrawer";
12
- const sizeAttribute = (value) => {
13
- return typeof value === "string" ? value : value + "px";
14
- };
15
- const getStyle = (styleProp, sizeOpen, sizeClosed) => {
16
- const hasSizeOpen = sizeOpen !== void 0;
17
- const hasSizeClosed = sizeClosed !== void 0;
18
- if (!styleProp && !hasSizeClosed && !hasSizeOpen) {
19
- return void 0;
20
- }
21
- if (!hasSizeClosed && !hasSizeOpen) {
22
- return styleProp;
23
- }
24
- return {
25
- ...styleProp,
26
- "--drawer-size": hasSizeOpen ? sizeAttribute(sizeOpen) : void 0,
27
- "--drawer-peek-size": hasSizeClosed ? sizeAttribute(sizeClosed) : void 0
28
- };
29
- };
30
- const Drawer = ({
31
- children,
32
- className: classNameProp,
33
- clickToOpen,
34
- defaultOpen,
35
- sizeOpen,
36
- sizeClosed,
37
- style: styleProp,
38
- open: openProp,
39
- position = "left",
40
- inline,
41
- onClick,
42
- peekaboo = false,
43
- toggleButton,
44
- ...props
45
- }) => {
46
- const targetWindow = window.useWindow();
47
- styles.useComponentCssInjection({
48
- testId: "vuu-drawer",
49
- css: Drawer$1,
50
- window: targetWindow
51
- });
52
- const [open, setOpen] = core.useControlled({
53
- controlled: openProp,
54
- default: defaultOpen ?? false,
55
- name: "Drawer",
56
- state: "open"
57
- });
58
- const className = cx(classBase, classNameProp, `${classBase}-${position}`, {
59
- [`${classBase}-open`]: open,
60
- [`${classBase}-inline`]: inline,
61
- [`${classBase}-over`]: !inline,
62
- [`${classBase}-peekaboo`]: peekaboo
63
- });
64
- const toggleDrawer = React.useCallback(() => {
65
- setOpen(!open);
66
- }, [open, setOpen]);
67
- const style = getStyle(styleProp, sizeOpen, sizeClosed);
68
- const handleClick = clickToOpen ? toggleDrawer : onClick;
69
- const renderToggleButton = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx("vuuToggleButton-container"), children: open ? /* @__PURE__ */ jsxRuntime.jsx(
70
- core.Button,
71
- {
72
- "aria-label": "close",
73
- onClick: toggleDrawer,
74
- "data-icon": "close",
75
- variant: "secondary"
76
- }
77
- ) : /* @__PURE__ */ jsxRuntime.jsx(
78
- core.Button,
79
- {
80
- "aria-label": "open",
81
- onClick: toggleDrawer,
82
- "data-icon": "close",
83
- variant: "secondary"
84
- }
85
- ) });
86
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...props, className, onClick: handleClick, style, children: [
87
- toggleButton == "start" ? renderToggleButton() : null,
88
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-liner`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-content`, children }) }),
89
- toggleButton == "end" ? renderToggleButton() : null
90
- ] });
91
- };
92
- Drawer.displayName = "Drawer";
93
-
94
- module.exports = Drawer;
95
- //# sourceMappingURL=Drawer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Drawer.js","sources":["../../../../packages/vuu-layout/src/dock-layout/Drawer.tsx"],"sourcesContent":["import { Button, useControlled } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { CSSProperties, HTMLAttributes, useCallback } from \"react\";\n\nimport drawerCss from \"./Drawer.css\";\n\nconst classBase = \"vuuDrawer\";\n\nconst sizeAttribute = (value: string | number) => {\n return typeof value === \"string\" ? value : value + \"px\";\n};\n\nconst getStyle = (\n styleProp?: CSSProperties,\n sizeOpen?: number,\n sizeClosed?: number,\n) => {\n const hasSizeOpen = sizeOpen !== undefined;\n const hasSizeClosed = sizeClosed !== undefined;\n\n if (!styleProp && !hasSizeClosed && !hasSizeOpen) {\n return undefined;\n }\n\n if (!hasSizeClosed && !hasSizeOpen) {\n return styleProp;\n }\n\n return {\n ...styleProp,\n \"--drawer-size\": hasSizeOpen ? sizeAttribute(sizeOpen) : undefined,\n \"--drawer-peek-size\": hasSizeClosed ? sizeAttribute(sizeClosed) : undefined,\n };\n};\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n clickToOpen?: boolean;\n defaultOpen?: boolean;\n inline?: boolean;\n open?: boolean;\n peekaboo?: boolean;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n sizeOpen?: number;\n sizeClosed?: number;\n toggleButton?: \"start\" | \"end\";\n}\nconst Drawer = ({\n children,\n className: classNameProp,\n clickToOpen,\n defaultOpen,\n sizeOpen,\n sizeClosed,\n style: styleProp,\n open: openProp,\n position = \"left\",\n inline,\n onClick,\n peekaboo = false,\n toggleButton,\n ...props\n}: DrawerProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-drawer\",\n css: drawerCss,\n window: targetWindow,\n });\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen ?? false,\n name: \"Drawer\",\n state: \"open\",\n });\n\n const className = cx(classBase, classNameProp, `${classBase}-${position}`, {\n [`${classBase}-open`]: open,\n [`${classBase}-inline`]: inline,\n [`${classBase}-over`]: !inline,\n [`${classBase}-peekaboo`]: peekaboo,\n });\n\n const toggleDrawer = useCallback(() => {\n setOpen(!open);\n }, [open, setOpen]);\n\n const style = getStyle(styleProp, sizeOpen, sizeClosed);\n\n const handleClick = clickToOpen ? toggleDrawer : onClick;\n\n const renderToggleButton = () => (\n <div className={cx(\"vuuToggleButton-container\")}>\n {open ? (\n <Button\n aria-label=\"close\"\n onClick={toggleDrawer}\n data-icon=\"close\"\n variant=\"secondary\"\n />\n ) : (\n <Button\n aria-label=\"open\"\n onClick={toggleDrawer}\n data-icon=\"close\"\n variant=\"secondary\"\n />\n )}\n </div>\n );\n\n return (\n <div {...props} className={className} onClick={handleClick} style={style}>\n {toggleButton == \"start\" ? renderToggleButton() : null}\n <div className={`${classBase}-liner`}>\n <div className={`${classBase}-content`}>{children}</div>\n </div>\n {toggleButton == \"end\" ? renderToggleButton() : null}\n </div>\n );\n};\nDrawer.displayName = \"Drawer\";\n\nexport default Drawer;\n"],"names":["useWindow","useComponentCssInjection","drawerCss","useControlled","useCallback","jsx","Button"],"mappings":";;;;;;;;;;AAQA,MAAM,SAAY,GAAA,WAAA;AAElB,MAAM,aAAA,GAAgB,CAAC,KAA2B,KAAA;AAChD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,KAAQ,GAAA,IAAA;AACrD,CAAA;AAEA,MAAM,QAAW,GAAA,CACf,SACA,EAAA,QAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,cAAc,QAAa,KAAA,KAAA,CAAA;AACjC,EAAA,MAAM,gBAAgB,UAAe,KAAA,KAAA,CAAA;AAErC,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,aAAA,IAAiB,CAAC,WAAa,EAAA;AAChD,IAAO,OAAA,KAAA,CAAA;AAAA;AAGT,EAAI,IAAA,CAAC,aAAiB,IAAA,CAAC,WAAa,EAAA;AAClC,IAAO,OAAA,SAAA;AAAA;AAGT,EAAO,OAAA;AAAA,IACL,GAAG,SAAA;AAAA,IACH,eAAiB,EAAA,WAAA,GAAc,aAAc,CAAA,QAAQ,CAAI,GAAA,KAAA,CAAA;AAAA,IACzD,oBAAsB,EAAA,aAAA,GAAgB,aAAc,CAAA,UAAU,CAAI,GAAA,KAAA;AAAA,GACpE;AACF,CAAA;AAaA,MAAM,SAAS,CAAC;AAAA,EACd,QAAA;AAAA,EACA,SAAW,EAAA,aAAA;AAAA,EACX,WAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAO,EAAA,SAAA;AAAA,EACP,IAAM,EAAA,QAAA;AAAA,EACN,QAAW,GAAA,MAAA;AAAA,EACX,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAW,GAAA,KAAA;AAAA,EACX,YAAA;AAAA,EACA,GAAG;AACL,CAAmB,KAAA;AACjB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,kBAAc,CAAA;AAAA,IACpC,UAAY,EAAA,QAAA;AAAA,IACZ,SAAS,WAAe,IAAA,KAAA;AAAA,IACxB,IAAM,EAAA,QAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,GAAG,SAAW,EAAA,aAAA,EAAe,GAAG,SAAS,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA;AAAA,IACzE,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,GAAG,IAAA;AAAA,IACvB,CAAC,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,MAAA;AAAA,IACzB,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,GAAG,CAAC,MAAA;AAAA,IACxB,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG;AAAA,GAC5B,CAAA;AAED,EAAM,MAAA,YAAA,GAAeC,kBAAY,MAAM;AACrC,IAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AAAA,GACZ,EAAA,CAAC,IAAM,EAAA,OAAO,CAAC,CAAA;AAElB,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,SAAW,EAAA,QAAA,EAAU,UAAU,CAAA;AAEtD,EAAM,MAAA,WAAA,GAAc,cAAc,YAAe,GAAA,OAAA;AAEjD,EAAM,MAAA,kBAAA,GAAqB,sBACxBC,cAAA,CAAA,KAAA,EAAA,EAAI,WAAW,EAAG,CAAA,2BAA2B,GAC3C,QACC,EAAA,IAAA,mBAAAA,cAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,OAAA;AAAA,MACX,OAAS,EAAA,YAAA;AAAA,MACT,WAAU,EAAA,OAAA;AAAA,MACV,OAAQ,EAAA;AAAA;AAAA,GAGV,mBAAAD,cAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,MAAA;AAAA,MACX,OAAS,EAAA,YAAA;AAAA,MACT,WAAU,EAAA,OAAA;AAAA,MACV,OAAQ,EAAA;AAAA;AAAA,GAGd,EAAA,CAAA;AAGF,EAAA,uCACG,KAAK,EAAA,EAAA,GAAG,OAAO,SAAsB,EAAA,OAAA,EAAS,aAAa,KACzD,EAAA,QAAA,EAAA;AAAA,IAAgB,YAAA,IAAA,OAAA,GAAU,oBAAuB,GAAA,IAAA;AAAA,oBACjDD,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,SAAS,CAAA,MAAA,CAAA,EAC1B,QAAC,kBAAAA,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,CAAA,EAAG,SAAS,CAAA,QAAA,CAAA,EAAa,UAAS,CACpD,EAAA,CAAA;AAAA,IACC,YAAA,IAAgB,KAAQ,GAAA,kBAAA,EAAuB,GAAA;AAAA,GAClD,EAAA,CAAA;AAEJ;AACA,MAAA,CAAO,WAAc,GAAA,QAAA;;;;"}