@window-splitter/react 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +15 -0
- package/dist/commonjs/ReactWindowSplitter.d.ts.map +1 -1
- package/dist/commonjs/ReactWindowSplitter.js +48 -20
- package/dist/commonjs/ReactWindowSplitter.js.map +1 -1
- package/dist/commonjs/ReactWindowSplitter.stories.d.ts +3 -0
- package/dist/commonjs/ReactWindowSplitter.stories.d.ts.map +1 -1
- package/dist/commonjs/ReactWindowSplitter.stories.js +24 -0
- package/dist/commonjs/ReactWindowSplitter.stories.js.map +1 -1
- package/dist/commonjs/ReactWindowSplitter.test.js +11 -0
- package/dist/commonjs/ReactWindowSplitter.test.js.map +1 -1
- package/dist/esm/ReactWindowSplitter.d.ts.map +1 -1
- package/dist/esm/ReactWindowSplitter.js +49 -21
- package/dist/esm/ReactWindowSplitter.js.map +1 -1
- package/dist/esm/ReactWindowSplitter.stories.d.ts +3 -0
- package/dist/esm/ReactWindowSplitter.stories.d.ts.map +1 -1
- package/dist/esm/ReactWindowSplitter.stories.js +23 -0
- package/dist/esm/ReactWindowSplitter.stories.js.map +1 -1
- package/dist/esm/ReactWindowSplitter.test.js +12 -1
- package/dist/esm/ReactWindowSplitter.test.js.map +1 -1
- package/package.json +5 -5
- package/src/ReactWindowSplitter.stories.tsx +68 -0
- package/src/ReactWindowSplitter.test.tsx +21 -0
- package/src/ReactWindowSplitter.tsx +64 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function DynamicConstraints({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"700px\" })}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn)}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }} autosaveId=\"with-default-width\">\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function DynamicConstraints({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"700px\" })}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn)}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n {isExpanded && (\n <>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }} autosaveId=\"with-default-width\">\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nexport function Admin({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n const [showTraces, setShowTraces] = useState(false);\n const [chatCollapsed, setChatCollapsed] = useState(false);\n\n return (\n <>\n <PanelGroup handle={handle} style={{ height: \"calc(100vh - 100px)\" }}>\n {!showTraces && (\n <>\n <Panel\n style={{ backgroundColor: \"red\" }}\n min=\"200px\"\n max=\"240px\"\n id=\"sidebar\"\n >\n <div>Sidebar</div>\n </Panel>\n <PanelResizer size=\"3px\" id=\"sidebar-resizer\" />\n <Panel style={{ backgroundColor: \"blue\" }} min=\"250px\" id=\"main\">\n <div>Main</div>\n </Panel>\n <PanelResizer size=\"3px\" id=\"main-resizer\" />\n </>\n )}\n\n <Panel\n style={{ backgroundColor: \"#333366\" }}\n min=\"33%\"\n collapsible\n collapsedSize=\"8px\"\n id=\"chat\"\n collapsed={chatCollapsed}\n onCollapseChange={setChatCollapsed}\n >\n <div>Chat</div>\n </Panel>\n\n {showTraces && (\n <>\n <PanelResizer size=\"3px\" id=\"details-resizer\" />\n <Panel\n style={{ backgroundColor: \"green\" }}\n default=\"33%\"\n min=\"100px\"\n id=\"details\"\n >\n <div>Details</div>\n </Panel>\n <PanelResizer size=\"3px\" id=\"traces-resizer\" />\n <Panel\n style={{ backgroundColor: \"yellow\" }}\n default=\"33%\"\n min=\"100px\"\n id=\"traces\"\n >\n <div>Traces</div>\n </Panel>\n </>\n )}\n </PanelGroup>\n\n <button type=\"button\" onClick={() => setShowTraces(!showTraces)}>\n {showTraces ? \"Hide traces\" : \"Show traces\"}\n </button>\n </>\n );\n}\n"]}
|
|
@@ -80,6 +80,17 @@ const { expectTemplate, waitForMeasurement, waitForCondition } = (0, test_1.crea
|
|
|
80
80
|
getByText("Close").click();
|
|
81
81
|
await expectTemplate(handle.current, "236.96875px 10px 251.03125px");
|
|
82
82
|
});
|
|
83
|
+
(0, vitest_1.test)("Complex Conditional Panels", async () => {
|
|
84
|
+
const handle = { current: null };
|
|
85
|
+
const { getByText } = (0, react_2.render)(react_1.default.createElement("div", { style: { width: 800 } },
|
|
86
|
+
react_1.default.createElement(ReactWindowSplitter_stories_js_1.Admin, { handle: handle })));
|
|
87
|
+
await waitForMeasurement(handle.current);
|
|
88
|
+
await expectTemplate(handle.current, "240px 3px 277px 3px 277px");
|
|
89
|
+
getByText("Show traces").click();
|
|
90
|
+
await expectTemplate(handle.current, "594px 3px 100px 3px 100px");
|
|
91
|
+
getByText("Hide traces").click();
|
|
92
|
+
await expectTemplate(handle.current, "200px 3px 330px 3px 264px");
|
|
93
|
+
});
|
|
83
94
|
(0, vitest_1.test)("Dynamic constraints", async () => {
|
|
84
95
|
const handle = { current: null };
|
|
85
96
|
const { getByText } = (0, react_2.render)(react_1.default.createElement("div", { style: { width: 1000 } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.test.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { test, expect, describe, vi } from \"vitest\";\nimport { cleanup, fireEvent, render, waitFor } from \"@testing-library/react\";\nimport * as Cookies from \"tiny-cookie\";\n\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport {\n Autosave,\n AutosaveCollapsible,\n Collapsible,\n ConditionalPanel,\n Simple,\n VerticalLayout,\n DynamicConstraints,\n} from \"./ReactWindowSplitter.stories.js\";\nimport { PanelResizer, PanelGroup, Panel } from \"./ReactWindowSplitter.js\";\nimport { createTestUtils, dragHandle } from \"@window-splitter/interface/test\";\n\nconst { expectTemplate, waitForMeasurement, waitForCondition } =\n createTestUtils({ waitFor });\n\ntest(\"horizontal layout\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <Simple handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(getByText(\"Panel 1\")).toBeInTheDocument();\n expect(getByText(\"Panel 2\")).toBeInTheDocument();\n\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n // Should respect the min\n await dragHandle({ delta: 300 });\n await expectTemplate(handle.current, \"388px 10px 100px\");\n});\n\ntest(\"vertical layout\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <VerticalLayout handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(getByText(\"top\")).toBeInTheDocument();\n expect(getByText(\"middle\")).toBeInTheDocument();\n expect(getByText(\"bottom\")).toBeInTheDocument();\n\n await expectTemplate(handle.current, \"96px 10px 108px 10px 96px\");\n\n // Should respect the min\n await dragHandle({ delta: 100, orientation: \"vertical\" });\n await expectTemplate(handle.current, \"172px 10px 64px 10px 64px\");\n});\n\ntest(\"Conditional Panels\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <ConditionalPanel handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n getByText(\"Expand\").click();\n await expectTemplate(\n handle.current,\n \"236.953125px 10px 141.046875px 10px 100px\"\n );\n\n getByText(\"Close\").click();\n await expectTemplate(handle.current, \"236.96875px 10px 251.03125px\");\n});\n\ntest(\"Dynamic constraints\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 1000 }}>\n <DynamicConstraints handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"100px 10px 178px 10px 700px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle.current, \"500px 10px 178px 10px 300px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle.current, \"400px 10px 178px 10px 400px\");\n});\n\ndescribe(\"Autosave\", () => {\n test(\"localStorage\", async () => {\n localStorage.clear();\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Autosave handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle.current, \"342px 10px 146px\");\n\n await waitForCondition(() =>\n Boolean(localStorage.getItem(\"autosave-example\"))\n );\n const obj = JSON.parse(localStorage.getItem(\"autosave-example\") || \"{}\");\n expect(obj.items).toMatchSnapshot();\n });\n\n test(\"callback\", async () => {\n localStorage.clear();\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n const spy = vi.fn();\n\n render(\n <div style={{ width: 500 }}>\n <AutosaveCollapsible handle={handle} onCollapseChange={spy} />\n </div>\n );\n\n await dragHandle({ delta: -200 });\n await expectTemplate(handle.current, \"100px 10px 388px\");\n expect(spy).toHaveBeenCalledWith(true);\n\n cleanup();\n\n render(\n <div style={{ width: 500 }}>\n <AutosaveCollapsible handle={handle} onCollapseChange={spy} />\n </div>\n );\n\n await expectTemplate(handle.current, \"100px 10px 388px\");\n await dragHandle({ delta: 200 });\n expect(spy).toHaveBeenCalledWith(false);\n });\n\n test(\"cookie\", async () => {\n // clear cookies\n document.cookie = \"test=; expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <PanelGroup\n handle={handle}\n orientation=\"horizontal\"\n autosaveId=\"autosave-cookie-example\"\n autosaveStrategy=\"cookie\"\n style={{ height: 200 }}\n >\n <Panel id=\"panel1\">1</Panel>\n <PanelResizer\n id=\"resizer1\"\n size=\"10px\"\n style={{ background: \"red\" }}\n />\n <Panel id=\"panel2\">2</Panel>\n </PanelGroup>\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"245px 10px 245px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle.current, \"343px 10px 147px\");\n\n await waitForCondition(() =>\n document.cookie.includes(\"autosave-cookie-example\")\n );\n\n expect(document.cookie).toMatchSnapshot();\n\n const snapshot = Cookies.get(\"autosave-cookie-example\");\n\n cleanup();\n\n render(\n <div style={{ width: 500 }}>\n <PanelGroup\n handle={handle}\n orientation=\"horizontal\"\n autosaveId=\"autosave-cookie-example\"\n autosaveStrategy=\"cookie\"\n style={{ height: 200 }}\n snapshot={snapshot ? JSON.parse(snapshot) : undefined}\n >\n <Panel id=\"panel1\">1</Panel>\n <PanelResizer\n id=\"resizer1\"\n size=\"10px\"\n style={{ background: \"red\" }}\n />\n <Panel id=\"panel2\">2</Panel>\n </PanelGroup>\n </div>\n );\n\n await expectTemplate(handle.current, \"343px 10px 147px\");\n });\n});\n\ntest(\"Keyboard interactions with collapsed panels\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const rightHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n render(\n <div style={{ width: 500 }}>\n <Collapsible handle={handle} rightPanelHandle={rightHandle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"209px 10px 209px 10px 60px\");\n\n const resizer2 = document.getElementById(\"resizer-2\")!;\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.015625px 10px 167px 10px 101.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n await expectTemplate(\n handle.current,\n \"209.015625px 10px 163px 10px 105.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\", shiftKey: true });\n await expectTemplate(\n handle.current,\n \"209.03125px 10px 147.984375px 10px 120.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.03125px 10px 208.96875px 10px 60px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.046875px 10px 144.9375px 10px 124.015625px\"\n );\n});\n\ndescribe(\"imperative panel API\", async () => {\n test(\"panel group\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Collapsible handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(handle.current.getPercentageSizes()).toMatchInlineSnapshot(`\n [\n 0.5,\n 0.020080321285140562,\n 0.5,\n 0.020080321285140562,\n 0.12048192771084337,\n ]\n `);\n\n expect(handle.current.getPixelSizes()).toMatchInlineSnapshot(`\n [\n 209,\n 10,\n 209,\n 10,\n 60,\n ]\n `);\n\n await expectTemplate(handle.current, \"209px 10px 209px 10px 60px\");\n });\n\n test(\"panel\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const rightHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n const leftHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Collapsible\n handle={handle}\n leftPanelHandle={leftHandle}\n rightPanelHandle={rightHandle}\n />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(rightHandle.current.isCollapsed()).toBe(true);\n expect(rightHandle.current.isExpanded()).toBe(false);\n\n rightHandle.current.expand();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle.current.isCollapsed()).toBe(false);\n expect(rightHandle.current.isExpanded()).toBe(true);\n\n rightHandle.current.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle.current.isCollapsed()).toBe(true);\n expect(rightHandle.current.isExpanded()).toBe(false);\n\n // Test the non controlled version\n\n expect(leftHandle.current.isCollapsed()).toBe(false);\n expect(leftHandle.current.isExpanded()).toBe(true);\n\n leftHandle.current.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(leftHandle.current.isCollapsed()).toBe(true);\n expect(leftHandle.current.isExpanded()).toBe(false);\n expect(rightHandle.current.getPercentageSize()).toBe(\n leftHandle.current.getPercentageSize()\n );\n expect(rightHandle.current.getPixelSize()).toBe(\n leftHandle.current.getPixelSize()\n );\n\n leftHandle.current.expand();\n await new Promise((resolve) => setTimeout(resolve, 5000));\n\n expect(leftHandle.current.isCollapsed()).toBe(false);\n expect(leftHandle.current.isExpanded()).toBe(true);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.test.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { test, expect, describe, vi } from \"vitest\";\nimport { cleanup, fireEvent, render, waitFor } from \"@testing-library/react\";\nimport * as Cookies from \"tiny-cookie\";\n\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport {\n Autosave,\n AutosaveCollapsible,\n Collapsible,\n ConditionalPanel,\n Simple,\n VerticalLayout,\n DynamicConstraints,\n Admin,\n} from \"./ReactWindowSplitter.stories.js\";\nimport { PanelResizer, PanelGroup, Panel } from \"./ReactWindowSplitter.js\";\nimport { createTestUtils, dragHandle } from \"@window-splitter/interface/test\";\n\nconst { expectTemplate, waitForMeasurement, waitForCondition } =\n createTestUtils({ waitFor });\n\ntest(\"horizontal layout\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <Simple handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(getByText(\"Panel 1\")).toBeInTheDocument();\n expect(getByText(\"Panel 2\")).toBeInTheDocument();\n\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n // Should respect the min\n await dragHandle({ delta: 300 });\n await expectTemplate(handle.current, \"388px 10px 100px\");\n});\n\ntest(\"vertical layout\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <VerticalLayout handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(getByText(\"top\")).toBeInTheDocument();\n expect(getByText(\"middle\")).toBeInTheDocument();\n expect(getByText(\"bottom\")).toBeInTheDocument();\n\n await expectTemplate(handle.current, \"96px 10px 108px 10px 96px\");\n\n // Should respect the min\n await dragHandle({ delta: 100, orientation: \"vertical\" });\n await expectTemplate(handle.current, \"172px 10px 64px 10px 64px\");\n});\n\ntest(\"Conditional Panels\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 500 }}>\n <ConditionalPanel handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n getByText(\"Expand\").click();\n await expectTemplate(\n handle.current,\n \"236.953125px 10px 141.046875px 10px 100px\"\n );\n\n getByText(\"Close\").click();\n await expectTemplate(handle.current, \"236.96875px 10px 251.03125px\");\n});\n\ntest(\"Complex Conditional Panels\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 800 }}>\n <Admin handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"240px 3px 277px 3px 277px\");\n\n getByText(\"Show traces\").click();\n await expectTemplate(handle.current, \"594px 3px 100px 3px 100px\");\n\n getByText(\"Hide traces\").click();\n await expectTemplate(handle.current, \"200px 3px 330px 3px 264px\");\n});\n\ntest(\"Dynamic constraints\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const { getByText } = render(\n <div style={{ width: 1000 }}>\n <DynamicConstraints handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"100px 10px 178px 10px 700px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle.current, \"500px 10px 178px 10px 300px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle.current, \"400px 10px 178px 10px 400px\");\n});\n\ndescribe(\"Autosave\", () => {\n test(\"localStorage\", async () => {\n localStorage.clear();\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Autosave handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"244px 10px 244px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle.current, \"342px 10px 146px\");\n\n await waitForCondition(() =>\n Boolean(localStorage.getItem(\"autosave-example\"))\n );\n const obj = JSON.parse(localStorage.getItem(\"autosave-example\") || \"{}\");\n expect(obj.items).toMatchSnapshot();\n });\n\n test(\"callback\", async () => {\n localStorage.clear();\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n const spy = vi.fn();\n\n render(\n <div style={{ width: 500 }}>\n <AutosaveCollapsible handle={handle} onCollapseChange={spy} />\n </div>\n );\n\n await dragHandle({ delta: -200 });\n await expectTemplate(handle.current, \"100px 10px 388px\");\n expect(spy).toHaveBeenCalledWith(true);\n\n cleanup();\n\n render(\n <div style={{ width: 500 }}>\n <AutosaveCollapsible handle={handle} onCollapseChange={spy} />\n </div>\n );\n\n await expectTemplate(handle.current, \"100px 10px 388px\");\n await dragHandle({ delta: 200 });\n expect(spy).toHaveBeenCalledWith(false);\n });\n\n test(\"cookie\", async () => {\n // clear cookies\n document.cookie = \"test=; expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <PanelGroup\n handle={handle}\n orientation=\"horizontal\"\n autosaveId=\"autosave-cookie-example\"\n autosaveStrategy=\"cookie\"\n style={{ height: 200 }}\n >\n <Panel id=\"panel1\">1</Panel>\n <PanelResizer\n id=\"resizer1\"\n size=\"10px\"\n style={{ background: \"red\" }}\n />\n <Panel id=\"panel2\">2</Panel>\n </PanelGroup>\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"245px 10px 245px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle.current, \"343px 10px 147px\");\n\n await waitForCondition(() =>\n document.cookie.includes(\"autosave-cookie-example\")\n );\n\n expect(document.cookie).toMatchSnapshot();\n\n const snapshot = Cookies.get(\"autosave-cookie-example\");\n\n cleanup();\n\n render(\n <div style={{ width: 500 }}>\n <PanelGroup\n handle={handle}\n orientation=\"horizontal\"\n autosaveId=\"autosave-cookie-example\"\n autosaveStrategy=\"cookie\"\n style={{ height: 200 }}\n snapshot={snapshot ? JSON.parse(snapshot) : undefined}\n >\n <Panel id=\"panel1\">1</Panel>\n <PanelResizer\n id=\"resizer1\"\n size=\"10px\"\n style={{ background: \"red\" }}\n />\n <Panel id=\"panel2\">2</Panel>\n </PanelGroup>\n </div>\n );\n\n await expectTemplate(handle.current, \"343px 10px 147px\");\n });\n});\n\ntest(\"Keyboard interactions with collapsed panels\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const rightHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n render(\n <div style={{ width: 500 }}>\n <Collapsible handle={handle} rightPanelHandle={rightHandle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n await expectTemplate(handle.current, \"209px 10px 209px 10px 60px\");\n\n const resizer2 = document.getElementById(\"resizer-2\")!;\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.015625px 10px 167px 10px 101.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\" });\n await expectTemplate(\n handle.current,\n \"209.015625px 10px 163px 10px 105.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\", shiftKey: true });\n await expectTemplate(\n handle.current,\n \"209.03125px 10px 147.984375px 10px 120.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.03125px 10px 208.96875px 10px 60px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209.046875px 10px 144.9375px 10px 124.015625px\"\n );\n});\n\ndescribe(\"imperative panel API\", async () => {\n test(\"panel group\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Collapsible handle={handle} />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(handle.current.getPercentageSizes()).toMatchInlineSnapshot(`\n [\n 0.5,\n 0.020080321285140562,\n 0.5,\n 0.020080321285140562,\n 0.12048192771084337,\n ]\n `);\n\n expect(handle.current.getPixelSizes()).toMatchInlineSnapshot(`\n [\n 209,\n 10,\n 209,\n 10,\n 60,\n ]\n `);\n\n await expectTemplate(handle.current, \"209px 10px 209px 10px 60px\");\n });\n\n test(\"panel\", async () => {\n const handle = { current: null } as unknown as {\n current: PanelGroupHandle;\n };\n const rightHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n const leftHandle = { current: null } as unknown as {\n current: PanelHandle;\n };\n\n render(\n <div style={{ width: 500 }}>\n <Collapsible\n handle={handle}\n leftPanelHandle={leftHandle}\n rightPanelHandle={rightHandle}\n />\n </div>\n );\n\n await waitForMeasurement(handle.current);\n\n expect(rightHandle.current.isCollapsed()).toBe(true);\n expect(rightHandle.current.isExpanded()).toBe(false);\n\n rightHandle.current.expand();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle.current.isCollapsed()).toBe(false);\n expect(rightHandle.current.isExpanded()).toBe(true);\n\n rightHandle.current.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle.current.isCollapsed()).toBe(true);\n expect(rightHandle.current.isExpanded()).toBe(false);\n\n // Test the non controlled version\n\n expect(leftHandle.current.isCollapsed()).toBe(false);\n expect(leftHandle.current.isExpanded()).toBe(true);\n\n leftHandle.current.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(leftHandle.current.isCollapsed()).toBe(true);\n expect(leftHandle.current.isExpanded()).toBe(false);\n expect(rightHandle.current.getPercentageSize()).toBe(\n leftHandle.current.getPercentageSize()\n );\n expect(rightHandle.current.getPixelSize()).toBe(\n leftHandle.current.getPixelSize()\n );\n\n leftHandle.current.expand();\n await new Promise((resolve) => setTimeout(resolve, 5000));\n\n expect(leftHandle.current.isCollapsed()).toBe(false);\n expect(leftHandle.current.isExpanded()).toBe(true);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;AAgJf,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AA6JD,mEAAmE;AACnE,eAAO,MAAM,UAAU,wFAoBtB,CAAC;AA4KF,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,eAAO,MAAM,KAAK,mFAqEjB,CAAC;AAuIF,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa,GAAG,QAAQ,GAAG,WAAW,CACvC;CAAG;AAER,+CAA+C;AAC/C,eAAO,MAAM,YAAY,0FA4BxB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { getPanelDomAttributes, getPanelResizerDomAttributes, measureGroupChildren, mergeAttributes, } from "@window-splitter/interface";
|
|
3
3
|
import React, { useEffect, useImperativeHandle, createContext, useRef, useState, useMemo, useContext, } from "react";
|
|
4
|
-
import { buildTemplate, getCollapsiblePanelForHandleId, getGroupSize, getPanelWithId, groupMachine, initializePanel, isPanelData, parseUnit, prepareItems, prepareSnapshot, getPanelGroupPixelSizes, getPanelGroupPercentageSizes, getPanelPixelSize, getPanelPercentageSize, getCursor, haveConstraintsChangedForPanel, haveConstraintsChangedForPanelHandle, initializePanelHandleData, } from "@window-splitter/state";
|
|
4
|
+
import { buildTemplate, getCollapsiblePanelForHandleId, getGroupSize, getPanelWithId, groupMachine, initializePanel, isPanelData, parseUnit, prepareItems, prepareSnapshot, getPanelGroupPixelSizes, getPanelGroupPercentageSizes, getPanelPixelSize, getPanelPercentageSize, getCursor, haveConstraintsChangedForPanel, haveConstraintsChangedForPanelHandle, initializePanelHandleData, isPanelHandle, } from "@window-splitter/state";
|
|
5
5
|
import { useEffectEvent, useId, useLayoutEffect, mergeRefs, } from "@react-aria/utils";
|
|
6
6
|
import { useIndex, useIndexedChildren } from "./useIndexedChildren.js";
|
|
7
7
|
import { useMove } from "./useMove.js";
|
|
@@ -34,15 +34,15 @@ const GroupMachine = {
|
|
|
34
34
|
return ref;
|
|
35
35
|
},
|
|
36
36
|
Provider: ({ input, children, }) => {
|
|
37
|
-
const [
|
|
37
|
+
const [initialValue, send, state] = useMemo(() => groupMachine(input, (value) => {
|
|
38
38
|
currentContextRef.current = value;
|
|
39
39
|
setCurrentValue({ ...value });
|
|
40
40
|
}),
|
|
41
41
|
// We only want this to run once, we dont care about changes to the input
|
|
42
42
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
43
|
[]);
|
|
44
|
-
const currentContextRef = useRef(
|
|
45
|
-
const [currentValue, setCurrentValue] = useState(
|
|
44
|
+
const currentContextRef = useRef(initialValue);
|
|
45
|
+
const [currentValue, setCurrentValue] = useState(initialValue);
|
|
46
46
|
useEffect(() => {
|
|
47
47
|
send({ type: "unlockGroup" });
|
|
48
48
|
return () => {
|
|
@@ -86,7 +86,13 @@ function useGroupItem(itemArg) {
|
|
|
86
86
|
}
|
|
87
87
|
// The way this hooks is called is never conditional so the usage here is fine
|
|
88
88
|
/* eslint-disable react-hooks/rules-of-hooks */
|
|
89
|
-
const currentItem = GroupMachine.useSelector(({ context }) =>
|
|
89
|
+
const currentItem = GroupMachine.useSelector(({ context }) => {
|
|
90
|
+
const itemAtIndex = context.items[index];
|
|
91
|
+
if (itemAtIndex && itemAtIndex.id === item.id) {
|
|
92
|
+
return itemAtIndex;
|
|
93
|
+
}
|
|
94
|
+
return context.items[index];
|
|
95
|
+
});
|
|
90
96
|
const { send } = GroupMachine.useActorRef();
|
|
91
97
|
const machineRef = GroupMachine.useContextRef();
|
|
92
98
|
const onCollapseChangeRef = isPanelData(itemArg)
|
|
@@ -154,12 +160,23 @@ function useGroupItem(itemArg) {
|
|
|
154
160
|
};
|
|
155
161
|
}, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);
|
|
156
162
|
// And unregister after layout so we can tell if the element was actually removed.
|
|
157
|
-
React.useEffect(() =>
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
+
React.useEffect(() => onUnmountRef.current, [currentItem?.id]);
|
|
164
|
+
// If an item index updates we need to update the state machine
|
|
165
|
+
const indexId = `${index}-${itemArg.id || currentItem?.id || item.id}`;
|
|
166
|
+
const lastIndexId = useRef(indexId);
|
|
167
|
+
const onUpdateIndex = useEffectEvent(() => {
|
|
168
|
+
send({
|
|
169
|
+
type: "updateItemIndex",
|
|
170
|
+
itemId: itemArg.id || currentItem?.id || item.id,
|
|
171
|
+
index,
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
React.useLayoutEffect(() => {
|
|
175
|
+
if (lastIndexId.current !== indexId) {
|
|
176
|
+
onUpdateIndex();
|
|
177
|
+
}
|
|
178
|
+
lastIndexId.current = indexId;
|
|
179
|
+
}, [indexId, onUpdateIndex]);
|
|
163
180
|
return currentItem || item;
|
|
164
181
|
/* eslint-enable react-hooks/rules-of-hooks */
|
|
165
182
|
}
|
|
@@ -357,12 +374,17 @@ const PanelVisible = React.forwardRef(function PanelVisible({ collapsible = fals
|
|
|
357
374
|
if (context.items.length === 0) {
|
|
358
375
|
return;
|
|
359
376
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
377
|
+
try {
|
|
378
|
+
const p = getPanelWithId(context, panelId);
|
|
379
|
+
if (collapsed === true && !p.collapsed) {
|
|
380
|
+
send({ type: "collapsePanel", panelId, controlled: true });
|
|
381
|
+
}
|
|
382
|
+
else if (collapsed === false && p.collapsed) {
|
|
383
|
+
send({ type: "expandPanel", panelId, controlled: true });
|
|
384
|
+
}
|
|
363
385
|
}
|
|
364
|
-
|
|
365
|
-
|
|
386
|
+
catch {
|
|
387
|
+
// with conditional panels the panel might not be registered yet
|
|
366
388
|
}
|
|
367
389
|
}
|
|
368
390
|
}, [send, collapsed, panelId, machineRef]);
|
|
@@ -421,20 +443,26 @@ export const PanelResizer = React.forwardRef(function PanelResizer(props, ref) {
|
|
|
421
443
|
size: parseUnit(size),
|
|
422
444
|
id: props.id,
|
|
423
445
|
}), [size, props.id]);
|
|
424
|
-
useGroupItem(data);
|
|
446
|
+
const { id: handleId } = useGroupItem(data);
|
|
425
447
|
if (isPrerender) {
|
|
426
448
|
return null;
|
|
427
449
|
}
|
|
428
|
-
return React.createElement(PanelResizerVisible, { ref: ref, panelHandleProp: data, ...props });
|
|
450
|
+
return (React.createElement(PanelResizerVisible, { ref: ref, panelHandleProp: data, ...props, handleId: handleId }));
|
|
429
451
|
});
|
|
430
|
-
const PanelResizerVisible = React.forwardRef(function PanelResizerVisible({ size = "0px", disabled, onDragStart, onDrag, onDragEnd, panelHandleProp, ...props }, outerRef) {
|
|
452
|
+
const PanelResizerVisible = React.forwardRef(function PanelResizerVisible({ size = "0px", disabled, onDragStart, onDrag, onDragEnd, panelHandleProp, handleId: handleIdProp, ...props }, outerRef) {
|
|
431
453
|
const innerRef = React.useRef(null);
|
|
432
454
|
const ref = mergeRefs(outerRef, innerRef);
|
|
433
455
|
const unit = parseUnit(size);
|
|
434
456
|
const { send } = GroupMachine.useActorRef();
|
|
435
457
|
const { index } = useIndex();
|
|
436
|
-
const
|
|
437
|
-
|
|
458
|
+
const panelHandle = GroupMachine.useSelector(({ context }) => {
|
|
459
|
+
const item = context.items.find((i) => i.id === handleIdProp) || context.items[index];
|
|
460
|
+
if (item && isPanelHandle(item)) {
|
|
461
|
+
return item;
|
|
462
|
+
}
|
|
463
|
+
return undefined;
|
|
464
|
+
});
|
|
465
|
+
const handleId = panelHandle?.id || "";
|
|
438
466
|
const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {
|
|
439
467
|
const panel = context.items[index - 1];
|
|
440
468
|
if (!panel)
|