@window-splitter/react 1.0.2 → 1.1.1--canary.9d2f98a.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 \"209px 10px 168.953125px 10px 100.03125px\"\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 \"209px 10px 164.96875px 10px 104.03125px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\", shiftKey: true });\n await expectTemplate(\n handle.current,\n \"209px 10px 149.96875px 10px 119.03125px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle.current, \"209px 10px 209px 10px 60px\");\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle.current,\n \"209px 10px 149.96875px 10px 119.03125px\"\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} 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"]}
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.0.2",
5
+ "version": "1.1.1--canary.9d2f98a.0",
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.0.2",
39
+ "@internal/eslint-config": "1.1.1--canary.9d2f98a.0",
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.0.2",
66
- "@window-splitter/state": "1.0.2"
65
+ "@window-splitter/interface": "1.1.1--canary.9d2f98a.0",
66
+ "@window-splitter/state": "1.1.1--canary.9d2f98a.0"
67
67
  },
68
68
  "tshy": {
69
69
  "exclude": [
@@ -98,5 +98,5 @@
98
98
  "resizable",
99
99
  "window"
100
100
  ],
101
- "gitHead": "c9d2802d3c8ff3df8d7911b417130ab118ada6c1"
101
+ "gitHead": "9d2f98a3d6226018c598018cea829d6412b60cd0"
102
102
  }
@@ -1,4 +1,4 @@
1
- import React, { useMemo } from "react";
1
+ import React, { useCallback, useMemo, useRef, useState } from "react";
2
2
  import { spring } from "framer-motion";
