@vuu-ui/vuu-layout 0.13.7 → 0.13.9

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 (245) hide show
  1. package/cjs/index.js +5513 -113
  2. package/cjs/index.js.map +1 -1
  3. package/esm/index.js +5436 -32
  4. package/esm/index.js.map +1 -1
  5. package/package.json +9 -9
  6. package/cjs/Component.js +0 -14
  7. package/cjs/Component.js.map +0 -1
  8. package/cjs/LayoutContainer.css.js +0 -6
  9. package/cjs/LayoutContainer.css.js.map +0 -1
  10. package/cjs/LayoutContainer.js +0 -33
  11. package/cjs/LayoutContainer.js.map +0 -1
  12. package/cjs/dock-layout/DockLayout.css.js +0 -6
  13. package/cjs/dock-layout/DockLayout.css.js.map +0 -1
  14. package/cjs/dock-layout/DockLayout.js +0 -41
  15. package/cjs/dock-layout/DockLayout.js.map +0 -1
  16. package/cjs/dock-layout/Drawer.css.js +0 -6
  17. package/cjs/dock-layout/Drawer.css.js.map +0 -1
  18. package/cjs/dock-layout/Drawer.js +0 -95
  19. package/cjs/dock-layout/Drawer.js.map +0 -1
  20. package/cjs/drag-drop/BoxModel.js +0 -416
  21. package/cjs/drag-drop/BoxModel.js.map +0 -1
  22. package/cjs/drag-drop/DragState.js +0 -161
  23. package/cjs/drag-drop/DragState.js.map +0 -1
  24. package/cjs/drag-drop/Draggable.js +0 -192
  25. package/cjs/drag-drop/Draggable.js.map +0 -1
  26. package/cjs/drag-drop/DropTarget.js +0 -257
  27. package/cjs/drag-drop/DropTarget.js.map +0 -1
  28. package/cjs/drag-drop/DropTargetRenderer.js +0 -218
  29. package/cjs/drag-drop/DropTargetRenderer.js.map +0 -1
  30. package/cjs/flexbox/Flexbox.css.js +0 -6
  31. package/cjs/flexbox/Flexbox.css.js.map +0 -1
  32. package/cjs/flexbox/Flexbox.js +0 -69
  33. package/cjs/flexbox/Flexbox.js.map +0 -1
  34. package/cjs/flexbox/FlexboxLayout.js +0 -30
  35. package/cjs/flexbox/FlexboxLayout.js.map +0 -1
  36. package/cjs/flexbox/Splitter.css.js +0 -6
  37. package/cjs/flexbox/Splitter.css.js.map +0 -1
  38. package/cjs/flexbox/Splitter.js +0 -122
  39. package/cjs/flexbox/Splitter.js.map +0 -1
  40. package/cjs/flexbox/flexbox-utils.js +0 -95
  41. package/cjs/flexbox/flexbox-utils.js.map +0 -1
  42. package/cjs/flexbox/useSplitterResizing.js +0 -198
  43. package/cjs/flexbox/useSplitterResizing.js.map +0 -1
  44. package/cjs/layout-action.js +0 -24
  45. package/cjs/layout-action.js.map +0 -1
  46. package/cjs/layout-header/Header.css.js +0 -6
  47. package/cjs/layout-header/Header.css.js.map +0 -1
  48. package/cjs/layout-header/Header.js +0 -152
  49. package/cjs/layout-header/Header.js.map +0 -1
  50. package/cjs/layout-header/useHeader.js +0 -86
  51. package/cjs/layout-header/useHeader.js.map +0 -1
  52. package/cjs/layout-provider/LayoutProvider.js +0 -306
  53. package/cjs/layout-provider/LayoutProvider.js.map +0 -1
  54. package/cjs/layout-provider/LayoutProviderContext.js +0 -23
  55. package/cjs/layout-provider/LayoutProviderContext.js.map +0 -1
  56. package/cjs/layout-provider/useLayoutDragDrop.js +0 -177
  57. package/cjs/layout-provider/useLayoutDragDrop.js.map +0 -1
  58. package/cjs/layout-reducer/flexUtils.js +0 -227
  59. package/cjs/layout-reducer/flexUtils.js.map +0 -1
  60. package/cjs/layout-reducer/insert-layout-element.js +0 -286
  61. package/cjs/layout-reducer/insert-layout-element.js.map +0 -1
  62. package/cjs/layout-reducer/layout-reducer.js +0 -202
  63. package/cjs/layout-reducer/layout-reducer.js.map +0 -1
  64. package/cjs/layout-reducer/layoutTypes.js +0 -40
  65. package/cjs/layout-reducer/layoutTypes.js.map +0 -1
  66. package/cjs/layout-reducer/layoutUtils.js +0 -237
  67. package/cjs/layout-reducer/layoutUtils.js.map +0 -1
  68. package/cjs/layout-reducer/move-layout-element.js +0 -31
  69. package/cjs/layout-reducer/move-layout-element.js.map +0 -1
  70. package/cjs/layout-reducer/remove-layout-element.js +0 -237
  71. package/cjs/layout-reducer/remove-layout-element.js.map +0 -1
  72. package/cjs/layout-reducer/replace-layout-element.js +0 -96
  73. package/cjs/layout-reducer/replace-layout-element.js.map +0 -1
  74. package/cjs/layout-reducer/resize-flex-children.js +0 -62
  75. package/cjs/layout-reducer/resize-flex-children.js.map +0 -1
  76. package/cjs/layout-reducer/wrap-layout-element.js +0 -211
  77. package/cjs/layout-reducer/wrap-layout-element.js.map +0 -1
  78. package/cjs/layout-view/View.css.js +0 -6
  79. package/cjs/layout-view/View.css.js.map +0 -1
  80. package/cjs/layout-view/View.js +0 -167
  81. package/cjs/layout-view/View.js.map +0 -1
  82. package/cjs/layout-view/useView.js +0 -91
  83. package/cjs/layout-view/useView.js.map +0 -1
  84. package/cjs/layout-view/useViewBroadcastChannel.js +0 -35
  85. package/cjs/layout-view/useViewBroadcastChannel.js.map +0 -1
  86. package/cjs/layout-view/useViewResize.js +0 -42
  87. package/cjs/layout-view/useViewResize.js.map +0 -1
  88. package/cjs/layout-view-actions/ViewContext.js +0 -16
  89. package/cjs/layout-view-actions/ViewContext.js.map +0 -1
  90. package/cjs/layout-view-actions/useViewActionDispatcher.js +0 -129
  91. package/cjs/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  92. package/cjs/palette/Palette.css.js +0 -6
  93. package/cjs/palette/Palette.css.js.map +0 -1
  94. package/cjs/palette/Palette.js +0 -132
  95. package/cjs/palette/Palette.js.map +0 -1
  96. package/cjs/placeholder/LayoutStartPanel.css.js +0 -6
  97. package/cjs/placeholder/LayoutStartPanel.css.js.map +0 -1
  98. package/cjs/placeholder/LayoutStartPanel.js +0 -56
  99. package/cjs/placeholder/LayoutStartPanel.js.map +0 -1
  100. package/cjs/placeholder/Placeholder.css.js +0 -6
  101. package/cjs/placeholder/Placeholder.css.js.map +0 -1
  102. package/cjs/placeholder/Placeholder.js +0 -34
  103. package/cjs/placeholder/Placeholder.js.map +0 -1
  104. package/cjs/responsive/useResizeObserver.js +0 -118
  105. package/cjs/responsive/useResizeObserver.js.map +0 -1
  106. package/cjs/responsive/utils.js +0 -34
  107. package/cjs/responsive/utils.js.map +0 -1
  108. package/cjs/stack/Stack.css.js +0 -6
  109. package/cjs/stack/Stack.css.js.map +0 -1
  110. package/cjs/stack/Stack.js +0 -150
  111. package/cjs/stack/Stack.js.map +0 -1
  112. package/cjs/stack/StackLayout.js +0 -118
  113. package/cjs/stack/StackLayout.js.map +0 -1
  114. package/cjs/use-persistent-state.js +0 -112
  115. package/cjs/use-persistent-state.js.map +0 -1
  116. package/cjs/utils/pathUtils.js +0 -293
  117. package/cjs/utils/pathUtils.js.map +0 -1
  118. package/cjs/utils/propUtils.js +0 -27
  119. package/cjs/utils/propUtils.js.map +0 -1
  120. package/cjs/utils/refUtils.js +0 -12
  121. package/cjs/utils/refUtils.js.map +0 -1
  122. package/cjs/utils/styleUtils.js +0 -15
  123. package/cjs/utils/styleUtils.js.map +0 -1
  124. package/cjs/utils/typeOf.js +0 -27
  125. package/cjs/utils/typeOf.js.map +0 -1
  126. package/esm/Component.js +0 -12
  127. package/esm/Component.js.map +0 -1
  128. package/esm/LayoutContainer.css.js +0 -4
  129. package/esm/LayoutContainer.css.js.map +0 -1
  130. package/esm/LayoutContainer.js +0 -31
  131. package/esm/LayoutContainer.js.map +0 -1
  132. package/esm/dock-layout/DockLayout.css.js +0 -4
  133. package/esm/dock-layout/DockLayout.css.js.map +0 -1
  134. package/esm/dock-layout/DockLayout.js +0 -39
  135. package/esm/dock-layout/DockLayout.js.map +0 -1
  136. package/esm/dock-layout/Drawer.css.js +0 -4
  137. package/esm/dock-layout/Drawer.css.js.map +0 -1
  138. package/esm/dock-layout/Drawer.js +0 -93
  139. package/esm/dock-layout/Drawer.js.map +0 -1
  140. package/esm/drag-drop/BoxModel.js +0 -409
  141. package/esm/drag-drop/BoxModel.js.map +0 -1
  142. package/esm/drag-drop/DragState.js +0 -159
  143. package/esm/drag-drop/DragState.js.map +0 -1
  144. package/esm/drag-drop/Draggable.js +0 -190
  145. package/esm/drag-drop/Draggable.js.map +0 -1
  146. package/esm/drag-drop/DropTarget.js +0 -253
  147. package/esm/drag-drop/DropTarget.js.map +0 -1
  148. package/esm/drag-drop/DropTargetRenderer.js +0 -216
  149. package/esm/drag-drop/DropTargetRenderer.js.map +0 -1
  150. package/esm/flexbox/Flexbox.css.js +0 -4
  151. package/esm/flexbox/Flexbox.css.js.map +0 -1
  152. package/esm/flexbox/Flexbox.js +0 -67
  153. package/esm/flexbox/Flexbox.js.map +0 -1
  154. package/esm/flexbox/FlexboxLayout.js +0 -28
  155. package/esm/flexbox/FlexboxLayout.js.map +0 -1
  156. package/esm/flexbox/Splitter.css.js +0 -4
  157. package/esm/flexbox/Splitter.css.js.map +0 -1
  158. package/esm/flexbox/Splitter.js +0 -120
  159. package/esm/flexbox/Splitter.js.map +0 -1
  160. package/esm/flexbox/flexbox-utils.js +0 -89
  161. package/esm/flexbox/flexbox-utils.js.map +0 -1
  162. package/esm/flexbox/useSplitterResizing.js +0 -196
  163. package/esm/flexbox/useSplitterResizing.js.map +0 -1
  164. package/esm/layout-action.js +0 -22
  165. package/esm/layout-action.js.map +0 -1
  166. package/esm/layout-header/Header.css.js +0 -4
  167. package/esm/layout-header/Header.css.js.map +0 -1
  168. package/esm/layout-header/Header.js +0 -150
  169. package/esm/layout-header/Header.js.map +0 -1
  170. package/esm/layout-header/useHeader.js +0 -84
  171. package/esm/layout-header/useHeader.js.map +0 -1
  172. package/esm/layout-provider/LayoutProvider.js +0 -299
  173. package/esm/layout-provider/LayoutProvider.js.map +0 -1
  174. package/esm/layout-provider/LayoutProviderContext.js +0 -20
  175. package/esm/layout-provider/LayoutProviderContext.js.map +0 -1
  176. package/esm/layout-provider/useLayoutDragDrop.js +0 -175
  177. package/esm/layout-provider/useLayoutDragDrop.js.map +0 -1
  178. package/esm/layout-reducer/flexUtils.js +0 -218
  179. package/esm/layout-reducer/flexUtils.js.map +0 -1
  180. package/esm/layout-reducer/insert-layout-element.js +0 -282
  181. package/esm/layout-reducer/insert-layout-element.js.map +0 -1
  182. package/esm/layout-reducer/layout-reducer.js +0 -200
  183. package/esm/layout-reducer/layout-reducer.js.map +0 -1
  184. package/esm/layout-reducer/layoutTypes.js +0 -36
  185. package/esm/layout-reducer/layoutTypes.js.map +0 -1
  186. package/esm/layout-reducer/layoutUtils.js +0 -226
  187. package/esm/layout-reducer/layoutUtils.js.map +0 -1
  188. package/esm/layout-reducer/move-layout-element.js +0 -29
  189. package/esm/layout-reducer/move-layout-element.js.map +0 -1
  190. package/esm/layout-reducer/remove-layout-element.js +0 -235
  191. package/esm/layout-reducer/remove-layout-element.js.map +0 -1
  192. package/esm/layout-reducer/replace-layout-element.js +0 -92
  193. package/esm/layout-reducer/replace-layout-element.js.map +0 -1
  194. package/esm/layout-reducer/resize-flex-children.js +0 -59
  195. package/esm/layout-reducer/resize-flex-children.js.map +0 -1
  196. package/esm/layout-reducer/wrap-layout-element.js +0 -209
  197. package/esm/layout-reducer/wrap-layout-element.js.map +0 -1
  198. package/esm/layout-view/View.css.js +0 -4
  199. package/esm/layout-view/View.css.js.map +0 -1
  200. package/esm/layout-view/View.js +0 -165
  201. package/esm/layout-view/View.js.map +0 -1
  202. package/esm/layout-view/useView.js +0 -89
  203. package/esm/layout-view/useView.js.map +0 -1
  204. package/esm/layout-view/useViewBroadcastChannel.js +0 -33
  205. package/esm/layout-view/useViewBroadcastChannel.js.map +0 -1
  206. package/esm/layout-view/useViewResize.js +0 -40
  207. package/esm/layout-view/useViewResize.js.map +0 -1
  208. package/esm/layout-view-actions/ViewContext.js +0 -12
  209. package/esm/layout-view-actions/ViewContext.js.map +0 -1
  210. package/esm/layout-view-actions/useViewActionDispatcher.js +0 -127
  211. package/esm/layout-view-actions/useViewActionDispatcher.js.map +0 -1
  212. package/esm/palette/Palette.css.js +0 -4
  213. package/esm/palette/Palette.css.js.map +0 -1
  214. package/esm/palette/Palette.js +0 -129
  215. package/esm/palette/Palette.js.map +0 -1
  216. package/esm/placeholder/LayoutStartPanel.css.js +0 -4
  217. package/esm/placeholder/LayoutStartPanel.css.js.map +0 -1
  218. package/esm/placeholder/LayoutStartPanel.js +0 -54
  219. package/esm/placeholder/LayoutStartPanel.js.map +0 -1
  220. package/esm/placeholder/Placeholder.css.js +0 -4
  221. package/esm/placeholder/Placeholder.css.js.map +0 -1
  222. package/esm/placeholder/Placeholder.js +0 -32
  223. package/esm/placeholder/Placeholder.js.map +0 -1
  224. package/esm/responsive/useResizeObserver.js +0 -112
  225. package/esm/responsive/useResizeObserver.js.map +0 -1
  226. package/esm/responsive/utils.js +0 -31
  227. package/esm/responsive/utils.js.map +0 -1
  228. package/esm/stack/Stack.css.js +0 -4
  229. package/esm/stack/Stack.css.js.map +0 -1
  230. package/esm/stack/Stack.js +0 -148
  231. package/esm/stack/Stack.js.map +0 -1
  232. package/esm/stack/StackLayout.js +0 -116
  233. package/esm/stack/StackLayout.js.map +0 -1
  234. package/esm/use-persistent-state.js +0 -107
  235. package/esm/use-persistent-state.js.map +0 -1
  236. package/esm/utils/pathUtils.js +0 -280
  237. package/esm/utils/pathUtils.js.map +0 -1
  238. package/esm/utils/propUtils.js +0 -23
  239. package/esm/utils/propUtils.js.map +0 -1
  240. package/esm/utils/refUtils.js +0 -10
  241. package/esm/utils/refUtils.js.map +0 -1
  242. package/esm/utils/styleUtils.js +0 -13
  243. package/esm/utils/styleUtils.js.map +0 -1
  244. package/esm/utils/typeOf.js +0 -23
  245. package/esm/utils/typeOf.js.map +0 -1
