@window-splitter/react 1.1.1--canary.9d2f98a.0 → 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.
@@ -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"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@window-splitter/react",
4
4
  "sideEffects": false,
5
- "version": "1.1.1--canary.9d2f98a.0",
5
+ "version": "1.1.2",
6
6
  "description": "A WAI-ARIA compliant window splitter for React.",
7
7
  "homepage": "https://react-window-splitter-six.vercel.app",
8
8
  "repository": {
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@chromatic-com/storybook": "^1.6.1",
39
- "@internal/eslint-config": "1.1.1--canary.9d2f98a.0",
39
+ "@internal/eslint-config": "1.1.2",
40
40
  "@rsbuild/core": "^1.3.12",
41
41
  "@rsdoctor/rspack-plugin": "^1.0.2",
42
42
  "@storybook/react": "^8.2.9",
@@ -62,8 +62,8 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@react-aria/utils": "^3.28.2",
65
- "@window-splitter/interface": "1.1.1--canary.9d2f98a.0",
66
- "@window-splitter/state": "1.1.1--canary.9d2f98a.0"
65
+ "@window-splitter/interface": "1.1.2",
66
+ "@window-splitter/state": "1.1.2"
67
67
  },
68
68
  "tshy": {
69
69
  "exclude": [
@@ -98,5 +98,5 @@
98
98
  "resizable",
99
99
  "window"
100
100
  ],
101
- "gitHead": "9d2f98a3d6226018c598018cea829d6412b60cd0"
101
+ "gitHead": "d9d2440aa94cb486fa4334f69a7e4717926f3192"
102
102
  }
