@vuu-ui/vuu-layout 0.0.27 → 0.5.5

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 (123) hide show
  1. package/LICENSE +201 -0
  2. package/cjs/index.js +20 -0
  3. package/cjs/index.js.map +7 -0
  4. package/esm/index.js +20 -0
  5. package/esm/index.js.map +7 -0
  6. package/index.css +2 -0
  7. package/index.css.map +7 -0
  8. package/package.json +15 -19
  9. package/src/Component.css +0 -2
  10. package/src/Component.tsx +0 -20
  11. package/src/DraggableLayout.css +0 -18
  12. package/src/DraggableLayout.tsx +0 -29
  13. package/src/__tests__/flexbox-utils.spec.js +0 -90
  14. package/src/action-buttons/action-buttons.css +0 -12
  15. package/src/action-buttons/action-buttons.tsx +0 -30
  16. package/src/action-buttons/index.ts +0 -1
  17. package/src/chest-of-drawers/Chest.css +0 -36
  18. package/src/chest-of-drawers/Chest.tsx +0 -42
  19. package/src/chest-of-drawers/Drawer.css +0 -153
  20. package/src/chest-of-drawers/Drawer.tsx +0 -118
  21. package/src/chest-of-drawers/index.ts +0 -2
  22. package/src/common-types.ts +0 -9
  23. package/src/debug.ts +0 -16
  24. package/src/dialog/Dialog.css +0 -16
  25. package/src/dialog/Dialog.tsx +0 -59
  26. package/src/dialog/index.ts +0 -1
  27. package/src/drag-drop/BoxModel.ts +0 -546
  28. package/src/drag-drop/DragState.ts +0 -222
  29. package/src/drag-drop/Draggable.ts +0 -282
  30. package/src/drag-drop/DropMenu.css +0 -70
  31. package/src/drag-drop/DropMenu.tsx +0 -68
  32. package/src/drag-drop/DropTarget.ts +0 -392
  33. package/src/drag-drop/DropTargetRenderer.css +0 -40
  34. package/src/drag-drop/DropTargetRenderer.tsx +0 -284
  35. package/src/drag-drop/dragDropTypes.ts +0 -49
  36. package/src/drag-drop/index.ts +0 -4
  37. package/src/editable-label/EditableLabel.css +0 -28
  38. package/src/editable-label/EditableLabel.tsx +0 -99
  39. package/src/editable-label/index.ts +0 -1
  40. package/src/flexbox/Flexbox.css +0 -45
  41. package/src/flexbox/Flexbox.tsx +0 -70
  42. package/src/flexbox/FlexboxLayout.jsx +0 -26
  43. package/src/flexbox/FluidGrid.css +0 -134
  44. package/src/flexbox/FluidGrid.tsx +0 -84
  45. package/src/flexbox/FluidGridLayout.tsx +0 -10
  46. package/src/flexbox/Splitter.css +0 -140
  47. package/src/flexbox/Splitter.tsx +0 -135
  48. package/src/flexbox/flexbox-utils.ts +0 -128
  49. package/src/flexbox/flexboxTypes.ts +0 -63
  50. package/src/flexbox/index.ts +0 -4
  51. package/src/flexbox/useResponsiveSizing.ts +0 -85
  52. package/src/flexbox/useSplitterResizing.ts +0 -272
  53. package/src/index.ts +0 -20
  54. package/src/layout-action.ts +0 -21
  55. package/src/layout-header/ActionButton.tsx +0 -23
  56. package/src/layout-header/Header.css +0 -8
  57. package/src/layout-header/Header.tsx +0 -222
  58. package/src/layout-header/index.ts +0 -1
  59. package/src/layout-provider/LayoutProvider.tsx +0 -160
  60. package/src/layout-provider/LayoutProviderContext.ts +0 -17
  61. package/src/layout-provider/index.ts +0 -2
  62. package/src/layout-provider/useLayoutDragDrop.ts +0 -241
  63. package/src/layout-reducer/flexUtils.ts +0 -281
  64. package/src/layout-reducer/index.ts +0 -4
  65. package/src/layout-reducer/insert-layout-element.ts +0 -365
  66. package/src/layout-reducer/layout-reducer.ts +0 -255
  67. package/src/layout-reducer/layoutTypes.ts +0 -151
  68. package/src/layout-reducer/layoutUtils.ts +0 -302
  69. package/src/layout-reducer/remove-layout-element.ts +0 -240
  70. package/src/layout-reducer/replace-layout-element.ts +0 -118
  71. package/src/layout-reducer/resize-flex-children.ts +0 -56
  72. package/src/layout-reducer/wrap-layout-element.ts +0 -317
  73. package/src/layout-view/View.css +0 -58
  74. package/src/layout-view/View.tsx +0 -149
  75. package/src/layout-view/ViewContext.ts +0 -31
  76. package/src/layout-view/index.ts +0 -4
  77. package/src/layout-view/useView.tsx +0 -104
  78. package/src/layout-view/useViewActionDispatcher.ts +0 -133
  79. package/src/layout-view/useViewResize.ts +0 -53
  80. package/src/layout-view/viewTypes.ts +0 -37
  81. package/src/palette/Palette.css +0 -37
  82. package/src/palette/Palette.tsx +0 -140
  83. package/src/palette/PaletteUitk.css +0 -9
  84. package/src/palette/PaletteUitk.tsx +0 -79
  85. package/src/palette/index.ts +0 -2
  86. package/src/placeholder/Placeholder.css +0 -10
  87. package/src/placeholder/Placeholder.tsx +0 -39
  88. package/src/placeholder/index.ts +0 -1
  89. package/src/registry/ComponentRegistry.ts +0 -35
  90. package/src/registry/index.ts +0 -1
  91. package/src/responsive/OverflowMenu.css +0 -31
  92. package/src/responsive/OverflowMenu.jsx +0 -56
  93. package/src/responsive/breakpoints.ts +0 -48
  94. package/src/responsive/index.ts +0 -4
  95. package/src/responsive/measureMinimumNodeSize.ts +0 -23
  96. package/src/responsive/overflowUtils.js +0 -14
  97. package/src/responsive/use-breakpoints.ts +0 -100
  98. package/src/responsive/useOverflowObserver.ts +0 -606
  99. package/src/responsive/useResizeObserver.ts +0 -154
  100. package/src/responsive/utils.ts +0 -37
  101. package/src/stack/Stack.css +0 -39
  102. package/src/stack/Stack.tsx +0 -160
  103. package/src/stack/StackLayout.tsx +0 -137
  104. package/src/stack/index.ts +0 -3
  105. package/src/stack/stackTypes.ts +0 -19
  106. package/src/tabs/TabPanel.css +0 -12
  107. package/src/tabs/TabPanel.tsx +0 -17
  108. package/src/tabs/index.ts +0 -1
  109. package/src/tools/config-wrapper/ConfigWrapper.jsx +0 -53
  110. package/src/tools/config-wrapper/index.js +0 -1
  111. package/src/tools/devtools-box/layout-configurator.css +0 -112
  112. package/src/tools/devtools-box/layout-configurator.jsx +0 -369
  113. package/src/tools/devtools-tree/layout-tree-viewer.css +0 -15
  114. package/src/tools/devtools-tree/layout-tree-viewer.jsx +0 -36
  115. package/src/tools/index.js +0 -3
  116. package/src/use-persistent-state.ts +0 -115
  117. package/src/utils/componentFromLayout.tsx +0 -30
  118. package/src/utils/index.ts +0 -6
  119. package/src/utils/pathUtils.ts +0 -294
  120. package/src/utils/propUtils.ts +0 -24
  121. package/src/utils/refUtils.ts +0 -16
  122. package/src/utils/styleUtils.ts +0 -14
  123. package/src/utils/typeOf.ts +0 -22