@@ -1,118 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var vuuUtils = require('@vuu-ui/vuu-utils');
5
- var React = require('react');
6
- var LayoutProvider = require('../layout-provider/LayoutProvider.js');
7
- require('../layout-provider/LayoutProviderContext.js');
8
- var layoutUtils = require('../layout-reducer/layoutUtils.js');
9
- var useViewBroadcastChannel = require('../layout-view/useViewBroadcastChannel.js');
10
- require('../layout-view/View.js');
11
- var useViewActionDispatcher = require('../layout-view-actions/useViewActionDispatcher.js');
12
- require('../layout-view-actions/ViewContext.js');
13
- var usePersistentState = require('../use-persistent-state.js');
14
- var Stack = require('./Stack.js');
15
-
16
- const StackLayout = (props) => {
17
- const rootRef = React.useRef(null);
18
- const dispatch = LayoutProvider.useLayoutProviderDispatch();
19
- const { loadState } = usePersistentState.usePersistentState();
20
- const {
21
- createNewChild: createNewChildProp,
22
- id: idProp,
23
- onTabSelectionChanged,
24
- path,
25
- ...restProps
26
- } = props;
27
- const { children } = props;
28
- const id = vuuUtils.useId(idProp);
29
- const sendMessage = useViewBroadcastChannel.useViewBroadcastChannel();
30
- const [dispatchViewAction] = useViewActionDispatcher.useViewActionDispatcher(id, rootRef, path);
31
- const createNewChildFromContext = LayoutProvider.useLayoutCreateNewChild();
32
- const createNewChild = createNewChildProp ?? createNewChildFromContext;
33
- const handleTabSelection = (nextIdx) => {
34
- if (path) {
35
- dispatch({ type: "switch-tab", id, path, nextIdx });
36
- onTabSelectionChanged?.(nextIdx);
37
- }
38
- };
39
- const handleTabClose = React.useCallback(
40
- (tabIndex) => {
41
- if (Array.isArray(children)) {
42
- const {
43
- props: { "data-path": dataPath, path: path2 = dataPath }
44
- } = children[tabIndex];
45
- sendMessage({ type: "layout-closed", path: path2 });
46
- setTimeout(() => {
47
- dispatch({ type: "remove", path: path2 });
48
- }, 100);
49
- }
50
- },
51
- [children, dispatch, sendMessage]
52
- );
53
- const handleTabAdd = React.useCallback(() => {
54
- if (path) {
55
- const tabIndex = React.Children.count(children);
56
- dispatch({
57
- type: "add",
58
- path,
59
- component: createNewChild(tabIndex)
60
- });
61
- }
62
- }, [children, createNewChild, dispatch, path]);
63
- const handleMoveTab = React.useCallback(
64
- (fromIndex, toIndex) => {
65
- if (path) {
66
- dispatch({
67
- fromIndex,
68
- toIndex,
69
- path,
70
- type: "move-child"
71
- });
72
- }
73
- },
74
- [dispatch, path]
75
- );
76
- const handleMouseDown = async (e, index) => {
77
- let readyToDrag;
78
- const preDragActivity = async () => new Promise((resolve) => {
79
- console.log("preDragActivity: Ok, gonna release the drag");
80
- readyToDrag = resolve;
81
- });
82
- const dragging = await dispatchViewAction(
83
- { type: "mousedown", index, preDragActivity },
84
- e
85
- );
86
- if (dragging) {
87
- readyToDrag?.(void 0);
88
- }
89
- };
90
- const handleTabEdit = (tabIndex, text) => {
91
- dispatch({ type: "set-title", path: `${path}.${tabIndex}`, title: text });
92
- };
93
- const getTabLabel = (component, idx, existingLabels) => {
94
- const { id: id2, title } = component.props;
95
- return loadState(id2, "view-title") || title || // This will normally never be called as title is always assigned in layout model
96
- layoutUtils.getDefaultTabLabel(component, idx, existingLabels);
97
- };
98
- return /* @__PURE__ */ jsxRuntime.jsx(
99
- Stack.Stack,
100
- {
101
- ...restProps,
102
- id,
103
- getTabLabel,
104
- onMouseDown: handleMouseDown,
105
- onMoveTab: handleMoveTab,
106
- onAddTab: handleTabAdd,
107
- onTabClose: handleTabClose,
108
- onTabEdit: handleTabEdit,
109
- onTabSelectionChanged: handleTabSelection,
110
- ref: rootRef
111
- }
112
- );
113
- };
114
- StackLayout.displayName = "Stack";
115
- vuuUtils.registerComponent("Stack", StackLayout, "container");
116
-
117
- exports.StackLayout = StackLayout;
118
- //# sourceMappingURL=StackLayout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StackLayout.js","sources":["../../src/stack/StackLayout.tsx"],"sourcesContent":["import { registerComponent, useId } from \"@vuu-ui/vuu-utils\";\nimport React, { MouseEvent, useCallback, useRef } from \"react\";\nimport {\n useLayoutCreateNewChild,\n useLayoutProviderDispatch,\n} from \"../layout-provider\";\nimport { getDefaultTabLabel } from \"../layout-reducer\";\nimport { useViewBroadcastChannel } from \"../layout-view\";\nimport { useViewActionDispatcher } from \"../layout-view-actions\";\nimport { usePersistentState } from \"../use-persistent-state\";\nimport { Stack } from \"./Stack\";\nimport { StackProps, TabLabelFactory } from \"./stackTypes\";\n\nexport const StackLayout = (props: StackProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const dispatch = useLayoutProviderDispatch();\n const { loadState } = usePersistentState();\n\n const {\n createNewChild: createNewChildProp,\n id: idProp,\n onTabSelectionChanged,\n path,\n ...restProps\n } = props;\n\n const { children } = props;\n\n const id = useId(idProp);\n\n const sendMessage = useViewBroadcastChannel();\n\n const [dispatchViewAction] = useViewActionDispatcher(id, rootRef, path);\n const createNewChildFromContext = useLayoutCreateNewChild();\n const createNewChild = createNewChildProp ?? createNewChildFromContext;\n\n const handleTabSelection = (nextIdx: number) => {\n if (path) {\n dispatch({ type: \"switch-tab\", id, path, nextIdx });\n onTabSelectionChanged?.(nextIdx);\n }\n };\n\n const handleTabClose = useCallback(\n (tabIndex: number) => {\n if (Array.isArray(children)) {\n const {\n props: { \"data-path\": dataPath, path = dataPath },\n } = children[tabIndex];\n sendMessage({ type: \"layout-closed\", path });\n setTimeout(() => {\n dispatch({ type: \"remove\", path });\n }, 100);\n }\n },\n [children, dispatch, sendMessage],\n );\n\n const handleTabAdd = useCallback(() => {\n if (path) {\n const tabIndex = React.Children.count(children);\n dispatch({\n type: \"add\",\n path,\n component: createNewChild(tabIndex),\n });\n }\n }, [children, createNewChild, dispatch, path]);\n\n const handleMoveTab = useCallback(\n (fromIndex: number, toIndex: number) => {\n if (path) {\n dispatch({\n fromIndex,\n toIndex,\n path,\n type: \"move-child\",\n });\n }\n },\n [dispatch, path],\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleMouseDown = async (e: MouseEvent, index: number) => {\n let readyToDrag: undefined | ((value: unknown) => void);\n\n const preDragActivity = async () =>\n new Promise((resolve) => {\n console.log(\"preDragActivity: Ok, gonna release the drag\");\n readyToDrag = resolve;\n });\n\n const dragging = await dispatchViewAction(\n { type: \"mousedown\", index, preDragActivity },\n e,\n );\n\n if (dragging) {\n readyToDrag?.(undefined);\n }\n };\n\n const handleTabEdit = (tabIndex: number, text: string) => {\n dispatch({ type: \"set-title\", path: `${path}.${tabIndex}`, title: text });\n };\n\n const getTabLabel: TabLabelFactory = (component, idx, existingLabels) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { id, title } = component.props as any;\n return (\n loadState(id, \"view-title\") ||\n title ||\n // This will normally never be called as title is always assigned in layout model\n getDefaultTabLabel(component, idx, existingLabels)\n );\n };\n\n return (\n <Stack\n {...restProps}\n id={id}\n getTabLabel={getTabLabel}\n onMouseDown={handleMouseDown}\n onMoveTab={handleMoveTab}\n onAddTab={handleTabAdd}\n onTabClose={handleTabClose}\n onTabEdit={handleTabEdit}\n onTabSelectionChanged={handleTabSelection}\n ref={rootRef}\n />\n );\n};\nStackLayout.displayName = \"Stack\";\n\nregisterComponent(\"Stack\", StackLayout, \"container\");\n"],"names":["useRef","useLayoutProviderDispatch","usePersistentState","useId","useViewBroadcastChannel","useViewActionDispatcher","useLayoutCreateNewChild","useCallback","path","id","getDefaultTabLabel","jsx","Stack","registerComponent"],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
-
5
- const persistentState = /* @__PURE__ */ new Map();
6
- const sessionState = /* @__PURE__ */ new Map();
7
- const getPersistentState = (id) => persistentState.get(id);
8
- const hasPersistentState = (id) => persistentState.has(id);
9
- const setPersistentState = (id, value) => persistentState.set(id, value);
10
- const usePersistentState = () => {
11
- const loadSessionState = React.useCallback((id, key) => {
12
- const state = sessionState.get(id);
13
- if (state) {
14
- if (key !== void 0 && state[key] !== void 0) {
15
- return state[key];
16
- }
17
- if (key !== void 0) {
18
- return void 0;
19
- }
20
- return state;
21
- }
22
- }, []);
23
- const saveSessionState = React.useCallback(
24
- (id, key, data) => {
25
- if (key === void 0) {
26
- sessionState.set(id, data);
27
- } else if (sessionState.has(id)) {
28
- const state = sessionState.get(id);
29
- sessionState.set(id, {
30
- ...state,
31
- [key]: data
32
- });
33
- } else {
34
- sessionState.set(id, { [key]: data });
35
- }
36
- },
37
- []
38
- );
39
- const purgeSessionState = React.useCallback((id, key) => {
40
- if (sessionState.has(id)) {
41
- if (key === void 0) {
42
- sessionState.delete(id);
43
- } else {
44
- const state = sessionState.get(id);
45
- if (state[key]) {
46
- const { [key]: _doomedState, ...rest } = sessionState.get(id);
47
- if (Object.keys(rest).length > 0) {
48
- sessionState.set(id, rest);
49
- } else {
50
- sessionState.delete(id);
51
- }
52
- }
53
- }
54
- }
55
- }, []);
56
- const loadState = React.useCallback((id, key) => {
57
- const state = persistentState.get(id);
58
- if (state) {
59
- if (key !== void 0) {
60
- return state[key];
61
- }
62
- return state;
63
- }
64
- }, []);
65
- const saveState = React.useCallback(
66
- (id, key, data) => {
67
- if (key === void 0) {
68
- persistentState.set(id, data);
69
- } else if (persistentState.has(id)) {
70
- const state = persistentState.get(id);
71
- persistentState.set(id, {
72
- ...state,
73
- [key]: data
74
- });
75
- } else {
76
- persistentState.set(id, { [key]: data });
77
- }
78
- },
79
- []
80
- );
81
- const purgeState = React.useCallback((id, key) => {
82
- if (persistentState.has(id)) {
83
- if (key === void 0) {
84
- persistentState.delete(id);
85
- } else {
86
- const state = persistentState.get(id);
87
- if (state[key]) {
88
- const { [key]: _doomedState, ...rest } = persistentState.get(id);
89
- if (Object.keys(rest).length > 0) {
90
- persistentState.set(id, rest);
91
- } else {
92
- persistentState.delete(id);
93
- }
94
- }
95
- }
96
- }
97
- }, []);
98
- return {
99
- loadSessionState,
100
- loadState,
101
- saveSessionState,
102
- saveState,
103
- purgeState,
104
- purgeSessionState
105
- };
106
- };
107
-
108
- exports.getPersistentState = getPersistentState;
109
- exports.hasPersistentState = hasPersistentState;
110
- exports.setPersistentState = setPersistentState;
111
- exports.usePersistentState = usePersistentState;
112
- //# sourceMappingURL=use-persistent-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-persistent-state.js","sources":["../src/use-persistent-state.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback } from \"react\";\n\n/**\n * Persistent state is stored at module level (i.e singleton-style)\n * It is kept at this level, rather than passed to the target component(s)\n * so that it endures across the unmount/mount lifecycle journey of any\n * individual component. e.g when switching between tabs, components are\n * unmounted and mounted. They re-request their persistent state on re-mount.\n * Persistent state is populated as the serialized layout schema is processed\n * (see layoutFromJSON).\n */\nconst persistentState = new Map<string, any>();\nconst sessionState = new Map<string, any>();\n\nexport const getPersistentState = (id: string) => persistentState.get(id);\nexport const hasPersistentState = (id: string) => persistentState.has(id);\nexport const setPersistentState = (id: string, value: any) =>\n persistentState.set(id, value);\n\nexport const usePersistentState = () => {\n const loadSessionState = useCallback((id: string, key?: string) => {\n const state = sessionState.get(id);\n if (state) {\n if (key !== undefined && state[key] !== undefined) {\n return state[key];\n }\n if (key !== undefined) {\n return undefined;\n }\n return state;\n }\n }, []);\n\n const saveSessionState = useCallback(\n (id: string, key: string, data: unknown) => {\n if (key === undefined) {\n sessionState.set(id, data);\n } else if (sessionState.has(id)) {\n const state = sessionState.get(id);\n sessionState.set(id, {\n ...state,\n [key]: data,\n });\n } else {\n sessionState.set(id, { [key]: data });\n }\n },\n [],\n );\n\n const purgeSessionState = useCallback((id: string, key?: string) => {\n if (sessionState.has(id)) {\n if (key === undefined) {\n sessionState.delete(id);\n } else {\n const state = sessionState.get(id);\n if (state[key]) {\n const { [key]: _doomedState, ...rest } = sessionState.get(id);\n if (Object.keys(rest).length > 0) {\n sessionState.set(id, rest);\n } else {\n sessionState.delete(id);\n }\n }\n }\n }\n }, []);\n\n const loadState = useCallback((id: string, key?: string) => {\n const state = persistentState.get(id);\n if (state) {\n if (key !== undefined) {\n return state[key];\n }\n return state;\n }\n }, []);\n\n const saveState = useCallback(\n (id: string, key: string | undefined, data: unknown) => {\n if (key === undefined) {\n persistentState.set(id, data);\n } else if (persistentState.has(id)) {\n const state = persistentState.get(id);\n persistentState.set(id, {\n ...state,\n [key]: data,\n });\n } else {\n persistentState.set(id, { [key]: data });\n }\n },\n [],\n );\n\n const purgeState = useCallback((id: string, key?: string) => {\n if (persistentState.has(id)) {\n if (key === undefined) {\n persistentState.delete(id);\n } else {\n const state = persistentState.get(id);\n if (state[key]) {\n const { [key]: _doomedState, ...rest } = persistentState.get(id);\n if (Object.keys(rest).length > 0) {\n persistentState.set(id, rest);\n } else {\n persistentState.delete(id);\n }\n }\n }\n }\n }, []);\n\n return {\n loadSessionState,\n loadState,\n saveSessionState,\n saveState,\n purgeState,\n purgeSessionState,\n };\n};\n"],"names":["useCallback"],"mappings":"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"}
@@ -1,293 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
- var React = require('react');
5
- var propUtils = require('./propUtils.js');
6
- var typeOf = require('./typeOf.js');
7
-
8
- const removeFinalPathSegment = (path) => {
9
- const pos = path.lastIndexOf(".");
10
- if (pos === -1) {
11
- return path;
12
- } else {
13
- return path.slice(0, pos);
14
- }
15
- };
16
- const getChildren = (c) => React.isValidElement(c.props.children) ? [c.props.children] : c.props.children;
17
- const resolvePath = (source, path = "") => {
18
- const [step1, ...steps] = path.split(".");
19
- if (step1?.startsWith("#")) {
20
- const node = findTargetById(source, step1.slice(1), true);
21
- if (node && steps.length) {
22
- return resolvePath(node, steps.join("."));
23
- }
24
- } else if (step1 === "ACTIVE_CHILD") {
25
- const { active } = propUtils.getProps(source);
26
- const children = getChildren(source);
27
- const { path: path2 } = propUtils.getProps(children[active]);
28
- return path2;
29
- }
30
- return "";
31
- };
32
- const resolveJSONPath = (source, path = "") => {
33
- const [step1, ...steps] = path.split(".");
34
- if (step1?.startsWith("#")) {
35
- const node = findTargetJSONById(source, step1.slice(1), true);
36
- if (node && steps.length) {
37
- return resolveJSONPath(node, steps.join("."));
38
- }
39
- } else if (step1 === "ACTIVE_CHILD") {
40
- const { children, props } = source;
41
- const { active } = props;
42
- if (typeof active === "number" && children?.[active]) {
43
- return children[active];
44
- }
45
- }
46
- return;
47
- };
48
- function followPathToParent(source, path) {
49
- const { "data-path": dataPath, path: sourcePath = dataPath } = propUtils.getProps(source);
50
- if (path === "0") return null;
51
- if (path === sourcePath) return null;
52
- return followPath(source, removeFinalPathSegment(path), true);
53
- }
54
- function findTarget(source, test) {
55
- if (source) {
56
- const { children, ...props } = propUtils.getProps(source);
57
- if (test(props)) {
58
- return source;
59
- }
60
- if (React.Children.count(children) > 0) {
61
- const array = React.isValidElement(children) ? [children] : children;
62
- for (const child of array) {
63
- const target = findTarget(child, test);
64
- if (target) {
65
- return target;
66
- }
67
- }
68
- }
69
- }
70
- }
71
- function containerOf(source, target) {
72
- if (target === source) {
73
- return null;
74
- }
75
- const { path: sourcePath, children } = propUtils.getProps(source);
76
- const { idx, finalStep } = nextStep(sourcePath, propUtils.getProp(target, "path"));
77
- if (finalStep) {
78
- return source;
79
- }
80
- if (children === void 0 || children[idx] === void 0) {
81
- return null;
82
- }
83
- return containerOf(children[idx], target);
84
- }
85
- const getChild = (children, idx) => {
86
- if (React.isValidElement(children) && idx == 0) {
87
- return children;
88
- }
89
- if (Array.isArray(children)) {
90
- return children[idx];
91
- }
92
- };
93
- function followPathToComponent(component, path) {
94
- const paths = path.split(".");
95
- let children = [component];
96
- for (let i = 0; i < paths.length; i++) {
97
- const idx = parseInt(paths[i]);
98
- const child = children[idx];
99
- if (i === paths.length - 1) {
100
- return child;
101
- }
102
- children = getChildren(child);
103
- }
104
- }
105
- const findTargetById = (source, id, throwIfNotFound = true) => {
106
- const { children, id: idProp } = source.props;
107
- if (idProp === id) {
108
- return source;
109
- }
110
- if (React.Children.count(children) > 0) {
111
- const childArray = React.isValidElement(children) ? [children] : children;
112
- for (const child of childArray) {
113
- if (React.isValidElement(child)) {
114
- const target = findTargetById(child, id, false);
115
- if (target) {
116
- return target;
117
- }
118
- }
119
- }
120
- }
121
- if (throwIfNotFound === true) {
122
- throw Error(`pathUtils.findTargetById id #${id} not found in source`);
123
- }
124
- };
125
- const findTargetJSONById = (source, id, throwIfNotFound = true) => {
126
- const { children, id: idProp } = source;
127
- if (idProp === id) {
128
- return source;
129
- }
130
- if (Array.isArray(children) && children.length > 0) {
131
- for (const child of children) {
132
- if (child !== null && typeof child === "object") {
133
- const target = findTargetJSONById(child, id, false);
134
- if (target) {
135
- return target;
136
- }
137
- }
138
- }
139
- }
140
- if (throwIfNotFound === true) {
141
- throw Error(`pathUtils.findTargetJSONById id #${id} not found in source`);
142
- }
143
- };
144
- function followPath(source, path, throwIfNotFound = false) {
145
- if (path.startsWith("#")) {
146
- return findTargetById(source, path.slice(1), throwIfNotFound);
147
- }
148
- const { "data-path": dataPath, path: sourcePath = dataPath } = propUtils.getProps(source);
149
- if (path.indexOf(sourcePath) !== 0) {
150
- throw Error(
151
- `pathUtils.followPath path ${path} is not within source path ${sourcePath}`
152
- );
153
- }
154
- const route = path.slice(sourcePath.length + 1);
155
- if (route === "") {
156
- return source;
157
- }
158
- let target = source;
159
- const paths = route.split(".");
160
- for (let i = 0; i < paths.length; i++) {
161
- if (React.Children.count(target.props.children) === 0) {
162
- const message = `element at 0.${paths.slice(0, i).join(".")} has no children, so cannot fulfill rest of path ${paths.slice(i).join(".")}`;
163
- if (throwIfNotFound) {
164
- throw Error(message);
165
- } else {
166
- console.warn(message);
167
- return;
168
- }
169
- }
170
- target = getChild(target.props.children, parseInt(paths[i]));
171
- if (target === void 0) {
172
- const message = `model at 0.${paths.slice(0, i).join(".")} has no children that fulfill next step of path ${paths.slice(i).join(".")}`;
173
- if (throwIfNotFound) {
174
- throw Error(message);
175
- } else {
176
- console.warn(message);
177
- }
178
- }
179
- }
180
- return target;
181
- }
182
- function nextLeaf(root, path) {
183
- const parent = followPathToParent(root, path);
184
- let pathIndices = path.split(".").map((idx) => parseInt(idx, 10));
185
- if (parent) {
186
- const lastIdx = pathIndices.pop();
187
- const { children } = parent.props;
188
- if (children.length - 1 > lastIdx) {
189
- return firstLeaf(children[lastIdx + 1]);
190
- } else {
191
- const parentIdx = pathIndices.pop();
192
- const nextParent = followPathToParent(root, propUtils.getProp(parent, "path"));
193
- if (nextParent && typeof parentIdx === "number") {
194
- pathIndices = nextParent.props.path.split(".").map((idx) => parseInt(idx, 10));
195
- if (nextParent.props.children.length - 1 > parentIdx) {
196
- const nextStep2 = nextParent.props.children[parentIdx + 1];
197
- if (vuuUtils.isContainer(typeOf.typeOf(nextStep2))) {
198
- return firstLeaf(nextStep2);
199
- } else {
200
- return nextStep2;
201
- }
202
- }
203
- }
204
- }
205
- }
206
- return firstLeaf(root);
207
- }
208
- function previousLeaf(root, path) {
209
- const pathIndices = path.split(".").map((idx) => parseInt(idx, 10));
210
- let lastIdx = pathIndices.pop();
211
- let parent = followPathToParent(root, path);
212
- if (parent != null && typeof lastIdx === "number") {
213
- const { children } = parent.props;
214
- if (lastIdx > 0) {
215
- return lastLeaf(children[lastIdx - 1]);
216
- } else {
217
- while (pathIndices.length > 1) {
218
- lastIdx = pathIndices.pop();
219
- parent = followPathToParent(
220
- root,
221
- propUtils.getProp(parent, "path")
222
- );
223
- if (lastIdx > 0) {
224
- const nextStep2 = parent.props.children[lastIdx - 1];
225
- if (vuuUtils.isContainer(typeOf.typeOf(nextStep2))) {
226
- return lastLeaf(nextStep2);
227
- }
228
- return nextStep2;
229
- }
230
- }
231
- }
232
- }
233
- return lastLeaf(root);
234
- }
235
- function firstLeaf(layoutRoot) {
236
- if (vuuUtils.isContainer(typeOf.typeOf(layoutRoot))) {
237
- const { children } = layoutRoot.props || layoutRoot;
238
- return firstLeaf(children[0]);
239
- }
240
- return layoutRoot;
241
- }
242
- function lastLeaf(root) {
243
- if (vuuUtils.isContainer(typeOf.typeOf(root))) {
244
- const { children } = root.props || root;
245
- return lastLeaf(children[children.length - 1]);
246
- }
247
- return root;
248
- }
249
- function nextStep(pathSoFar, targetPath, followPathToEnd = false) {
250
- if (pathSoFar === targetPath) {
251
- return { idx: -1, finalStep: true };
252
- }
253
- const pathVisited = `${pathSoFar}.`;
254
- if (!targetPath.startsWith(pathVisited)) {
255
- throw Error("pathUtils nextStep has strayed from the path");
256
- }
257
- const endOfTheLine = followPathToEnd ? 0 : 1;
258
- const paths = targetPath.replace(pathVisited, "").split(".").map((n) => parseInt(n, 10));
259
- return { idx: paths[0], finalStep: paths.length === endOfTheLine };
260
- }
261
- function resetPath(model, path, additionalProps) {
262
- if (propUtils.getProp(model, "path") === path) {
263
- return model;
264
- }
265
- const children = [];
266
- React.Children.forEach(model.props.children, (child, i) => {
267
- if (!propUtils.getProp(child, "path")) {
268
- children.push(child);
269
- } else {
270
- children.push(resetPath(child, `${path}.${i}`));
271
- }
272
- });
273
- const pathPropName = model.props["data-path"] ? "data-path" : "path";
274
- return React.cloneElement(
275
- model,
276
- { [pathPropName]: path, ...additionalProps },
277
- children
278
- );
279
- }
280
-
281
- exports.containerOf = containerOf;
282
- exports.findTarget = findTarget;
283
- exports.followPath = followPath;
284
- exports.followPathToComponent = followPathToComponent;
285
- exports.followPathToParent = followPathToParent;
286
- exports.getChild = getChild;
287
- exports.nextLeaf = nextLeaf;
288
- exports.nextStep = nextStep;
289
- exports.previousLeaf = previousLeaf;
290
- exports.resetPath = resetPath;
291
- exports.resolveJSONPath = resolveJSONPath;
292
- exports.resolvePath = resolvePath;
293
- //# sourceMappingURL=pathUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathUtils.js","sources":["../../src/utils/pathUtils.ts"],"sourcesContent":["import {\n isContainer,\n LayoutJSON,\n LayoutModel,\n WithActive,\n} from \"@vuu-ui/vuu-utils\";\nimport React, { isValidElement, ReactElement } from \"react\";\nimport { getProp, getProps } from \"./propUtils\";\nimport { typeOf } from \"./typeOf\";\n\nconst removeFinalPathSegment = (path: string) => {\n const pos = path.lastIndexOf(\".\");\n if (pos === -1) {\n return path;\n } else {\n return path.slice(0, pos);\n }\n};\n\nconst getChildren = (c: ReactElement) =>\n React.isValidElement((c.props as any).children)\n ? [(c.props as any).children]\n : (c.props as any).children;\n\n/**\n * This is a very specific function at the moment. It resolves a path of the form\n * '#{componentid}.ACTIVE_CHILD'\n * It allows a templated path to be resolved to a concrete path at runtime.\n * The above pattern is used to identify a layout drop target. Further patterns\n * will be added if needed.\n */\nexport const resolvePath = (source: ReactElement, path = \"\"): string => {\n const [step1, ...steps] = path.split(\".\");\n if (step1?.startsWith(\"#\")) {\n const node = findTargetById(source, step1.slice(1), true);\n if (node && steps.length) {\n return resolvePath(node, steps.join(\".\"));\n }\n } else if (step1 === \"ACTIVE_CHILD\") {\n const { active } = getProps(source);\n const children = getChildren(source);\n const { path } = getProps(children[active]);\n return path;\n }\n\n return \"\";\n};\n\n/**\n * Similar to resolvePath but operates on a JSON\n * layout structure and returns the matching JSON node.\n */\nexport const resolveJSONPath = (\n source: LayoutJSON,\n path = \"\",\n): LayoutJSON | undefined => {\n const [step1, ...steps] = path.split(\".\");\n if (step1?.startsWith(\"#\")) {\n const node = findTargetJSONById(source, step1.slice(1), true);\n if (node && steps.length) {\n return resolveJSONPath(node, steps.join(\".\"));\n }\n } else if (step1 === \"ACTIVE_CHILD\") {\n const { children, props } = source;\n const { active } = props as WithActive;\n if (typeof active === \"number\" && children?.[active]) {\n return children[active];\n }\n }\n return;\n};\n\nexport function followPathToParent(\n source: ReactElement,\n path: string,\n): ReactElement | null {\n const { \"data-path\": dataPath, path: sourcePath = dataPath } =\n getProps(source);\n\n if (path === \"0\") return null;\n if (path === sourcePath) return null;\n\n return followPath(source, removeFinalPathSegment(path), true);\n}\n\nexport function findTarget(\n source: LayoutModel | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n test: (props: any) => boolean,\n): LayoutModel | undefined {\n if (source) {\n const { children, ...props } = getProps(source);\n if (test(props)) {\n return source;\n }\n if (React.Children.count(children) > 0) {\n const array = React.isValidElement(children) ? [children] : children;\n for (const child of array) {\n const target = findTarget(child, test);\n if (target) {\n return target;\n }\n }\n }\n }\n}\n\nexport function containerOf(\n source: LayoutModel,\n target: LayoutModel,\n): LayoutModel | null {\n if (target === source) {\n return null;\n }\n const { path: sourcePath, children } = getProps(source);\n const { idx, finalStep } = nextStep(sourcePath, getProp(target, \"path\"));\n if (finalStep) {\n return source;\n }\n if (children === undefined || children[idx] === undefined) {\n return null;\n }\n return containerOf(children[idx], target);\n}\n\nexport const getChild = (\n children: ReactElement[],\n idx: number,\n): ReactElement | undefined => {\n if (React.isValidElement(children) && idx == 0) {\n return children;\n }\n if (Array.isArray(children)) {\n return children[idx];\n }\n};\n\nexport function followPathToComponent(component: ReactElement, path: string) {\n const paths = path.split(\".\");\n let children = [component];\n\n for (let i = 0; i < paths.length; i++) {\n const idx = parseInt(paths[i]);\n const child = children[idx];\n if (i === paths.length - 1) {\n return child;\n }\n children = getChildren(child);\n }\n}\n\nconst findTargetById = (\n source: ReactElement,\n id: string,\n throwIfNotFound = true,\n): ReactElement | undefined => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children, id: idProp } = source.props as any;\n if (idProp === id) {\n return source;\n }\n\n if (React.Children.count(children) > 0) {\n const childArray = isValidElement(children) ? [children] : children;\n for (const child of childArray) {\n if (isValidElement(child)) {\n const target = findTargetById(child, id, false);\n if (target) {\n return target;\n }\n }\n }\n }\n\n if (throwIfNotFound === true) {\n throw Error(`pathUtils.findTargetById id #${id} not found in source`);\n }\n};\n\nconst findTargetJSONById = (\n source: LayoutJSON,\n id: string,\n throwIfNotFound = true,\n): LayoutJSON | undefined => {\n const { children, id: idProp } = source;\n if (idProp === id) {\n return source;\n }\n\n if (Array.isArray(children) && children.length > 0) {\n for (const child of children) {\n if (child !== null && typeof child === \"object\") {\n const target = findTargetJSONById(child, id, false);\n if (target) {\n return target;\n }\n }\n }\n }\n\n if (throwIfNotFound === true) {\n throw Error(`pathUtils.findTargetJSONById id #${id} not found in source`);\n }\n};\n\nexport function followPath(\n source: LayoutModel,\n path: string,\n): LayoutModel | undefined;\nexport function followPath(\n source: ReactElement,\n path: string,\n throwIfNotFound: true,\n): ReactElement;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function followPath(source: any, path: any, throwIfNotFound = false) {\n if (path.startsWith(\"#\")) {\n return findTargetById(source, path.slice(1), throwIfNotFound);\n }\n\n const { \"data-path\": dataPath, path: sourcePath = dataPath } =\n getProps(source);\n if (path.indexOf(sourcePath) !== 0) {\n throw Error(\n `pathUtils.followPath path ${path} is not within source path ${sourcePath}`,\n );\n }\n const route = path.slice(sourcePath.length + 1);\n if (route === \"\") {\n return source;\n }\n\n let target = source;\n const paths = route.split(\".\");\n\n for (let i = 0; i < paths.length; i++) {\n if (React.Children.count(target.props.children) === 0) {\n const message = `element at 0.${paths\n .slice(0, i)\n .join(\".\")} has no children, so cannot fulfill rest of path ${paths\n .slice(i)\n .join(\".\")}`;\n\n if (throwIfNotFound) {\n throw Error(message);\n } else {\n console.warn(message);\n return;\n }\n }\n\n target = getChild(target.props.children, parseInt(paths[i]));\n\n if (target === undefined) {\n const message = `model at 0.${paths\n .slice(0, i)\n .join(\".\")} has no children that fulfill next step of path ${paths\n .slice(i)\n .join(\".\")}`;\n\n if (throwIfNotFound) {\n throw Error(message);\n } else {\n console.warn(message);\n }\n }\n }\n return target;\n}\n\nexport function nextLeaf(root: ReactElement, path: string) {\n const parent = followPathToParent(root, path);\n let pathIndices = path.split(\".\").map((idx) => parseInt(idx, 10));\n if (parent) {\n const lastIdx = pathIndices.pop();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children } = parent.props as any;\n if (children.length - 1 > lastIdx!) {\n return firstLeaf(children[lastIdx! + 1]);\n } else {\n const parentIdx = pathIndices.pop();\n const nextParent = followPathToParent(root, getProp(parent, \"path\"));\n if (nextParent && typeof parentIdx === \"number\") {\n pathIndices = (nextParent.props as any).path\n .split(\".\")\n .map((idx: string) => parseInt(idx, 10));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((nextParent.props as any).children.length - 1 > parentIdx) {\n const nextStep = (nextParent.props as any).children[parentIdx + 1];\n if (isContainer(typeOf(nextStep) as string)) {\n return firstLeaf(nextStep);\n } else {\n return nextStep;\n }\n }\n }\n }\n }\n\n return firstLeaf(root);\n}\n\nexport function previousLeaf(root: ReactElement, path: string) {\n const pathIndices = path.split(\".\").map((idx) => parseInt(idx, 10));\n let lastIdx = pathIndices.pop();\n let parent = followPathToParent(root, path);\n if (parent != null && typeof lastIdx === \"number\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children } = parent.props as any;\n if (lastIdx > 0) {\n return lastLeaf(children[lastIdx - 1]);\n } else {\n while (pathIndices.length > 1) {\n lastIdx = pathIndices.pop() as number;\n parent = followPathToParent(\n root,\n getProp(parent, \"path\"),\n ) as ReactElement;\n if (lastIdx > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const nextStep = (parent.props as any).children[lastIdx - 1];\n if (isContainer(typeOf(nextStep) as string)) {\n return lastLeaf(nextStep);\n }\n return nextStep;\n }\n }\n }\n }\n return lastLeaf(root);\n}\n\nfunction firstLeaf(layoutRoot: ReactElement): ReactElement {\n if (isContainer(typeOf(layoutRoot) as string)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children } = (layoutRoot.props || layoutRoot) as any;\n return firstLeaf(children[0]);\n }\n return layoutRoot;\n}\n\nfunction lastLeaf(root: ReactElement): ReactElement {\n if (isContainer(typeOf(root) as string)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children } = (root.props || root) as any;\n return lastLeaf(children[children.length - 1]);\n }\n return root;\n}\n\ntype NextStepResult = {\n idx: number;\n finalStep: boolean;\n};\n\nexport function nextStep(\n pathSoFar: string,\n targetPath: string,\n followPathToEnd = false,\n): NextStepResult {\n if (pathSoFar === targetPath) {\n return { idx: -1, finalStep: true };\n }\n\n const pathVisited = `${pathSoFar}.`;\n if (!targetPath.startsWith(pathVisited)) {\n throw Error(\"pathUtils nextStep has strayed from the path\");\n }\n\n const endOfTheLine = followPathToEnd ? 0 : 1;\n const paths = targetPath\n .replace(pathVisited, \"\")\n .split(\".\")\n .map((n) => parseInt(n, 10));\n return { idx: paths[0], finalStep: paths.length === endOfTheLine };\n}\n\nexport function resetPath(\n model: ReactElement,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalProps?: any,\n): ReactElement {\n if (getProp(model, \"path\") === path) {\n return model;\n }\n const children: ReactElement[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n React.Children.forEach((model.props as any).children, (child, i) => {\n if (!getProp(child, \"path\")) {\n children.push(child);\n } else {\n children.push(resetPath(child, `${path}.${i}`));\n }\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const pathPropName = (model.props as any)[\"data-path\"] ? \"data-path\" : \"path\";\n return React.cloneElement(\n model,\n { [pathPropName]: path, ...additionalProps },\n children,\n );\n}\n"],"names":["getProps","path","getProp","isValidElement","nextStep","isContainer","typeOf"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- const NO_PROPS = {};
4
- const getProp = (component, propName) => {
5
- const props = getProps(component);
6
- return props[propName] ?? props[`data-${propName}`];
7
- };
8
- const getProps = (component) => component?.props || component || NO_PROPS;
9
- const getChildProp = (container) => {
10
- const props = getProps(container);
11
- if (props.children) {
12
- const {
13
- children: [target, ...rest]
14
- } = props;
15
- if (rest.length > 0) {
16
- console.warn(
17
- `getChild expected a single child, found ${rest.length + 1}`
18
- );
19
- }
20
- return target;
21
- }
22
- };
23
-
24
- exports.getChildProp = getChildProp;
25
- exports.getProp = getProp;
26
- exports.getProps = getProps;
27
- //# sourceMappingURL=propUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"propUtils.js","sources":["../../src/utils/propUtils.ts"],"sourcesContent":["import { ReactElement } from \"react\";\nimport { LayoutModel } from \"@vuu-ui/vuu-utils\";\n\nconst NO_PROPS = {};\nexport const getProp = (\n component: LayoutModel | undefined,\n propName: string,\n) => {\n const props = getProps(component);\n return props[propName] ?? props[`data-${propName}`];\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const getProps = (component?: LayoutModel): any =>\n component?.props || component || NO_PROPS;\n\nexport const getChildProp = (container: LayoutModel) => {\n const props = getProps(container);\n if (props.children) {\n const {\n children: [target, ...rest],\n } = props;\n if (rest.length > 0) {\n console.warn(\n `getChild expected a single child, found ${rest.length + 1}`,\n );\n }\n return target as ReactElement;\n }\n};\n"],"names":[],"mappings":";;AAGA,MAAM,WAAW,EAAC;AACL,MAAA,OAAA,GAAU,CACrB,SAAA,EACA,QACG,KAAA;AACH,EAAM,MAAA,KAAA,GAAQ,SAAS,SAAS,CAAA;AAChC,EAAA,OAAO,MAAM,QAAQ,CAAA,IAAK,KAAM,CAAA,CAAA,KAAA,EAAQ,QAAQ,CAAE,CAAA,CAAA;AACpD;AAGO,MAAM,QAAW,GAAA,CAAC,SACvB,KAAA,SAAA,EAAW,SAAS,SAAa,IAAA;AAEtB,MAAA,YAAA,GAAe,CAAC,SAA2B,KAAA;AACtD,EAAM,MAAA,KAAA,GAAQ,SAAS,SAAS,CAAA;AAChC,EAAA,IAAI,MAAM,QAAU,EAAA;AAClB,IAAM,MAAA;AAAA,MACJ,QAAU,EAAA,CAAC,MAAQ,EAAA,GAAG,IAAI;AAAA,KACxB,GAAA,KAAA;AACJ,IAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,CAAA,wCAAA,EAA2C,IAAK,CAAA,MAAA,GAAS,CAAC,CAAA;AAAA,OAC5D;AAAA;AAEF,IAAO,OAAA,MAAA;AAAA;AAEX;;;;;;"}
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- function setRef(ref, value) {
4
- if (typeof ref === "function") {
5
- ref(value);
6
- } else if (ref) {
7
- ref.current = value;
8
- }
9
- }
10
-
11
- exports.setRef = setRef;
12
- //# sourceMappingURL=refUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refUtils.js","sources":["../../src/utils/refUtils.ts"],"sourcesContent":["import { MutableRefObject } from \"react\";\n\nexport function setRef<T>(\n ref:\n | MutableRefObject<T | null>\n | ((instance: T | null) => void)\n | null\n | undefined,\n value: T | null\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n"],"names":[],"mappings":";;AAEgB,SAAA,MAAA,CACd,KAKA,KACM,EAAA;AACN,EAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,aACA,GAAK,EAAA;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA;AAAA;AAElB;;;;"}