@sqlrooms/layout 0.0.0
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.
- package/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-dev.log +7 -0
- package/.turbo/turbo-lint.log +4 -0
- package/CHANGELOG.md +8 -0
- package/LICENSE.md +9 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/mosaic/MosaicLayout.d.ts +7 -0
- package/dist/mosaic/MosaicLayout.d.ts.map +1 -0
- package/dist/mosaic/MosaicLayout.js +19 -0
- package/dist/mosaic/MosaicTile.d.ts +11 -0
- package/dist/mosaic/MosaicTile.d.ts.map +1 -0
- package/dist/mosaic/MosaicTile.js +21 -0
- package/dist/mosaic/PanelLayout.d.ts +11 -0
- package/dist/mosaic/PanelLayout.d.ts.map +1 -0
- package/dist/mosaic/PanelLayout.js +26 -0
- package/dist/mosaic/PanelTile.d.ts +9 -0
- package/dist/mosaic/PanelTile.d.ts.map +1 -0
- package/dist/mosaic/PanelTile.js +8 -0
- package/dist/mosaic/ResizableLayout.js +20 -0
- package/dist/mosaic/ResizableTile.js +6 -0
- package/dist/mosaic/StyledMosaic.d.ts +3 -0
- package/dist/mosaic/StyledMosaic.d.ts.map +1 -0
- package/dist/mosaic/StyledMosaic.js +154 -0
- package/dist/mosaic/index.d.ts +3 -0
- package/dist/mosaic/index.d.ts.map +1 -0
- package/dist/mosaic/index.js +2 -0
- package/dist/mosaic/mosaic-utils.d.ts +17 -0
- package/dist/mosaic/mosaic-utils.d.ts.map +1 -0
- package/dist/mosaic/mosaic-utils.js +81 -0
- package/dist/mosaic/panel-utils.d.ts +20 -0
- package/dist/mosaic/panel-utils.d.ts.map +1 -0
- package/dist/mosaic/panel-utils.js +102 -0
- package/dist/mosaic/resizable-utils.js +53 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/eslint.config.js +4 -0
- package/package.json +26 -0
- package/src/index.ts +1 -0
- package/src/mosaic/MosaicLayout.tsx +46 -0
- package/src/mosaic/MosaicTile.tsx +54 -0
- package/src/mosaic/index.ts +2 -0
- package/src/mosaic/mosaic-utils.ts +109 -0
- package/tsconfig.json +8 -0
package/CHANGELOG.md
ADDED
package/LICENSE.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright 2025 Ilya Boyandin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './mosaic';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MosaicProps } from 'react-mosaic-component';
|
|
3
|
+
import 'react-mosaic-component/react-mosaic-component.css';
|
|
4
|
+
type Props = MosaicProps<string>;
|
|
5
|
+
declare const MosaicLayout: FC<Props>;
|
|
6
|
+
export default MosaicLayout;
|
|
7
|
+
//# sourceMappingURL=MosaicLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicLayout.d.ts","sourceRoot":"","sources":["../../src/mosaic/MosaicLayout.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAqB,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,mDAAmD,CAAC;AAG3D,KAAK,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEjC,QAAA,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CAoC3B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
3
|
+
import { Mosaic } from 'react-mosaic-component';
|
|
4
|
+
import 'react-mosaic-component/react-mosaic-component.css';
|
|
5
|
+
import MosaicTile from './MosaicTile';
|
|
6
|
+
const MosaicLayout = (props) => {
|
|
7
|
+
const { onChange, onRelease, renderTile } = props;
|
|
8
|
+
const [isDragging, setDragging] = React.useState(false);
|
|
9
|
+
const handleLayoutChange = useCallback((nodes) => {
|
|
10
|
+
setDragging(true);
|
|
11
|
+
onChange?.(nodes);
|
|
12
|
+
}, [onChange]);
|
|
13
|
+
const handleLayoutRelease = useCallback((newNode) => {
|
|
14
|
+
setDragging(false);
|
|
15
|
+
onRelease?.(newNode);
|
|
16
|
+
}, [onRelease]);
|
|
17
|
+
return (_jsx("div", { className: "relative w-full h-full", children: _jsx(Mosaic, { ...props, className: "" /* to avoid using blueprint theme */, onChange: handleLayoutChange, onRelease: handleLayoutRelease, renderTile: (id, path) => (_jsx(MosaicTile, { id: id, path: path, isDragging: isDragging, content: renderTile(id, path) })) }) }));
|
|
18
|
+
};
|
|
19
|
+
export default MosaicLayout;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MosaicBranch } from 'react-mosaic-component';
|
|
3
|
+
type Props = {
|
|
4
|
+
id: string;
|
|
5
|
+
path: MosaicBranch[];
|
|
6
|
+
content: React.ReactNode;
|
|
7
|
+
isDragging: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const MosaicTile: FC<Props>;
|
|
10
|
+
export default MosaicTile;
|
|
11
|
+
//# sourceMappingURL=MosaicTile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MosaicTile.d.ts","sourceRoot":"","sources":["../../src/mosaic/MosaicTile.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AACzB,OAAO,EAAC,YAAY,EAAe,MAAM,wBAAwB,CAAC;AAIlE,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,KAAK,CAqCzB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { MAIN_VIEW } from '@sqlrooms/project-config';
|
|
3
|
+
import { cn } from '@sqlrooms/ui';
|
|
4
|
+
import { MosaicWindow } from 'react-mosaic-component';
|
|
5
|
+
const ENABLE_LAYOUT_REARRANGE = false;
|
|
6
|
+
const MosaicTile = (props) => {
|
|
7
|
+
const { id, content, path, isDragging } = props;
|
|
8
|
+
const body = (_jsx("div", { className: cn('flex-1 h-full p-2 flex-col bg-gray-700 rounded-md overflow-hidden', isDragging ? 'pointer-events-none' : ''), children: content }));
|
|
9
|
+
if (!ENABLE_LAYOUT_REARRANGE || id === MAIN_VIEW) {
|
|
10
|
+
return body;
|
|
11
|
+
}
|
|
12
|
+
return (_jsx(MosaicWindow, { title: id,
|
|
13
|
+
// additionalControls={
|
|
14
|
+
// }
|
|
15
|
+
// createNode={() => genRandomStr(6)}
|
|
16
|
+
path: path,
|
|
17
|
+
// onDragStart={() => console.log('MosaicWindow.onDragStart')}
|
|
18
|
+
// onDragEnd={(type) => console.log('MosaicWindow.onDragEnd', type)}
|
|
19
|
+
renderToolbar: () => id === MAIN_VIEW ? (_jsx("div", {})) : (_jsx("div", { style: { display: 'flex', width: '100%', height: '100%' } })), children: body }));
|
|
20
|
+
};
|
|
21
|
+
export default MosaicTile;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React, { FC } from 'react';
|
|
2
|
+
import { PanelNode } from '@sqlrooms/project-config';
|
|
3
|
+
type Props = {
|
|
4
|
+
root: PanelNode | null;
|
|
5
|
+
onChange?: (root: PanelNode | null) => void;
|
|
6
|
+
onRelease?: (root: PanelNode | null) => void;
|
|
7
|
+
renderTile: (id: string) => React.ReactNode;
|
|
8
|
+
};
|
|
9
|
+
declare const PanelLayout: FC<Props>;
|
|
10
|
+
export default PanelLayout;
|
|
11
|
+
//# sourceMappingURL=PanelLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelLayout.d.ts","sourceRoot":"","sources":["../../src/mosaic/PanelLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAM7C,OAAO,EAAiB,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAInE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7C,CAAC;AAEF,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,KAAK,CAoD1B,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
3
|
+
import { Panel, PanelGroup as ResizablePanel, PanelResizeHandle, } from 'react-resizable-panels';
|
|
4
|
+
import PanelTile from './PanelTile';
|
|
5
|
+
const PanelLayout = (props) => {
|
|
6
|
+
const { root, onChange, onRelease, renderTile } = props;
|
|
7
|
+
const [isDragging, setDragging] = React.useState(false);
|
|
8
|
+
const handleLayoutChange = useCallback((sizes, groupId) => {
|
|
9
|
+
if (!root)
|
|
10
|
+
return;
|
|
11
|
+
// TODO: Update sizes in the layout tree
|
|
12
|
+
onChange?.(root);
|
|
13
|
+
}, [onChange, root]);
|
|
14
|
+
const renderNode = useCallback((node) => {
|
|
15
|
+
if (node.type === 'leaf') {
|
|
16
|
+
return (_jsx(Panel, { defaultSize: node.size, children: _jsx(PanelTile, { id: node.id, isDragging: isDragging, content: renderTile(node.id) }) }, node.id));
|
|
17
|
+
}
|
|
18
|
+
return (_jsx(ResizablePanel, { direction: node.direction === 'horizontal' ? 'horizontal' : 'vertical', onResize: (sizes) => handleLayoutChange(sizes, node.id), children: node.children.map((child, i) => (_jsxs(React.Fragment, { children: [i > 0 && _jsx(PanelResizeHandle, {}), renderNode(child)] }, i))) }, node.children
|
|
19
|
+
.map((n) => (n.type === 'leaf' ? n.id : ''))
|
|
20
|
+
.join('-')));
|
|
21
|
+
}, [handleLayoutChange, isDragging, renderTile]);
|
|
22
|
+
if (!root)
|
|
23
|
+
return null;
|
|
24
|
+
return _jsx("div", { className: "relative w-full h-full", children: renderNode(root) });
|
|
25
|
+
};
|
|
26
|
+
export default PanelLayout;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelTile.d.ts","sourceRoot":"","sources":["../../src/mosaic/PanelTile.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAIzB,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,KAAK,CAaxB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '@sqlrooms/ui';
|
|
3
|
+
const ENABLE_LAYOUT_REARRANGE = false;
|
|
4
|
+
const PanelTile = (props) => {
|
|
5
|
+
const { id, content, isDragging } = props;
|
|
6
|
+
return (_jsx("div", { className: cn('flex-1 h-full p-2 flex-col bg-gray-700 rounded-md overflow-hidden', isDragging ? 'pointer-events-none' : ''), children: content }));
|
|
7
|
+
};
|
|
8
|
+
export default PanelTile;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels';
|
|
4
|
+
const RenderPanelTree = ({ node, path, renderTile, onLayout, }) => {
|
|
5
|
+
if (typeof node === 'string') {
|
|
6
|
+
return (_jsx(PanelGroup, { direction: "horizontal", children: _jsx(Panel, { id: node, minSize: 10, defaultSize: 100, children: renderTile(node, path) }) }));
|
|
7
|
+
}
|
|
8
|
+
const { direction, first, second, splitPercentage = 50 } = node;
|
|
9
|
+
return (_jsxs(PanelGroup, { direction: direction === 'row' ? 'horizontal' : 'vertical', onLayout: onLayout, children: [_jsx(Panel, { minSize: 10, defaultSize: splitPercentage, children: _jsx(RenderPanelTree, { node: first, path: [...path, 'first'], renderTile: renderTile }) }), _jsx(PanelResizeHandle, { className: "bg-blue-800 w-2 h-2" }), _jsx(Panel, { minSize: 10, defaultSize: 100 - splitPercentage, children: _jsx(RenderPanelTree, { node: second, path: [...path, 'second'], renderTile: renderTile }) })] }));
|
|
10
|
+
};
|
|
11
|
+
const ResizableLayout = ({ value, onChange, renderTile, className, }) => {
|
|
12
|
+
const handleLayout = useCallback((sizes) => {
|
|
13
|
+
// TODO: Implement layout change handling that preserves tree structure
|
|
14
|
+
console.log('Layout changed:', sizes);
|
|
15
|
+
}, [onChange]);
|
|
16
|
+
if (!value)
|
|
17
|
+
return null;
|
|
18
|
+
return (_jsx("div", { className: className, style: { width: '100%', height: '100%' }, children: _jsx(RenderPanelTree, { node: value, path: [], renderTile: renderTile, onLayout: handleLayout }) }));
|
|
19
|
+
};
|
|
20
|
+
export default ResizableLayout;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Flex } from '@chakra-ui/react';
|
|
3
|
+
const ResizableTile = ({ id, content }) => {
|
|
4
|
+
return (_jsx(Flex, { grow: "1", height: "100%", p: 2, direction: "column", borderRadius: "sm", overflow: "hidden", bg: "gray.700", children: content }));
|
|
5
|
+
};
|
|
6
|
+
export default ResizableTile;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StyledMosaic.d.ts","sourceRoot":"","sources":["../../src/mosaic/StyledMosaic.tsx"],"names":[],"mappings":"AAGA,QAAA,MAAM,YAAY,EAAE,GAA8B,CAAC;AAuLnD,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import { Mosaic } from 'react-mosaic-component';
|
|
3
|
+
const StyledMosaic = styled((Mosaic)) ``;
|
|
4
|
+
// const StyledMosaic = styled(Mosaic<string>)`
|
|
5
|
+
// background: ${(props) => props.theme.colors.gray[800]};
|
|
6
|
+
// .mosaic-zero-state {
|
|
7
|
+
// background: ${(props) => props.theme.colors.gray[300]};
|
|
8
|
+
// box-shadow: 0 0 5px ${(props) => props.theme.colors.gray[800]};
|
|
9
|
+
// .default-zero-state-icon {
|
|
10
|
+
// font-size: 120px;
|
|
11
|
+
// }
|
|
12
|
+
// }
|
|
13
|
+
// .mosaic-split:hover {
|
|
14
|
+
// background: none;
|
|
15
|
+
// .mosaic-split-line {
|
|
16
|
+
// box-shadow: 0 0 0 1px ${(props) => props.theme.colors.blue};
|
|
17
|
+
// }
|
|
18
|
+
// }
|
|
19
|
+
// &.mosaic-drop-target,
|
|
20
|
+
// .mosaic-drop-target {
|
|
21
|
+
// .drop-target-container .drop-target {
|
|
22
|
+
// background: fade(@blue5, 20%);
|
|
23
|
+
// border: 2px solid ${(props) => props.theme.colors.blue};
|
|
24
|
+
// transition: opacity 100ms;
|
|
25
|
+
// }
|
|
26
|
+
// }
|
|
27
|
+
// .mosaic-window,
|
|
28
|
+
// .mosaic-preview {
|
|
29
|
+
// box-shadow: 0 0 5px ${(props) => props.theme.colors.gray[800]};
|
|
30
|
+
// .mosaic-window-toolbar {
|
|
31
|
+
// background: ${(props) => props.theme.colors.gray[700]};
|
|
32
|
+
// &.draggable:hover {
|
|
33
|
+
// .mosaic-window-title {
|
|
34
|
+
// color: #000;
|
|
35
|
+
// }
|
|
36
|
+
// background: ${(props) => props.theme.colors.gray[800]};
|
|
37
|
+
// }
|
|
38
|
+
// }
|
|
39
|
+
// .mosaic-window-title {
|
|
40
|
+
// font-weight: 600;
|
|
41
|
+
// color: @dark-gray5;
|
|
42
|
+
// }
|
|
43
|
+
// .mosaic-window-controls {
|
|
44
|
+
// .separator {
|
|
45
|
+
// border-left: 1px solid @light-gray2;
|
|
46
|
+
// }
|
|
47
|
+
// .@{ns}-button {
|
|
48
|
+
// &,
|
|
49
|
+
// &:before {
|
|
50
|
+
// color: @gray2;
|
|
51
|
+
// }
|
|
52
|
+
// }
|
|
53
|
+
// }
|
|
54
|
+
// .default-preview-icon {
|
|
55
|
+
// font-size: 72px;
|
|
56
|
+
// }
|
|
57
|
+
// .mosaic-window-body {
|
|
58
|
+
// border-top-width: 0;
|
|
59
|
+
// background: @pt-app-background-color;
|
|
60
|
+
// border-bottom-right-radius: @pt-border-radius;
|
|
61
|
+
// border-bottom-left-radius: @pt-border-radius;
|
|
62
|
+
// }
|
|
63
|
+
// .mosaic-window-additional-actions-bar {
|
|
64
|
+
// transition: height 250ms;
|
|
65
|
+
// box-shadow: 0 1px 1px @pt-divider-black;
|
|
66
|
+
// .@{ns}-button {
|
|
67
|
+
// &,
|
|
68
|
+
// &:before {
|
|
69
|
+
// color: @gray2;
|
|
70
|
+
// }
|
|
71
|
+
// }
|
|
72
|
+
// }
|
|
73
|
+
// &.additional-controls-open {
|
|
74
|
+
// .mosaic-window-toolbar {
|
|
75
|
+
// box-shadow: 0 1px 0 @pt-elevation-shadow-0;
|
|
76
|
+
// }
|
|
77
|
+
// }
|
|
78
|
+
// .mosaic-preview {
|
|
79
|
+
// border: 1px solid @gray3;
|
|
80
|
+
// h4 {
|
|
81
|
+
// color: @dark-gray5;
|
|
82
|
+
// }
|
|
83
|
+
// }
|
|
84
|
+
// }
|
|
85
|
+
// &.@{ns}-dark {
|
|
86
|
+
// background: @dark-gray2;
|
|
87
|
+
// .mosaic-zero-state {
|
|
88
|
+
// background: @dark-gray4;
|
|
89
|
+
// box-shadow: @pt-dark-elevation-shadow-0;
|
|
90
|
+
// }
|
|
91
|
+
// .mosaic-split:hover .mosaic-split-line {
|
|
92
|
+
// box-shadow: 0 0 0 1px @blue3;
|
|
93
|
+
// }
|
|
94
|
+
// &.mosaic-drop-target,
|
|
95
|
+
// .mosaic-drop-target {
|
|
96
|
+
// .drop-target-container .drop-target {
|
|
97
|
+
// background: fade(@blue2, 20%);
|
|
98
|
+
// border-color: @blue3;
|
|
99
|
+
// }
|
|
100
|
+
// }
|
|
101
|
+
// .mosaic-window-toolbar,
|
|
102
|
+
// .mosaic-window-additional-actions-bar {
|
|
103
|
+
// background: @dark-gray4;
|
|
104
|
+
// box-shadow: 0 1px 1px @pt-dark-divider-black;
|
|
105
|
+
// }
|
|
106
|
+
// .mosaic-window,
|
|
107
|
+
// .mosaic-preview {
|
|
108
|
+
// box-shadow: @pt-dark-elevation-shadow-0;
|
|
109
|
+
// .mosaic-window-toolbar.draggable:hover {
|
|
110
|
+
// .mosaic-window-title {
|
|
111
|
+
// color: #fff;
|
|
112
|
+
// }
|
|
113
|
+
// background: linear-gradient(to bottom, @dark-gray5, @dark-gray4);
|
|
114
|
+
// }
|
|
115
|
+
// .mosaic-window-title {
|
|
116
|
+
// color: @light-gray2;
|
|
117
|
+
// }
|
|
118
|
+
// .mosaic-window-controls {
|
|
119
|
+
// .separator {
|
|
120
|
+
// border-color: @gray1;
|
|
121
|
+
// }
|
|
122
|
+
// .@{ns}-button {
|
|
123
|
+
// &,
|
|
124
|
+
// &:before {
|
|
125
|
+
// color: @gray4;
|
|
126
|
+
// }
|
|
127
|
+
// }
|
|
128
|
+
// }
|
|
129
|
+
// .mosaic-window-body {
|
|
130
|
+
// background: ${(props) => props.theme.colors.gray[800]};
|
|
131
|
+
// }
|
|
132
|
+
// .mosaic-window-additional-actions-bar {
|
|
133
|
+
// .@{ns}-button {
|
|
134
|
+
// &,
|
|
135
|
+
// &:before {
|
|
136
|
+
// color: @gray5;
|
|
137
|
+
// }
|
|
138
|
+
// }
|
|
139
|
+
// }
|
|
140
|
+
// &.additional-controls-open {
|
|
141
|
+
// .mosaic-window-toolbar {
|
|
142
|
+
// box-shadow: @pt-dark-elevation-shadow-0;
|
|
143
|
+
// }
|
|
144
|
+
// }
|
|
145
|
+
// .mosaic-preview {
|
|
146
|
+
// border-color: @gray1;
|
|
147
|
+
// h4 {
|
|
148
|
+
// color: @light-gray4;
|
|
149
|
+
// }
|
|
150
|
+
// }
|
|
151
|
+
// }
|
|
152
|
+
// }
|
|
153
|
+
// `;
|
|
154
|
+
export default StyledMosaic;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mosaic/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MosaicLayoutNode } from '@sqlrooms/project-config';
|
|
2
|
+
import { MosaicDirection, MosaicNode, MosaicPath } from 'react-mosaic-component';
|
|
3
|
+
export declare function makeMosaicStack(direction: MosaicDirection, children: {
|
|
4
|
+
node: string | MosaicNode<string> | null;
|
|
5
|
+
weight: number;
|
|
6
|
+
}[]): MosaicNode<string> | null;
|
|
7
|
+
export declare function visitMosaicLeafNodes<T = void>(root: MosaicLayoutNode | undefined | null, visitor: (node: string, path: MosaicPath) => T, // return a truthy value to stop visiting
|
|
8
|
+
path?: MosaicPath): T | undefined;
|
|
9
|
+
export declare function getVisibleMosaicLayoutPanels(root?: string | import("@sqlrooms/project-config").MosaicLayoutParent | null): string[];
|
|
10
|
+
export declare function findMosaicNodePathByKey(root: MosaicLayoutNode | undefined | null, key: string): MosaicPath | undefined;
|
|
11
|
+
export declare function removeMosaicNodeByKey(root: MosaicLayoutNode | undefined | null, key: string): {
|
|
12
|
+
success: true;
|
|
13
|
+
nextTree: MosaicLayoutNode;
|
|
14
|
+
} | {
|
|
15
|
+
success: false;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=mosaic-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mosaic-utils.d.ts","sourceRoot":"","sources":["../../src/mosaic/mosaic-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,eAAe,EACf,UAAU,EACV,UAAU,EAEX,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE;IAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAAE,GACrE,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CA8B3B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,IAAI,EAC3C,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,EACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,EAAE,yCAAyC;AACzF,IAAI,GAAE,UAAe,GACpB,CAAC,GAAG,SAAS,CAaf;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,wEAA8B,GACjC,MAAM,EAAE,CAQV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,EACzC,GAAG,EAAE,MAAM,GACV,UAAU,GAAG,SAAS,CAMxB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,EACzC,GAAG,EAAE,MAAM,GACV;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAC,GAAG;IAAC,OAAO,EAAE,KAAK,CAAA;CAAC,CAehE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { DEFAULT_MOSAIC_LAYOUT, isMosaicLayoutParent, } from '@sqlrooms/project-config';
|
|
2
|
+
import { createRemoveUpdate, updateTree, } from 'react-mosaic-component';
|
|
3
|
+
export function makeMosaicStack(direction, children) {
|
|
4
|
+
const childrenWithoutEmpty = children.filter(({ node }) => node !== null);
|
|
5
|
+
if (!childrenWithoutEmpty?.length) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
if (childrenWithoutEmpty.length === 1) {
|
|
9
|
+
return childrenWithoutEmpty[0]?.node ?? null;
|
|
10
|
+
}
|
|
11
|
+
let stack = childrenWithoutEmpty[0]?.node;
|
|
12
|
+
if (!stack)
|
|
13
|
+
return null;
|
|
14
|
+
let accumulatedWeight = childrenWithoutEmpty[0]?.weight ?? 0;
|
|
15
|
+
for (let i = 1; i < childrenWithoutEmpty.length; i++) {
|
|
16
|
+
const child = childrenWithoutEmpty[i];
|
|
17
|
+
if (!child)
|
|
18
|
+
continue;
|
|
19
|
+
const { node, weight } = child;
|
|
20
|
+
const splitPercentage = (accumulatedWeight * 100) / (accumulatedWeight + weight);
|
|
21
|
+
accumulatedWeight += weight;
|
|
22
|
+
stack = {
|
|
23
|
+
direction,
|
|
24
|
+
first: stack,
|
|
25
|
+
second: node,
|
|
26
|
+
splitPercentage: Math.round(splitPercentage),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return stack;
|
|
30
|
+
}
|
|
31
|
+
export function visitMosaicLeafNodes(root, visitor, // return a truthy value to stop visiting
|
|
32
|
+
path = []) {
|
|
33
|
+
if (!root)
|
|
34
|
+
return undefined;
|
|
35
|
+
if (isMosaicLayoutParent(root)) {
|
|
36
|
+
if (root.direction) {
|
|
37
|
+
const rv = visitMosaicLeafNodes(root.first, visitor, [...path, 'first']) ||
|
|
38
|
+
visitMosaicLeafNodes(root.second, visitor, [...path, 'second']);
|
|
39
|
+
if (rv)
|
|
40
|
+
return rv;
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return visitor(root, path);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function getVisibleMosaicLayoutPanels(root = DEFAULT_MOSAIC_LAYOUT.nodes) {
|
|
49
|
+
const visiblePanels = [];
|
|
50
|
+
if (root) {
|
|
51
|
+
visitMosaicLeafNodes(root, (node) => {
|
|
52
|
+
visiblePanels.push(node);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return visiblePanels;
|
|
56
|
+
}
|
|
57
|
+
export function findMosaicNodePathByKey(root, key) {
|
|
58
|
+
return visitMosaicLeafNodes(root, (node, path) => {
|
|
59
|
+
if (node === key) {
|
|
60
|
+
return path;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function removeMosaicNodeByKey(root, key) {
|
|
65
|
+
const path = findMosaicNodePathByKey(root, key);
|
|
66
|
+
if (!root || !path)
|
|
67
|
+
return { success: false };
|
|
68
|
+
try {
|
|
69
|
+
return {
|
|
70
|
+
success: true,
|
|
71
|
+
nextTree: updateTree(root, [
|
|
72
|
+
createRemoveUpdate(root, path),
|
|
73
|
+
]),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
console.error(err);
|
|
78
|
+
// might happen when removing main view
|
|
79
|
+
return { success: false };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PanelDirection, PanelGroup, PanelNode } from '@sqlrooms/project-config';
|
|
2
|
+
export declare function isPanelGroup(node: PanelNode | null | undefined): node is PanelGroup;
|
|
3
|
+
export declare function findPanelNodeById(root: PanelNode | null | undefined, id: string): {
|
|
4
|
+
node: PanelNode;
|
|
5
|
+
parent: PanelGroup | null;
|
|
6
|
+
index: number;
|
|
7
|
+
} | undefined;
|
|
8
|
+
export declare function removePanelNode(root: PanelNode | null | undefined, id: string): {
|
|
9
|
+
success: true;
|
|
10
|
+
nextRoot: PanelNode;
|
|
11
|
+
} | {
|
|
12
|
+
success: false;
|
|
13
|
+
};
|
|
14
|
+
export declare function addPanelNode(root: PanelNode | null | undefined, newNode: PanelNode, placement: {
|
|
15
|
+
direction: PanelDirection;
|
|
16
|
+
relativeTo: string;
|
|
17
|
+
position: 'before' | 'after';
|
|
18
|
+
}): PanelNode;
|
|
19
|
+
export declare function getVisiblePanels(root: PanelNode | null | undefined): string[];
|
|
20
|
+
//# sourceMappingURL=panel-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-utils.d.ts","sourceRoot":"","sources":["../../src/mosaic/panel-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,UAAU,EAEV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GACjC,IAAI,IAAI,UAAU,CAEpB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EAClC,EAAE,EAAE,MAAM,GACT;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAkBzE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EAClC,EAAE,EAAE,MAAM,GACT;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,OAAO,EAAE,KAAK,CAAA;CAAC,CA4BzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EAClC,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE;IACT,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B,GACA,SAAS,CAqDX;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAY7E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export function isPanelGroup(node) {
|
|
2
|
+
return node?.type === 'group';
|
|
3
|
+
}
|
|
4
|
+
export function findPanelNodeById(root, id) {
|
|
5
|
+
if (!root)
|
|
6
|
+
return undefined;
|
|
7
|
+
if (root.type === 'leaf' && root.id === id) {
|
|
8
|
+
return { node: root, parent: null, index: -1 };
|
|
9
|
+
}
|
|
10
|
+
if (root.type === 'group') {
|
|
11
|
+
for (let i = 0; i < root.children.length; i++) {
|
|
12
|
+
const child = root.children[i];
|
|
13
|
+
if (child.type === 'leaf' && child.id === id) {
|
|
14
|
+
return { node: child, parent: root, index: i };
|
|
15
|
+
}
|
|
16
|
+
const found = findPanelNodeById(child, id);
|
|
17
|
+
if (found)
|
|
18
|
+
return found;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
export function removePanelNode(root, id) {
|
|
24
|
+
const found = findPanelNodeById(root, id);
|
|
25
|
+
if (!root || !found)
|
|
26
|
+
return { success: false };
|
|
27
|
+
const { parent } = found;
|
|
28
|
+
if (!parent)
|
|
29
|
+
return { success: false };
|
|
30
|
+
const { children } = parent;
|
|
31
|
+
const newChildren = children.filter((child) => child.type === 'leaf' ? child.id !== id : true);
|
|
32
|
+
if (newChildren.length === 0) {
|
|
33
|
+
return { success: false };
|
|
34
|
+
}
|
|
35
|
+
if (newChildren.length === 1) {
|
|
36
|
+
return { success: true, nextRoot: newChildren[0] };
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
nextRoot: {
|
|
41
|
+
...parent,
|
|
42
|
+
children: newChildren,
|
|
43
|
+
sizes: parent.sizes?.slice(0, newChildren.length),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function addPanelNode(root, newNode, placement) {
|
|
48
|
+
if (!root)
|
|
49
|
+
return newNode;
|
|
50
|
+
const found = findPanelNodeById(root, placement.relativeTo);
|
|
51
|
+
if (!found)
|
|
52
|
+
return root;
|
|
53
|
+
const { node, parent } = found;
|
|
54
|
+
if (!parent) {
|
|
55
|
+
return {
|
|
56
|
+
type: 'group',
|
|
57
|
+
direction: placement.direction,
|
|
58
|
+
children: placement.position === 'before' ? [newNode, node] : [node, newNode],
|
|
59
|
+
sizes: [50, 50],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const index = parent.children.indexOf(node);
|
|
63
|
+
const newChildren = [...parent.children];
|
|
64
|
+
const newSizes = [
|
|
65
|
+
...(parent.sizes ||
|
|
66
|
+
parent.children.map(() => 100 / parent.children.length)),
|
|
67
|
+
];
|
|
68
|
+
if (parent.direction === placement.direction) {
|
|
69
|
+
newChildren.splice(placement.position === 'before' ? index : index + 1, 0, newNode);
|
|
70
|
+
const size = newSizes[index] / 2;
|
|
71
|
+
newSizes.splice(placement.position === 'before' ? index : index + 1, 0, size);
|
|
72
|
+
newSizes[placement.position === 'before' ? index + 1 : index] = size;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const wrapper = {
|
|
76
|
+
type: 'group',
|
|
77
|
+
direction: placement.direction,
|
|
78
|
+
children: placement.position === 'before' ? [newNode, node] : [node, newNode],
|
|
79
|
+
sizes: [50, 50],
|
|
80
|
+
};
|
|
81
|
+
newChildren[index] = wrapper;
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
...parent,
|
|
85
|
+
children: newChildren,
|
|
86
|
+
sizes: newSizes,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function getVisiblePanels(root) {
|
|
90
|
+
const visiblePanels = [];
|
|
91
|
+
if (!root)
|
|
92
|
+
return visiblePanels;
|
|
93
|
+
if (root.type === 'leaf') {
|
|
94
|
+
visiblePanels.push(root.id);
|
|
95
|
+
}
|
|
96
|
+
else if (root.type === 'group') {
|
|
97
|
+
root.children.forEach((child) => {
|
|
98
|
+
visiblePanels.push(...getVisiblePanels(child));
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return visiblePanels;
|
|
102
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Internal helper functions
|
|
2
|
+
export function mosaicToResizablePanels(node) {
|
|
3
|
+
if (!node)
|
|
4
|
+
return [];
|
|
5
|
+
if (typeof node === 'string')
|
|
6
|
+
return [{ id: node }];
|
|
7
|
+
const { direction, first, second, splitPercentage = 50 } = node;
|
|
8
|
+
const firstPanels = mosaicToResizablePanels(first);
|
|
9
|
+
const secondPanels = mosaicToResizablePanels(second);
|
|
10
|
+
if (firstPanels.length === 0)
|
|
11
|
+
return secondPanels;
|
|
12
|
+
if (secondPanels.length === 0)
|
|
13
|
+
return firstPanels;
|
|
14
|
+
// Set the split percentage for the first panel
|
|
15
|
+
firstPanels[firstPanels.length - 1].defaultSize = splitPercentage;
|
|
16
|
+
// Set the split percentage for the second panel
|
|
17
|
+
secondPanels[0].defaultSize = 100 - splitPercentage;
|
|
18
|
+
return [...firstPanels, ...secondPanels];
|
|
19
|
+
}
|
|
20
|
+
export function resizablePanelsToMosaic(panels, originalNode) {
|
|
21
|
+
if (panels.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
if (panels.length === 1)
|
|
24
|
+
return panels[0].id;
|
|
25
|
+
// Preserve the original direction from the mosaic node
|
|
26
|
+
const direction = (typeof originalNode === 'object' ? originalNode?.direction : 'row') ??
|
|
27
|
+
'row';
|
|
28
|
+
// Build the mosaic tree from right to left
|
|
29
|
+
return panels.slice(1).reduce((acc, panel, index) => {
|
|
30
|
+
return {
|
|
31
|
+
direction,
|
|
32
|
+
first: typeof acc === 'string' ? acc : acc,
|
|
33
|
+
second: panel.id,
|
|
34
|
+
splitPercentage: panels[index].size,
|
|
35
|
+
};
|
|
36
|
+
}, panels[0].id);
|
|
37
|
+
}
|
|
38
|
+
// We'll need to implement these if we want to handle layout changes
|
|
39
|
+
export function updateSplitPercentage(node, path, splitPercentage) {
|
|
40
|
+
if (typeof node === 'string' || path.length === 0)
|
|
41
|
+
return node;
|
|
42
|
+
const [current, ...rest] = path;
|
|
43
|
+
if (rest.length === 0) {
|
|
44
|
+
return {
|
|
45
|
+
...node,
|
|
46
|
+
splitPercentage,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
...node,
|
|
51
|
+
[current]: updateSplitPercentage(current === 'first' ? node.first : node.second, rest, splitPercentage),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.5.4/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@18.3.18/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+prop-types@15.7.14/node_modules/@types/prop-types/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.18/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@18.3.18/node_modules/@types/react/jsx-runtime.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/typealiases.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/util.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/zoderror.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/errors.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/parseutil.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/enumutil.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/errorutil.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/helpers/partialutil.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/standard-schema.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/types.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/external.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/index.d.ts","../../../node_modules/.pnpm/zod@3.24.1/node_modules/zod/index.d.ts","../../project-config/src/layoutconfig.ts","../../project-config/src/sqleditorconfig.ts","../../project-config/src/baseprojectconfig.ts","../../project-config/src/index.ts","../../../node_modules/.pnpm/dnd-core@14.0.1/node_modules/dnd-core/dist/types/interfaces.d.ts","../../../node_modules/.pnpm/dnd-core@14.0.1/node_modules/dnd-core/dist/types/createdragdropmanager.d.ts","../../../node_modules/.pnpm/dnd-core@14.0.1/node_modules/dnd-core/dist/types/index.d.ts","../../../node_modules/.pnpm/immutability-helper@3.1.1/node_modules/immutability-helper/index.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/types.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/mosaic.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/contexttypes.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/internaltypes.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/util/mosaicupdates.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/util/mosaicutilities.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/types/monitors.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/types/options.d.ts","../../../node_modules/.pnpm/@types+react@19.0.4/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/@types+react@19.0.4/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/types/connectors.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/types/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/core/dndcontext.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/core/dndprovider.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/core/dragpreviewimage.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/core/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/decorators/types.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/decorators/dragsource.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/decorators/droptarget.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/decorators/draglayer.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/decorators/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/types.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedrag/usedrag.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedrag/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedrop/usedrop.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedrop/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedraglayer.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/usedragdropmanager.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/hooks/index.d.ts","../../../node_modules/.pnpm/react-dnd@14.0.5_@types+node@22.10.5_@types+react@19.0.4_react@18.3.1/node_modules/react-dnd/dist/types/index.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/mosaicwindow.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/mosaicbutton.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/mosaiczerostate.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/separator.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/expandbutton.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/replacebutton.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/splitbutton.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/removebutton.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/buttons/defaulttoolbarcontrols.d.ts","../../../node_modules/.pnpm/react-mosaic-component@5.3.0_@types+node@22.10.5_@types+react@19.0.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-mosaic-component/lib/index.d.ts","../src/mosaic/mosaic-utils.ts","../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.cjs.d.ts","../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/declarations/src/types.d.ts","../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.cjs.d.ts","../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/declarations/src/types.d.ts","../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.cjs.d.ts","../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.cjs.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/context.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/types.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/theming.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/jsx-namespace.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/jsx.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/global.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/keyframes.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/class-names.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/css.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1/node_modules/@emotion/react/dist/emotion-react.cjs.d.ts","../../../node_modules/.pnpm/@emotion+styled@11.14.0_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@types+react@18.3.18_react@18.3.1/node_modules/@emotion/styled/dist/declarations/src/jsx-namespace.d.ts","../../../node_modules/.pnpm/@emotion+styled@11.14.0_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@types+react@18.3.18_react@18.3.1/node_modules/@emotion/styled/dist/declarations/src/types.d.ts","../../../node_modules/.pnpm/@emotion+styled@11.14.0_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@types+react@18.3.18_react@18.3.1/node_modules/@emotion/styled/dist/declarations/src/index.d.ts","../../../node_modules/.pnpm/@emotion+styled@11.14.0_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@types+react@18.3.18_react@18.3.1/node_modules/@emotion/styled/dist/emotion-styled.cjs.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.10_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+breakpoint-utils@2.0.8/node_modules/@chakra-ui/breakpoint-utils/dist/responsive.d.ts","../../../node_modules/.pnpm/@chakra-ui+breakpoint-utils@2.0.8/node_modules/@chakra-ui/breakpoint-utils/dist/breakpoint.d.ts","../../../node_modules/.pnpm/@chakra-ui+breakpoint-utils@2.0.8/node_modules/@chakra-ui/breakpoint-utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.5.0/node_modules/@chakra-ui/styled-system/dist/shared.types.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.5.0/node_modules/@chakra-ui/styled-system/dist/theming.types.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.5.0/node_modules/@chakra-ui/styled-system/dist/index.d.ts","../../../node_modules/.pnpm/css-box-model@1.2.1/node_modules/css-box-model/src/index.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/common.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/array.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/date.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/function.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/math.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/number.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/object.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/string.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/common/util.d.ts","../../../node_modules/.pnpm/@types+lodash@4.17.14/node_modules/@types/lodash/index.d.ts","../../../node_modules/.pnpm/@types+lodash.mergewith@4.6.6/node_modules/@types/lodash.mergewith/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.12/node_modules/@chakra-ui/utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.9_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_cwl46kvixi44wxgj4c37icydfq/node_modules/@chakra-ui/system/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+icon@3.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_re_uu2mi7c2ujwo5icpxhdgeehnla/node_modules/@chakra-ui/icon/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+descendant@3.0.11_react@18.3.1/node_modules/@chakra-ui/descendant/dist/index.d.ts","../../../node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+transition@2.0.12_framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1__react@18.3.1/node_modules/@chakra-ui/transition/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+accordion@2.1.4_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.1_hdc3my4muqkmx6mq7475q7nshq/node_modules/@chakra-ui/accordion/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+spinner@2.0.11_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_byhngaddictcnm5d62rsr4o4ty/node_modules/@chakra-ui/spinner/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+alert@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_itpkb2nwzgyes5ernwsmlvm3qy/node_modules/@chakra-ui/alert/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+avatar@2.2.1_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_iy4up4pmrdjbcotxhduu6u7gxe/node_modules/@chakra-ui/avatar/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+breadcrumb@2.1.1_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3._rafcxvonwvzrorhfelrcnjxqk4/node_modules/@chakra-ui/breadcrumb/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+button@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__xt7lef4vwdgmcfbsfgihvxphfe/node_modules/@chakra-ui/button/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+card@2.1.3_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_rbwv53dj6tgsmvqqlpmy2kg53i/node_modules/@chakra-ui/card/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-types@2.0.5_react@18.3.1/node_modules/@chakra-ui/react-types/src/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+checkbox@2.2.5_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_nksmb2abhqmfi6tmll6n3xvr5q/node_modules/@chakra-ui/checkbox/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+close-button@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18_e4c4mcjtrrmmy4ddiv3znaz2ri/node_modules/@chakra-ui/close-button/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+control-box@2.0.11_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18._5bwswa4myty3ssnp2zgaotjlbe/node_modules/@chakra-ui/control-box/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+counter@2.0.11_react@18.3.1/node_modules/@chakra-ui/counter/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+css-reset@2.0.10_@emotion+react@11.14.0_@types+react@19.0.4_react@18.3.1__react@18.3.1/node_modules/@chakra-ui/css-reset/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+editable@2.0.16_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.1_gfo373vvrxjsjyo2hhsgmkqusy/node_modules/@chakra-ui/editable/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+form-control@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18_utkcaxcyuoyw65i47pv74lcgui/node_modules/@chakra-ui/form-control/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+hooks@2.1.2_react@18.3.1/node_modules/@chakra-ui/hooks/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/color-mode-types.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/storage-manager.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/color-mode-provider.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/color-mode-script.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/color-mode-context.d.ts","../../../node_modules/.pnpm/@chakra-ui+color-mode@2.1.12_react@18.3.1/node_modules/@chakra-ui/color-mode/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.8.0/node_modules/@chakra-ui/styled-system/dist/shared.types.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.8.0/node_modules/@chakra-ui/styled-system/dist/theming.types.d.ts","../../../node_modules/.pnpm/@chakra-ui+styled-system@2.8.0/node_modules/@chakra-ui/styled-system/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/array.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/types.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/assertion.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/breakpoint.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/dom.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/dom-query.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/tabbable.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/focus.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/flatten.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/function.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/lazy.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/number.d.ts","../../../node_modules/.pnpm/@types+lodash.mergewith@4.6.7/node_modules/@types/lodash.mergewith/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/object.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/pointer-event.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/pan-event.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/responsive.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/user-agent.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/walk-object.d.ts","../../../node_modules/.pnpm/@chakra-ui+utils@2.0.15/node_modules/@chakra-ui/utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/hooks.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/system.types.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.12_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/refs.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.12_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/context.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.12_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/types.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.12_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/children.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-utils@2.0.12_react@18.3.1/node_modules/@chakra-ui/react-utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/providers.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/system.utils.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/system.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/forward-ref.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/use-style-config.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/factory.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/should-forward-prop.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/use-theme.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_react@18.3.1__@emotion+st_mfjm4qtgrgub2sxmfonoeny5ee/node_modules/@chakra-ui/system/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+icon@3.2.0_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_tol7f4w6c4vl3dvlkw6ucg2kom/node_modules/@chakra-ui/icon/dist/icon.d.ts","../../../node_modules/.pnpm/@chakra-ui+icon@3.2.0_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_tol7f4w6c4vl3dvlkw6ucg2kom/node_modules/@chakra-ui/icon/dist/create-icon.d.ts","../../../node_modules/.pnpm/@chakra-ui+icon@3.2.0_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_tol7f4w6c4vl3dvlkw6ucg2kom/node_modules/@chakra-ui/icon/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+image@2.0.12_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_qsoav42tfrcqc4rou64wlwlgby/node_modules/@chakra-ui/image/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+input@2.0.14_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_w6svadmvefli2b7oh5oc76ohnm/node_modules/@chakra-ui/input/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/aspect-ratio.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/badge.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/box.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/center.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/code.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/container.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/divider.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/flex.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/grid.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/grid-item.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/heading.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/highlight.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/kbd.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/link.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/link-box.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/list.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/simple-grid.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/spacer.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/stack.utils.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/stack.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/h-stack.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/stack-divider.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/stack-item.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/stack/v-stack.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/text.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/wrap.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/indicator.d.ts","../../../node_modules/.pnpm/@chakra-ui+layout@2.3.1_@chakra-ui+system@2.5.5_@emotion+react@11.14.0_@types+react@18.3.18_r_n5cqti47s37sqzgyh3hlcgpky4/node_modules/@chakra-ui/layout/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+media-query@3.2.8_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3_bb5rhu5m23myqubbsnegda6fry/node_modules/@chakra-ui/media-query/dist/index.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperoffsets.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventlisteners.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computestyles.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventoverflow.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applystyles.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/types.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/index.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectoverflow.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createpopper.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.d.ts","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+popper@3.0.10_react@18.3.1/node_modules/@chakra-ui/popper/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-use-disclosure@2.0.6_react@18.3.1/node_modules/@chakra-ui/react-use-disclosure/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+lazy-utils@2.0.3/node_modules/@chakra-ui/lazy-utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+menu@2.1.5_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_fa33c5o7x2sgnhzdixh7w74uzu/node_modules/@chakra-ui/menu/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+focus-lock@2.0.13_@types+react@18.3.18_react@18.3.1/node_modules/@chakra-ui/focus-lock/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+portal@2.0.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@chakra-ui/portal/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+modal@2.2.5_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_re_oivub7tyacsj6fyszmmmocz7za/node_modules/@chakra-ui/modal/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+number-input@2.0.14_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18_uaylwcan7gi3ekupkhcqaeo4du/node_modules/@chakra-ui/number-input/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+pin-input@2.0.16_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3._xyqs4x7iqvi652l4gvmzteq7lq/node_modules/@chakra-ui/pin-input/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+popover@2.1.4_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__wvhwyno767a4s5cfqcsic7esoe/node_modules/@chakra-ui/popover/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+progress@2.1.2_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_7r3ityvku64elkjag5274p5kra/node_modules/@chakra-ui/progress/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+radio@2.0.14_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_eaecuuvivh7hm4kww72ihdj4ga/node_modules/@chakra-ui/radio/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+react-env@2.0.11_react@18.3.1/node_modules/@chakra-ui/react-env/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+select@2.0.14_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__ck6xnrx4w65wmso4rd45crylfu/node_modules/@chakra-ui/select/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+skeleton@2.0.20_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.1_wecusmvbbuq6qmthxw3nplc2o4/node_modules/@chakra-ui/skeleton/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+slider@2.0.16_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__bjhuwcit7tpwv7jgeqdykqcrhy/node_modules/@chakra-ui/slider/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+stat@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_re_mzfuhb473r5qjpbotsfcswnztm/node_modules/@chakra-ui/stat/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+switch@2.0.17_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__k4oywkrspyylglsxn7jrsq3boi/node_modules/@chakra-ui/switch/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@19.0.4_react@18.3.1__@emotion+sty_aborlxyh6edp6f2yldhx3sx4lu/node_modules/@chakra-ui/system/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+table@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_r_xjqr6f3gcehsato7jmlafbalfq/node_modules/@chakra-ui/table/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+clickable@2.0.11_react@18.3.1/node_modules/@chakra-ui/clickable/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+tabs@2.1.5_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_h7ewsw4q6h6qxqympf4hyazdhy/node_modules/@chakra-ui/tabs/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+tag@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_rea_be3j4tghf3yo3o55s3yc33of7m/node_modules/@chakra-ui/tag/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+textarea@2.0.14_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.1_z7gu6ut6r65dtebwmjk2iyhw7q/node_modules/@chakra-ui/textarea/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+anatomy@2.1.0/node_modules/@chakra-ui/anatomy/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+theme-tools@2.0.14_@chakra-ui+styled-system@2.5.0/node_modules/@chakra-ui/theme-tools/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+theme@2.2.2_@chakra-ui+styled-system@2.5.0/node_modules/@chakra-ui/theme/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+toast@4.0.6_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18_re_a6t23okrerc547oou2hd4qwaxm/node_modules/@chakra-ui/toast/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+tooltip@2.2.3_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react@18.3.18__gvjx2rvumvtrscrqqtbjgs4yiq/node_modules/@chakra-ui/tooltip/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+visually-hidden@2.0.13_@chakra-ui+system@2.3.5_@emotion+react@11.14.0_@types+react_gaieb6tr3p3hjotwm777oiqnka/node_modules/@chakra-ui/visually-hidden/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+theme-utils@2.0.6/node_modules/@chakra-ui/theme-utils/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+provider@2.0.26_@emotion+react@11.14.0_@types+react@19.0.4_react@18.3.1__@emotion+_lgvexg5kyjchu5rsrfsrygxnfq/node_modules/@chakra-ui/provider/dist/index.d.ts","../../../node_modules/.pnpm/@chakra-ui+react@2.4.4_@emotion+react@11.14.0_@types+react@19.0.4_react@18.3.1__@emotion+styl_35pznj72p6beez34jcxuenutf4/node_modules/@chakra-ui/react/dist/index.d.ts","../src/mosaic/mosaictile.tsx","../src/mosaic/mosaiclayout.tsx","../src/mosaic/index.ts","../src/index.ts","../src/mosaic/styledmosaic.tsx","../../../node_modules/.pnpm/@jest+expect-utils@29.7.0/node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/index.d.ts","../../../node_modules/.pnpm/@sinclair+typebox@0.27.8/node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/.pnpm/@jest+schemas@29.6.3/node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/.pnpm/pretty-format@29.7.0/node_modules/pretty-format/build/index.d.ts","../../../node_modules/.pnpm/jest-diff@29.7.0/node_modules/jest-diff/build/index.d.ts","../../../node_modules/.pnpm/jest-matcher-utils@29.7.0/node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/.pnpm/expect@29.7.0/node_modules/expect/build/index.d.ts","../../../node_modules/.pnpm/@types+jest@29.5.14/node_modules/@types/jest/index.d.ts","../../../node_modules/.pnpm/@types+mocha@10.0.10/node_modules/@types/mocha/index.d.ts","../../../node_modules/.pnpm/@types+react-dom@18.3.5_@types+react@18.3.18/node_modules/@types/react-dom/index.d.ts"],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75",{"version":"4af6b0c727b7a2896463d512fafd23634229adf69ac7c00e2ae15a09cb084fad","affectsGlobalScope":true},{"version":"9c00a480825408b6a24c63c1b71362232927247595d7c97659bc24dc68ae0757","affectsGlobalScope":true},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true},"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","65ff5a0aefd7817a03c1ad04fee85c9cdd3ec415cc3c9efec85d8008d4d5e4ee",{"version":"b89c2ddec6bd955e8721d41e24ca667de06882338d88b183c2cdc1f41f4c5a34","affectsGlobalScope":true},"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","b542939a35357458e62f8229c2d7578ae888d63d3ab837395d7bb8a3064c205e","3a5af4fba7b27b815bb40f52715aedebaa4b371da3e5a664e7e0798c9b638825","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","49c632082dc8a916353288d3d8b2dc82b3471794249a381d090d960c8ceac908","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","71addb585c2db7b8e53dc1b0bcfa58c6c67c6e4fa2b968942046749d66f82e7e","c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","0320c5b275beb43649be5a818dfa83a2586ae110ac5bbb2c5eb7184e1fe3ca60","f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","ba54f3893e26d97ca465be256895ea0aa008c3dd25077ad88fcd2430611bea5d","1a37f53b826b52668264f81c63e85a280955b7240a3dfd5aefc3d1696a565eba","fe2a23eb720d21752bb25053b801412c380c2d702121ff59cf5203fa9487a5be","e7395d6eabd728538ddafc7bc978a072cd2eeee7f97add695e5ea8b7fd3cfc35","87b80e585f55d395207333be6dd2b2b4882fa78420182bb8aa023c869a02ec72","aa59b3bc34a0e430ae96373b07fd3cc5b28a7e4acb954fff5e76fc98dd44ce00","fdc93fc66720b01ccc8cd82a070b1955ff1b948eb03e1298da163d86e29a89d6","57fa82b21b6aa92c2f0e72a811842121e1c12e39382a24c54798a8b77a51c1e7","f1b4ab459a35c50269b2ff2518d74539d0e73d6f7ce7da9155a063f6a712c932","6ee9a497a208733addb6912e0b652f085561f4f25d4bb02768b7b8660f28066d","8e3d526ff19f45bb92fbfd51c330a3c39bb4251c3f76f93688fe083d1db49ac7","3dfe751a54ca0625cd56dd991f574ad470675a85c2ff6d9c661b8122613b96e4","608bba8b5ed93ab37906b9385121b7544051f9334dd8c1acd42431f41ca9fdb6","5e1c8a64be78b51d220e5e8d6d5434d1761f8af715ff3dc2ae48c562cd5a64ee","333a2ffb6ac77b7413236c5cc73e0f1ac217f84eb10d45b022d4ad0a841bbc43","d0fde7c862376189423d11930ca69a7cad0c017ffdec17c776d0d607ada8b4a3",{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true},"da172a28c35d5f298bf5f0361725cc80f45e89e803a353c56e1aa347e10f572d","decdad9280add292f9f1a3dbdc3d6bf065b61164c452d0252403c673b2c8d19e","5ddd5d3ee37a5f89eae376233259a70af536a5622b0cbfc24cf6ef7798a0882a","8b36573cadd6f986c5633f0dde060c29aa01c79e35d424a7cc457bdab6dab9c9","51785eb47621a145dcd62e011b1d244ce3f0f2dc418c53dfdf96a134b3d80161","2f8dd1b43a9bf8879317207866d941a2ba6cb3a29c9818287129e84b6adc540e","f0be0355a90b9f0f8e214242cf90144ba3ad666958e2020834da2ce7b9b988de","46e860f1a7320d0cdfe46fe2a7555dcef6620c38420b22eabb26cf7c7df057bb","47e8dd54cd3bc1a9e3a7a23dfdf23ded2e1077890c94ae0b71348f828ef29fe8","9580d6020d7adf2c7634f570cdd98c2742de23ec3670bea7146149a2ed55f9f8","e36a5950331a78bfccddf84db3bbb72289cae1a73d2d688d6c518bfc568df824","d759606be73744dd6b1c80a9e214f38278d084681fbb49e8396ca551ac3e618d","b360aef26e9f84797f202f2e43d81c8b62d16a747942dd0265c2a2661a76f29a","2641f2c3ff96cd381c8cc8de089f73675d62138e765a635f2de451b679c9cd28","80fb7c473355984d17799a78bf1b44d9531b0fda388717f4044b062bdaf04766","3fd174119f9b475f4d543ddc677c873ef4aa733d3ed3f26b1cadacd96a3998d1","5a1e63396dd26ad7bd61a582b6134e9cf8e81e760db8f29c48b488e1e3529d34","0b28810858dca36aed8318e7d786d4e8fcfa7edc728e080f399c6d22e38f791c","8f1931fb0e5be592fabdd8be525c7a7b3b1bc4a8ef43da7f0d59def18a20f29d","dd453ffb687e4db0fe96ee06a2f5c80f81c1b58b7f73a011ec3ebe89f1503651","bb469bbbd1022afdebefe1b9295226bfcf7ec82f5c71bd0fbaf9b33b16003b52","9a253234f798fa6876040c2b62088bbe88fd6160e19b9bb4c28efc35b50c8849","324466b21df08becd8c64305ca7f78fd4fa141ecdcba02e528140053280c9532","c0c61b8268bc3be30022d0c219a08a09558dffa43eba24201a5ade5fdd0eee16","57effd81d3d2648e461cd8f2f8a44764c034547d87da72175830787880da7966","ba7dab24a1a6688e098b9d347fa21e9fc84a92c8df44c6ca8fe1313bac14d97b","bbb11aeb54d8feb1b1540bf6d7ecedd76b8eda133398e12355b9e4e9784e8b60","221fe7734fdcaec9b1648f8913c95f6cea63126abdfd4d7430e0d41649284e75","cd800cff9384b94677cf08d672f689edc80e2f335b91c86e0a0cb9188c1fd866","6cee59095a12af22d9fbac4aa896e589004a52ccfd8268ef3c6c9459e4b9fdb3","dcfaf86c238977a2f7734050bf786581ad1ba4e49ff0f2e475666ff1f21f0c26","99618030bfe312194248f5c3b2f90eb173ce3712f2df1371186464dcc88c3737","4dcdbdbc992d114e52247e2f960b05cf9d65d3142114bf08552b18938cb3d56b","b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","ddb5454371b8da3a72ec536ad319f9f4e0a9851ffa961ae174484296a88a70db","fb7c8a2d7e2b50ada1e15b223d3bb83690bd34fd764aa0e009918549e440db1d","b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","9c909c17f69f125976e5c320eded3e693890d21b18cbc4caa246ec4fda260dcd","7915d50018073244a9bcb3621e79b8e0ad4eedfb6b053fc945cad60c983bb11b","e38d5bb0f0d07c2105b55ae8845df8c8271822186005469796be48c68058ef33","1fa33d8db2a9d2a7dbfb7a24718cccbcde8364d10cce29b1a7eea4cf3a530cbb","b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","90300bef1c0e2523c97fdd178b9d50e3f39646ade67faab69be4e445937c862a","381437930df37907c030519b23ffea4d8113f46e4431a70bfe008a0c43c63648","695cbb89013bc9e87fb24b0df020fe605c54f0ab5c267b5bf0490ed097044197","f43780383543bfcdc0a2ee850375e1f03d94bdb1b85091d5b11bb8b2023c8b49","303638e9e9378e3cce14c10a276251b2b6baea811f882b0adb6d8b7e44a8245e","93fc1a008c4786aa9970b7a4c56295bef4d39c243af63cbfcbd5548ca4fdd535","6b91aca1948fd92e4fb32e91e94955e7b7c12fb8cbc0a40eb55f1808886e53e8","1e197b6e669b8ece0a68c684af9a4394d8c47e58eaa040391cbdadcc1b5020a0","fccfc90c19498513d5c4b9c705706660eba9eb493bc38cdc16a11e9d384cd086","b288bbe96ea05e353f008a4d445fb8589a82f2a1c4d4d0bdfc283a19020dc96f","b4fbfaa34aacd768965b0135a0c4e7dbaa055a8a4d6ffe7bedf1786d3dc614de","cf32b34fb9148d541c100a83fd3d204ced00c76871b4811d53b710ff15a948a1","6940a178bd12acca76e270f0b0c4d907b9cc469d28833bd59a3276f11668591e","b189e328b0f8cfffbaa9b705d5b1d7ff21a58d2910614d449ae052bd6f6977f1","e38d5bb0f0d07c2105b55ae8845df8c8271822186005469796be48c68058ef33","b45146729d653381e0303ae68a954c73e96e15ee75f95ba9cc6adbacacf9bd53","dbd323b61de8047116c41782497a585db424f5ca91becc47899eac87c460ffe2","5c339869cb37006c09f535f5008b8571dd01ea0dd8cbe8ecd5f00b455999e2bb","5a60e8c2f21547ff83d6d187e66f306ebb31389d1ab5ade6c7c4b0507e959e90","638a3c8b8bcfa6b56bbdaf1669652977d9ac761bd0c5fbd2ea49bbd66098c368","e13f0c74f15967c388fb14e921aaa95efa10cb885a10080b920ee30201939716","a426cf36f13864527d0b4fc0e912728fc01674dc4482c2ed753edbdc844d2894","cc0db34c3fa72ad32b36db06b2921b228ddc3921cf91076ce762c550ff28a265","7220461ab7f6d600b313ce621346c315c3a0ebc65b5c6f268488c5c55b68d319","f90d4c1ae3af9afb35920b984ba3e41bdd43f0dc7bae890b89fbd52b978f0cac","fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","b88749bdb18fc1398370e33aa72bc4f88274118f4960e61ce26605f9b33c5ba2","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","bdf0ed7d9ebae6175a5d1b4ec4065d07f8099379370a804b1faff05004dc387d","7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","288d992cd0d35fd4bb5a0f23df62114b8bfbc53e55b96a4ad00dde7e6fb72e31","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","68b7968bfe692bb273debb1d38ed534b695f8b387d36b7b7a75a81b03f8bf238","762ca6c6ea11888252f1bfdaf6a4038a1155986ca5e98431fb59486ab6690a07","adc37c96384a7486d20d6e3da44ead8152f7c1fc3cc7b30ff8f75f7279ff6190","bdacdd4c7053c05b78c3d6f613b74adbf86d5b2d2b37b6a83bfd8690806132cf","b7c5d19e60d251218097c8e22806de71fca2186b73d8c3f429f2984e88fd30c3","047efc0ab1a7b5ab15b2b18a69763f35144428f0e98e805a59d13ba60148ef0d",{"version":"5a28b18716ba6f312b195f494c2916849af2b820c6ddd8d63f00688e5d4ec3fc","affectsGlobalScope":true},"22367043c107fadca7f7d192a8faf7335640ede8ea40aff38ea11a8f65a423b7","badcf75cac7fbbfcf23fe9848dd922c3db9a863a4e05c420c22dc7094f195f9f","0a44c610f256219e6ef7109904571d074c52d969be0bc7a3c4fdf1d0d0f5a580","f96f3a6ff0067dba5d20ce317d8abdf0d9712e939a3ecf44e2d9ada825e982c9","4f225399a0f5ddebbf3eab4fa258c61729c17d2587e7a8c17d276c9221d100f0","f910ddf2444620cbdc29fb89815cf6ec42af245dda3e96491c79753d7b8e3ad1","0458b1c92dec0fe5ac0e21e06d59bb6ad4aafb4fcb08436a2a3ad9c6ce800a24","beb0f0728bc580520ce0cfce9c82437c5400f2f148e544bf9c53947de5af877d","b620844d1e53afb36c00b897fea4ec31b9ad5d345311dea70e481278cd4c54db","56338e6f57606ce3cc30c145600678a0a3ef6ba7fea18dc3d3b00ea209429a56","02b4572530d33a7408499438f371fa4ab5e24c68e7a16728a6b37a96c70d0497","768c1d27301dfdbb19d87d26f9c6caf76e360ed852018440f68b79459c2b3f0c","d98e75508822d0ce41005efa78f23381f0302fc31465bda7936aba40d82cc5c9","58769911a44e3556adf1e87c52e0f8b36870d3690dfc5f51154e558362299335","1acacce6b2faa6440e5aafeeb7674fd7ffe4cab41b1a1ff64d4fa4f9860b14ca","7e0b0bee5f99101230ba64eecf01899b9ec3e1ba10f4383f746244ff72157d01","3b5492fc351cb3cf03139efed39eba183e0e82cc7f386e17127759a93f498081","e4daf183bc7ded91d28190482246f9dcdf8c0d5df593f418fd4ea9c85f034ed1","9fd794fee09e1a20f6853559e54efbf43df17ec39921c9036de3989928f92c1e","d167534d0cd2ffd2aff4d6d160b48f6bb8aa40a7922f47a2ee3563fc020699ca","f7b11d823bc8c24666bfa59efc8458f9e567023b23b8f1ed68a3a25f4360bfa5","075389fda63ecc6c89da0672c64043b5b05761ac6e79795638f4de70765ccfad","8b8eef736784cdea256713772c9487e4da445a1d114fdee7d3562e7d4874e6dd","025bc0717bc76a9b59346843266b9fdffe3ce7e97567972a1a9d99238726eab7","e13f0c74f15967c388fb14e921aaa95efa10cb885a10080b920ee30201939716","9de2054f3dff5f2521f57d5377d2eb40772c33856c1d8cfb05faa56cf1aeeb00","83f1937f635b75087ccda95edbc52d652bdbe24a8c1bf84c104223472d52598a","cbb57c5eac2f531a1f6e1d7d0dc10e6231b3f3f4dfc9143d2da3582e0a470de0","43bdf8f7789173969ec4d4170e1d5ec3df5dc19f139bacd3ed1ec883b0a224bf","27ab94b9ed392c6d7fc05e96d927817932ad9508256a355bb98cc773b521d7dd","b0fe446d4de81cecf55dc5e2ae3c95d744ef325ecd808223d1bdf5d34ec012c3","a202e8f1f2cc01cc0510ba804ee46ce216dc4a30467e022e21cbebbfd9b40f2f","2dbce7e64c233b45675195d6a1bfc9582feba1ca721d0452d6417414b02e3d32","fa8d371ff23be2edaa8aad61014571bc2dc4d9d88c3690d3520e36bf904b138a","06c877a41940c1bada3473003d086d15499e3297912d82d5b832885b11365698","4625e8ba57e799257090cb23206e30f445066237d6cfefa12cfbf6568f211d35","f5fcb67689fdb43e6332624e7739f6a5d9e779f52ba0ef62de7a99bae4be1723","30f444e027ce9aa83e3685f4a0d849f1fe0098090d6b1bac8c2271f0671d5cdf","9beb1014927166017e49ed264a564350d28e8bc48b84044efc763b7e213709cb","5cb4a39f2c8c0fba93ed5e40aef3861de2118174769596a753463927999d1b89","5db68354f9ff79ff13649045c9a2bdd233eb7f4728259fc46234b87bc3d407c4","41f79e709174708f94e678bda8283deaf91b3060c8171c6364b39451da7a273b","35e9ac04da8df6853bd64fcfcd8941a730f13da98458bfa06d58fc5194ac8673","e82086ec2378012ee5cf5a5f6c3729008d85a54e94be1d8fc5fdd858de568945","4312d387216259d6b7dd5652896a2e02e84a78942f51c3f189ea358b9cd172ea","8405513cc07429e28f8ecb9b1b50c7fd978ffebb436169f72ba7124008e2e64c","782dcf1557b3e6519d1db78191d230ff2c7549c1da71b2294f69a3cb4cca2d0d","be24cbfdefe7b692b2c84f3ff610aa8c0517c9fd7d100b8f6d98dd7b4be550e7","b0ec3ce6a36bcb40a1554e11d601038a42d0d8cd16c29a67003dcb2410e56b42","b958f13ff3ebdaff7103a2ff0c24d7ada2f49cfe4b723eaa89fba65b03f3bec7","f4d75b7fbb68380679fde87033bfb619ac078d79eab34189629f6cf5c6127df1","e931a4020c75235e344f4972d6e23a73ffee549d2a0576d1f7a5757c82030501","4f65436a20185d7ff4028326855485b655770e53c493ed7af411a3785bd653b5","678683b00d859835e7d7ab81ccfcc788d57dd2b29e1ada15d44d61cb808e9fea","6087ef19af803274ef202003211def5b2efc5e549255f8ce2bfef2d5848d8a7a","6bdb08b565d2b32890adebb2a8dce900c76173556a3654cc3809cf58925d9aed","4dd3fcb66b533fecae1e77024724bbf7a884ba368317e6948e893d3719cccd24","f8af6ad54cde2942850a3776a4de53a3f5aa6f1d7a3f60bddbe4a0d5ed601740","2aa9638699da6a9bbe555d9e905c1b68260721f53ea18f9716ef9db70d1d9a41","3140dd143e95f00ff9f4dba890d68f0cf3c74f005763a00e06a8cbb04742e40c","dc6b797a3048dba55254f81e9f02613b66b04e74b8178bee17af1becc998d829","7e34c4423ed565f1b632ce6f9b81c434f01a854ff6d83fc5fc84acd3be3b0c44","2524c9364851036b8262830e3e4f040f4ab957bb278b6f0b77ac2dfa0dd8e74e","d70747c4aeafeda0d47a7d19cc0849f7ef9d8dfddcb3e8615866cfa9efcdaf53","b50697a33176d813500728f1d36bd28c6400d28b310a9aa1722a70d404e774ee","0797192d37c6f995ee5e7cd794b35bc66f4c86a4b86bede1bbefa18b2493bfe7","5461fb95988c8c8133e5a0a8507ee435e33e64ed4d5f88414b081ac00ac9ae02","81abf78dd2b4868b1dbec88ca13a43a80eec96daf165eeb1dc25d77d05937cdb","5a13647897f7f63ad3ec14f8ac91dc3192b95f52e6e49f3641424d6d0b6cf46d","224a9d9dc35183cf96292a8ddb36889b2462f8501f251fe64c9378dbf37e0375","ef759eafc31ec7a28a3102b223dc3c5776fd32279da6b12a1590d66763f98e90","50085ecf14045257c537cc065d8c483d85e9b25328eacad334d0e553c6df2e67","ee06123986731d95e365736b653c124ae22afc64d714b016f435099364ae83e3","e5b6e9246be5433bd38e32c7eabfda07a7a7d2b2667f5bc16fa470ddaeb961ac","c429806eefbdb5058225e97bb08efba3e19954373d94b6004ab4b22a3abe81d4","6d8bb4841553befba9945c205dc3f08bb724447ed23c0662dbeac3cca1fac8e6","315bd7b42cbda36d3c7654b0217c6d876145621ae96755f950f6e4cd5deecbce","886302188c729fc9e418db8cf6e2b438201f93fe122093a3617a8e31e87cb5ac","d67a2f738dfbc3ed234284fc009bb1165be3f04264a136274942c30b5c60b227","014f397988648f3fce3fe148a1a8dc4dce0d2d2ef949a4465589ba7315feb74a","0def423ec029e01fe3f04a0aeffed7922eab32dfb2d53ec630b42affcced610d","8c464c6fa9d2eb495e29dd5070012754c2739589a4cf8b36bb8e24e28b111075","ab3998b8ff063f845cc3c3231a3cf501f2ecd56db4d64fac53d46827bf62f451","ca92079ff6eb819293b52e9185765cdba2e63920978875acf45f36a80bd8a305","019858d1821b890a1f30997e138fbcd17e60687f1f9a11e248adb95c2a40ff35","78fe4f9db0549710618b13709dbf170b155aa616031315314f649c031c55be14","d719a8323a848e5ca47d982ffd45a310c80bec76c8cfbf3b930dca3ad035162b","b0136fd99c8e15144643949aa4e6084564cf83815f30385289c3d3fe56f4bfc8","21d47791262292de80b5715f5da6606caad7299f507bf082d1ceb13ca07f11d8","5fb2d0cd11458f8b583d92fd000bd561e0b8f885aad559eb2b93eb1789a27ab9","6b2da1d0b9ba0bc954dc35afe21a9d78799ad1e5709ed5202f8db87d0d55b333","462f008dbd1dbc96f2916ee7b400bc262d982f366338943e6d3f3eda37e3f0d0","b9f12cf8661ef395c2f252bac8cf51755b81a10d2367967dd76b60b421cae137","6c397537622624e67a1157e4f3916846f1f16dd378f7c04b7158478d6087c255","d110d2fa4c1bf5459aada0874d483f0b2389627a35396360d94cae0a01c080d2","0c061a90bc66047897c82c1d86e0de1879c53c0866a3b14f0fe804e36379efb9","70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","5913843889c17661b42ee9fe75c8ee03cd501c0998cdb83732dc30ce8e7867f6","1f500233763c1a8c19ca625f3974d77a4fa4e29981eb12f05e959ed476853d36","61d21d09316c7458f6ee462565fa6df81d1e50b9480d29fe0dede5a493047216","f5374fbcabd7e3edebb91e214aedbd85cd02cef9b4d8e608d655b3c156583f53","7c0e75a1b3a7ee5386b86ad13e1f3e3bf218cae3f30b17ed065f16255cda90c3","be9dbd9862d6f081d5a6c926a43744717235205c7d6dee3a7257c482814b4c98","65855e6c1852ae9550793ee09caf8ed7190e17ddf1e7b52b5f8aed6ae30ee572","4406a648f3f0cfafdaf70188bb6090675cf0533e37af3a3d85cf528ff183a881","a80ce13fab36a031cb629e243932f6c7e64a8c4937d726895cf09632f4a30643","e308580f5748a5a071d6b822c5066775a73ff6671e7d22eb1f6cac66c494337a","4a31097e3432a4f0e98933c9845acde438d950c0191959146bd8d6486451a668","3396a5deb760d0388e2ceceb530272bc825db0e360edf13ac2b04beaaafcccee","bdd08ca047c287803dcbf3aec1e10fc38689b4c177efced8ccb69839375057bc","c90e6cda8cede58b9acd81b59a77b157708446de279f7404106416f8b4e9ae65","9b71de40373a9fa4e7e25e4b476832d644aeb6fd6b9caaf88595b27390a183fe","87be95dd474fc7dfa77977a7151279eec708cf8d0efc5eb97d9194f2b907e74a","0ae5a09ceae416cecf5239ddabfaf0fb21a13c511d2450b5a3533cfcdf697239","d1b0ef89f62f457c57152cf6f90d451cfdb7bdef6be005397158f2dd7663b474","bdacdd4c7053c05b78c3d6f613b74adbf86d5b2d2b37b6a83bfd8690806132cf","69e246c8896c300fddf7d5f5fd0ce6cef888dc8d3ba30b4ed657ec499ede4eda","ca0f1676f59caaccb6e39dc2494c1932c2577f23432d1da1cd744fdbd0d64c40","98caf59e318e5b702027cb374751c13e6ebc46701e20414cf4c6318d22c66992","073a809fd10a901682630a8c9d3bfa9d3471fb0163960930c8d6ceee012131fc","4e0a4ce4c05a0869606006e854cf610d96d3b2e9087c32b34eb39b90b2d52ac3","ac7979824a71802d8685318bee4c02d123d36e078ba55bcb16058b7a1b856d6b","21ead83d62ce9dd43cd5b296f504902c58608a29da77b1ad7463bd85e8550ea1","0fb0397005dd11c8f98363e2abe40ddd047c2a4af31a103f622512b0aefaa4ee","4710724b88ca860ae61f9cf19e557dde3222b3248e8d8b331a5fe4c9eb806703","8957a732c34c2e29bd890b1dd05773dde5f85578541329ae0754ddb4c7f30774","3cbd1776561d4d59dae1aad60c4bbc8bba956aea36ed3351002865dc9f4c516d","43b5ed10dad8e30007b8a3bed0e2bfee9e425f228551dc0d5c6dd25f6a2eacd0","93e3d69bc16d263a724ac98ea41b01b15d4e4dcf66d4bc2a64c99c7b8fa2c8f7","7294987eca374aecfe4b6d12de1644e3327fce941cd133514c6bc59eeda32ea0","261ef0b71bfdd6c46a1149ca143c7b981d6fa2c6529c9ae657065e11ea147094","999c25fdbefa8b2c5e40f0de2853f060212a6ca905ba5f78ce499ae412389163","5428af9e8247e36ba3cc317735c3c27d5b8ce7275ad7b9854a5a93a281a3a54d","b34be298e2712fd629f6c0f068faf11fe94254a6a0f0625945e5d407f4e13700","addbdb659eb4d6b482f622f0874ddef80b269c6960b34e4fad346f160465f5ee","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true},"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f"],"root":[86,[287,291]],"options":{"allowJs":true,"downlevelIteration":true,"esModuleInterop":true,"jsx":4,"module":99,"noImplicitAny":true,"outDir":"./","skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[22,136,137,138,140],[136,137,142],[136],[113,114],[22,136,148],[22],[22,157],[157,158],[22,157,158,159,160,161],[157],[136,148],[22,136,137,148],[22,134],[201,202],[201],[201,202,203],[136,155],[201,209],[201,204,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233],[201,204],[201,215],[201,225,226],[201,225],[22,136,138,139,254,255,256],[22,136,139,140,148,150,258,259],[136,148,152],[22,136,138],[22,136,139,148,150,254,256],[148,253],[134,136,266],[22,185,188,189,190,191],[185],[136,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,204,205,206,234,235,254,257,259,260,261,262,263,264,265,266,267,268,269,270,271,273,275,276,277,280,281,282,283,284,285],[136,137],[20,115,116,117],[116],[20,115,163,164],[163],[136,149],[22,107,111,112,118,134,135],[107,111,165,185,187,194,195],[107,165,187],[162,185],[22,107,111,162,165,185,186,187,192,193,194,195,196,197,198,199,200],[22,107,165,192],[107,111,165,185,187,194],[107,165],[165,185],[22,136,138,256,274],[118,278],[118,280],[118,279],[22,136,139,143,259],[136,139,148,254,259],[22,139],[119,133],[167],[172],[119,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184],[167,178],[180],[91,92],[93],[22,96,99],[22,94],[91,96],[94,96,97,98,99,101,102,103,104,105],[22,100],[96],[22,98],[100],[106],[20,91],[95],[87],[96,107,108,109],[96,107,108],[110],[89],[88],[90],[294],[252],[246,248],[236,246,247,249,250,251],[246],[236,246],[237,238,239,240,241,242,243,244,245],[237,241,242,245,246,249],[237,238,239,240,241,242,243,244,245,246,247,249,250],[236,237,238,239,240,241,242,243,244,245],[296,299],[132],[120,122,123,124,125,126,127,128,129,130,131,132],[120,121,123,124,125,126,127,128,129,130,131,132],[121,122,123,124,125,126,127,128,129,130,131,132],[120,121,122,124,125,126,127,128,129,130,131,132],[120,121,122,123,125,126,127,128,129,130,131,132],[120,121,122,123,124,126,127,128,129,130,131,132],[120,121,122,123,124,125,127,128,129,130,131,132],[120,121,122,123,124,125,126,128,129,130,131,132],[120,121,122,123,124,125,126,127,129,130,131,132],[120,121,122,123,124,125,126,127,128,130,131,132],[120,121,122,123,124,125,126,127,128,129,131,132],[120,121,122,123,124,125,126,127,128,129,130,132],[120,121,122,123,124,125,126,127,128,129,130,131],[19,20,21],[20,54],[42],[42,43],[292,298],[296],[293,297],[295],[22,44,55],[44,55],[55,57],[58,59,60],[62],[44,62],[62,63,64,65],[44,55,57],[67,69,71,72,73],[44,57],[68],[57,67],[44],[75],[70],[57,61,66,74],[53,55],[52,53,56],[22,48,77],[22,46],[46,47,48,50,51,76,77,78,79,80,81,82,83,84],[46],[22,44,46],[22,46,48,75],[22,46,48],[22,45],[46,49],[36],[26,27],[24,25,26,28,29,34],[25,26],[35],[26],[24,25,26,29,30,31,32,33],[24,25,36],[23,289],[23,86,288],[23,41,85],[22,23,85,111,287],[22,23,41,85,286],[23,85,111],[23,37,38,39],[23,38,39,40],[23,37]],"referencedMap":[[141,1],[143,2],[144,3],[145,3],[115,4],[146,3],[147,3],[149,5],[274,6],[150,3],[112,6],[161,7],[159,8],[162,9],[158,10],[151,3],[152,6],[138,6],[154,11],[155,12],[156,13],[137,3],[203,14],[202,15],[204,16],[205,3],[206,17],[207,15],[208,15],[209,15],[210,15],[211,15],[212,15],[213,15],[214,15],[216,18],[215,15],[217,15],[218,15],[234,19],[233,15],[219,15],[221,15],[220,15],[222,20],[223,21],[224,15],[227,22],[228,15],[229,15],[226,23],[225,15],[230,22],[231,15],[232,15],[257,24],[260,25],[261,26],[262,27],[263,28],[254,29],[264,3],[285,30],[265,5],[255,6],[191,6],[192,31],[190,32],[135,13],[286,33],[267,17],[268,3],[269,5],[142,3],[270,34],[118,35],[117,36],[165,37],[164,38],[271,39],[136,40],[272,40],[198,41],[196,42],[186,43],[201,44],[193,45],[195,46],[187,47],[197,48],[200,48],[273,3],[275,49],[276,34],[277,17],[279,50],[284,51],[280,52],[281,53],[282,54],[140,55],[134,56],[168,57],[169,57],[170,57],[173,58],[175,57],[185,59],[179,60],[181,61],[182,57],[283,3],[93,62],[94,63],[104,64],[97,65],[105,66],[102,64],[106,67],[100,64],[101,68],[103,69],[99,70],[98,71],[107,72],[95,73],[96,74],[88,75],[110,76],[108,6],[109,77],[111,78],[90,79],[89,80],[91,81],[295,82],[253,83],[249,84],[252,85],[245,86],[243,87],[242,87],[241,86],[238,87],[239,86],[247,88],[240,87],[237,86],[244,87],[250,89],[251,90],[246,91],[248,87],[300,92],[133,93],[178,93],[121,94],[122,95],[120,96],[123,97],[124,98],[125,99],[126,100],[127,101],[128,102],[129,103],[130,104],[131,105],[132,106],[302,6],[22,107],[23,6],[55,108],[43,109],[44,110],[299,111],[139,6],[297,112],[298,113],[296,114],[58,115],[59,116],[60,117],[61,118],[65,119],[63,120],[64,120],[66,121],[62,122],[74,123],[67,124],[69,125],[68,126],[73,127],[72,128],[71,129],[70,126],[75,130],[56,131],[57,132],[52,127],[84,6],[80,133],[77,6],[83,133],[81,133],[79,6],[82,133],[48,134],[85,135],[49,136],[47,137],[76,138],[78,139],[46,140],[50,141],[51,136],[37,142],[28,143],[35,144],[29,145],[32,142],[36,146],[27,147],[34,148],[26,149],[290,150],[289,151],[86,152],[288,153],[287,154],[291,155],[40,156],[41,157],[38,158],[39,158]]},"version":"5.5.4"}
|
package/eslint.config.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sqlrooms/layout",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "src/index.ts",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"private": false,
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@sqlrooms/project-config": "0.0.0",
|
|
14
|
+
"@sqlrooms/ui": "0.0.0"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"react": "*",
|
|
18
|
+
"react-mosaic-component": "5.3.0"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"dev": "tsc -w",
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"lint": "eslint ."
|
|
24
|
+
},
|
|
25
|
+
"gitHead": "4b0c709542475e4f95db0b2a8405ecadcf2ec186"
|
|
26
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './mosaic';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React, {FC, useCallback} from 'react';
|
|
2
|
+
import {Mosaic, MosaicNode, MosaicProps} from 'react-mosaic-component';
|
|
3
|
+
import 'react-mosaic-component/react-mosaic-component.css';
|
|
4
|
+
import MosaicTile from './MosaicTile';
|
|
5
|
+
|
|
6
|
+
type Props = MosaicProps<string>;
|
|
7
|
+
|
|
8
|
+
const MosaicLayout: FC<Props> = (props) => {
|
|
9
|
+
const {onChange, onRelease, renderTile} = props;
|
|
10
|
+
const [isDragging, setDragging] = React.useState(false);
|
|
11
|
+
const handleLayoutChange = useCallback(
|
|
12
|
+
(nodes: MosaicNode<string> | null) => {
|
|
13
|
+
setDragging(true);
|
|
14
|
+
onChange?.(nodes);
|
|
15
|
+
},
|
|
16
|
+
[onChange],
|
|
17
|
+
);
|
|
18
|
+
const handleLayoutRelease = useCallback(
|
|
19
|
+
(newNode: MosaicNode<string> | null) => {
|
|
20
|
+
setDragging(false);
|
|
21
|
+
onRelease?.(newNode);
|
|
22
|
+
},
|
|
23
|
+
[onRelease],
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<div className="relative w-full h-full">
|
|
28
|
+
<Mosaic<string>
|
|
29
|
+
{...props}
|
|
30
|
+
className="" /* to avoid using blueprint theme */
|
|
31
|
+
onChange={handleLayoutChange}
|
|
32
|
+
onRelease={handleLayoutRelease}
|
|
33
|
+
renderTile={(id, path) => (
|
|
34
|
+
<MosaicTile
|
|
35
|
+
id={id}
|
|
36
|
+
path={path}
|
|
37
|
+
isDragging={isDragging}
|
|
38
|
+
content={renderTile(id, path)}
|
|
39
|
+
/>
|
|
40
|
+
)}
|
|
41
|
+
/>
|
|
42
|
+
</div>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export default MosaicLayout;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {MAIN_VIEW} from '@sqlrooms/project-config';
|
|
2
|
+
import {cn} from '@sqlrooms/ui';
|
|
3
|
+
import {FC} from 'react';
|
|
4
|
+
import {MosaicBranch, MosaicWindow} from 'react-mosaic-component';
|
|
5
|
+
|
|
6
|
+
const ENABLE_LAYOUT_REARRANGE = false;
|
|
7
|
+
|
|
8
|
+
type Props = {
|
|
9
|
+
id: string;
|
|
10
|
+
path: MosaicBranch[];
|
|
11
|
+
content: React.ReactNode;
|
|
12
|
+
isDragging: boolean;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const MosaicTile: FC<Props> = (props) => {
|
|
16
|
+
const {id, content, path, isDragging} = props;
|
|
17
|
+
const body = (
|
|
18
|
+
<div
|
|
19
|
+
className={cn(
|
|
20
|
+
'flex-1 h-full p-2 flex-col bg-gray-700 rounded-md overflow-hidden',
|
|
21
|
+
isDragging ? 'pointer-events-none' : '',
|
|
22
|
+
)}
|
|
23
|
+
>
|
|
24
|
+
{content}
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
if (!ENABLE_LAYOUT_REARRANGE || id === MAIN_VIEW) {
|
|
28
|
+
return body;
|
|
29
|
+
}
|
|
30
|
+
return (
|
|
31
|
+
<MosaicWindow<string>
|
|
32
|
+
title={id}
|
|
33
|
+
// additionalControls={
|
|
34
|
+
// }
|
|
35
|
+
// createNode={() => genRandomStr(6)}
|
|
36
|
+
path={path}
|
|
37
|
+
// onDragStart={() => console.log('MosaicWindow.onDragStart')}
|
|
38
|
+
// onDragEnd={(type) => console.log('MosaicWindow.onDragEnd', type)}
|
|
39
|
+
renderToolbar={() =>
|
|
40
|
+
id === MAIN_VIEW ? (
|
|
41
|
+
<div />
|
|
42
|
+
) : (
|
|
43
|
+
<div style={{display: 'flex', width: '100%', height: '100%'}}>
|
|
44
|
+
{/* <ProjectBuilderPanelHeader panelKey={id as ProjectPanelTypes} /> */}
|
|
45
|
+
</div>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
>
|
|
49
|
+
{body}
|
|
50
|
+
</MosaicWindow>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export default MosaicTile;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_MOSAIC_LAYOUT,
|
|
3
|
+
isMosaicLayoutParent,
|
|
4
|
+
MosaicLayoutNode,
|
|
5
|
+
} from '@sqlrooms/project-config';
|
|
6
|
+
import {
|
|
7
|
+
createRemoveUpdate,
|
|
8
|
+
MosaicDirection,
|
|
9
|
+
MosaicNode,
|
|
10
|
+
MosaicPath,
|
|
11
|
+
updateTree,
|
|
12
|
+
} from 'react-mosaic-component';
|
|
13
|
+
|
|
14
|
+
export function makeMosaicStack(
|
|
15
|
+
direction: MosaicDirection,
|
|
16
|
+
children: {node: string | MosaicNode<string> | null; weight: number}[],
|
|
17
|
+
): MosaicNode<string> | null {
|
|
18
|
+
const childrenWithoutEmpty = children.filter(({node}) => node !== null) as {
|
|
19
|
+
node: string | MosaicNode<string>;
|
|
20
|
+
weight: number;
|
|
21
|
+
}[];
|
|
22
|
+
if (!childrenWithoutEmpty?.length) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
if (childrenWithoutEmpty.length === 1) {
|
|
26
|
+
return childrenWithoutEmpty[0]?.node ?? null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let stack = childrenWithoutEmpty[0]?.node;
|
|
30
|
+
if (!stack) return null;
|
|
31
|
+
let accumulatedWeight = childrenWithoutEmpty[0]?.weight ?? 0;
|
|
32
|
+
for (let i = 1; i < childrenWithoutEmpty.length; i++) {
|
|
33
|
+
const child = childrenWithoutEmpty[i];
|
|
34
|
+
if (!child) continue;
|
|
35
|
+
const {node, weight} = child;
|
|
36
|
+
const splitPercentage =
|
|
37
|
+
(accumulatedWeight * 100) / (accumulatedWeight + weight);
|
|
38
|
+
accumulatedWeight += weight;
|
|
39
|
+
stack = {
|
|
40
|
+
direction,
|
|
41
|
+
first: stack,
|
|
42
|
+
second: node,
|
|
43
|
+
splitPercentage: Math.round(splitPercentage),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return stack;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function visitMosaicLeafNodes<T = void>(
|
|
50
|
+
root: MosaicLayoutNode | undefined | null,
|
|
51
|
+
visitor: (node: string, path: MosaicPath) => T, // return a truthy value to stop visiting
|
|
52
|
+
path: MosaicPath = [],
|
|
53
|
+
): T | undefined {
|
|
54
|
+
if (!root) return undefined;
|
|
55
|
+
if (isMosaicLayoutParent(root)) {
|
|
56
|
+
if (root.direction) {
|
|
57
|
+
const rv: T | undefined =
|
|
58
|
+
visitMosaicLeafNodes(root.first, visitor, [...path, 'first']) ||
|
|
59
|
+
visitMosaicLeafNodes(root.second, visitor, [...path, 'second']);
|
|
60
|
+
if (rv) return rv;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
} else {
|
|
64
|
+
return visitor(root, path);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function getVisibleMosaicLayoutPanels(
|
|
69
|
+
root = DEFAULT_MOSAIC_LAYOUT.nodes,
|
|
70
|
+
): string[] {
|
|
71
|
+
const visiblePanels: string[] = [];
|
|
72
|
+
if (root) {
|
|
73
|
+
visitMosaicLeafNodes(root, (node) => {
|
|
74
|
+
visiblePanels.push(node);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return visiblePanels;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function findMosaicNodePathByKey(
|
|
81
|
+
root: MosaicLayoutNode | undefined | null,
|
|
82
|
+
key: string,
|
|
83
|
+
): MosaicPath | undefined {
|
|
84
|
+
return visitMosaicLeafNodes<MosaicPath | undefined>(root, (node, path) => {
|
|
85
|
+
if (node === key) {
|
|
86
|
+
return path;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function removeMosaicNodeByKey(
|
|
92
|
+
root: MosaicLayoutNode | undefined | null,
|
|
93
|
+
key: string,
|
|
94
|
+
): {success: true; nextTree: MosaicLayoutNode} | {success: false} {
|
|
95
|
+
const path = findMosaicNodePathByKey(root, key);
|
|
96
|
+
if (!root || !path) return {success: false};
|
|
97
|
+
try {
|
|
98
|
+
return {
|
|
99
|
+
success: true,
|
|
100
|
+
nextTree: updateTree<string>(root, [
|
|
101
|
+
createRemoveUpdate<string>(root, path),
|
|
102
|
+
]),
|
|
103
|
+
};
|
|
104
|
+
} catch (err) {
|
|
105
|
+
console.error(err);
|
|
106
|
+
// might happen when removing main view
|
|
107
|
+
return {success: false};
|
|
108
|
+
}
|
|
109
|
+
}
|