@@ -1,48 +0,0 @@
1
- // should we have some global; defaults ?
2
-
3
- import { BreakPointsProp } from '../flexbox/flexboxTypes';
4
-
5
- export type BreakPointRamp = [string, number, number];
6
-
7
- function breakpointReader(themeName: string, defaultBreakpoints?: BreakPointsProp) {
8
- //TODO ownerDocument
9
- const themeRoot = document.body.querySelector(`.${themeName}`);
10
- const handler = {
11
- get: function (style: CSSStyleDeclaration, stopName: string) {
12
- const val = style.getPropertyValue(
13
- // lets assume we have the following naming convention
14
- `--${themeName}-breakpoint-${stopName}`
15
- );
16
- return val ? parseInt(val) : undefined;
17
- }
18
- };
19
-
20
- return themeRoot ? new Proxy(getComputedStyle(themeRoot), handler) : defaultBreakpoints ?? {};
21
- }
22
-
23
- const byDescendingStopSize = ([, s1]: [string, number], [, s2]: [string, number]) => s2 - s1;
24
-
25
- // These are assumed to be min-width (aka mobile-first) stops, we could take a
26
- // paramneter to support max-width as well ?
27
- // return [stopName, minWidth, maxWidth]
28
- export const breakpointRamp = (breakpoints: BreakPointsProp): BreakPointRamp[] =>
29
- Object.entries(breakpoints)
30
- .sort(byDescendingStopSize)
31
- .map(([name, value], i, all) => [name, value, i < all.length - 1 ? all[i + 1][1] : 9999]);
32
-
33
- let documentBreakpoints: BreakPointRamp[] | null = null;
34
-
35
- const loadBreakpoints = (themeName = 'uitk') => {
36
- // TODO would be nice to read these breakpoint labels from a css variable to
37
- // avoid hard-coding them here ?
38
- const { xs, sm, md, lg, xl } = breakpointReader(themeName) as BreakPointsProp;
39
- return breakpointRamp({ xs, sm, md, lg, xl });
40
- };
41
-
42
- //TODO support multiple themes loaded
43
- export const getBreakPoints = (themeName?: string) => {
44
- if (documentBreakpoints === null) {
45
- documentBreakpoints = loadBreakpoints(themeName);
46
- }
47
- return documentBreakpoints;
48
- };
@@ -1,4 +0,0 @@
1
- export * from "./use-breakpoints";
2
- export * from "./useOverflowObserver";
3
- export * from "./useResizeObserver";
4
- export * from "./utils";
@@ -1,23 +0,0 @@
1
- const LEFT_RIGHT = ['left', 'right'];
2
- const TOP_BOTTOM = ['top', 'bottom'];
3
-
4
- export function measureMinimumNodeSize(node: HTMLElement, dimension: 'width' | 'height' = 'width') {
5
- const { [dimension]: size } = node.getBoundingClientRect();
6
- const { padRight = false, padLeft = false } = node.dataset;
7
- const style = getComputedStyle(node);
8
- const [start, end] = dimension === 'width' ? LEFT_RIGHT : TOP_BOTTOM;
9
- const marginStart = padLeft ? 0 : parseInt(style.getPropertyValue(`margin-${start}`), 10);
10
- const marginEnd = padRight ? 0 : parseInt(style.getPropertyValue(`margin-${end}`), 10);
11
-
12
- let minWidth = size;
13
- const flexShrink = parseInt(style.getPropertyValue('flex-shrink'), 10);
14
- if (flexShrink > 0) {
15
- const flexBasis = parseInt(style.getPropertyValue('flex-basis'), 10);
16
- // TODO what about percentage values ?
17
- if (!isNaN(flexBasis)) {
18
- minWidth = flexBasis;
19
- }
20
- }
21
-
22
- return marginStart + minWidth + marginEnd;
23
- }
@@ -1,14 +0,0 @@
1
- export const getOverflowedItems = (containerRef, height = 64) => {
2
- const elements = Array.from(containerRef.current.childNodes);
3
- const firstOverflowIdx = findFirstOverflow(elements, height);
4
- return [elements.slice(0, firstOverflowIdx), elements.slice(firstOverflowIdx)];
5
- };
6
-
7
- export const findFirstOverflow = (elements, height) => {
8
- for (let i = 0; i < elements.length; i++) {
9
- if (elements[i].offsetTop >= height) {
10
- return i;
11
- }
12
- }
13
- return -1;
14
- };
@@ -1,100 +0,0 @@
1
- import { RefObject, useCallback, useEffect, useRef, useState } from 'react';
2
- import { useResizeObserver } from './useResizeObserver';
3
- import {
4
- BreakPointRamp,
5
- breakpointRamp,
6
- getBreakPoints as getDocumentBreakpoints
7
- } from './breakpoints';
8
- import { BreakPoint, BreakPointsProp } from '../flexbox/flexboxTypes';
9
- import { ExecFileOptionsWithStringEncoding } from 'child_process';
10
-
11
- const EMPTY_ARRAY: BreakPoint[] = [];
12
-
13
- export interface BreakpointsHookProps {
14
- breakPoints?: BreakPointsProp;
15
- smallerThan?: string;
16
- }
17
-
18
- // TODO how do we cater for smallerThan/greaterThan breakpoints
19
- export const useBreakpoints = (
20
- { breakPoints: breakPointsProp, smallerThan }: BreakpointsHookProps,
21
- ref: RefObject<any>
22
- ) => {
23
- const [breakpointMatch, setBreakpointmatch] = useState(smallerThan ? false : 'lg');
24
- const bodyRef = useRef(document.body);
25
- const breakPointsRef = useRef(
26
- breakPointsProp ? breakpointRamp(breakPointsProp) : getDocumentBreakpoints()
27
- );
28
-
29
- // TODO how do we identify the default
30
- const sizeRef = useRef('lg');
31
-
32
- const stopFromMinWidth = useCallback(
33
- (w) => {
34
- if (breakPointsRef.current) {
35
- for (let [name, size] of breakPointsRef.current) {
36
- if (w >= size) {
37
- return name;
38
- }
39
- }
40
- }
41
- },
42
- [breakPointsRef]
43
- );
44
-
45
- const matchSizeAgainstBreakpoints = useCallback(
46
- (width) => {
47
- if (smallerThan) {
48
- const breakPointRamp = breakPointsRef.current.find(
49
- ([name]: BreakPointRamp) => name === smallerThan
50
- );
51
- if (breakPointRamp) {
52
- const [, , maxValue] = breakPointRamp;
53
- return width < maxValue;
54
- }
55
- } else {
56
- return stopFromMinWidth(width);
57
- }
58
- // is this right ?
59
- return width;
60
- },
61
- [smallerThan, stopFromMinWidth]
62
- );
63
-
64
- // TODO need to make the dimension a config
65
- useResizeObserver(
66
- ref || bodyRef,
67
- breakPointsRef.current ? ['width'] : EMPTY_ARRAY,
68
- ({ width: measuredWidth }: { width: number }) => {
69
- const result = matchSizeAgainstBreakpoints(measuredWidth);
70
- if (result !== sizeRef.current) {
71
- sizeRef.current = result;
72
- setBreakpointmatch(result);
73
- }
74
- },
75
- true
76
- );
77
-
78
- useEffect(() => {
79
- const target = ref || bodyRef;
80
- if (target.current) {
81
- const prevSize = sizeRef.current;
82
- if (breakPointsRef.current) {
83
- // We're measuring here when the resizeObserver has also measured
84
- // There isn't a convenient way to get the Resizeobserver to
85
- // notify initial size - that's not really its job, unless we
86
- // set a flag ?
87
- const { clientWidth } = target.current;
88
- const result = matchSizeAgainstBreakpoints(clientWidth);
89
- sizeRef.current = result;
90
- // If initial size of ref does not match the default, notify client after render
91
- if (result !== prevSize) {
92
- setBreakpointmatch(result);
93
- }
94
- }
95
- }
96
- }, [setBreakpointmatch, matchSizeAgainstBreakpoints, ref]);
97
-
98
- // No, just ass the class directly to the ref, no need to render
99
- return breakpointMatch;
100
- };