@window-splitter/solid 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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +17 -0
- package/dist/esm/SolidWIndowSplitter.d.ts.map +1 -1
- package/dist/esm/SolidWIndowSplitter.jsx +26 -8
- package/dist/esm/SolidWIndowSplitter.jsx.map +1 -1
- package/dist/esm/SolidWindowSplitter.test.jsx +4 -4
- package/dist/esm/SolidWindowSplitter.test.jsx.map +1 -1
- package/package.json +5 -5
- package/src/SolidWIndowSplitter.tsx +26 -6
- package/src/SolidWindowSplitter.test.tsx +7 -4
- package/src/__snapshots__/SolidWindowSplitter.test.tsx.snap +1 -1
- package/doctor-storybook.log +0 -29
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
# v1.1.0 (Mon May 26 2025)
|
|
2
|
+
|
|
3
|
+
#### 🚀 Enhancement
|
|
4
|
+
|
|
5
|
+
- Add "shiftAmount" prop [#64](https://github.com/hipstersmoothie/window-splitter/pull/64) ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
6
|
+
|
|
7
|
+
#### 🐛 Bug Fix
|
|
8
|
+
|
|
9
|
+
- update tests ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
10
|
+
- Add "shiftAmount" prop ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
11
|
+
|
|
12
|
+
#### Authors: 1
|
|
13
|
+
|
|
14
|
+
- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
1
18
|
# v0.8.7 (Sun May 11 2025)
|
|
2
19
|
|
|
3
20
|
#### 🐛 Bug Fix
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidWIndowSplitter.d.ts","sourceRoot":"","sources":["../../src/SolidWIndowSplitter.tsx"],"names":[],"mappings":"AAsBA,OAAO,EACL,QAAQ,EAQR,GAAG,EAIH,GAAG,EAEJ,MAAM,UAAU,CAAC;AAQlB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EAKxB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACvD,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"SolidWIndowSplitter.d.ts","sourceRoot":"","sources":["../../src/SolidWIndowSplitter.tsx"],"names":[],"mappings":"AAsBA,OAAO,EACL,QAAQ,EAQR,GAAG,EAIH,GAAG,EAEJ,MAAM,UAAU,CAAC;AAQlB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EAKxB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACvD,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA0JhD;AAgBD,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,EACrD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAChE,6CAA6C;IAC7C,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,eAoNtC;AAED,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAClC,aAAa,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjD;IACH,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,eAkMpD"}
|
|
@@ -9,6 +9,7 @@ export function PanelGroup(props) {
|
|
|
9
9
|
"autosaveStrategy",
|
|
10
10
|
"autosaveId",
|
|
11
11
|
"snapshot",
|
|
12
|
+
"shiftAmount",
|
|
12
13
|
]);
|
|
13
14
|
const [intiialValue, send, machineState, groupId] = createRoot(() => {
|
|
14
15
|
const defaultGroupId = `panel-group-${createUniqueId()}`;
|
|
@@ -32,6 +33,7 @@ export function PanelGroup(props) {
|
|
|
32
33
|
orientation,
|
|
33
34
|
groupId: groupIdInit,
|
|
34
35
|
autosaveStrategy: autosaveStrategy,
|
|
36
|
+
shiftAmount: props.shiftAmount,
|
|
35
37
|
...(snapshot ? prepareSnapshot(snapshot) : undefined),
|
|
36
38
|
}, (value) => {
|
|
37
39
|
setCurrentValue({ ...value });
|
|
@@ -239,16 +241,32 @@ export function Panel(props) {
|
|
|
239
241
|
}));
|
|
240
242
|
createRefContent(() => props.handle, () => ({
|
|
241
243
|
getId: () => panelId(),
|
|
242
|
-
collapse: () => {
|
|
243
|
-
if (
|
|
244
|
-
|
|
245
|
-
|
|
244
|
+
collapse: async () => {
|
|
245
|
+
if (panel().collapsible) {
|
|
246
|
+
// eslint-disable-next-line solid/reactivity
|
|
247
|
+
return await new Promise((resolve) => {
|
|
248
|
+
send?.({
|
|
249
|
+
type: "collapsePanel",
|
|
250
|
+
panelId: panelId(),
|
|
251
|
+
controlled: true,
|
|
252
|
+
resolve,
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
246
256
|
},
|
|
247
257
|
isCollapsed: () => Boolean(panel().collapsible && panel().collapsed),
|
|
248
|
-
expand: () => {
|
|
249
|
-
if (
|
|
250
|
-
|
|
251
|
-
|
|
258
|
+
expand: async () => {
|
|
259
|
+
if (panel().collapsible) {
|
|
260
|
+
// eslint-disable-next-line solid/reactivity
|
|
261
|
+
return await new Promise((resolve) => {
|
|
262
|
+
send?.({
|
|
263
|
+
type: "expandPanel",
|
|
264
|
+
panelId: panelId(),
|
|
265
|
+
controlled: true,
|
|
266
|
+
resolve,
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
}
|
|
252
270
|
},
|
|
253
271
|
isExpanded: () => Boolean(panel().collapsible && !panel().collapsed),
|
|
254
272
|
getPixelSize: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidWIndowSplitter.jsx","sourceRoot":"","sources":["../../src/SolidWIndowSplitter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getCursor,\n getGroupSize,\n getPanelGroupPercentageSizes,\n getPanelGroupPixelSizes,\n getPanelPercentageSize,\n getPanelPixelSize,\n groupMachine,\n GroupMachineContextValue,\n haveConstraintsChangedForPanel,\n haveConstraintsChangedForPanelHandle,\n initializePanel,\n initializePanelHandleData,\n isPanelData,\n isPanelHandle,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n} from \"@window-splitter/state\";\nimport {\n Accessor,\n children,\n createDeferred,\n createEffect,\n createRenderEffect,\n createRoot,\n createSignal,\n createUniqueId,\n JSX,\n on,\n onCleanup,\n onMount,\n Ref,\n splitProps,\n} from \"solid-js\";\nimport {\n GroupMachineProvider,\n useMachineActor,\n useGroupId,\n useMachineState,\n useInitialPrerenderContext,\n} from \"./context.jsx\";\nimport {\n PanelGroupHandle,\n SharedPanelGroupProps,\n PanelHandle,\n SharedPanelProps,\n SharedPanelResizerProps,\n measureGroupChildren,\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n move,\n} from \"@window-splitter/interface\";\nimport { mergeSolidAttributes } from \"./mergeSolidAttributes.js\";\n\nexport interface PanelGroupProps\n extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"style\">,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: Ref<PanelGroupHandle>;\n style?: JSX.CSSProperties;\n}\n\nexport function PanelGroup(props: PanelGroupProps) {\n const [, attrs] = splitProps(props, [\n \"orientation\",\n \"autosaveStrategy\",\n \"autosaveId\",\n \"snapshot\",\n ]);\n const [intiialValue, send, machineState, groupId] = createRoot(() => {\n const defaultGroupId = `panel-group-${createUniqueId()}`;\n const groupIdInit = props.autosaveId || props.id || defaultGroupId;\n const orientation = props.orientation || \"horizontal\";\n const autosaveStrategy = props.autosaveStrategy || \"localStorage\";\n\n let snapshot: GroupMachineContextValue | undefined;\n\n if (props.snapshot) {\n snapshot = props.snapshot;\n } else if (\n typeof window !== \"undefined\" &&\n props.autosaveId &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(props.autosaveId);\n\n if (localSnapshot) {\n snapshot = JSON.parse(localSnapshot) as GroupMachineContextValue;\n }\n }\n\n return [\n ...groupMachine(\n {\n orientation,\n groupId: groupIdInit,\n autosaveStrategy: autosaveStrategy,\n ...(snapshot ? prepareSnapshot(snapshot) : undefined),\n },\n (value) => {\n setCurrentValue({ ...value });\n }\n ),\n groupIdInit,\n ];\n });\n const [currentValue, setCurrentValue] = createSignal(intiialValue);\n\n const getContext = () => {\n const context = currentValue?.() || intiialValue;\n if (!context) throw new Error(\"No state\");\n return context;\n };\n\n // Prerender the children with the machine context\n const [isInitialPrerender, setIsInitialPrerender] = createSignal(true);\n const resolvedChildren = children(() => (\n <GroupMachineProvider\n groupId={groupId}\n send={send}\n state={getContext}\n initialPrerender={isInitialPrerender}\n >\n {props.children}\n </GroupMachineProvider>\n ));\n setIsInitialPrerender(false);\n\n let elementRef: HTMLDivElement | undefined;\n\n // Measure group size\n onMount(() => {\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return;\n if (!(entry.contentRect.width > 0 && entry.contentRect.height > 0))\n return;\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n if (elementRef) observer.observe(elementRef);\n onCleanup(() => observer.disconnect());\n });\n\n const childIds = createDeferred(() =>\n currentValue()\n .items.map((i) => i.id)\n .join(\",\")\n );\n\n // Measure children size\n createEffect(\n on(childIds, () => {\n const cleanup = measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n\n onCleanup(cleanup);\n })\n );\n\n createRefContent(\n () => props.handle,\n () => ({\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(currentValue()),\n getPercentageSizes: () => getPanelGroupPercentageSizes(currentValue()),\n setSizes: (updates) => {\n const context = currentValue();\n\n for (let index = 0; index < updates.length; index++) {\n const item = context.items[index];\n const update = updates[index];\n\n if (item && isPanelData(item) && update) {\n send({ type: \"setPanelPixelSize\", panelId: item.id, size: update });\n }\n }\n },\n getTemplate: () => {\n const context = getContext();\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (machineState.current === \"idle\" ? \"idle\" : \"dragging\"),\n })\n );\n\n const getTemplate = () => buildTemplate(getContext());\n\n onMount(() => send({ type: \"unlockGroup\" }));\n onCleanup(() => send({ type: \"lockGroup\" }));\n\n return (\n <div\n id={groupId}\n ref={elementRef}\n data-panel-group-wrapper\n {...attrs}\n style={{\n display: \"grid\",\n \"grid-template-columns\":\n currentValue()?.orientation === \"horizontal\"\n ? getTemplate()\n : undefined,\n \"grid-template-rows\":\n currentValue()?.orientation === \"vertical\"\n ? getTemplate()\n : undefined,\n height: \"100%\",\n ...props.style,\n }}\n >\n {resolvedChildren()}\n </div>\n );\n}\n\nfunction createRefContent<T extends Exclude<unknown, () => void>>(\n getRef: () => Ref<T> | undefined,\n createRef: () => T\n) {\n createRenderEffect(() => {\n const refProp = getRef();\n if (typeof refProp !== \"function\") {\n return () => {};\n }\n const refFunc = refProp as (value: T) => void;\n refFunc(createRef());\n });\n}\n\nexport interface PanelProps\n extends SharedPanelProps<Accessor<boolean | undefined>>,\n Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\" | \"style\"> {\n /** Imperative handle to control the panel */\n handle?: Ref<PanelHandle>;\n style?: JSX.CSSProperties;\n}\n\nexport function Panel(props: PanelProps) {\n const [, attrs] = splitProps(props, [\n \"min\",\n \"max\",\n \"id\",\n \"collapsible\",\n \"collapsed\",\n \"collapsedSize\",\n \"onCollapseChange\",\n \"collapseAnimation\",\n \"onResize\",\n \"defaultCollapsed\",\n \"default\",\n \"isStaticAtRest\",\n ]);\n\n const isInitialPrerender = useInitialPrerenderContext();\n const send = useMachineActor();\n const groupId = useGroupId();\n const state = useMachineState();\n const defaultId = createUniqueId();\n const panelId = () => props.id || defaultId;\n\n let dynamicPanelIsMounting = false;\n let hasMounted = false;\n\n const initPanel = (): PanelData =>\n initializePanel({\n id: panelId(),\n min: props.min,\n max: props.max,\n collapsible: props.collapsible,\n collapsed: props.collapsed?.(),\n collapsedSize: props.collapsedSize,\n onCollapseChange: { current: props.onCollapseChange },\n collapseAnimation: props.collapseAnimation,\n onResize: { current: props.onResize },\n defaultCollapsed: props.defaultCollapsed,\n default: props.default,\n isStaticAtRest: props.isStaticAtRest,\n });\n\n createRoot(() => {\n const panelData = initPanel();\n\n if (send) {\n const hasRegistered = state?.()?.items.find((i) => i.id === panelData.id);\n\n if (!hasRegistered) {\n if (isInitialPrerender()) {\n send({ type: \"registerPanel\", data: panelData });\n } else {\n dynamicPanelIsMounting = true;\n }\n } else {\n send?.({\n type: \"rebindPanelCallbacks\",\n data: {\n id: panelData.id,\n onCollapseChange: { current: props.onCollapseChange },\n onResize: { current: props.onResize },\n },\n });\n }\n }\n\n return panelData.id;\n });\n\n const panel = () => {\n const currentPanel = state?.()?.items.find((i) => i.id === panelId());\n if (!currentPanel || !isPanelData(currentPanel))\n throw new Error(\"Panel not found\");\n return currentPanel;\n };\n\n const contraintChanged = createDeferred(() => {\n const currentPanel = dynamicPanelIsMounting === false ? panel() : undefined;\n if (!currentPanel || !isPanelData(currentPanel)) return;\n return haveConstraintsChangedForPanel(initPanel(), currentPanel);\n });\n\n createEffect(\n on(contraintChanged, () => {\n if (!hasMounted) return;\n send?.({ type: \"updateConstraints\", data: initPanel() });\n })\n );\n\n onMount(() => {\n hasMounted = true;\n if (!dynamicPanelIsMounting) return;\n\n // get the index of the panel in it's group\n const panelElement = document.getElementById(panelId());\n\n if (!panelElement) return;\n\n const groupElement = panelElement.closest(\n `[data-panel-group-wrapper]`\n ) as HTMLDivElement;\n\n if (!groupElement || !panelElement) return;\n\n const order = Array.from(groupElement.children).indexOf(panelElement);\n\n if (typeof order !== \"number\") return;\n\n send?.({ type: \"registerDynamicPanel\", data: { ...initPanel(), order } });\n dynamicPanelIsMounting = false;\n });\n\n const panelData = () => {\n const item = state?.()?.items.find((i) => i.id === panelId());\n if (!item || !isPanelData(item)) return undefined;\n return item;\n };\n\n const currentCollapsed = () => props.collapsed?.() || false;\n createEffect(\n on(currentCollapsed, () => {\n const collapsed = props.collapsed?.() || false;\n\n if (!panelData?.()?.collapseIsControlled) return;\n\n if (collapsed) {\n send?.({ type: \"collapsePanel\", panelId: panelId(), controlled: true });\n } else {\n send?.({ type: \"expandPanel\", panelId: panelId(), controlled: true });\n }\n })\n );\n\n createRefContent(\n () => props.handle,\n () => ({\n getId: () => panelId(),\n collapse: () => {\n if (!panel().collapsible) return;\n send?.({ type: \"collapsePanel\", panelId: panelId(), controlled: true });\n },\n isCollapsed: () => Boolean(panel().collapsible && panel().collapsed),\n expand: () => {\n if (!panel().collapsible) return;\n send?.({ type: \"expandPanel\", panelId: panelId(), controlled: true });\n },\n isExpanded: () => Boolean(panel().collapsible && !panel().collapsed),\n getPixelSize: () => {\n const s = state?.();\n if (!s) throw new Error(\"No state\");\n return getPanelPixelSize(s, panelId());\n },\n setSize: (size) => {\n send?.({ type: \"setPanelPixelSize\", panelId: panelId(), size });\n },\n getPercentageSize: () => {\n const s = state?.();\n if (!s) throw new Error(\"No state\");\n return getPanelPercentageSize(s, panelId());\n },\n })\n );\n\n onCleanup(() => {\n // We wait a frame because in Solid children unmount before their parent\n // and we want to only unregister if just the panel is being removed, not\n // the whole group. This frame allows for the parent to lock the machine.\n requestAnimationFrame(() => {\n send?.({ type: \"unregisterPanel\", id: panelId() });\n });\n });\n\n const domAttributes = () => {\n const currentPanel = panelData();\n\n return getPanelDomAttributes({\n groupId,\n id: panelId(),\n collapsible: currentPanel?.collapsible,\n collapsed: currentPanel?.collapsed,\n });\n };\n\n return (\n <div\n {...mergeSolidAttributes(attrs, domAttributes())}\n style={{\n \"min-width\": 0,\n \"min-height\": 0,\n overflow: \"hidden\",\n ...props.style,\n }}\n />\n );\n}\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n JSX.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\" | \"style\"\n > {\n style?: JSX.CSSProperties;\n}\n\nexport function PanelResizer(props: PanelResizerProps) {\n const [, attrs] = splitProps(props, [\n \"size\",\n \"id\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"disabled\",\n ]);\n\n const isInitialPrerender = useInitialPrerenderContext();\n const send = useMachineActor();\n const state = useMachineState();\n const defaultId = createUniqueId();\n const handleId = () => props.id || defaultId;\n const handle = () => {\n const currentHandle = state?.()?.items.find((i) => i.id === handleId());\n if (!currentHandle || !isPanelHandle(currentHandle))\n throw new Error(\"Handle not found\");\n return currentHandle;\n };\n\n let dynamicPanelHandleIsMounting = false;\n let hasMounted = false;\n\n const initHandle = () =>\n initializePanelHandleData({\n size: props.size || \"0px\",\n id: handleId(),\n });\n\n createRoot(() => {\n if (send) {\n const hasRegistered = state?.()?.items.find((i) => i.id === handleId());\n\n if (!hasRegistered) {\n if (isInitialPrerender()) {\n send({\n type: \"registerPanelHandle\",\n data: initHandle(),\n });\n } else {\n dynamicPanelHandleIsMounting = true;\n }\n }\n }\n });\n\n const contraintChanged = createDeferred(() => {\n const currentHandle =\n dynamicPanelHandleIsMounting === false ? handle() : undefined;\n if (!currentHandle || !isPanelHandle(currentHandle)) return;\n return haveConstraintsChangedForPanelHandle(initHandle(), currentHandle);\n });\n\n createEffect(\n on(contraintChanged, () => {\n if (!hasMounted) return;\n send?.({ type: \"updateConstraints\", data: initHandle() });\n })\n );\n\n onMount(() => {\n hasMounted = true;\n if (!dynamicPanelHandleIsMounting) return;\n\n // get the index of the panel in it's group\n const handleElement = document.getElementById(handleId());\n\n if (!handleElement) return;\n\n const groupElement = handleElement.closest(\n `[data-panel-group-wrapper]`\n ) as HTMLDivElement;\n\n if (!groupElement || !handleElement) return;\n\n const order = Array.from(groupElement.children).indexOf(handleElement);\n\n if (typeof order !== \"number\") return;\n\n send?.({ type: \"registerPanelHandle\", data: { ...initHandle(), order } });\n dynamicPanelHandleIsMounting = false;\n });\n\n const { moveProps } = move({\n onMoveStart: () => {\n send?.({ type: \"dragHandleStart\", handleId: handleId() });\n props.onDragStart?.();\n document.body.style.cursor = cursor() || \"auto\";\n },\n onMove: (e) => {\n send?.({ type: \"dragHandle\", handleId: handleId(), value: e });\n props.onDrag?.();\n },\n onMoveEnd: () => {\n send?.({ type: \"dragHandleEnd\", handleId: handleId() });\n props.onDragEnd?.();\n document.body.style.cursor = \"auto\";\n },\n });\n\n const itemIndex = () =>\n state?.()?.items.findIndex((item) => item.id === handleId()) || -1;\n const activeDragHandleId = () => state?.()?.activeDragHandleId;\n const isDragging = () => activeDragHandleId() === handleId();\n const panelBeforeHandle = () => state?.()?.items[itemIndex() - 1];\n const panelAttributes = () => {\n const panelBefore = panelBeforeHandle();\n const currentState = state?.();\n\n if (!panelBefore || !currentState || !isPanelData(panelBefore))\n return { id: handleId };\n\n return getPanelResizerDomAttributes({\n groupId: currentState.groupId,\n id: handleId(),\n orientation: currentState.orientation,\n isDragging: isDragging(),\n activeDragHandleId: activeDragHandleId(),\n disabled: props.disabled,\n controlsId: panelBefore.id,\n min: panelBefore.min,\n max: panelBefore.max,\n currentValue: panelBefore.currentValue,\n groupSize: getGroupSize(currentState),\n });\n };\n\n const cursor = () => {\n if (props.disabled) return;\n const currentState = state?.();\n if (!currentState) return;\n return getCursor(currentState);\n };\n const dimensions = () => {\n const currentState = state?.();\n if (!currentState) return {};\n const unit = parseUnit(props.size || \"0px\");\n return currentState.orientation === \"horizontal\"\n ? { width: `${unit.value.toNumber()}px`, height: \"100%\" }\n : { height: `${unit.value.toNumber()}px`, width: \"100%\" };\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const currentState = state?.();\n if (!currentState) return undefined;\n\n try {\n const collapsiblePanel = getCollapsiblePanelForHandleId(\n currentState,\n handleId()\n );\n\n if (e.key === \"Enter\" && collapsiblePanel) {\n if (collapsiblePanel.collapsed) {\n send?.({ type: \"expandPanel\", panelId: collapsiblePanel.id });\n } else {\n send?.({ type: \"collapsePanel\", panelId: collapsiblePanel.id });\n }\n }\n } catch {\n return undefined;\n }\n };\n\n onCleanup(() => {\n // We wait a frame because in Solid children unmount before their parent\n // and we want to only unregister if just the panel is being removed, not\n // the whole group. This frame allows for the parent to lock the machine.\n requestAnimationFrame(() => {\n send?.({ type: \"unregisterPanelHandle\", id: handleId() });\n });\n });\n\n return (\n <div\n {...mergeSolidAttributes(\n attrs,\n panelAttributes(),\n props.disabled\n ? {}\n : mergeSolidAttributes(moveProps, { onKeyDown, tabIndex: 0 }),\n {\n style: {\n cursor: cursor(),\n ...dimensions(),\n ...props.style,\n },\n }\n )}\n id={handleId()}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidWIndowSplitter.jsx","sourceRoot":"","sources":["../../src/SolidWIndowSplitter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getCursor,\n getGroupSize,\n getPanelGroupPercentageSizes,\n getPanelGroupPixelSizes,\n getPanelPercentageSize,\n getPanelPixelSize,\n groupMachine,\n GroupMachineContextValue,\n haveConstraintsChangedForPanel,\n haveConstraintsChangedForPanelHandle,\n initializePanel,\n initializePanelHandleData,\n isPanelData,\n isPanelHandle,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n} from \"@window-splitter/state\";\nimport {\n Accessor,\n children,\n createDeferred,\n createEffect,\n createRenderEffect,\n createRoot,\n createSignal,\n createUniqueId,\n JSX,\n on,\n onCleanup,\n onMount,\n Ref,\n splitProps,\n} from \"solid-js\";\nimport {\n GroupMachineProvider,\n useMachineActor,\n useGroupId,\n useMachineState,\n useInitialPrerenderContext,\n} from \"./context.jsx\";\nimport {\n PanelGroupHandle,\n SharedPanelGroupProps,\n PanelHandle,\n SharedPanelProps,\n SharedPanelResizerProps,\n measureGroupChildren,\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n move,\n} from \"@window-splitter/interface\";\nimport { mergeSolidAttributes } from \"./mergeSolidAttributes.js\";\n\nexport interface PanelGroupProps\n extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"style\">,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: Ref<PanelGroupHandle>;\n style?: JSX.CSSProperties;\n}\n\nexport function PanelGroup(props: PanelGroupProps) {\n const [, attrs] = splitProps(props, [\n \"orientation\",\n \"autosaveStrategy\",\n \"autosaveId\",\n \"snapshot\",\n \"shiftAmount\",\n ]);\n const [intiialValue, send, machineState, groupId] = createRoot(() => {\n const defaultGroupId = `panel-group-${createUniqueId()}`;\n const groupIdInit = props.autosaveId || props.id || defaultGroupId;\n const orientation = props.orientation || \"horizontal\";\n const autosaveStrategy = props.autosaveStrategy || \"localStorage\";\n\n let snapshot: GroupMachineContextValue | undefined;\n\n if (props.snapshot) {\n snapshot = props.snapshot;\n } else if (\n typeof window !== \"undefined\" &&\n props.autosaveId &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(props.autosaveId);\n\n if (localSnapshot) {\n snapshot = JSON.parse(localSnapshot) as GroupMachineContextValue;\n }\n }\n\n return [\n ...groupMachine(\n {\n orientation,\n groupId: groupIdInit,\n autosaveStrategy: autosaveStrategy,\n shiftAmount: props.shiftAmount,\n ...(snapshot ? prepareSnapshot(snapshot) : undefined),\n },\n (value) => {\n setCurrentValue({ ...value });\n }\n ),\n groupIdInit,\n ];\n });\n const [currentValue, setCurrentValue] = createSignal(intiialValue);\n\n const getContext = () => {\n const context = currentValue?.() || intiialValue;\n if (!context) throw new Error(\"No state\");\n return context;\n };\n\n // Prerender the children with the machine context\n const [isInitialPrerender, setIsInitialPrerender] = createSignal(true);\n const resolvedChildren = children(() => (\n <GroupMachineProvider\n groupId={groupId}\n send={send}\n state={getContext}\n initialPrerender={isInitialPrerender}\n >\n {props.children}\n </GroupMachineProvider>\n ));\n setIsInitialPrerender(false);\n\n let elementRef: HTMLDivElement | undefined;\n\n // Measure group size\n onMount(() => {\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return;\n if (!(entry.contentRect.width > 0 && entry.contentRect.height > 0))\n return;\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n if (elementRef) observer.observe(elementRef);\n onCleanup(() => observer.disconnect());\n });\n\n const childIds = createDeferred(() =>\n currentValue()\n .items.map((i) => i.id)\n .join(\",\")\n );\n\n // Measure children size\n createEffect(\n on(childIds, () => {\n const cleanup = measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n\n onCleanup(cleanup);\n })\n );\n\n createRefContent(\n () => props.handle,\n () => ({\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(currentValue()),\n getPercentageSizes: () => getPanelGroupPercentageSizes(currentValue()),\n setSizes: (updates) => {\n const context = currentValue();\n\n for (let index = 0; index < updates.length; index++) {\n const item = context.items[index];\n const update = updates[index];\n\n if (item && isPanelData(item) && update) {\n send({ type: \"setPanelPixelSize\", panelId: item.id, size: update });\n }\n }\n },\n getTemplate: () => {\n const context = getContext();\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (machineState.current === \"idle\" ? \"idle\" : \"dragging\"),\n })\n );\n\n const getTemplate = () => buildTemplate(getContext());\n\n onMount(() => send({ type: \"unlockGroup\" }));\n onCleanup(() => send({ type: \"lockGroup\" }));\n\n return (\n <div\n id={groupId}\n ref={elementRef}\n data-panel-group-wrapper\n {...attrs}\n style={{\n display: \"grid\",\n \"grid-template-columns\":\n currentValue()?.orientation === \"horizontal\"\n ? getTemplate()\n : undefined,\n \"grid-template-rows\":\n currentValue()?.orientation === \"vertical\"\n ? getTemplate()\n : undefined,\n height: \"100%\",\n ...props.style,\n }}\n >\n {resolvedChildren()}\n </div>\n );\n}\n\nfunction createRefContent<T extends Exclude<unknown, () => void>>(\n getRef: () => Ref<T> | undefined,\n createRef: () => T\n) {\n createRenderEffect(() => {\n const refProp = getRef();\n if (typeof refProp !== \"function\") {\n return () => {};\n }\n const refFunc = refProp as (value: T) => void;\n refFunc(createRef());\n });\n}\n\nexport interface PanelProps\n extends SharedPanelProps<Accessor<boolean | undefined>>,\n Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\" | \"style\"> {\n /** Imperative handle to control the panel */\n handle?: Ref<PanelHandle>;\n style?: JSX.CSSProperties;\n}\n\nexport function Panel(props: PanelProps) {\n const [, attrs] = splitProps(props, [\n \"min\",\n \"max\",\n \"id\",\n \"collapsible\",\n \"collapsed\",\n \"collapsedSize\",\n \"onCollapseChange\",\n \"collapseAnimation\",\n \"onResize\",\n \"defaultCollapsed\",\n \"default\",\n \"isStaticAtRest\",\n ]);\n\n const isInitialPrerender = useInitialPrerenderContext();\n const send = useMachineActor();\n const groupId = useGroupId();\n const state = useMachineState();\n const defaultId = createUniqueId();\n const panelId = () => props.id || defaultId;\n\n let dynamicPanelIsMounting = false;\n let hasMounted = false;\n\n const initPanel = (): PanelData =>\n initializePanel({\n id: panelId(),\n min: props.min,\n max: props.max,\n collapsible: props.collapsible,\n collapsed: props.collapsed?.(),\n collapsedSize: props.collapsedSize,\n onCollapseChange: { current: props.onCollapseChange },\n collapseAnimation: props.collapseAnimation,\n onResize: { current: props.onResize },\n defaultCollapsed: props.defaultCollapsed,\n default: props.default,\n isStaticAtRest: props.isStaticAtRest,\n });\n\n createRoot(() => {\n const panelData = initPanel();\n\n if (send) {\n const hasRegistered = state?.()?.items.find((i) => i.id === panelData.id);\n\n if (!hasRegistered) {\n if (isInitialPrerender()) {\n send({ type: \"registerPanel\", data: panelData });\n } else {\n dynamicPanelIsMounting = true;\n }\n } else {\n send?.({\n type: \"rebindPanelCallbacks\",\n data: {\n id: panelData.id,\n onCollapseChange: { current: props.onCollapseChange },\n onResize: { current: props.onResize },\n },\n });\n }\n }\n\n return panelData.id;\n });\n\n const panel = () => {\n const currentPanel = state?.()?.items.find((i) => i.id === panelId());\n if (!currentPanel || !isPanelData(currentPanel))\n throw new Error(\"Panel not found\");\n return currentPanel;\n };\n\n const contraintChanged = createDeferred(() => {\n const currentPanel = dynamicPanelIsMounting === false ? panel() : undefined;\n if (!currentPanel || !isPanelData(currentPanel)) return;\n return haveConstraintsChangedForPanel(initPanel(), currentPanel);\n });\n\n createEffect(\n on(contraintChanged, () => {\n if (!hasMounted) return;\n send?.({ type: \"updateConstraints\", data: initPanel() });\n })\n );\n\n onMount(() => {\n hasMounted = true;\n if (!dynamicPanelIsMounting) return;\n\n // get the index of the panel in it's group\n const panelElement = document.getElementById(panelId());\n\n if (!panelElement) return;\n\n const groupElement = panelElement.closest(\n `[data-panel-group-wrapper]`\n ) as HTMLDivElement;\n\n if (!groupElement || !panelElement) return;\n\n const order = Array.from(groupElement.children).indexOf(panelElement);\n\n if (typeof order !== \"number\") return;\n\n send?.({ type: \"registerDynamicPanel\", data: { ...initPanel(), order } });\n dynamicPanelIsMounting = false;\n });\n\n const panelData = () => {\n const item = state?.()?.items.find((i) => i.id === panelId());\n if (!item || !isPanelData(item)) return undefined;\n return item;\n };\n\n const currentCollapsed = () => props.collapsed?.() || false;\n createEffect(\n on(currentCollapsed, () => {\n const collapsed = props.collapsed?.() || false;\n\n if (!panelData?.()?.collapseIsControlled) return;\n\n if (collapsed) {\n send?.({ type: \"collapsePanel\", panelId: panelId(), controlled: true });\n } else {\n send?.({ type: \"expandPanel\", panelId: panelId(), controlled: true });\n }\n })\n );\n\n createRefContent(\n () => props.handle,\n () => ({\n getId: () => panelId(),\n collapse: async () => {\n if (panel().collapsible) {\n // eslint-disable-next-line solid/reactivity\n return await new Promise<void>((resolve) => {\n send?.({\n type: \"collapsePanel\",\n panelId: panelId(),\n controlled: true,\n resolve,\n });\n });\n }\n },\n isCollapsed: () => Boolean(panel().collapsible && panel().collapsed),\n expand: async () => {\n if (panel().collapsible) {\n // eslint-disable-next-line solid/reactivity\n return await new Promise<void>((resolve) => {\n send?.({\n type: \"expandPanel\",\n panelId: panelId(),\n controlled: true,\n resolve,\n });\n });\n }\n },\n isExpanded: () => Boolean(panel().collapsible && !panel().collapsed),\n getPixelSize: () => {\n const s = state?.();\n if (!s) throw new Error(\"No state\");\n return getPanelPixelSize(s, panelId());\n },\n setSize: (size) => {\n send?.({ type: \"setPanelPixelSize\", panelId: panelId(), size });\n },\n getPercentageSize: () => {\n const s = state?.();\n if (!s) throw new Error(\"No state\");\n return getPanelPercentageSize(s, panelId());\n },\n })\n );\n\n onCleanup(() => {\n // We wait a frame because in Solid children unmount before their parent\n // and we want to only unregister if just the panel is being removed, not\n // the whole group. This frame allows for the parent to lock the machine.\n requestAnimationFrame(() => {\n send?.({ type: \"unregisterPanel\", id: panelId() });\n });\n });\n\n const domAttributes = () => {\n const currentPanel = panelData();\n\n return getPanelDomAttributes({\n groupId,\n id: panelId(),\n collapsible: currentPanel?.collapsible,\n collapsed: currentPanel?.collapsed,\n });\n };\n\n return (\n <div\n {...mergeSolidAttributes(attrs, domAttributes())}\n style={{\n \"min-width\": 0,\n \"min-height\": 0,\n overflow: \"hidden\",\n ...props.style,\n }}\n />\n );\n}\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n JSX.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\" | \"style\"\n > {\n style?: JSX.CSSProperties;\n}\n\nexport function PanelResizer(props: PanelResizerProps) {\n const [, attrs] = splitProps(props, [\n \"size\",\n \"id\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"disabled\",\n ]);\n\n const isInitialPrerender = useInitialPrerenderContext();\n const send = useMachineActor();\n const state = useMachineState();\n const defaultId = createUniqueId();\n const handleId = () => props.id || defaultId;\n const handle = () => {\n const currentHandle = state?.()?.items.find((i) => i.id === handleId());\n if (!currentHandle || !isPanelHandle(currentHandle))\n throw new Error(\"Handle not found\");\n return currentHandle;\n };\n\n let dynamicPanelHandleIsMounting = false;\n let hasMounted = false;\n\n const initHandle = () =>\n initializePanelHandleData({\n size: props.size || \"0px\",\n id: handleId(),\n });\n\n createRoot(() => {\n if (send) {\n const hasRegistered = state?.()?.items.find((i) => i.id === handleId());\n\n if (!hasRegistered) {\n if (isInitialPrerender()) {\n send({\n type: \"registerPanelHandle\",\n data: initHandle(),\n });\n } else {\n dynamicPanelHandleIsMounting = true;\n }\n }\n }\n });\n\n const contraintChanged = createDeferred(() => {\n const currentHandle =\n dynamicPanelHandleIsMounting === false ? handle() : undefined;\n if (!currentHandle || !isPanelHandle(currentHandle)) return;\n return haveConstraintsChangedForPanelHandle(initHandle(), currentHandle);\n });\n\n createEffect(\n on(contraintChanged, () => {\n if (!hasMounted) return;\n send?.({ type: \"updateConstraints\", data: initHandle() });\n })\n );\n\n onMount(() => {\n hasMounted = true;\n if (!dynamicPanelHandleIsMounting) return;\n\n // get the index of the panel in it's group\n const handleElement = document.getElementById(handleId());\n\n if (!handleElement) return;\n\n const groupElement = handleElement.closest(\n `[data-panel-group-wrapper]`\n ) as HTMLDivElement;\n\n if (!groupElement || !handleElement) return;\n\n const order = Array.from(groupElement.children).indexOf(handleElement);\n\n if (typeof order !== \"number\") return;\n\n send?.({ type: \"registerPanelHandle\", data: { ...initHandle(), order } });\n dynamicPanelHandleIsMounting = false;\n });\n\n const { moveProps } = move({\n onMoveStart: () => {\n send?.({ type: \"dragHandleStart\", handleId: handleId() });\n props.onDragStart?.();\n document.body.style.cursor = cursor() || \"auto\";\n },\n onMove: (e) => {\n send?.({ type: \"dragHandle\", handleId: handleId(), value: e });\n props.onDrag?.();\n },\n onMoveEnd: () => {\n send?.({ type: \"dragHandleEnd\", handleId: handleId() });\n props.onDragEnd?.();\n document.body.style.cursor = \"auto\";\n },\n });\n\n const itemIndex = () =>\n state?.()?.items.findIndex((item) => item.id === handleId()) || -1;\n const activeDragHandleId = () => state?.()?.activeDragHandleId;\n const isDragging = () => activeDragHandleId() === handleId();\n const panelBeforeHandle = () => state?.()?.items[itemIndex() - 1];\n const panelAttributes = () => {\n const panelBefore = panelBeforeHandle();\n const currentState = state?.();\n\n if (!panelBefore || !currentState || !isPanelData(panelBefore))\n return { id: handleId };\n\n return getPanelResizerDomAttributes({\n groupId: currentState.groupId,\n id: handleId(),\n orientation: currentState.orientation,\n isDragging: isDragging(),\n activeDragHandleId: activeDragHandleId(),\n disabled: props.disabled,\n controlsId: panelBefore.id,\n min: panelBefore.min,\n max: panelBefore.max,\n currentValue: panelBefore.currentValue,\n groupSize: getGroupSize(currentState),\n });\n };\n\n const cursor = () => {\n if (props.disabled) return;\n const currentState = state?.();\n if (!currentState) return;\n return getCursor(currentState);\n };\n const dimensions = () => {\n const currentState = state?.();\n if (!currentState) return {};\n const unit = parseUnit(props.size || \"0px\");\n return currentState.orientation === \"horizontal\"\n ? { width: `${unit.value.toNumber()}px`, height: \"100%\" }\n : { height: `${unit.value.toNumber()}px`, width: \"100%\" };\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const currentState = state?.();\n if (!currentState) return undefined;\n\n try {\n const collapsiblePanel = getCollapsiblePanelForHandleId(\n currentState,\n handleId()\n );\n\n if (e.key === \"Enter\" && collapsiblePanel) {\n if (collapsiblePanel.collapsed) {\n send?.({ type: \"expandPanel\", panelId: collapsiblePanel.id });\n } else {\n send?.({ type: \"collapsePanel\", panelId: collapsiblePanel.id });\n }\n }\n } catch {\n return undefined;\n }\n };\n\n onCleanup(() => {\n // We wait a frame because in Solid children unmount before their parent\n // and we want to only unregister if just the panel is being removed, not\n // the whole group. This frame allows for the parent to lock the machine.\n requestAnimationFrame(() => {\n send?.({ type: \"unregisterPanelHandle\", id: handleId() });\n });\n });\n\n return (\n <div\n {...mergeSolidAttributes(\n attrs,\n panelAttributes(),\n props.disabled\n ? {}\n : mergeSolidAttributes(moveProps, { onKeyDown, tabIndex: 0 }),\n {\n style: {\n cursor: cursor(),\n ...dimensions(),\n ...props.style,\n },\n }\n )}\n id={handleId()}\n />\n );\n}\n"]}
|
|
@@ -121,18 +121,18 @@ test("Keyboard interactions with collapsed panels", async () => {
|
|
|
121
121
|
await expectTemplate(handle, "209px 10px 209px 10px 60px");
|
|
122
122
|
const resizer2 = document.getElementById("resizer-2");
|
|
123
123
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
124
|
-
await expectTemplate(handle, "
|
|
124
|
+
await expectTemplate(handle, "209.015625px 10px 167px 10px 101.984375px");
|
|
125
125
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
126
126
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
127
127
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
128
128
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
129
|
-
await expectTemplate(handle, "
|
|
129
|
+
await expectTemplate(handle, "209.015625px 10px 163px 10px 105.984375px");
|
|
130
130
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft", shiftKey: true });
|
|
131
|
-
await expectTemplate(handle, "209.03125px 10px
|
|
131
|
+
await expectTemplate(handle, "209.03125px 10px 147.984375px 10px 120.984375px");
|
|
132
132
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
133
133
|
await expectTemplate(handle, "209.03125px 10px 208.96875px 10px 60px");
|
|
134
134
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
135
|
-
await expectTemplate(handle, "209.
|
|
135
|
+
await expectTemplate(handle, "209.046875px 10px 144.9375px 10px 124.015625px");
|
|
136
136
|
});
|
|
137
137
|
describe("imperative panel API", async () => {
|
|
138
138
|
test("panel group", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidWindowSplitter.test.jsx","sourceRoot":"","sources":["../../src/SolidWindowSplitter.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, describe, vi, afterEach } from \"vitest\";\nimport { cleanup, fireEvent, render, waitFor } from \"@solidjs/testing-library\";\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 AutosaveCookie,\n} from \"./SolidWindowSplitter.stories.jsx\";\nimport { createTestUtils, dragHandle } from \"@window-splitter/interface/test\";\n\nconst { expectTemplate, waitForMeasurement, waitForCondition } =\n createTestUtils({ waitFor });\n\nafterEach(() => {\n cleanup();\n});\n\ntest(\"horizontal layout\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <Simple handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n\n expect(getByText(\"Panel 1\")).toBeInTheDocument();\n expect(getByText(\"Panel 2\")).toBeInTheDocument();\n\n await expectTemplate(handle, \"244px 10px 244px\");\n\n // Should respect the min\n await dragHandle({ delta: 300 });\n await expectTemplate(handle, \"388px 10px 100px\");\n});\n\ntest(\"vertical layout\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <VerticalLayout handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n\n expect(getByText(\"top\")).toBeInTheDocument();\n expect(getByText(\"middle\")).toBeInTheDocument();\n expect(getByText(\"bottom\")).toBeInTheDocument();\n\n await expectTemplate(handle, \"96px 10px 108px 10px 96px\");\n\n // Should respect the min\n await dragHandle({ delta: 100, orientation: \"vertical\" });\n await expectTemplate(handle, \"172px 10px 64px 10px 64px\");\n});\n\ntest(\"Conditional Panels\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <ConditionalPanel handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"244px 10px 244px\");\n\n getByText(\"Expand\").click();\n await expectTemplate(handle, \"244px 10px 134px 10px 100px\");\n\n getByText(\"Close\").click();\n await expectTemplate(handle, \"244px 10px 244px\");\n});\n\ntest(\"Dynamic constraints\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"1000px\" }}>\n <DynamicConstraints handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"100px 10px 178px 10px 700px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle, \"500px 10px 178px 10px 300px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle, \"400px 10px 178px 10px 400px\");\n});\n\ndescribe(\"Autosave\", () => {\n test(\"localStorage\", async () => {\n localStorage.clear();\n\n let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Autosave handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"244px 10px 244px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle, \"342px 10px 146px\");\n\n await waitForCondition(() =>\n Boolean(localStorage.getItem(\"autosave-example-solid\"))\n );\n const obj = JSON.parse(\n localStorage.getItem(\"autosave-example-solid\") || \"{}\"\n );\n expect(obj.items).toMatchSnapshot();\n });\n\n test(\"callback\", async () => {\n localStorage.clear();\n\n let handle: PanelGroupHandle | null = null!;\n\n const spy = vi.fn();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCollapsible\n handle={(v) => (handle = v)}\n onCollapseChange={spy}\n />\n </div>\n ));\n\n await dragHandle({ delta: -200 });\n await expectTemplate(handle, \"100px 10px 388px\");\n expect(spy).toHaveBeenCalledWith(true);\n\n cleanup();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCollapsible\n handle={(v) => (handle = v)}\n onCollapseChange={spy}\n />\n </div>\n ));\n\n await expectTemplate(handle, \"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 let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"502px\" }}>\n <AutosaveCookie handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"245px 10px 245px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle, \"343px 10px 147px\");\n\n await waitForCondition(() =>\n document.cookie.includes(\"autosave-cookie-solid\")\n );\n\n expect(document.cookie).toMatchSnapshot();\n\n const snapshot = Cookies.get(\"autosave-cookie-solid\");\n\n cleanup();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCookie\n handle={(v) => (handle = v)}\n snapshot={snapshot ? JSON.parse(snapshot) : undefined}\n />\n </div>\n ));\n\n await expectTemplate(handle, \"341.609375px 10px 146.390625px\");\n });\n});\n\ntest(\"Keyboard interactions with collapsed panels\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"209px 10px 209px 10px 60px\");\n\n const resizer2 = document.getElementById(\"resizer-2\")!;\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle, \"209px 10px 169px 10px 100px\");\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(handle, \"209px 10px 165px 10px 104px\");\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\", shiftKey: true });\n await expectTemplate(\n handle,\n \"209.03125px 10px 149.984375px 10px 118.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle, \"209.03125px 10px 208.96875px 10px 60px\");\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle, \"209.0625px 10px 149.96875px 10px 118.96875px\");\n});\n\ndescribe(\"imperative panel API\", async () => {\n test(\"panel group\", async () => {\n let handle: PanelGroupHandle;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle!);\n\n expect(handle!.getPercentageSizes()).toMatchInlineSnapshot(`\n [\n 0.5,\n 0.020080321285140562,\n 0.5,\n 0.020080321285140562,\n 0.12048192771084337,\n ]\n `);\n\n expect(handle!.getPixelSizes()).toMatchInlineSnapshot(`\n [\n 209,\n 10,\n 209,\n 10,\n 60,\n ]\n `);\n\n await expectTemplate(handle!, \"209px 10px 209px 10px 60px\");\n });\n\n test(\"panel\", async () => {\n let handle: PanelGroupHandle;\n let rightHandle: PanelHandle;\n let leftHandle: PanelHandle;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible\n handle={(v) => (handle = v)}\n rightPanelHandle={(v) => (rightHandle = v)}\n leftPanelHandle={(v) => (leftHandle = v)}\n />\n </div>\n ));\n\n await waitForMeasurement(handle!);\n\n expect(rightHandle!.isCollapsed()).toBe(true);\n expect(rightHandle!.isExpanded()).toBe(false);\n\n rightHandle!.expand();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle!.isCollapsed()).toBe(false);\n expect(rightHandle!.isExpanded()).toBe(true);\n\n rightHandle!.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle!.isCollapsed()).toBe(true);\n expect(rightHandle!.isExpanded()).toBe(false);\n\n // Test the non controlled version\n\n expect(leftHandle!.isCollapsed()).toBe(false);\n expect(leftHandle!.isExpanded()).toBe(true);\n\n leftHandle!.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(leftHandle!.isCollapsed()).toBe(true);\n expect(leftHandle!.isExpanded()).toBe(false);\n expect(rightHandle!.getPercentageSize()).toBe(\n leftHandle!.getPercentageSize()\n );\n expect(rightHandle!.getPixelSize()).toBe(leftHandle!.getPixelSize());\n\n leftHandle!.expand();\n await new Promise((resolve) => setTimeout(resolve, 5000));\n\n expect(leftHandle!.isCollapsed()).toBe(false);\n expect(leftHandle!.isExpanded()).toBe(true);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SolidWindowSplitter.test.jsx","sourceRoot":"","sources":["../../src/SolidWindowSplitter.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, describe, vi, afterEach } from \"vitest\";\nimport { cleanup, fireEvent, render, waitFor } from \"@solidjs/testing-library\";\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 AutosaveCookie,\n} from \"./SolidWindowSplitter.stories.jsx\";\nimport { createTestUtils, dragHandle } from \"@window-splitter/interface/test\";\n\nconst { expectTemplate, waitForMeasurement, waitForCondition } =\n createTestUtils({ waitFor });\n\nafterEach(() => {\n cleanup();\n});\n\ntest(\"horizontal layout\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <Simple handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n\n expect(getByText(\"Panel 1\")).toBeInTheDocument();\n expect(getByText(\"Panel 2\")).toBeInTheDocument();\n\n await expectTemplate(handle, \"244px 10px 244px\");\n\n // Should respect the min\n await dragHandle({ delta: 300 });\n await expectTemplate(handle, \"388px 10px 100px\");\n});\n\ntest(\"vertical layout\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <VerticalLayout handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n\n expect(getByText(\"top\")).toBeInTheDocument();\n expect(getByText(\"middle\")).toBeInTheDocument();\n expect(getByText(\"bottom\")).toBeInTheDocument();\n\n await expectTemplate(handle, \"96px 10px 108px 10px 96px\");\n\n // Should respect the min\n await dragHandle({ delta: 100, orientation: \"vertical\" });\n await expectTemplate(handle, \"172px 10px 64px 10px 64px\");\n});\n\ntest(\"Conditional Panels\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"500px\" }}>\n <ConditionalPanel handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"244px 10px 244px\");\n\n getByText(\"Expand\").click();\n await expectTemplate(handle, \"244px 10px 134px 10px 100px\");\n\n getByText(\"Close\").click();\n await expectTemplate(handle, \"244px 10px 244px\");\n});\n\ntest(\"Dynamic constraints\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n const { getByText } = render(() => (\n <div style={{ width: \"1000px\" }}>\n <DynamicConstraints handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"100px 10px 178px 10px 700px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle, \"500px 10px 178px 10px 300px\");\n\n getByText(\"Toggle Custom\").click();\n await expectTemplate(handle, \"400px 10px 178px 10px 400px\");\n});\n\ndescribe(\"Autosave\", () => {\n test(\"localStorage\", async () => {\n localStorage.clear();\n\n let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Autosave handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"244px 10px 244px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle, \"342px 10px 146px\");\n\n await waitForCondition(() =>\n Boolean(localStorage.getItem(\"autosave-example-solid\"))\n );\n const obj = JSON.parse(\n localStorage.getItem(\"autosave-example-solid\") || \"{}\"\n );\n expect(obj.items).toMatchSnapshot();\n });\n\n test(\"callback\", async () => {\n localStorage.clear();\n\n let handle: PanelGroupHandle | null = null!;\n\n const spy = vi.fn();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCollapsible\n handle={(v) => (handle = v)}\n onCollapseChange={spy}\n />\n </div>\n ));\n\n await dragHandle({ delta: -200 });\n await expectTemplate(handle, \"100px 10px 388px\");\n expect(spy).toHaveBeenCalledWith(true);\n\n cleanup();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCollapsible\n handle={(v) => (handle = v)}\n onCollapseChange={spy}\n />\n </div>\n ));\n\n await expectTemplate(handle, \"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 let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"502px\" }}>\n <AutosaveCookie handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"245px 10px 245px\");\n\n await dragHandle({ delta: 100 });\n await expectTemplate(handle, \"343px 10px 147px\");\n\n await waitForCondition(() =>\n document.cookie.includes(\"autosave-cookie-solid\")\n );\n\n expect(document.cookie).toMatchSnapshot();\n\n const snapshot = Cookies.get(\"autosave-cookie-solid\");\n\n cleanup();\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <AutosaveCookie\n handle={(v) => (handle = v)}\n snapshot={snapshot ? JSON.parse(snapshot) : undefined}\n />\n </div>\n ));\n\n await expectTemplate(handle, \"341.609375px 10px 146.390625px\");\n });\n});\n\ntest(\"Keyboard interactions with collapsed panels\", async () => {\n let handle: PanelGroupHandle | null = null!;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle);\n await expectTemplate(handle, \"209px 10px 209px 10px 60px\");\n\n const resizer2 = document.getElementById(\"resizer-2\")!;\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle, \"209.015625px 10px 167px 10px 101.984375px\");\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(handle, \"209.015625px 10px 163px 10px 105.984375px\");\n\n fireEvent.keyDown(resizer2, { key: \"ArrowLeft\", shiftKey: true });\n await expectTemplate(\n handle,\n \"209.03125px 10px 147.984375px 10px 120.984375px\"\n );\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(handle, \"209.03125px 10px 208.96875px 10px 60px\");\n\n fireEvent.keyDown(resizer2, { key: \"Enter\" });\n await expectTemplate(\n handle,\n \"209.046875px 10px 144.9375px 10px 124.015625px\"\n );\n});\n\ndescribe(\"imperative panel API\", async () => {\n test(\"panel group\", async () => {\n let handle: PanelGroupHandle;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible handle={(v) => (handle = v)} />\n </div>\n ));\n\n await waitForMeasurement(handle!);\n\n expect(handle!.getPercentageSizes()).toMatchInlineSnapshot(`\n [\n 0.5,\n 0.020080321285140562,\n 0.5,\n 0.020080321285140562,\n 0.12048192771084337,\n ]\n `);\n\n expect(handle!.getPixelSizes()).toMatchInlineSnapshot(`\n [\n 209,\n 10,\n 209,\n 10,\n 60,\n ]\n `);\n\n await expectTemplate(handle!, \"209px 10px 209px 10px 60px\");\n });\n\n test(\"panel\", async () => {\n let handle: PanelGroupHandle;\n let rightHandle: PanelHandle;\n let leftHandle: PanelHandle;\n\n render(() => (\n <div style={{ width: \"500px\" }}>\n <Collapsible\n handle={(v) => (handle = v)}\n rightPanelHandle={(v) => (rightHandle = v)}\n leftPanelHandle={(v) => (leftHandle = v)}\n />\n </div>\n ));\n\n await waitForMeasurement(handle!);\n\n expect(rightHandle!.isCollapsed()).toBe(true);\n expect(rightHandle!.isExpanded()).toBe(false);\n\n rightHandle!.expand();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle!.isCollapsed()).toBe(false);\n expect(rightHandle!.isExpanded()).toBe(true);\n\n rightHandle!.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(rightHandle!.isCollapsed()).toBe(true);\n expect(rightHandle!.isExpanded()).toBe(false);\n\n // Test the non controlled version\n\n expect(leftHandle!.isCollapsed()).toBe(false);\n expect(leftHandle!.isExpanded()).toBe(true);\n\n leftHandle!.collapse();\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n expect(leftHandle!.isCollapsed()).toBe(true);\n expect(leftHandle!.isExpanded()).toBe(false);\n expect(rightHandle!.getPercentageSize()).toBe(\n leftHandle!.getPercentageSize()\n );\n expect(rightHandle!.getPixelSize()).toBe(leftHandle!.getPixelSize());\n\n leftHandle!.expand();\n await new Promise((resolve) => setTimeout(resolve, 5000));\n\n expect(leftHandle!.isCollapsed()).toBe(false);\n expect(leftHandle!.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/solid",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "1.0
|
|
5
|
+
"version": "1.1.1--canary.9d2f98a.0",
|
|
6
6
|
"description": "A WAI-ARIA compliant window splitter for Solid.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/hipstersmoothie/window-splitter",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@chromatic-com/storybook": "^1.6.1",
|
|
34
|
-
"@internal/eslint-config": "1.0
|
|
34
|
+
"@internal/eslint-config": "1.1.1--canary.9d2f98a.0",
|
|
35
35
|
"@rsbuild/core": "^1.3.12",
|
|
36
36
|
"@rsdoctor/rspack-plugin": "^1.0.2",
|
|
37
37
|
"@solidjs/testing-library": "^0.8.10",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"solid-js": ">=1.x"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@window-splitter/interface": "1.0
|
|
64
|
-
"@window-splitter/state": "1.0
|
|
63
|
+
"@window-splitter/interface": "1.1.1--canary.9d2f98a.0",
|
|
64
|
+
"@window-splitter/state": "1.1.1--canary.9d2f98a.0"
|
|
65
65
|
},
|
|
66
66
|
"tshy": {
|
|
67
67
|
"exclude": [
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"plugin:storybook/recommended"
|
|
99
99
|
]
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "9d2f98a3d6226018c598018cea829d6412b60cd0"
|
|
102
102
|
}
|
|
@@ -70,6 +70,7 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
70
70
|
"autosaveStrategy",
|
|
71
71
|
"autosaveId",
|
|
72
72
|
"snapshot",
|
|
73
|
+
"shiftAmount",
|
|
73
74
|
]);
|
|
74
75
|
const [intiialValue, send, machineState, groupId] = createRoot(() => {
|
|
75
76
|
const defaultGroupId = `panel-group-${createUniqueId()}`;
|
|
@@ -99,6 +100,7 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
99
100
|
orientation,
|
|
100
101
|
groupId: groupIdInit,
|
|
101
102
|
autosaveStrategy: autosaveStrategy,
|
|
103
|
+
shiftAmount: props.shiftAmount,
|
|
102
104
|
...(snapshot ? prepareSnapshot(snapshot) : undefined),
|
|
103
105
|
},
|
|
104
106
|
(value) => {
|
|
@@ -377,14 +379,32 @@ export function Panel(props: PanelProps) {
|
|
|
377
379
|
() => props.handle,
|
|
378
380
|
() => ({
|
|
379
381
|
getId: () => panelId(),
|
|
380
|
-
collapse: () => {
|
|
381
|
-
if (
|
|
382
|
-
|
|
382
|
+
collapse: async () => {
|
|
383
|
+
if (panel().collapsible) {
|
|
384
|
+
// eslint-disable-next-line solid/reactivity
|
|
385
|
+
return await new Promise<void>((resolve) => {
|
|
386
|
+
send?.({
|
|
387
|
+
type: "collapsePanel",
|
|
388
|
+
panelId: panelId(),
|
|
389
|
+
controlled: true,
|
|
390
|
+
resolve,
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
}
|
|
383
394
|
},
|
|
384
395
|
isCollapsed: () => Boolean(panel().collapsible && panel().collapsed),
|
|
385
|
-
expand: () => {
|
|
386
|
-
if (
|
|
387
|
-
|
|
396
|
+
expand: async () => {
|
|
397
|
+
if (panel().collapsible) {
|
|
398
|
+
// eslint-disable-next-line solid/reactivity
|
|
399
|
+
return await new Promise<void>((resolve) => {
|
|
400
|
+
send?.({
|
|
401
|
+
type: "expandPanel",
|
|
402
|
+
panelId: panelId(),
|
|
403
|
+
controlled: true,
|
|
404
|
+
resolve,
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
}
|
|
388
408
|
},
|
|
389
409
|
isExpanded: () => Boolean(panel().collapsible && !panel().collapsed),
|
|
390
410
|
getPixelSize: () => {
|
|
@@ -221,25 +221,28 @@ test("Keyboard interactions with collapsed panels", async () => {
|
|
|
221
221
|
|
|
222
222
|
const resizer2 = document.getElementById("resizer-2")!;
|
|
223
223
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
224
|
-
await expectTemplate(handle, "
|
|
224
|
+
await expectTemplate(handle, "209.015625px 10px 167px 10px 101.984375px");
|
|
225
225
|
|
|
226
226
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
227
227
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
228
228
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
229
229
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft" });
|
|
230
|
-
await expectTemplate(handle, "
|
|
230
|
+
await expectTemplate(handle, "209.015625px 10px 163px 10px 105.984375px");
|
|
231
231
|
|
|
232
232
|
fireEvent.keyDown(resizer2, { key: "ArrowLeft", shiftKey: true });
|
|
233
233
|
await expectTemplate(
|
|
234
234
|
handle,
|
|
235
|
-
"209.03125px 10px
|
|
235
|
+
"209.03125px 10px 147.984375px 10px 120.984375px"
|
|
236
236
|
);
|
|
237
237
|
|
|
238
238
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
239
239
|
await expectTemplate(handle, "209.03125px 10px 208.96875px 10px 60px");
|
|
240
240
|
|
|
241
241
|
fireEvent.keyDown(resizer2, { key: "Enter" });
|
|
242
|
-
await expectTemplate(
|
|
242
|
+
await expectTemplate(
|
|
243
|
+
handle,
|
|
244
|
+
"209.046875px 10px 144.9375px 10px 124.015625px"
|
|
245
|
+
);
|
|
243
246
|
});
|
|
244
247
|
|
|
245
248
|
describe("imperative panel API", async () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`Autosave > cookie 1`] = `"autosave-cookie-solid=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A198%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A198%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%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%221%22%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%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%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%222%22%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-solid%22%2C%22autosaveStrategy%22%3A%22cookie%22%7D"`;
|
|
3
|
+
exports[`Autosave > cookie 1`] = `"autosave-cookie-solid=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A198%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A198%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%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%221%22%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%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%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%222%22%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-solid%22%2C%22autosaveStrategy%22%3A%22cookie%22%2C%22shiftAmount%22%3A15%7D"`;
|
|
4
4
|
|
|
5
5
|
exports[`Autosave > localStorage 1`] = `
|
|
6
6
|
[
|
package/doctor-storybook.log
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
🩺 The doctor is checking the health of your Storybook..
|
|
2
|
-
╭ Incompatible packages found ─────────────────────────────────────────────────────────────────────────────╮
|
|
3
|
-
│ │
|
|
4
|
-
│ You are currently using Storybook 1.0.0-beta.7 but you have packages which are incompatible with it: │
|
|
5
|
-
│ - @storybook/builder-vite@9.0.0-beta.4 which depends on 9.0.0-beta.4 │
|
|
6
|
-
│ Repo: https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme │
|
|
7
|
-
│ - storybook-solidjs@1.0.0-beta.7 which depends on * │
|
|
8
|
-
│ Repo: https://github.com/storybookjs/storybook/tree/main/renderers/solid │
|
|
9
|
-
│ - storybook-solidjs-vite@1.0.0-beta.7 which depends on * │
|
|
10
|
-
│ Repo: https://github.com/storybookjs/storybook/tree/main/frameworks/solid-vite │
|
|
11
|
-
│ │
|
|
12
|
-
│ │
|
|
13
|
-
│ Please consider updating your packages or contacting the maintainers for compatibility details. │
|
|
14
|
-
│ For more on Storybook 9 compatibility, see the linked GitHub issue: │
|
|
15
|
-
│ https://github.com/storybookjs/storybook/issues/30944 │
|
|
16
|
-
│ │
|
|
17
|
-
│ │
|
|
18
|
-
│ The version of storybook@1.0.0-beta.7 is behind the following core packages: │
|
|
19
|
-
│ - @storybook/builder-vite@9.0.0-beta.4 │
|
|
20
|
-
│ Upgrade Storybook with: │
|
|
21
|
-
│ npx storybook@latest upgrade │
|
|
22
|
-
│ │
|
|
23
|
-
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
24
|
-
|
|
25
|
-
You can always recheck the health of your project by running:
|
|
26
|
-
npx storybook doctor
|
|
27
|
-
|
|
28
|
-
Full logs are available in /Users/andrew/Documents/react-window-splitter/packages/solid/doctor-storybook.log
|
|
29
|
-
|