@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
@@ -0,0 +1,44 @@
1
+ const css = `
2
+ .vuuTabs {
3
+ box-sizing: border-box;
4
+ flex-direction: column;
5
+ display: flex;
6
+ }
7
+
8
+ .vuuTabs-horizontal {
9
+ --vuu-tabs-border-style: none solid none none;
10
+ flex-direction: row;
11
+ }
12
+
13
+ .vuuTabs .Toolbar:before {
14
+ content: "";
15
+ background: var(--grey60);
16
+ width: 100%;
17
+ height: 1px;
18
+ position: absolute;
19
+ bottom: 0;
20
+ left: 0;
21
+ }
22
+
23
+ .vuuTabs-tabPanel {
24
+ flex-direction: column;
25
+ flex: 1;
26
+ display: flex;
27
+ }
28
+
29
+ .vuuTabs-tabPanel > * {
30
+ flex: auto;
31
+ }
32
+
33
+ .vuuTabHeader + .vuuView > .vuuHeader {
34
+ height: 0;
35
+ overflow: hidden;
36
+ }
37
+
38
+ .Layout-svg-button {
39
+ --spacing-medium: 5px;
40
+ }
41
+
42
+
43
+ `;
44
+ export default css;
@@ -0,0 +1,98 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Tab, Tabstrip } from "@vuu-ui/vuu-ui-controls";
3
+ import { useId } from "@vuu-ui/vuu-utils";
4
+ import clsx from "clsx";
5
+ import { useComponentCssInjection } from "@salt-ds/styles";
6
+ import { useWindow } from "@salt-ds/window";
7
+ import react, { forwardRef, useCallback, useRef } from "react";
8
+ import { getDefaultTabLabel } from "../layout-reducer/index.js";
9
+ import Stack_0 from "./Stack.css";
10
+ const classBase = "vuuTabs";
11
+ const getDefaultTabIcon = ()=>void 0;
12
+ const getChildElements = (children)=>{
13
+ const elements = [];
14
+ react.Children.forEach(children, (child)=>{
15
+ if (/*#__PURE__*/ react.isValidElement(child)) elements.push(child);
16
+ else console.warn("Stack has unexpected child element type");
17
+ });
18
+ return elements;
19
+ };
20
+ const DefaultTabstripProps = {
21
+ allowAddTab: false,
22
+ allowCloseTab: false,
23
+ allowRenameTab: false
24
+ };
25
+ const Stack_Stack = /*#__PURE__*/ forwardRef(function({ TabstripProps = DefaultTabstripProps, active = 0, children, className: classNameProp, getTabIcon = getDefaultTabIcon, getTabLabel = getDefaultTabLabel, id: idProp, keyBoardActivation = "manual", onAddTab, onMoveTab, onTabClose, onTabEdit, onTabSelectionChanged, showTabs = "top", style }, ref) {
26
+ const targetWindow = useWindow();
27
+ useComponentCssInjection({
28
+ testId: "vuu-stack",
29
+ css: Stack_0,
30
+ window: targetWindow
31
+ });
32
+ const id = useId(idProp);
33
+ const tabLabelsRef = useRef([]);
34
+ const { allowCloseTab, allowRenameTab, className: tabstripClassName } = TabstripProps;
35
+ const handleExitEditMode = useCallback((_oldText, newText, _allowDeactivation, tabIndex)=>{
36
+ onTabEdit?.(tabIndex, newText);
37
+ }, [
38
+ onTabEdit
39
+ ]);
40
+ const activeChild = ()=>{
41
+ if (/*#__PURE__*/ react.isValidElement(children)) return children;
42
+ if (Array.isArray(children)) return children[active] ?? null;
43
+ return null;
44
+ };
45
+ tabLabelsRef.current.length = 0;
46
+ const renderTabs = ()=>getChildElements(children).map((child, idx)=>{
47
+ const { closeable = allowCloseTab, id: childId = `${id}-${idx}`, "data-tab-location": tabLocation } = child.props;
48
+ const label = getTabLabel(child, idx, tabLabelsRef.current);
49
+ tabLabelsRef.current.push(label);
50
+ return /*#__PURE__*/ jsx(Tab, {
51
+ ariaControls: childId,
52
+ "data-icon": getTabIcon(child, idx),
53
+ id: `${childId}-tab`,
54
+ index: idx,
55
+ label: label,
56
+ location: tabLocation,
57
+ closeable: closeable,
58
+ editable: allowRenameTab
59
+ }, childId);
60
+ });
61
+ const child = activeChild();
62
+ const isHorizontal = "left" === showTabs || "right" === showTabs;
63
+ const tabstripOrientation = isHorizontal ? "vertical" : "horizontal";
64
+ return /*#__PURE__*/ jsxs("div", {
65
+ className: clsx(classBase, classNameProp, {
66
+ [`${classBase}-horizontal`]: isHorizontal
67
+ }),
68
+ style: style,
69
+ id: id,
70
+ ref: ref,
71
+ children: [
72
+ showTabs ? /*#__PURE__*/ jsx(Tabstrip, {
73
+ "aria-label": "data tabs",
74
+ ...TabstripProps,
75
+ activeTabIndex: TabstripProps?.activeTabIndex ?? (null === child ? -1 : active),
76
+ allowDragDrop: false !== TabstripProps.allowDragDrop,
77
+ animateSelectionThumb: true,
78
+ className: clsx("vuuTabHeader", tabstripClassName),
79
+ keyBoardActivation: keyBoardActivation,
80
+ onActiveChange: onTabSelectionChanged,
81
+ onAddTab: onAddTab,
82
+ onCloseTab: onTabClose,
83
+ onExitEditMode: handleExitEditMode,
84
+ onMoveTab: onMoveTab,
85
+ orientation: tabstripOrientation,
86
+ children: renderTabs()
87
+ }) : null,
88
+ /*#__PURE__*/ jsx("div", {
89
+ "aria-labelledby": `${id}-${active}`,
90
+ className: `${classBase}-tabPanel`,
91
+ role: "tabpanel",
92
+ children: child
93
+ })
94
+ ]
95
+ });
96
+ });
97
+ Stack_Stack.displayName = "Stack";
98
+ export { Stack_Stack as Stack };
@@ -0,0 +1,116 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { registerComponent, useId } from "@vuu-ui/vuu-utils";
3
+ import react, { useCallback, useRef } from "react";
4
+ import { useLayoutCreateNewChild, useLayoutProviderDispatch } from "../layout-provider/index.js";
5
+ import { getDefaultTabLabel } from "../layout-reducer/index.js";
6
+ import { useViewActionDispatcher } from "../layout-view-actions/useViewActionDispatcher.js";
7
+ import { useViewBroadcastChannel } from "../layout-view/useViewBroadcastChannel.js";
8
+ import { usePersistentState } from "../use-persistent-state.js";
9
+ import { Stack } from "./Stack.js";
10
+ const StackLayout = (props)=>{
11
+ const rootRef = useRef(null);
12
+ const dispatch = useLayoutProviderDispatch();
13
+ const { loadState } = usePersistentState();
14
+ const { createNewChild: createNewChildProp, id: idProp, onTabSelectionChanged, path, ...restProps } = props;
15
+ const { children } = props;
16
+ const id = useId(idProp);
17
+ const sendMessage = useViewBroadcastChannel();
18
+ const [dispatchViewAction] = useViewActionDispatcher(id, rootRef, path);
19
+ const createNewChildFromContext = useLayoutCreateNewChild();
20
+ const createNewChild = createNewChildProp ?? createNewChildFromContext;
21
+ const handleTabSelection = (nextIdx)=>{
22
+ if (path) {
23
+ dispatch({
24
+ type: "switch-tab",
25
+ id,
26
+ path,
27
+ nextIdx
28
+ });
29
+ onTabSelectionChanged?.(nextIdx);
30
+ }
31
+ };
32
+ const handleTabClose = useCallback((tabIndex)=>{
33
+ if (Array.isArray(children)) {
34
+ const { props: { "data-path": dataPath, path = dataPath } } = children[tabIndex];
35
+ sendMessage({
36
+ type: "layout-closed",
37
+ path
38
+ });
39
+ setTimeout(()=>{
40
+ dispatch({
41
+ type: "remove",
42
+ path
43
+ });
44
+ }, 100);
45
+ }
46
+ }, [
47
+ children,
48
+ dispatch,
49
+ sendMessage
50
+ ]);
51
+ const handleTabAdd = useCallback(()=>{
52
+ if (path) {
53
+ const tabIndex = react.Children.count(children);
54
+ dispatch({
55
+ type: "add",
56
+ path,
57
+ component: createNewChild(tabIndex)
58
+ });
59
+ }
60
+ }, [
61
+ children,
62
+ createNewChild,
63
+ dispatch,
64
+ path
65
+ ]);
66
+ const handleMoveTab = useCallback((fromIndex, toIndex)=>{
67
+ if (path) dispatch({
68
+ fromIndex,
69
+ toIndex,
70
+ path,
71
+ type: "move-child"
72
+ });
73
+ }, [
74
+ dispatch,
75
+ path
76
+ ]);
77
+ const handleMouseDown = async (e, index)=>{
78
+ let readyToDrag;
79
+ const preDragActivity = async ()=>new Promise((resolve)=>{
80
+ console.log("preDragActivity: Ok, gonna release the drag");
81
+ readyToDrag = resolve;
82
+ });
83
+ const dragging = await dispatchViewAction({
84
+ type: "mousedown",
85
+ index,
86
+ preDragActivity
87
+ }, e);
88
+ if (dragging) readyToDrag?.(void 0);
89
+ };
90
+ const handleTabEdit = (tabIndex, text)=>{
91
+ dispatch({
92
+ type: "set-title",
93
+ path: `${path}.${tabIndex}`,
94
+ title: text
95
+ });
96
+ };
97
+ const getTabLabel = (component, idx, existingLabels)=>{
98
+ const { id, title } = component.props;
99
+ return loadState(id, "view-title") || title || getDefaultTabLabel(component, idx, existingLabels);
100
+ };
101
+ return /*#__PURE__*/ jsx(Stack, {
102
+ ...restProps,
103
+ id: id,
104
+ getTabLabel: getTabLabel,
105
+ onMouseDown: handleMouseDown,
106
+ onMoveTab: handleMoveTab,
107
+ onAddTab: handleTabAdd,
108
+ onTabClose: handleTabClose,
109
+ onTabEdit: handleTabEdit,
110
+ onTabSelectionChanged: handleTabSelection,
111
+ ref: rootRef
112
+ });
113
+ };
114
+ StackLayout.displayName = "Stack";
115
+ registerComponent("Stack", StackLayout, "container");
116
+ export { StackLayout };
@@ -0,0 +1,3 @@
1
+ export * from "./Stack.js";
2
+ export * from "./StackLayout.js";
3
+ export * from "./stackTypes.js";
File without changes
@@ -0,0 +1,17 @@
1
+ const css = `
2
+ .TabPanel {
3
+ flex: 1;
4
+ display: flex;
5
+ }
6
+
7
+ .TabPanel > * {
8
+ height: 100%;
9
+ }
10
+
11
+ .TabPanel > .View > .Header {
12
+ display: none;
13
+ }
14
+
15
+
16
+ `;
17
+ export default css;
@@ -0,0 +1,11 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import "./TabPanel.css";
3
+ const TabPanel = ({ ariaLabelledBy, children, id })=>/*#__PURE__*/ jsx("div", {
4
+ className: "TabPanel",
5
+ id: id,
6
+ role: "tabpanel",
7
+ "aria-labelledby": ariaLabelledBy,
8
+ children: children
9
+ });
10
+ var tabs_TabPanel = TabPanel;
11
+ export default tabs_TabPanel;
@@ -0,0 +1 @@
1
+ export { default as TabPanel } from "./TabPanel.js";
@@ -0,0 +1,55 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import react, { useState } from "react";
3
+ import { LayoutConfigurator, LayoutTreeViewer } from "../index.js";
4
+ import { followPathToComponent } from "../../index.js";
5
+ const ConfigWrapper = ({ children })=>{
6
+ const designMode = false;
7
+ const [layout, setLayout] = useState(children);
8
+ const [selectedComponent, setSelectedComponent] = useState(children);
9
+ const handleSelection = (selectedPath)=>{
10
+ const targetComponent = followPathToComponent(layout, selectedPath);
11
+ setSelectedComponent(targetComponent);
12
+ };
13
+ const handleChange = (property, value)=>{
14
+ console.log(`change ${property} -> ${value}`);
15
+ const newComponent = /*#__PURE__*/ react.cloneElement(selectedComponent, {
16
+ style: {
17
+ ...selectedComponent.props.style,
18
+ [property]: value
19
+ }
20
+ });
21
+ setSelectedComponent(newComponent);
22
+ setLayout(/*#__PURE__*/ react.cloneElement(layout, {}, newComponent));
23
+ };
24
+ return /*#__PURE__*/ jsxs("div", {
25
+ "data-design-mode": `${designMode}`,
26
+ children: [
27
+ layout,
28
+ /*#__PURE__*/ jsx("br", {}),
29
+ /*#__PURE__*/ jsxs("div", {
30
+ style: {
31
+ display: "flex"
32
+ },
33
+ children: [
34
+ /*#__PURE__*/ jsx(LayoutConfigurator, {
35
+ height: 300,
36
+ managedStyle: selectedComponent.props.style,
37
+ width: 300,
38
+ onChange: handleChange,
39
+ style: void 0
40
+ }),
41
+ /*#__PURE__*/ jsx(LayoutTreeViewer, {
42
+ layout: layout,
43
+ onSelect: handleSelection,
44
+ style: {
45
+ width: 300,
46
+ height: 300,
47
+ backgroundColor: "#ccc"
48
+ }
49
+ })
50
+ ]
51
+ })
52
+ ]
53
+ });
54
+ };
55
+ export { ConfigWrapper };
@@ -0,0 +1 @@
1
+ export * from "./ConfigWrapper.js";
@@ -0,0 +1,113 @@
1
+ const css = `
2
+ [data-design-mode="true"] .Component {
3
+ filter: grayscale();
4
+ opacity: .4;
5
+ }
6
+
7
+ [data-design-mode="true"] .Component:after {
8
+ color: #000;
9
+ content: "Component";
10
+ background-color: #ff0;
11
+ height: 12px;
12
+ }
13
+
14
+ .LayoutConfigurator {
15
+ --margin-color: #f3cea5;
16
+ --border-color: #fddda0;
17
+ --padding-color: #c6d092;
18
+ --content-color: #8cb6c0;
19
+ background-color: var(--margin-color);
20
+ flex-direction: column;
21
+ align-items: stretch;
22
+ display: flex;
23
+ }
24
+
25
+ .LayoutConfigurator .layout-outer {
26
+ flex-direction: column;
27
+ flex: auto;
28
+ align-items: stretch;
29
+ display: flex;
30
+ }
31
+
32
+ .LayoutBox {
33
+ --hw-control-font-size: 13px;
34
+ --hw-text-input-bg: #ffffff4d;
35
+ --hwTextInput-padding: 3px;
36
+ --hw-text-input-position: absolute;
37
+ --hwTextInput-width: 30px;
38
+ flex: auto;
39
+ }
40
+
41
+ .LayoutBox > .layout-top {
42
+ flex-direction: row;
43
+ flex: 0 0 40px;
44
+ align-items: center;
45
+ padding-left: 12px;
46
+ display: flex;
47
+ position: relative;
48
+ }
49
+
50
+ .LayoutBox > .layout-bottom {
51
+ flex-direction: row;
52
+ flex: 0 0 40px;
53
+ align-items: center;
54
+ display: flex;
55
+ position: relative;
56
+ }
57
+
58
+ .LayoutBox > .layout-inner > .layout-right, .LayoutBox > .layout-inner > .layout-left {
59
+ flex-direction: column;
60
+ flex: 0 0 40px;
61
+ justify-content: center;
62
+ align-items: center;
63
+ display: flex;
64
+ }
65
+
66
+ .layout-top, .layout-bottom {
67
+ --hw-text-input-margin: 0 0 0 -15px;
68
+ }
69
+
70
+ .layout-top > .layout-input, .layout-bottom > .layout-input {
71
+ left: 50%;
72
+ }
73
+
74
+ .LayoutBox > .layout-inner {
75
+ flex-direction: row;
76
+ flex: auto;
77
+ align-items: stretch;
78
+ display: flex;
79
+ }
80
+
81
+ .LayoutBox.layout-margin {
82
+ background-color: var(--margin-color);
83
+ border: 2px dashed #000;
84
+ }
85
+
86
+ .LayoutBox.layout-border {
87
+ background-color: var(--border-color);
88
+ border: 2px solid #000;
89
+ }
90
+
91
+ .LayoutBox.layout-padding {
92
+ background-color: var(--padding-color);
93
+ border: 2px dashed #000;
94
+ }
95
+
96
+ .LayoutBox .layout-content {
97
+ background-color: var(--content-color);
98
+ border: 2px solid gray;
99
+ flex: auto;
100
+ }
101
+
102
+ .LayoutBox .layout-title {
103
+ color: #161616;
104
+ font-size: 11px;
105
+ line-height: 15px;
106
+ position: absolute;
107
+ top: 1px;
108
+ left: 4px;
109
+ }
110
+
111
+
112
+ `;
113
+ export default css;
@@ -0,0 +1,17 @@
1
+ const css = `
2
+ .hwLayoutTreeNode {
3
+ cursor: default;
4
+ }
5
+
6
+ .hwLayoutTreeNode:hover {
7
+ background-color: #fff3;
8
+ }
9
+
10
+ .hwLayoutTreeNode[aria-selected="true"] {
11
+ color: #fff;
12
+ background-color: #6495ed;
13
+ }
14
+
15
+
16
+ `;
17
+ export default css;
@@ -0,0 +1,3 @@
1
+ export * from "./config-wrapper/index.js";
2
+ export * from "./devtools-box/layout-configurator.js";
3
+ export * from "./devtools-tree/layout-tree-viewer.js";
@@ -0,0 +1,43 @@
1
+ import { useCallback } from "react";
2
+ const persistentState = new Map();
3
+ const getPersistentState = (id)=>persistentState.get(id);
4
+ const hasPersistentState = (id)=>persistentState.has(id);
5
+ const setPersistentState = (id, value)=>persistentState.set(id, value);
6
+ const usePersistentState = ()=>{
7
+ const loadState = useCallback((id, key)=>{
8
+ const state = persistentState.get(id);
9
+ if (state) {
10
+ if (void 0 !== key) return state[key];
11
+ return state;
12
+ }
13
+ }, []);
14
+ const saveState = useCallback((id, key, data)=>{
15
+ if (void 0 === key) persistentState.set(id, data);
16
+ else if (persistentState.has(id)) {
17
+ const state = persistentState.get(id);
18
+ persistentState.set(id, {
19
+ ...state,
20
+ [key]: data
21
+ });
22
+ } else persistentState.set(id, {
23
+ [key]: data
24
+ });
25
+ }, []);
26
+ const purgeState = useCallback((id, key)=>{
27
+ if (persistentState.has(id)) if (void 0 === key) persistentState.delete(id);
28
+ else {
29
+ const state = persistentState.get(id);
30
+ if (state[key]) {
31
+ const { [key]: _doomedState, ...rest } = persistentState.get(id);
32
+ if (Object.keys(rest).length > 0) persistentState.set(id, rest);
33
+ else persistentState.delete(id);
34
+ }
35
+ }
36
+ }, []);
37
+ return {
38
+ loadState,
39
+ saveState,
40
+ purgeState
41
+ };
42
+ };
43
+ export { getPersistentState, hasPersistentState, setPersistentState, usePersistentState };
@@ -0,0 +1,5 @@
1
+ export * from "./pathUtils.js";
2
+ export * from "./propUtils.js";
3
+ export * from "./refUtils.js";
4
+ export * from "./styleUtils.js";
5
+ export * from "./typeOf.js";