@@ -673,7 +673,7 @@ export function ConditionalPanelComplex() {
673
673
 
674
674
  export function WithDefaultWidth() {
675
675
  return (
676
- <PanelGroup style={{ height: "400px" }}>
676
+ <PanelGroup style={{ height: "400px" }} autosaveId="with-default-width">
677
677
  <Panel style={{ backgroundColor: "#333366" }} />
678
678
  <PanelResizer size="3px" />
679
679
  {/* I expected the right panel to be 100px wide */}
@@ -910,3 +910,71 @@ export function SiblingCollapsiblePanels() {
910
910
  </Flex>
911
911
  );
912
912
  }
913
+
914
+ export function Admin({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {
915
+ const [showTraces, setShowTraces] = useState(false);
916
+ const [chatCollapsed, setChatCollapsed] = useState(false);
917
+
918
+ return (
919
+ <>
920
+ <PanelGroup handle={handle} style={{ height: "calc(100vh - 100px)" }}>
921
+ {!showTraces && (
922
+ <>
923
+ <Panel
924
+ style={{ backgroundColor: "red" }}
925
+ min="200px"
926
+ max="240px"
927
+ id="sidebar"
928
+ >
929
+ <div>Sidebar</div>
930
+ </Panel>
931
+ <PanelResizer size="3px" id="sidebar-resizer" />
932
+ <Panel style={{ backgroundColor: "blue" }} min="250px" id="main">
933
+ <div>Main</div>
934
+ </Panel>
935
+ <PanelResizer size="3px" id="main-resizer" />
936
+ </>
937
+ )}
938
+
939
+ <Panel
940
+ style={{ backgroundColor: "#333366" }}
941
+ min="33%"
942
+ collapsible
943
+ collapsedSize="8px"
944
+ id="chat"
945
+ collapsed={chatCollapsed}
946
+ onCollapseChange={setChatCollapsed}
947
+ >
948
+ <div>Chat</div>
949
+ </Panel>
950
+
951
+ {showTraces && (
952
+ <>
953
+ <PanelResizer size="3px" id="details-resizer" />
954
+ <Panel
955
+ style={{ backgroundColor: "green" }}
956
+ default="33%"
957
+ min="100px"
958
+ id="details"
959
+ >
960
+ <div>Details</div>
961
+ </Panel>
962
+ <PanelResizer size="3px" id="traces-resizer" />
963
+ <Panel
964
+ style={{ backgroundColor: "yellow" }}
965
+ default="33%"
966
+ min="100px"
967
+ id="traces"
968
+ >
969
+ <div>Traces</div>
970
+ </Panel>
971
+ </>
972
+ )}
973
+ </PanelGroup>
974
+
975
+ <button type="button" onClick={() => setShowTraces(!showTraces)}>
976
+ {showTraces ? "Hide traces" : "Show traces"}
977
+ </button>
978
+ </>
979
+ );
980
+ }
@@ -12,6 +12,7 @@ import {
12
12
  Simple,
13
13
  VerticalLayout,
14
14
  DynamicConstraints,
15
+ Admin,
15
16
  } from "./ReactWindowSplitter.stories.js";
16
17
  import { PanelResizer, PanelGroup, Panel } from "./ReactWindowSplitter.js";
17
18
  import { createTestUtils, dragHandle } from "@window-splitter/interface/test";
@@ -87,6 +88,26 @@ test("Conditional Panels", async () => {
87
88
  await expectTemplate(handle.current, "236.96875px 10px 251.03125px");
88
89
  });
89
90
 
91
+ test("Complex Conditional Panels", async () => {
92
+ const handle = { current: null } as unknown as {
93
+ current: PanelGroupHandle;
94
+ };
95
+ const { getByText } = render(
96
+ <div style={{ width: 800 }}>
97
+ <Admin handle={handle} />
98
+ </div>
99
+ );
100
+
101
+ await waitForMeasurement(handle.current);
102
+ await expectTemplate(handle.current, "240px 3px 277px 3px 277px");
103
+
104
+ getByText("Show traces").click();
105
+ await expectTemplate(handle.current, "594px 3px 100px 3px 100px");
106
+
107
+ getByText("Hide traces").click();
108
+ await expectTemplate(handle.current, "200px 3px 330px 3px 264px");
109
+ });
110
+
90
111
  test("Dynamic constraints", async () => {
91
112
  const handle = { current: null } as unknown as {
92
113
  current: PanelGroupHandle;
@@ -48,6 +48,7 @@ import {
48
48
  GroupMachineEvent,
49
49
  State,
50
50
  initializePanelHandleData,
51
+ isPanelHandle,
51
52
  } from "@window-splitter/state";
52
53
  import {
53
54
  useEffectEvent,
@@ -106,7 +107,7 @@ const GroupMachine = {
106
107
  input: GroupMachineInput;
107
108
  children: React.ReactNode;
108
109
  }) => {
109
- const [intiialValue, send, state] = useMemo(
110
+ const [initialValue, send, state] = useMemo(
110
111
  () =>
111
112
  groupMachine(input, (value) => {
112
113
  currentContextRef.current = value;
@@ -116,8 +117,8 @@ const GroupMachine = {
116
117
  // eslint-disable-next-line react-hooks/exhaustive-deps
117
118
  []
118
119
  );
119
- const currentContextRef = useRef(intiialValue);
120
- const [currentValue, setCurrentValue] = useState(intiialValue);
120
+ const currentContextRef = useRef(initialValue);
121
+ const [currentValue, setCurrentValue] = useState(initialValue);
121
122
 
122
123
  useEffect(() => {
123
124
  send({ type: "unlockGroup" });
@@ -214,9 +215,13 @@ function useGroupItem<T extends Item>(
214
215
 
215
216
  // The way this hooks is called is never conditional so the usage here is fine
216
217
  /* eslint-disable react-hooks/rules-of-hooks */
217
- const currentItem = GroupMachine.useSelector(
218
- ({ context }) => context.items[index]
219
- ) as T;
218
+ const currentItem = GroupMachine.useSelector(({ context }) => {
219
+ const itemAtIndex = context.items[index];
220
+ if (itemAtIndex && itemAtIndex.id === item.id) {
221
+ return itemAtIndex;
222
+ }
223
+ return context.items[index];
224
+ }) as T | undefined;
220
225
  const { send } = GroupMachine.useActorRef();
221
226
  const machineRef = GroupMachine.useContextRef();
222
227
 
@@ -296,12 +301,25 @@ function useGroupItem<T extends Item>(
296
301
  }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);
297
302
 
298
303
  // And unregister after layout so we can tell if the element was actually removed.
299
- React.useEffect(() => {
300
- return () => {
301
- onUnmountRef.current?.();
302
- onUnmountRef.current = undefined;
303
- };
304
- }, []);
304
+ React.useEffect(() => onUnmountRef.current, [currentItem?.id]);
305
+
306
+ // If an item index updates we need to update the state machine
307
+ const indexId = `${index}-${itemArg.id || currentItem?.id || item.id}`;
308
+ const lastIndexId = useRef(indexId);
309
+ const onUpdateIndex = useEffectEvent(() => {
310
+ send({
311
+ type: "updateItemIndex",
312
+ itemId: itemArg.id || currentItem?.id || item.id,
313
+ index,
314
+ });
315
+ });
316
+ React.useLayoutEffect(() => {
317
+ if (lastIndexId.current !== indexId) {
318
+ onUpdateIndex();
319
+ }
320
+
321
+ lastIndexId.current = indexId;
322
+ }, [indexId, onUpdateIndex]);
305
323
 
306
324
  return currentItem || item;
307
325
  /* eslint-enable react-hooks/rules-of-hooks */
@@ -338,7 +356,7 @@ const PanelGroupImpl = React.forwardRef<
338
356
  >(function PanelGroupImpl(
339
357
  {
340
358
  autosaveId,
341
- autosaveStrategy = "localStorage",
359
+ autosaveStrategy = autosaveId ? "localStorage" : undefined,
342
360
  snapshot: snapshotProp,
343
361
  initialItems,
344
362
  shiftAmount,
@@ -640,12 +658,16 @@ const PanelVisible = React.forwardRef<
640
658
  return;
641
659
  }
642
660
 
643
- const p = getPanelWithId(context, panelId);
661
+ try {
662
+ const p = getPanelWithId(context, panelId);
644
663
 
645
- if (collapsed === true && !p.collapsed) {
646
- send({ type: "collapsePanel", panelId, controlled: true });
647
- } else if (collapsed === false && p.collapsed) {
648
- send({ type: "expandPanel", panelId, controlled: true });
664
+ if (collapsed === true && !p.collapsed) {
665
+ send({ type: "collapsePanel", panelId, controlled: true });
666
+ } else if (collapsed === false && p.collapsed) {
667
+ send({ type: "expandPanel", panelId, controlled: true });
668
+ }
669
+ } catch {
670
+ // with conditional panels the panel might not be registered yet
649
671
  }
650
672
  }
651
673
  }, [send, collapsed, panelId, machineRef]);
@@ -729,19 +751,29 @@ export const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(
729
751
  [size, props.id]
730
752
  );
731
753
 
732
- useGroupItem(data);
754
+ const { id: handleId } = useGroupItem(data);
733
755
 
734
756
  if (isPrerender) {
735
757
  return null;
736
758
  }
737
759
 
738
- return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;
760
+ return (
761
+ <PanelResizerVisible
762
+ ref={ref}
763
+ panelHandleProp={data}
764
+ {...props}
765
+ handleId={handleId}
766
+ />
767
+ );
739
768
  }
740
769
  );
741
770
 
742
771
  const PanelResizerVisible = React.forwardRef<
743
772
  HTMLDivElement,
744
- PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, "id"> }
773
+ PanelResizerProps & {
774
+ panelHandleProp: Omit<PanelHandleData, "id">;
775
+ handleId: string;
776
+ }
745
777
  >(function PanelResizerVisible(
746
778
  {
747
779
  size = "0px",
@@ -750,6 +782,7 @@ const PanelResizerVisible = React.forwardRef<
750
782
  onDrag,
751
783
  onDragEnd,
752
784
  panelHandleProp,
785
+ handleId: handleIdProp,
753
786
  ...props
754
787
  },
755
788
  outerRef
@@ -759,12 +792,17 @@ const PanelResizerVisible = React.forwardRef<
759
792
  const unit = parseUnit(size);
760
793
  const { send } = GroupMachine.useActorRef();
761
794
  const { index } = useIndex();
762
- const handleId = GroupMachine.useSelector(
763
- ({ context }) => context.items[index]?.id || ""
764
- );
765
- const panelHandle = GroupMachine.useSelector(
766
- ({ context }) => context.items[index] as PanelHandleData
767
- );
795
+ const panelHandle = GroupMachine.useSelector(({ context }) => {
796
+ const item =
797
+ context.items.find((i) => i.id === handleIdProp) || context.items[index];
798
+
799
+ if (item && isPanelHandle(item)) {
800
+ return item;
801
+ }
802
+
803
+ return undefined;
804
+ });
805
+ const handleId = panelHandle?.id || "";
768
806
  const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {
769
807
  const panel = context.items[index - 1];
770
808
  if (!panel) return undefined;