@window-splitter/solid 1.1.3 โ 1.2.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-test.log +29 -0
- package/CHANGELOG.md +17 -0
- package/dist/esm/SolidWIndowSplitter.jsx +2 -2
- package/dist/esm/SolidWIndowSplitter.jsx.map +1 -1
- package/package.json +24 -24
- package/src/SolidWIndowSplitter.tsx +3 -3
- package/.turbo/turbo-lint.log +0 -18
- package/LICENSE +0 -7
package/.turbo/turbo-build.log
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
> @window-splitter/solid@1.1.3 test /Users/andrew/Documents/window-splitter/packages/solid
|
|
3
|
+
> CI=true vitest
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
[1m[46m RUN [49m[22m [36mv3.1.2 [39m[90m/Users/andrew/Documents/window-splitter/packages/solid[39m
|
|
7
|
+
|
|
8
|
+
[90mstderr[2m | src/SolidWindowSplitter.test.tsx[2m > [22m[2mAutosave[2m > [22m[2mlocalStorage
|
|
9
|
+
[22m[39mnull
|
|
10
|
+
[90mstderr[2m | src/SolidWindowSplitter.test.tsx[2m > [22m[2mKeyboard interactions with collapsed panels
|
|
11
|
+
[22m[39mnull
|
|
12
|
+
[90mstdout[2m | src/SolidWindowSplitter.test.tsx[2m > [22m[2mimperative panel API[2m > [22m[2mpanel
|
|
13
|
+
[22m[39mCOLLAPSE PASSIVE true
|
|
14
|
+
[90mstdout[2m | src/SolidWindowSplitter.test.tsx[2m > [22m[2mimperative panel API[2m > [22m[2mpanel
|
|
15
|
+
[22m[39mCOLLAPSE PASSIVE false
|
|
16
|
+
[32mโ[39m [30m[43m chromium [49m[39m src/SolidWindowSplitter.test.tsx [2m([22m[2m10 tests[22m[2m)[22m[33m 27042[2mms[22m[39m
|
|
17
|
+
[33m[2mโ[22m[39m horizontal layout [33m 3706[2mms[22m[39m
|
|
18
|
+
[33m[2mโ[22m[39m vertical layout [33m 1300[2mms[22m[39m
|
|
19
|
+
[33m[2mโ[22m[39m Autosave[2m > [22mlocalStorage [33m 1310[2mms[22m[39m
|
|
20
|
+
[33m[2mโ[22m[39m Autosave[2m > [22mcallback [33m 4832[2mms[22m[39m
|
|
21
|
+
[33m[2mโ[22m[39m Autosave[2m > [22mcookie [33m 1325[2mms[22m[39m
|
|
22
|
+
[33m[2mโ[22m[39m Keyboard interactions with collapsed panels [33m 3084[2mms[22m[39m
|
|
23
|
+
[33m[2mโ[22m[39m imperative panel API[2m > [22mpanel [33m 11128[2mms[22m[39m
|
|
24
|
+
|
|
25
|
+
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
26
|
+
[2m Tests [22m [1m[32m10 passed[39m[22m[90m (10)[39m
|
|
27
|
+
[2m Start at [22m 12:24:47
|
|
28
|
+
[2m Duration [22m 27.62s[2m (transform 0ms, setup 0ms, collect 182ms, tests 27.04s, environment 0ms, prepare 9ms)[22m
|
|
29
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
# v1.2.0 (Wed Jul 08 2026)
|
|
2
|
+
|
|
3
|
+
#### ๐ Enhancement
|
|
4
|
+
|
|
5
|
+
- apply animations directly to dom [#85](https://github.com/hipstersmoothie/window-splitter/pull/85) ([@hipstersmoothie](https://github.com/hipstersmoothie) [@vikr01](https://github.com/vikr01))
|
|
6
|
+
|
|
7
|
+
#### ๐ Bug Fix
|
|
8
|
+
|
|
9
|
+
- apply animations directly to dom ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
10
|
+
|
|
11
|
+
#### Authors: 2
|
|
12
|
+
|
|
13
|
+
- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
14
|
+
- Vik R ([@vikr01](https://github.com/vikr01))
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
1
18
|
# v1.1.1 (Mon Jul 14 2025)
|
|
2
19
|
|
|
3
20
|
#### ๐ Bug Fix
|
|
@@ -11,6 +11,7 @@ export function PanelGroup(props) {
|
|
|
11
11
|
"snapshot",
|
|
12
12
|
"shiftAmount",
|
|
13
13
|
]);
|
|
14
|
+
let elementRef;
|
|
14
15
|
const [intiialValue, send, machineState, groupId] = createRoot(() => {
|
|
15
16
|
const defaultGroupId = `panel-group-${createUniqueId()}`;
|
|
16
17
|
const groupIdInit = props.autosaveId || props.id || defaultGroupId;
|
|
@@ -37,7 +38,7 @@ export function PanelGroup(props) {
|
|
|
37
38
|
...(snapshot ? prepareSnapshot(snapshot) : undefined),
|
|
38
39
|
}, (value) => {
|
|
39
40
|
setCurrentValue({ ...value });
|
|
40
|
-
}),
|
|
41
|
+
}, () => elementRef ?? null),
|
|
41
42
|
groupIdInit,
|
|
42
43
|
];
|
|
43
44
|
});
|
|
@@ -54,7 +55,6 @@ export function PanelGroup(props) {
|
|
|
54
55
|
{props.children}
|
|
55
56
|
</GroupMachineProvider>));
|
|
56
57
|
setIsInitialPrerender(false);
|
|
57
|
-
let elementRef;
|
|
58
58
|
// Measure group size
|
|
59
59
|
onMount(() => {
|
|
60
60
|
const observer = new ResizeObserver(([entry]) => {
|
|
@@ -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 \"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"]}
|
|
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 let elementRef: HTMLDivElement | undefined;\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 () => elementRef ?? null\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 // 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"]}
|
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.
|
|
5
|
+
"version": "1.2.0",
|
|
6
6
|
"description": "A WAI-ARIA compliant window splitter for Solid.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/hipstersmoothie/window-splitter",
|
|
@@ -18,40 +18,50 @@
|
|
|
18
18
|
"publishConfig": {
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tshy",
|
|
23
|
+
"test": "CI=true vitest",
|
|
24
|
+
"dev": "tshy -w",
|
|
25
|
+
"lint": "eslint .",
|
|
26
|
+
"stats": "rsbuild --mode production build",
|
|
27
|
+
"storybook": "storybook dev -p 6006",
|
|
28
|
+
"build-storybook": "storybook build",
|
|
29
|
+
"clean": "rm -rf dist .turbo .tshy .tshy-build"
|
|
30
|
+
},
|
|
21
31
|
"license": "MIT",
|
|
22
32
|
"devDependencies": {
|
|
23
33
|
"@chromatic-com/storybook": "^1.6.1",
|
|
24
|
-
"@internal/eslint-config": "1.
|
|
34
|
+
"@internal/eslint-config": "1.2.0",
|
|
25
35
|
"@rsbuild/core": "^1.3.12",
|
|
26
36
|
"@rsdoctor/rspack-plugin": "^1.0.2",
|
|
27
37
|
"@solidjs/testing-library": "^0.8.10",
|
|
28
38
|
"@storybook/builder-vite": "9.0.0-beta.4",
|
|
29
|
-
"@testing-library/jest-dom": "
|
|
39
|
+
"@testing-library/jest-dom": "catalog:",
|
|
30
40
|
"@types/node": "^20.14.10",
|
|
31
|
-
"@vitest/browser": "
|
|
32
|
-
"@vitest/coverage-istanbul": "
|
|
33
|
-
"eslint": "
|
|
41
|
+
"@vitest/browser": "catalog:",
|
|
42
|
+
"@vitest/coverage-istanbul": "catalog:",
|
|
43
|
+
"eslint": "catalog:",
|
|
34
44
|
"eslint-plugin-solid": "^0.14.5",
|
|
35
45
|
"framer-motion": "^11.3.28",
|
|
36
46
|
"jsdom": "^24.1.1",
|
|
37
|
-
"playwright": "
|
|
47
|
+
"playwright": "catalog:",
|
|
38
48
|
"solid-js": "^1.9.5",
|
|
39
49
|
"storybook": "9.0.0-beta.4",
|
|
40
50
|
"storybook-solidjs": "1.0.0-beta.6",
|
|
41
51
|
"storybook-solidjs-vite": "1.0.0-beta.6",
|
|
42
52
|
"tiny-cookie": "^2.5.1",
|
|
43
|
-
"tshy": "
|
|
44
|
-
"typescript": "
|
|
53
|
+
"tshy": "catalog:",
|
|
54
|
+
"typescript": "catalog:",
|
|
45
55
|
"vite": "^6.3.3",
|
|
46
56
|
"vite-plugin-solid": "^2.11.6",
|
|
47
|
-
"vitest": "
|
|
57
|
+
"vitest": "catalog:"
|
|
48
58
|
},
|
|
49
59
|
"peerDependencies": {
|
|
50
60
|
"solid-js": ">=1.x"
|
|
51
61
|
},
|
|
52
62
|
"dependencies": {
|
|
53
|
-
"@window-splitter/interface": "1.
|
|
54
|
-
"@window-splitter/state": "1.
|
|
63
|
+
"@window-splitter/interface": "1.2.0",
|
|
64
|
+
"@window-splitter/state": "1.2.0"
|
|
55
65
|
},
|
|
56
66
|
"tshy": {
|
|
57
67
|
"exclude": [
|
|
@@ -88,15 +98,5 @@
|
|
|
88
98
|
"plugin:storybook/recommended"
|
|
89
99
|
]
|
|
90
100
|
},
|
|
91
|
-
"gitHead": "
|
|
92
|
-
|
|
93
|
-
"build": "tshy",
|
|
94
|
-
"test": "CI=true vitest",
|
|
95
|
-
"dev": "tshy -w",
|
|
96
|
-
"lint": "eslint .",
|
|
97
|
-
"stats": "rsbuild --mode production build",
|
|
98
|
-
"storybook": "storybook dev -p 6006",
|
|
99
|
-
"build-storybook": "storybook build",
|
|
100
|
-
"clean": "rm -rf dist .turbo .tshy .tshy-build"
|
|
101
|
-
}
|
|
102
|
-
}
|
|
101
|
+
"gitHead": "0349b0b301c05e2a1a9b281abe7b93cccc9d9b9b"
|
|
102
|
+
}
|
|
@@ -72,6 +72,7 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
72
72
|
"snapshot",
|
|
73
73
|
"shiftAmount",
|
|
74
74
|
]);
|
|
75
|
+
let elementRef: HTMLDivElement | undefined;
|
|
75
76
|
const [intiialValue, send, machineState, groupId] = createRoot(() => {
|
|
76
77
|
const defaultGroupId = `panel-group-${createUniqueId()}`;
|
|
77
78
|
const groupIdInit = props.autosaveId || props.id || defaultGroupId;
|
|
@@ -105,7 +106,8 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
105
106
|
},
|
|
106
107
|
(value) => {
|
|
107
108
|
setCurrentValue({ ...value });
|
|
108
|
-
}
|
|
109
|
+
},
|
|
110
|
+
() => elementRef ?? null
|
|
109
111
|
),
|
|
110
112
|
groupIdInit,
|
|
111
113
|
];
|
|
@@ -132,8 +134,6 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
132
134
|
));
|
|
133
135
|
setIsInitialPrerender(false);
|
|
134
136
|
|
|
135
|
-
let elementRef: HTMLDivElement | undefined;
|
|
136
|
-
|
|
137
137
|
// Measure group size
|
|
138
138
|
onMount(() => {
|
|
139
139
|
const observer = new ResizeObserver(([entry]) => {
|
package/.turbo/turbo-lint.log
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
> @window-splitter/solid@1.1.0 lint /Users/alisowski/Documents/react-window-splitter/packages/solid
|
|
4
|
-
> eslint .
|
|
5
|
-
|
|
6
|
-
=============
|
|
7
|
-
|
|
8
|
-
WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.
|
|
9
|
-
|
|
10
|
-
You may find that it works just fine, or you may not.
|
|
11
|
-
|
|
12
|
-
SUPPORTED TYPESCRIPT VERSIONS: >=4.7.4 <5.6.0
|
|
13
|
-
|
|
14
|
-
YOUR TYPESCRIPT VERSION: 5.8.3
|
|
15
|
-
|
|
16
|
-
Please only submit bug reports when using the officially supported version.
|
|
17
|
-
|
|
18
|
-
=============
|
package/LICENSE
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
Copyright 2025 Andrew Lisowski
|
|
2
|
-
|
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the โSoftwareโ), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
-
|
|
5
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
-
|
|
7
|
-
THE SOFTWARE IS PROVIDED โAS ISโ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|