3
3
  import {
4
4
  PanelGroup,
@@ -9,6 +9,7 @@ import {
9
9
  PanelResizerProps,
10
10
  } from "./ReactWindowSplitter.js";
11
11
  import { PanelGroupHandle, PanelHandle } from "@window-splitter/interface";
12
+ import { PercentUnit } from "@window-splitter/state";
12
13
 
13
14
  export default {
14
15
  title: "Components/React",
@@ -703,3 +704,209 @@ export function StaticAtRest({
703
704
  </StyledPanelGroup>
704
705
  );
705
706
  }
707
+
708
+ function Flex({
709
+ direction = "row",
710
+ gap = "0x",
711
+ align = "start",
712
+ justify = "start",
713
+ ...props
714
+ }: React.HTMLAttributes<HTMLDivElement> & {
715
+ direction?: "row" | "column";
716
+ gap?: string;
717
+ align?: "center" | "start" | "end";
718
+ justify?: "center" | "start" | "end" | "between";
719
+ }) {
720
+ return (
721
+ <div
722
+ style={{
723
+ display: "flex",
724
+ flexDirection: direction,
725
+ gap,
726
+ alignItems: align,
727
+ justifyContent: justify === "between" ? "space-between" : justify,
728
+ }}
729
+ {...props}
730
+ />
731
+ );
732
+ }
733
+
734
+ export function SiblingCollapsiblePanels() {
735
+ const sidebarHandle = useRef<PanelHandle>(null);
736
+ const editorHandle = useRef<PanelHandle>(null);
737
+ const previewHandle = useRef<PanelHandle>(null);
738
+ const [editModeSize, setEditModeSize] = useState<number[] | undefined>();
739
+ const panelGroupRef = useRef<PanelGroupHandle>(null);
740
+ const [isEditMode, setIsEditMode] = useState(true);
741
+
742
+ const handleEditModeToggle = useCallback(async () => {
743
+ const newMode = !isEditMode;
744
+ setIsEditMode(newMode);
745
+
746
+ if (!newMode) {
747
+ setEditModeSize(panelGroupRef.current?.getPercentageSizes());
748
+
749
+ await sidebarHandle.current?.collapse();
750
+ await editorHandle.current?.collapse();
751
+ await previewHandle.current?.expand();
752
+ } else {
753
+ if (editModeSize) {
754
+ panelGroupRef.current?.setSizes(
755
+ editModeSize.map((i) => `${i * 100}%` as PercentUnit)
756
+ );
757
+ }
758
+
759
+ await sidebarHandle.current?.expand();
760
+ await editorHandle.current?.expand();
761
+ await previewHandle.current?.expand();
762
+ }
763
+ }, [editModeSize, isEditMode]);
764
+
765
+ const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);
766
+ const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);
767
+ const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);
768
+
769
+ const handleSidebarCollapseChange = useCallback(
770
+ (isCollapsed: boolean) => {
771
+ if (isEditMode) {
772
+ setIsSidebarCollapsed(isCollapsed);
773
+ }
774
+ },
775
+ [isEditMode]
776
+ );
777
+ const handleEditorCollapseChange = useCallback(
778
+ (isCollapsed: boolean) => {
779
+ if (isEditMode) {
780
+ setIsEditorCollapsed(isCollapsed);
781
+ }
782
+ },
783
+ [isEditMode]
784
+ );
785
+ const handlePreviewCollapseChange = useCallback(
786
+ (isCollapsed: boolean) => {
787
+ if (isEditMode) {
788
+ setIsPreviewCollapsed(isCollapsed);
789
+ }
790
+ },
791
+ [isEditMode]
792
+ );
793
+
794
+ return (
795
+ <Flex direction="column" style={{ height: "90vh", width: "800px" }}>
796
+ <StyledPanelGroup handle={panelGroupRef}>
797
+ <StyledPanel
798
+ handle={sidebarHandle}
799
+ id="sidebar"
800
+ min="100px"
801
+ default="200px"
802
+ collapsible
803
+ collapsed={isSidebarCollapsed}
804
+ // collapseAnimation="ease-in-out"
805
+ onCollapseChange={handleSidebarCollapseChange}
806
+ >
807
+ <Flex
808
+ align="center"
809
+ justify="center"
810
+ style={{ height: "100%", width: "100%" }}
811
+ >
812
+ Sidebar
813
+ </Flex>
814
+ </StyledPanel>
815
+ <StyledResizer id="resizer-1" />
816
+ <StyledPanel
817
+ handle={editorHandle}
818
+ id="editor"
819
+ min="100px"
820
+ default="200px"
821
+ collapsible
822
+ collapsed={isEditorCollapsed}
823
+ // collapseAnimation="ease-in-out"
824
+ onCollapseChange={handleEditorCollapseChange}
825
+ >
826
+ <Flex
827
+ align="center"
828
+ justify="center"
829
+ style={{ height: "100%", width: "100%" }}
830
+ >
831
+ Editor
832
+ </Flex>
833
+ </StyledPanel>
834
+ <StyledResizer id="resizer-2" />
835
+ <StyledPanel
836
+ handle={previewHandle}
837
+ id="preview"
838
+ min="100px"
839
+ collapsible
840
+ collapsed={isPreviewCollapsed}
841
+ // collapseAnimation="ease-in-out"
842
+ onCollapseChange={handlePreviewCollapseChange}
843
+ >
844
+ <Flex
845
+ align="center"
846
+ justify="center"
847
+ style={{ height: "100%", width: "100%" }}
848
+ >
849
+ Preview
850
+ </Flex>
851
+ </StyledPanel>
852
+ </StyledPanelGroup>
853
+ <Flex align="center" justify="between">
854
+ <Flex gap="2px">
855
+ <button
856
+ disabled={!isEditMode}
857
+ type="button"
858
+ onClick={() =>
859
+ setIsSidebarCollapsed(
860
+ (prevSidebarCollapsed) => !prevSidebarCollapsed
861
+ )
862
+ }
863
+ style={{
864
+ backgroundColor: isSidebarCollapsed ? "blue" : undefined,
865
+ }}
866
+ >
867
+ {isSidebarCollapsed ? "Open sidebar" : "Close sidebar"}
868
+ </button>
869
+ <button
870
+ disabled={!isEditMode}
871
+ type="button"
872
+ onClick={() =>
873
+ setIsEditorCollapsed(
874
+ (prevEditorCollapsed) => !prevEditorCollapsed
875
+ )
876
+ }
877
+ style={{
878
+ backgroundColor: isEditorCollapsed ? "blue" : undefined,
879
+ }}
880
+ >
881
+ {isEditorCollapsed ? "Open editor" : "Close editor"}
882
+ </button>
883
+ <button
884
+ disabled={!isEditMode}
885
+ type="button"
886
+ onClick={() =>
887
+ setIsPreviewCollapsed(
888
+ (prevPreviewCollapsed) => !prevPreviewCollapsed
889
+ )
890
+ }
891
+ style={{
892
+ backgroundColor: isPreviewCollapsed ? "blue" : undefined,
893
+ }}
894
+ >
895
+ {isPreviewCollapsed ? "Open preview" : "Close preview"}
896
+ </button>
897
+ </Flex>
898
+ <Flex gap="8px">
899
+ <button
900
+ type="button"
901
+ onClick={handleEditModeToggle}
902
+ style={{
903
+ backgroundColor: isEditMode ? "blue" : undefined,
904
+ }}
905
+ >
906
+ Edit mode
907
+ </button>
908
+ </Flex>
909
+ </Flex>
910
+ </Flex>
911
+ );
912
+ }
@@ -255,7 +255,7 @@ test("Keyboard interactions with collapsed panels", async () => {
255
255
  fireEvent.keyDown(resizer2, { key: "Enter" });
256
256
  await expectTemplate(
257
257
  handle.current,
258
- "209px 10px 168.953125px 10px 100.03125px"
258
+ "209.015625px 10px 167px 10px 101.984375px"
259
259
  );
260
260
 
261
261
  fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
@@ -264,22 +264,25 @@ test("Keyboard interactions with collapsed panels", async () => {
264
264
  fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
265
265
  await expectTemplate(
266
266
  handle.current,
267
- "209px 10px 164.96875px 10px 104.03125px"
267
+ "209.015625px 10px 163px 10px 105.984375px"
268
268
  );
269
269
 
270
270
  fireEvent.keyDown(resizer2, { key: "ArrowLeft", shiftKey: true });
271
271
  await expectTemplate(
272
272
  handle.current,
273
- "209px 10px 149.96875px 10px 119.03125px"
273
+ "209.03125px 10px 147.984375px 10px 120.984375px"
274
274
  );
275
275
 
276
276
  fireEvent.keyDown(resizer2, { key: "Enter" });
277
- await expectTemplate(handle.current, "209px 10px 209px 10px 60px");
277
+ await expectTemplate(
278
+ handle.current,
279
+ "209.03125px 10px 208.96875px 10px 60px"
280
+ );
278
281
 
279
282
  fireEvent.keyDown(resizer2, { key: "Enter" });
280
283
  await expectTemplate(
281
284
  handle.current,
282
- "209px 10px 149.96875px 10px 119.03125px"
285
+ "209.046875px 10px 144.9375px 10px 124.015625px"
283
286
  );
284
287
  });
285
288
 
@@ -341,6 +341,7 @@ const PanelGroupImpl = React.forwardRef<
341
341
  autosaveStrategy = "localStorage",
342
342
  snapshot: snapshotProp,
343
343
  initialItems,
344
+ shiftAmount,
344
345
  ...props
345
346
  },
346
347
  ref
@@ -377,6 +378,7 @@ const PanelGroupImpl = React.forwardRef<
377
378
  groupId,
378
379
  items: initialItems.current,
379
380
  autosaveStrategy,
381
+ shiftAmount,
380
382
  ...(typeof snapshotMemo === "object" ? snapshotMemo : undefined),
381
383
  }}
382
384
  >
@@ -610,11 +612,11 @@ const PanelVisible = React.forwardRef<
610
612
  }
611
613
  });
612
614
 
613
- const contraintChanged =
615
+ const constraintChanged =
614
616
  panel && haveConstraintsChangedForPanel(panelProp, panel);
615
617
 
616
618
  const onConstraintChange = useEffectEvent(() => {
617
- if (contraintChanged) {
619
+ if (constraintChanged) {
618
620
  send({
619
621
  type: "updateConstraints",
620
622
  data: { ...panelProp, id: panel.id },
@@ -623,10 +625,10 @@ const PanelVisible = React.forwardRef<
623
625
  });
624
626
 
625
627
  React.useEffect(() => {
626
- if (contraintChanged) {
628
+ if (constraintChanged) {
627
629
  onConstraintChange();
628
630
  }
629
- }, [send, contraintChanged, onConstraintChange]);
631
+ }, [send, constraintChanged, onConstraintChange]);
630
632
 
631
633
  // For controlled collapse we track if the `collapse` prop changes
632
634
  // and update the state machine if it does.
@@ -653,16 +655,19 @@ const PanelVisible = React.forwardRef<
653
655
  useImperativeHandle(handle || fallbackHandleRef, () => {
654
656
  return {
655
657
  getId: () => panelId,
656
- collapse: () => {
658
+ collapse: async () => {
657
659
  if (collapsible) {
658
- // TODO: setting controlled here might be wrong
659
- send({ type: "collapsePanel", panelId, controlled: true });
660
+ await new Promise<void>((resolve) => {
661
+ send({ type: "collapsePanel", panelId, controlled: true, resolve });
662
+ });
660
663
  }
661
664
  },
662
665
  isCollapsed: () => Boolean(collapsible && panel?.collapsed),
663
- expand: () => {
666
+ expand: async () => {
664
667
  if (collapsible) {
665
- send({ type: "expandPanel", panelId, controlled: true });
668
+ await new Promise<void>((resolve) => {
669
+ send({ type: "expandPanel", panelId, controlled: true, resolve });
670
+ });
666
671
  }
667
672
  },
668
673
  isExpanded: () => Boolean(collapsible && !panel?.collapsed),
@@ -815,12 +820,12 @@ const PanelResizerVisible = React.forwardRef<
815
820
  },
816
821
  });
817
822
 
818
- const contraintChanged =
823
+ const constraintChanged =
819
824
  panelHandle &&
820
825
  haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);
821
826
 
822
827
  const onConstraintChange = useEffectEvent(() => {
823
- if (contraintChanged) {
828
+ if (constraintChanged) {
824
829
  send({
825
830
  type: "updateConstraints",
826
831
  data: { ...panelHandleProp, id: handleId },
@@ -829,10 +834,10 @@ const PanelResizerVisible = React.forwardRef<
829
834
  });
830
835
 
831
836
  React.useEffect(() => {
832
- if (contraintChanged) {
837
+ if (constraintChanged) {
833
838
  onConstraintChange();
834
839
  }
835
- }, [send, contraintChanged, onConstraintChange]);
840
+ }, [send, constraintChanged, onConstraintChange]);
836
841
 
837
842
  const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {
838
843
  if (e.key === "Enter" && collapsiblePanel) {
@@ -1,6 +1,6 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`Autosave > cookie 1`] = `"autosave-cookie-example=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A200%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A200%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel1%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%7D%2C%7B%22type%22%3A%22handle%22%2C%22size%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%2210%22%7D%2C%22id%22%3A%22resizer1%22%7D%2C%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel2%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-example%22%2C%22autosaveStrategy%22%3A%22cookie%22%7D"`;
3
+ exports[`Autosave > cookie 1`] = `"autosave-cookie-example=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A200%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A200%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel1%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%7D%2C%7B%22type%22%3A%22handle%22%2C%22size%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%2210%22%7D%2C%22id%22%3A%22resizer1%22%7D%2C%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel2%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-example%22%2C%22autosaveStrategy%22%3A%22cookie%22%2C%22shiftAmount%22%3A15%7D"`;
4
4
 
5
5
  exports[`Autosave > localStorage 1`] = `
6
6
  [