@window-splitter/solid 0.8.3 → 0.8.5
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 +14 -1
- package/CHANGELOG.md +31 -0
- package/dist/esm/SolidWIndowSplitter.d.ts.map +1 -1
- package/dist/esm/SolidWIndowSplitter.jsx +35 -84
- package/dist/esm/SolidWIndowSplitter.jsx.map +1 -1
- package/dist/esm/SolidWindowSplitter.stories.d.ts.map +1 -1
- package/dist/esm/SolidWindowSplitter.stories.jsx +0 -1
- package/dist/esm/SolidWindowSplitter.stories.jsx.map +1 -1
- package/dist/esm/context.d.ts.map +1 -1
- package/dist/esm/context.jsx.map +1 -1
- package/package.json +13 -14
- package/src/SolidWIndowSplitter.tsx +38 -79
- package/src/SolidWindowSplitter.stories.tsx +0 -1
- package/src/context.tsx +4 -5
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @window-splitter/solid@0.
|
|
3
|
+
> @window-splitter/solid@0.8.4 lint /Users/andrew/Documents/react-window-splitter/packages/solid
|
|
4
4
|
> eslint .
|
|
5
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/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
# v0.8.5 (Sun May 04 2025)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- Vue Adapter [#56](https://github.com/hipstersmoothie/window-splitter/pull/56) ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
6
|
+
- catalogs ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
7
|
+
- linting ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
8
|
+
|
|
9
|
+
#### Authors: 1
|
|
10
|
+
|
|
11
|
+
- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# v0.8.4 (Sat May 03 2025)
|
|
16
|
+
|
|
17
|
+
#### 🐛 Bug Fix
|
|
18
|
+
|
|
19
|
+
- Svelte Adapter [#55](https://github.com/hipstersmoothie/window-splitter/pull/55) ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
20
|
+
- builds ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
21
|
+
- tighten up spacing ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
22
|
+
- constraints and imperative api ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
23
|
+
- simplify solid code ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
24
|
+
- working ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
25
|
+
|
|
26
|
+
#### Authors: 1
|
|
27
|
+
|
|
28
|
+
- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
1
32
|
# v0.8.3 (Tue Apr 29 2025)
|
|
2
33
|
|
|
3
34
|
#### ⚠️ Pushed to `main`
|
|
@@ -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,eAwJhD;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,eAkMtC;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"}
|
|
@@ -58,24 +58,17 @@ export function PanelGroup(props) {
|
|
|
58
58
|
const observer = new ResizeObserver(([entry]) => {
|
|
59
59
|
if (!entry)
|
|
60
60
|
return;
|
|
61
|
-
if (entry.contentRect.width > 0 && entry.contentRect.height > 0)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
size: entry.contentRect,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
61
|
+
if (!(entry.contentRect.width > 0 && entry.contentRect.height > 0))
|
|
62
|
+
return;
|
|
63
|
+
send({ type: "setSize", size: entry.contentRect });
|
|
67
64
|
});
|
|
68
|
-
if (elementRef)
|
|
65
|
+
if (elementRef)
|
|
69
66
|
observer.observe(elementRef);
|
|
70
|
-
}
|
|
71
67
|
onCleanup(() => observer.disconnect());
|
|
72
68
|
});
|
|
73
|
-
const childIds = createDeferred(() =>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
throw new Error("No state");
|
|
77
|
-
return s.items.map((i) => i.id).join(",");
|
|
78
|
-
});
|
|
69
|
+
const childIds = createDeferred(() => currentValue()
|
|
70
|
+
.items.map((i) => i.id)
|
|
71
|
+
.join(","));
|
|
79
72
|
// Measure children size
|
|
80
73
|
createEffect(on(childIds, () => {
|
|
81
74
|
const cleanup = measureGroupChildren(groupId, (childrenSizes) => {
|
|
@@ -85,50 +78,28 @@ export function PanelGroup(props) {
|
|
|
85
78
|
}));
|
|
86
79
|
createRefContent(() => props.handle, () => ({
|
|
87
80
|
getId: () => groupId,
|
|
88
|
-
getPixelSizes: () =>
|
|
89
|
-
|
|
90
|
-
if (!s)
|
|
91
|
-
throw new Error("No state");
|
|
92
|
-
return getPanelGroupPixelSizes(s);
|
|
93
|
-
},
|
|
94
|
-
getPercentageSizes: () => {
|
|
95
|
-
const s = currentValue?.();
|
|
96
|
-
if (!s)
|
|
97
|
-
throw new Error("No state");
|
|
98
|
-
return getPanelGroupPercentageSizes(s);
|
|
99
|
-
},
|
|
81
|
+
getPixelSizes: () => getPanelGroupPixelSizes(currentValue()),
|
|
82
|
+
getPercentageSizes: () => getPanelGroupPercentageSizes(currentValue()),
|
|
100
83
|
setSizes: (updates) => {
|
|
101
|
-
const context = currentValue
|
|
102
|
-
if (!context)
|
|
103
|
-
throw new Error("No state");
|
|
84
|
+
const context = currentValue();
|
|
104
85
|
for (let index = 0; index < updates.length; index++) {
|
|
105
86
|
const item = context.items[index];
|
|
106
87
|
const update = updates[index];
|
|
107
88
|
if (item && isPanelData(item) && update) {
|
|
108
|
-
send({
|
|
109
|
-
type: "setPanelPixelSize",
|
|
110
|
-
panelId: item.id,
|
|
111
|
-
size: update,
|
|
112
|
-
});
|
|
89
|
+
send({ type: "setPanelPixelSize", panelId: item.id, size: update });
|
|
113
90
|
}
|
|
114
91
|
}
|
|
115
92
|
},
|
|
116
93
|
getTemplate: () => {
|
|
117
|
-
const context =
|
|
118
|
-
if (!context)
|
|
119
|
-
throw new Error("No state");
|
|
94
|
+
const context = getContext();
|
|
120
95
|
return buildTemplate({ ...context, items: prepareItems(context) });
|
|
121
96
|
},
|
|
122
97
|
getState: () => (machineState.current === "idle" ? "idle" : "dragging"),
|
|
123
98
|
}));
|
|
124
|
-
const getTemplate = () =>
|
|
125
|
-
const context = getContext();
|
|
126
|
-
const tempalte = buildTemplate(context);
|
|
127
|
-
return tempalte;
|
|
128
|
-
};
|
|
99
|
+
const getTemplate = () => buildTemplate(getContext());
|
|
129
100
|
onMount(() => send({ type: "unlockGroup" }));
|
|
130
101
|
onCleanup(() => send({ type: "lockGroup" }));
|
|
131
|
-
return (<div ref={elementRef} data-panel-group-wrapper {...attrs} style={{
|
|
102
|
+
return (<div id={groupId} ref={elementRef} data-panel-group-wrapper {...attrs} style={{
|
|
132
103
|
display: "grid",
|
|
133
104
|
"grid-template-columns": currentValue()?.orientation === "horizontal"
|
|
134
105
|
? getTemplate()
|
|
@@ -229,10 +200,7 @@ export function Panel(props) {
|
|
|
229
200
|
createEffect(on(contraintChanged, () => {
|
|
230
201
|
if (!hasMounted)
|
|
231
202
|
return;
|
|
232
|
-
send?.({
|
|
233
|
-
type: "updateConstraints",
|
|
234
|
-
data: initPanel(),
|
|
235
|
-
});
|
|
203
|
+
send?.({ type: "updateConstraints", data: initPanel() });
|
|
236
204
|
}));
|
|
237
205
|
onMount(() => {
|
|
238
206
|
hasMounted = true;
|
|
@@ -248,10 +216,7 @@ export function Panel(props) {
|
|
|
248
216
|
const order = Array.from(groupElement.children).indexOf(panelElement);
|
|
249
217
|
if (typeof order !== "number")
|
|
250
218
|
return;
|
|
251
|
-
send?.({
|
|
252
|
-
type: "registerDynamicPanel",
|
|
253
|
-
data: { ...initPanel(), order },
|
|
254
|
-
});
|
|
219
|
+
send?.({ type: "registerDynamicPanel", data: { ...initPanel(), order } });
|
|
255
220
|
dynamicPanelIsMounting = false;
|
|
256
221
|
});
|
|
257
222
|
const panelData = () => {
|
|
@@ -263,15 +228,10 @@ export function Panel(props) {
|
|
|
263
228
|
const currentCollapsed = () => props.collapsed?.() || false;
|
|
264
229
|
createEffect(on(currentCollapsed, () => {
|
|
265
230
|
const collapsed = props.collapsed?.() || false;
|
|
266
|
-
if (!panelData?.()?.collapseIsControlled)
|
|
231
|
+
if (!panelData?.()?.collapseIsControlled)
|
|
267
232
|
return;
|
|
268
|
-
}
|
|
269
233
|
if (collapsed) {
|
|
270
|
-
send?.({
|
|
271
|
-
type: "collapsePanel",
|
|
272
|
-
panelId: panelId(),
|
|
273
|
-
controlled: true,
|
|
274
|
-
});
|
|
234
|
+
send?.({ type: "collapsePanel", panelId: panelId(), controlled: true });
|
|
275
235
|
}
|
|
276
236
|
else {
|
|
277
237
|
send?.({ type: "expandPanel", panelId: panelId(), controlled: true });
|
|
@@ -382,10 +342,7 @@ export function PanelResizer(props) {
|
|
|
382
342
|
createEffect(on(contraintChanged, () => {
|
|
383
343
|
if (!hasMounted)
|
|
384
344
|
return;
|
|
385
|
-
send?.({
|
|
386
|
-
type: "updateConstraints",
|
|
387
|
-
data: initHandle(),
|
|
388
|
-
});
|
|
345
|
+
send?.({ type: "updateConstraints", data: initHandle() });
|
|
389
346
|
}));
|
|
390
347
|
onMount(() => {
|
|
391
348
|
hasMounted = true;
|
|
@@ -401,10 +358,7 @@ export function PanelResizer(props) {
|
|
|
401
358
|
const order = Array.from(groupElement.children).indexOf(handleElement);
|
|
402
359
|
if (typeof order !== "number")
|
|
403
360
|
return;
|
|
404
|
-
send?.({
|
|
405
|
-
type: "registerPanelHandle",
|
|
406
|
-
data: { ...initHandle(), order },
|
|
407
|
-
});
|
|
361
|
+
send?.({ type: "registerPanelHandle", data: { ...initHandle(), order } });
|
|
408
362
|
dynamicPanelHandleIsMounting = false;
|
|
409
363
|
});
|
|
410
364
|
const { moveProps } = move({
|
|
@@ -427,17 +381,6 @@ export function PanelResizer(props) {
|
|
|
427
381
|
const activeDragHandleId = () => state?.()?.activeDragHandleId;
|
|
428
382
|
const isDragging = () => activeDragHandleId() === handleId();
|
|
429
383
|
const panelBeforeHandle = () => state?.()?.items[itemIndex() - 1];
|
|
430
|
-
const getCollapsiblePanel = () => {
|
|
431
|
-
const currentState = state?.();
|
|
432
|
-
if (!currentState)
|
|
433
|
-
return undefined;
|
|
434
|
-
try {
|
|
435
|
-
return getCollapsiblePanelForHandleId(currentState, handleId());
|
|
436
|
-
}
|
|
437
|
-
catch {
|
|
438
|
-
return undefined;
|
|
439
|
-
}
|
|
440
|
-
};
|
|
441
384
|
const panelAttributes = () => {
|
|
442
385
|
const panelBefore = panelBeforeHandle();
|
|
443
386
|
const currentState = state?.();
|
|
@@ -475,15 +418,23 @@ export function PanelResizer(props) {
|
|
|
475
418
|
: { height: `${unit.value.toNumber()}px`, width: "100%" };
|
|
476
419
|
};
|
|
477
420
|
const onKeyDown = (e) => {
|
|
478
|
-
const
|
|
479
|
-
if (
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
421
|
+
const currentState = state?.();
|
|
422
|
+
if (!currentState)
|
|
423
|
+
return undefined;
|
|
424
|
+
try {
|
|
425
|
+
const collapsiblePanel = getCollapsiblePanelForHandleId(currentState, handleId());
|
|
426
|
+
if (e.key === "Enter" && collapsiblePanel) {
|
|
427
|
+
if (collapsiblePanel.collapsed) {
|
|
428
|
+
send?.({ type: "expandPanel", panelId: collapsiblePanel.id });
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
send?.({ type: "collapsePanel", panelId: collapsiblePanel.id });
|
|
432
|
+
}
|
|
485
433
|
}
|
|
486
434
|
}
|
|
435
|
+
catch {
|
|
436
|
+
return undefined;
|
|
437
|
+
}
|
|
487
438
|
};
|
|
488
439
|
onCleanup(() => {
|
|
489
440
|
// We wait a frame because in Solid children unmount before their parent
|
|
@@ -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 send({\n type: \"setSize\",\n size: entry.contentRect,\n });\n }\n });\n\n if (elementRef) {\n observer.observe(elementRef);\n }\n\n onCleanup(() => observer.disconnect());\n });\n\n const childIds = createDeferred(() => {\n const s = currentValue?.();\n if (!s) throw new Error(\"No state\");\n return s.items.map((i) => i.id).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: () => {\n const s = currentValue?.();\n if (!s) throw new Error(\"No state\");\n return getPanelGroupPixelSizes(s);\n },\n getPercentageSizes: () => {\n const s = currentValue?.();\n if (!s) throw new Error(\"No state\");\n return getPanelGroupPercentageSizes(s);\n },\n setSizes: (updates) => {\n const context = currentValue?.();\n if (!context) throw new Error(\"No state\");\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({\n type: \"setPanelPixelSize\",\n panelId: item.id,\n size: update,\n });\n }\n }\n },\n getTemplate: () => {\n const context = currentValue?.();\n if (!context) throw new Error(\"No state\");\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (machineState.current === \"idle\" ? \"idle\" : \"dragging\"),\n })\n );\n\n const getTemplate = () => {\n const context = getContext();\n const tempalte = buildTemplate(context);\n return tempalte;\n };\n\n onMount(() => send({ type: \"unlockGroup\" }));\n onCleanup(() => send({ type: \"lockGroup\" }));\n\n return (\n <div\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?.({\n type: \"updateConstraints\",\n data: initPanel(),\n });\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?.({\n type: \"registerDynamicPanel\",\n data: { ...initPanel(), order },\n });\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) {\n return;\n }\n\n if (collapsed) {\n send?.({\n type: \"collapsePanel\",\n panelId: panelId(),\n controlled: true,\n });\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?.({\n type: \"updateConstraints\",\n data: initHandle(),\n });\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?.({\n type: \"registerPanelHandle\",\n data: { ...initHandle(), order },\n });\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 getCollapsiblePanel = () => {\n const currentState = state?.();\n if (!currentState) return undefined;\n\n try {\n return getCollapsiblePanelForHandleId(currentState, handleId());\n } catch {\n return undefined;\n }\n };\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 collapsiblePanel = getCollapsiblePanel();\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 };\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 ]);\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidWindowSplitter.stories.d.ts","sourceRoot":"","sources":["../../src/SolidWindowSplitter.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EAMX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,GAAG,EAAoB,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,QAAA,MAAM,IAAI;;;CAGyB,CAAC;AAEpC,eAAe,IAAI,CAAC;AAgDpB,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,kCAQ/D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CACrC,kCAYA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CACrC,kCAcA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,kCAgBA;
|
|
1
|
+
{"version":3,"file":"SolidWindowSplitter.stories.d.ts","sourceRoot":"","sources":["../../src/SolidWindowSplitter.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EAMX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,GAAG,EAAoB,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,QAAA,MAAM,IAAI;;;CAGyB,CAAC;AAEpC,eAAe,IAAI,CAAC;AAgDpB,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,kCAQ/D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CACrC,kCAYA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CACrC,kCAcA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,kCAgBA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,kCA0B3E;AAED,wBAAgB,SAAS,mCAgBxB;AAED,wBAAgB,YAAY,mCAgB3B;AAED,wBAAgB,iBAAiB,mCAYhC;AAED,wBAAgB,gBAAgB,mCAc/B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,kCAkBvE;AAED,wBAAgB,eAAe,mCAoB9B;AAED,wBAAgB,YAAY,mCA6B3B;AAED,wBAAgB,YAAY,mCAoG3B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CACpC,kCAoCA;AAED,wBAAgB,uBAAuB,mCAqCtC;AAED,wBAAgB,eAAe,mCA8F9B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,kCAgCzE;AAED,wBAAgB,uBAAuB,mCA0CtC;AAED,wBAAgB,gBAAgB,mCAa/B;AAED,wBAAgB,YAAY,mCAY3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidWindowSplitter.stories.jsx","sourceRoot":"","sources":["../../src/SolidWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta } from \"storybook-solidjs\";\nimport { spring } from \"framer-motion\";\n\nimport {\n PanelGroup,\n PanelResizer,\n Panel,\n PanelGroupProps,\n PanelProps,\n PanelResizerProps,\n} from \"./SolidWIndowSplitter.jsx\";\nimport { createSignal, Ref, Show, splitProps } from \"solid-js\";\nimport { PanelHandle } from \"@window-splitter/interface\";\nimport { PanelGroupHandle } from \"@window-splitter/interface\";\nimport { GroupMachineContextValue } from \"@window-splitter/state\";\n\nconst meta = {\n title: \"Components/Solid\",\n component: PanelGroup,\n} satisfies Meta<typeof PanelGroup>;\n\nexport default meta;\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n \"border-radius\": \"12px\",\n \"box-sizing\": \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel(props: PanelProps) {\n const [, attrs] = splitProps(props, [\"children\"]);\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...attrs}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: \"20px\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\",\n overflow: \"hidden\",\n \"box-sizing\": \"border-box\",\n }}\n >\n {props.children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={props.handle} style={{ height: \"200px\" }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-example-solid\"\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCookie(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-cookie-solid\"\n autosaveStrategy=\"cookie\"\n style={{ height: \"200px\" }}\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer1\" size=\"10px\" style={{ background: \"red\" }} />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n onCollapseChange?: (isCollapsed: boolean) => void;\n}) {\n return (\n <StyledPanelGroup autosaveId=\"autosave-example-2\" handle={props.handle}>\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={props.onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\n// TODO: fix this\nexport function DynamicConstraints(props: { handle?: Ref<PanelGroupHandle> }) {\n const [customOn, setCustomOn] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel default=\"100px\" min={customOn() ? \"200px\" : \"100px\"}>\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min={customOn() ? \"100px\" : \"400px\"}\n max={customOn() ? \"300px\" : \"700px\"}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn())}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"322px\" }}\n handle={props.handle}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2() {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n \"border-radius\": \"12px\",\n height: \"400px\",\n }}\n >\n <Panel min=\"10%\">1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">2-1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">2-2-1</Panel>\n <StyledResizer />\n <Panel min=\"20%\">2-2-2</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">3</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: \"400px\" }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n rightPanelHandle?: Ref<PanelHandle>;\n leftPanelHandle?: Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = createSignal(true);\n\n return (\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel\n handle={props.leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={props.rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={setCollapsed}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n let groupRef: PanelGroupHandle | undefined;\n let panelRef: PanelHandle | undefined;\n\n return (\n <>\n <StyledPanelGroup handle={(v) => (groupRef = v)}>\n <StyledPanel\n handle={(v) => (panelRef = v)}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPercentageSizes()}`)}\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef?.setSizes([\"200px\", \"10px\", \"50%\", \"10px\", \"150px\"])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button type=\"button\" onClick={() => alert(`Id: ${panelRef?.getId()}`)}>\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Percentage: ${panelRef?.getPercentageSize()}`)}\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel(props: { handle?: Ref<PanelGroupHandle> }) {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n\n {isExpanded() && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n <Show when={isExpanded()}>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </Show>\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ \"background-color\": \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ \"background-color\": \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest() {\n return (\n <StyledPanelGroup style={{ height: \"200px\" }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidWindowSplitter.stories.jsx","sourceRoot":"","sources":["../../src/SolidWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta } from \"storybook-solidjs\";\nimport { spring } from \"framer-motion\";\n\nimport {\n PanelGroup,\n PanelResizer,\n Panel,\n PanelGroupProps,\n PanelProps,\n PanelResizerProps,\n} from \"./SolidWIndowSplitter.jsx\";\nimport { createSignal, Ref, Show, splitProps } from \"solid-js\";\nimport { PanelHandle } from \"@window-splitter/interface\";\nimport { PanelGroupHandle } from \"@window-splitter/interface\";\nimport { GroupMachineContextValue } from \"@window-splitter/state\";\n\nconst meta = {\n title: \"Components/Solid\",\n component: PanelGroup,\n} satisfies Meta<typeof PanelGroup>;\n\nexport default meta;\n\nfunction StyledPanelGroup(props: PanelGroupProps) {\n return (\n <PanelGroup\n {...props}\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n background: \"rgba(0, 0, 0, 0.1)\",\n \"border-radius\": \"12px\",\n \"box-sizing\": \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel(props: PanelProps) {\n const [, attrs] = splitProps(props, [\"children\"]);\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...attrs}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: \"20px\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\",\n overflow: \"hidden\",\n \"box-sizing\": \"border-box\",\n }}\n >\n {props.children}\n </div>\n </Panel>\n );\n}\n\nfunction StyledResizer(props: PanelResizerProps) {\n return <PanelResizer size=\"10px\" style={{ background: \"red\" }} {...props} />;\n}\n\nexport function Simple(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={props.handle} style={{ height: \"200px\" }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-example-solid\"\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCookie(props: {\n handle?: Ref<PanelGroupHandle>;\n snapshot?: GroupMachineContextValue;\n}) {\n return (\n <StyledPanelGroup\n autosaveId=\"autosave-cookie-solid\"\n autosaveStrategy=\"cookie\"\n style={{ height: \"200px\" }}\n handle={props.handle}\n snapshot={props.snapshot}\n >\n <StyledPanel id=\"1\">Panel 1</StyledPanel>\n <StyledResizer id=\"resizer1\" size=\"10px\" style={{ background: \"red\" }} />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function AutosaveCollapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n onCollapseChange?: (isCollapsed: boolean) => void;\n}) {\n return (\n <StyledPanelGroup autosaveId=\"autosave-example-2\" handle={props.handle}>\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={props.onCollapseChange}\n >\n Collapsible\n </StyledPanel>\n <StyledResizer id=\"resizer\" />\n <StyledPanel id=\"2\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function DynamicConstraints(props: { handle?: Ref<PanelGroupHandle> }) {\n const [customOn, setCustomOn] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel default=\"100px\" min={customOn() ? \"200px\" : \"100px\"}>\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min={customOn() ? \"100px\" : \"400px\"}\n max={customOn() ? \"300px\" : \"700px\"}\n >\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setCustomOn(!customOn())}>\n Toggle Custom\n </button>\n </>\n );\n}\n\nexport function SimpleMin() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleMinMax() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"200px\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>Panel 2</div>\n </StyledPanel>\n <StyledResizer size=\"20px\" />\n <StyledPanel min=\"100px\">\n <div>Panel 3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function SimpleConstraints() {\n return (\n <StyledPanelGroup>\n <StyledPanel min=\"100px\" max=\"50%\">\n <div>Panel 1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel>\n <div>Panel 2</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function HorizontalLayout() {\n return (\n <StyledPanelGroup orientation=\"horizontal\">\n <StyledPanel default=\"30%\" min=\"20%\">\n left\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n right\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout(props: { handle?: Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"322px\" }}\n handle={props.handle}\n >\n <StyledPanel default=\"30%\" min=\"20%\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"20%\">middle</StyledPanel>\n <StyledResizer />\n <StyledPanel default=\"30%\" min=\"20%\">\n bottom\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function VerticalLayout2() {\n return (\n <StyledPanelGroup\n orientation=\"vertical\"\n style={{ height: \"calc(100vh - 100px)\" }}\n >\n <StyledPanel default=\"200px\" min=\"200px\">\n top\n </StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"200px\"\n collapsedSize=\"60px\"\n defaultCollapsed\n collapsible\n >\n middle\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function NestedGroups() {\n return (\n <PanelGroup\n orientation=\"horizontal\"\n style={{\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n \"border-radius\": \"12px\",\n height: \"400px\",\n }}\n >\n <Panel min=\"10%\">1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">2-1</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">2-2-1</Panel>\n <StyledResizer />\n <Panel min=\"20%\">2-2-2</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">3</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: \"400px\" }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n <StyledResizer />\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: \"40px\",\n height: \"100%\",\n \"box-sizing\": \"border-box\",\n }}\n >\n <p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec\n euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi, eu\n tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n <p>\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl. Sed euismod, nisl eget ultricies\n ultrices, nunc nisi aliquam nisi, eu tincidunt nisl nisl eu nisl.\n Sed euismod, nisl eget ultricies ultrices, nunc nisi aliquam nisi,\n eu tincidunt nisl nisl eu nisl.\n </p>\n </div>\n </Panel>\n </StyledPanelGroup>\n );\n}\n\nexport function Collapsible(props: {\n handle?: Ref<PanelGroupHandle>;\n rightPanelHandle?: Ref<PanelHandle>;\n leftPanelHandle?: Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = createSignal(true);\n\n return (\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel\n handle={props.leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE PASSIVE\", isCollapsed);\n }}\n >\n <div>1</div>\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={props.rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={setCollapsed}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", \"box-sizing\": \"border-box\" }}\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n style={{ border: \"10px solid blue\", \"box-sizing\": \"border-box\" }}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{\n easing: (t) => springFn.next(t * 1000).value,\n duration: 1000,\n }}\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function ImperativePanel() {\n let groupRef: PanelGroupHandle | undefined;\n let panelRef: PanelHandle | undefined;\n\n return (\n <>\n <StyledPanelGroup handle={(v) => (groupRef = v)}>\n <StyledPanel\n handle={(v) => (panelRef = v)}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n >\n 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">2</StyledPanel>\n <StyledResizer />\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n >\n 3\n </StyledPanel>\n </StyledPanelGroup>\n\n <div>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Sizes: ${groupRef?.getPercentageSizes()}`)}\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef?.setSizes([\"200px\", \"10px\", \"50%\", \"10px\", \"150px\"])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button type=\"button\" onClick={() => alert(`Id: ${panelRef?.getId()}`)}>\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Percentage: ${panelRef?.getPercentageSize()}`)}\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel(props: { handle?: Ref<PanelGroupHandle> }) {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup handle={props.handle}>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n\n {isExpanded() && (\n <>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n 3\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </>\n )}\n </StyledPanelGroup>\n\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = createSignal(false);\n\n return (\n <>\n <StyledPanelGroup>\n <StyledPanel id=\"panel-1\" min=\"100px\" collapsible collapsedSize=\"60px\">\n <div>1</div>\n </StyledPanel>\n <StyledResizer id=\"handle-1\" />\n <StyledPanel id=\"panel-2\" min=\"100px\">\n <div>2</div>\n </StyledPanel>\n <StyledResizer id=\"handle-2\" />\n <StyledPanel id=\"panel-3\" min=\"100px\">\n <div>3</div>\n </StyledPanel>\n <Show when={isExpanded()}>\n <StyledResizer id=\"handle-3\" />\n <StyledPanel id=\"panel-4\" min=\"100px\">\n expanded\n <button type=\"button\" onClick={() => setIsExpanded(false)}>\n Close\n </button>\n </StyledPanel>\n </Show>\n <StyledResizer id=\"handle-4\" />\n <StyledPanel\n min=\"200px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n id=\"panel-5\"\n >\n <div>4</div>\n </StyledPanel>\n </StyledPanelGroup>\n <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ \"background-color\": \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ \"background-color\": \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest() {\n return (\n <StyledPanelGroup style={{ height: \"200px\" }}>\n <StyledPanel min=\"100px\" max=\"300px\" isStaticAtRest>\n Panel 1\n </StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 3</StyledPanel>\n </StyledPanelGroup>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE1E,eAAO,MAAM,uBAAuB,+CAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE1E,eAAO,MAAM,uBAAuB,+CAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+GAA0B,CAAC;AAC3D,eAAO,MAAM,cAAc,gDAA0B,CAAC;AACtD,eAAO,MAAM,mBAAmB,wFACiC,CAAC;AAElE,wBAAgB,0BAA0B,sBAGzC;AAED,wBAAgB,eAAe,sFAG9B;AAED,wBAAgB,UAAU,uBAGzB;AAED,wBAAgB,eAAe,+DAG9B;AAGD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACtC,kCAkBA"}
|
package/dist/esm/context.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.jsx","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAwB,MAAM,UAAU,CAAC;AAG3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAClD,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"context.jsx","sourceRoot":"","sources":["../../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAwB,MAAM,UAAU,CAAC;AAG3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAClD,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,EAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,EAAU,CAAC;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,aAAa,EAAkD,CAAC;AAElE,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,KAMpC;IACC,OAAO,CACL,CAAC,uBAAuB,CAAC,QAAQ,CAC/B,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAE/C;MAAA,CAAC,2DAA2D,CAC5D;MAAA,CAAC,+CAA+C,CAChD;MAAA,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAC5C;QAAA,CAAC,+CAA+C,CAChD;QAAA,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC9C;UAAA,CAAC,+CAA+C,CAChD;UAAA,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAC/C;YAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;UAAA,EAAE,mBAAmB,CAAC,QAAQ,CAChC;QAAA,EAAE,mBAAmB,CAAC,QAAQ,CAChC;MAAA,EAAE,cAAc,CAAC,QAAQ,CAC3B;IAAA,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CACpC,CAAC;AACJ,CAAC","sourcesContent":["import { createContext, useContext, Accessor, JSXElement } from \"solid-js\";\nimport { GroupMachineContextValue, SendFn } from \"@window-splitter/state\";\n\nexport const InitialPrerenderContext = createContext<Accessor<boolean>>(\n () => false\n);\nexport const MachineActorContext = createContext<SendFn>();\nexport const GroupIdContext = createContext<string>();\nexport const MachineStateContext =\n createContext<Accessor<GroupMachineContextValue | undefined>>();\n\nexport function useInitialPrerenderContext() {\n const context = useContext(InitialPrerenderContext);\n return context;\n}\n\nexport function useMachineActor() {\n const context = useContext(MachineActorContext);\n return context;\n}\n\nexport function useGroupId() {\n const context = useContext(GroupIdContext);\n return context;\n}\n\nexport function useMachineState() {\n const context = useContext(MachineStateContext);\n return context;\n}\n\n// Create a provider component that bundles all the contexts together\nexport function GroupMachineProvider(props: {\n children: JSXElement;\n groupId: string;\n send: SendFn;\n state: Accessor<GroupMachineContextValue | undefined>;\n initialPrerender?: Accessor<boolean>;\n}) {\n return (\n <InitialPrerenderContext.Provider\n value={props.initialPrerender ?? (() => false)}\n >\n {/* The rule is wrong. the docs even suggust this pattern */}\n {/* eslint-disable-next-line solid/reactivity */}\n <GroupIdContext.Provider value={props.groupId}>\n {/* eslint-disable-next-line solid/reactivity */}\n <MachineActorContext.Provider value={props.send}>\n {/* eslint-disable-next-line solid/reactivity */}\n <MachineStateContext.Provider value={props.state}>\n {props.children}\n </MachineStateContext.Provider>\n </MachineActorContext.Provider>\n </GroupIdContext.Provider>\n </InitialPrerenderContext.Provider>\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": "0.8.
|
|
5
|
+
"version": "0.8.5",
|
|
6
6
|
"description": "A WAI-ARIA compliant window splitter for Solid.",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/hipstersmoothie/window-splitter",
|
|
@@ -31,38 +31,37 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@chromatic-com/storybook": "^1.6.1",
|
|
34
|
-
"@internal/eslint-config": "0.8.
|
|
34
|
+
"@internal/eslint-config": "0.8.5",
|
|
35
35
|
"@rsbuild/core": "^1.3.12",
|
|
36
36
|
"@rsdoctor/rspack-plugin": "^1.0.2",
|
|
37
37
|
"@solidjs/testing-library": "^0.8.10",
|
|
38
38
|
"@storybook/builder-vite": "9.0.0-beta.4",
|
|
39
|
-
"@testing-library/jest-dom": "
|
|
39
|
+
"@testing-library/jest-dom": "catalog:",
|
|
40
40
|
"@types/node": "^20.14.10",
|
|
41
|
-
"@vitest/browser": "
|
|
42
|
-
"@vitest/coverage-istanbul": "
|
|
43
|
-
"eslint": "
|
|
41
|
+
"@vitest/browser": "catalog:",
|
|
42
|
+
"@vitest/coverage-istanbul": "catalog:",
|
|
43
|
+
"eslint": "catalog:",
|
|
44
44
|
"eslint-plugin-solid": "^0.14.5",
|
|
45
|
-
"eslint-plugin-storybook": "^0.12.0",
|
|
46
45
|
"framer-motion": "^11.3.28",
|
|
47
46
|
"jsdom": "^24.1.1",
|
|
48
|
-
"playwright": "
|
|
47
|
+
"playwright": "catalog:",
|
|
49
48
|
"solid-js": "^1.9.5",
|
|
50
49
|
"storybook": "9.0.0-beta.4",
|
|
51
50
|
"storybook-solidjs": "1.0.0-beta.6",
|
|
52
51
|
"storybook-solidjs-vite": "1.0.0-beta.6",
|
|
53
52
|
"tiny-cookie": "^2.5.1",
|
|
54
|
-
"tshy": "
|
|
55
|
-
"typescript": "
|
|
53
|
+
"tshy": "catalog:",
|
|
54
|
+
"typescript": "catalog:",
|
|
56
55
|
"vite": "^6.3.3",
|
|
57
56
|
"vite-plugin-solid": "^2.11.6",
|
|
58
|
-
"vitest": "
|
|
57
|
+
"vitest": "catalog:"
|
|
59
58
|
},
|
|
60
59
|
"peerDependencies": {
|
|
61
60
|
"solid-js": ">=1.x"
|
|
62
61
|
},
|
|
63
62
|
"dependencies": {
|
|
64
|
-
"@window-splitter/interface": "0.8.
|
|
65
|
-
"@window-splitter/state": "0.8.
|
|
63
|
+
"@window-splitter/interface": "0.8.5",
|
|
64
|
+
"@window-splitter/state": "0.8.5"
|
|
66
65
|
},
|
|
67
66
|
"tshy": {
|
|
68
67
|
"exclude": [
|
|
@@ -99,5 +98,5 @@
|
|
|
99
98
|
"plugin:storybook/recommended"
|
|
100
99
|
]
|
|
101
100
|
},
|
|
102
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "b1a919f0f05d2216d8926513fb191167a5437674"
|
|
103
102
|
}
|
|
@@ -136,26 +136,20 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
136
136
|
onMount(() => {
|
|
137
137
|
const observer = new ResizeObserver(([entry]) => {
|
|
138
138
|
if (!entry) return;
|
|
139
|
-
if (entry.contentRect.width > 0 && entry.contentRect.height > 0)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
size: entry.contentRect,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
139
|
+
if (!(entry.contentRect.width > 0 && entry.contentRect.height > 0))
|
|
140
|
+
return;
|
|
141
|
+
send({ type: "setSize", size: entry.contentRect });
|
|
145
142
|
});
|
|
146
143
|
|
|
147
|
-
if (elementRef)
|
|
148
|
-
observer.observe(elementRef);
|
|
149
|
-
}
|
|
150
|
-
|
|
144
|
+
if (elementRef) observer.observe(elementRef);
|
|
151
145
|
onCleanup(() => observer.disconnect());
|
|
152
146
|
});
|
|
153
147
|
|
|
154
|
-
const childIds = createDeferred(() =>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
148
|
+
const childIds = createDeferred(() =>
|
|
149
|
+
currentValue()
|
|
150
|
+
.items.map((i) => i.id)
|
|
151
|
+
.join(",")
|
|
152
|
+
);
|
|
159
153
|
|
|
160
154
|
// Measure children size
|
|
161
155
|
createEffect(
|
|
@@ -172,53 +166,36 @@ export function PanelGroup(props: PanelGroupProps) {
|
|
|
172
166
|
() => props.handle,
|
|
173
167
|
() => ({
|
|
174
168
|
getId: () => groupId,
|
|
175
|
-
getPixelSizes: () =>
|
|
176
|
-
|
|
177
|
-
if (!s) throw new Error("No state");
|
|
178
|
-
return getPanelGroupPixelSizes(s);
|
|
179
|
-
},
|
|
180
|
-
getPercentageSizes: () => {
|
|
181
|
-
const s = currentValue?.();
|
|
182
|
-
if (!s) throw new Error("No state");
|
|
183
|
-
return getPanelGroupPercentageSizes(s);
|
|
184
|
-
},
|
|
169
|
+
getPixelSizes: () => getPanelGroupPixelSizes(currentValue()),
|
|
170
|
+
getPercentageSizes: () => getPanelGroupPercentageSizes(currentValue()),
|
|
185
171
|
setSizes: (updates) => {
|
|
186
|
-
const context = currentValue
|
|
187
|
-
if (!context) throw new Error("No state");
|
|
172
|
+
const context = currentValue();
|
|
188
173
|
|
|
189
174
|
for (let index = 0; index < updates.length; index++) {
|
|
190
175
|
const item = context.items[index];
|
|
191
176
|
const update = updates[index];
|
|
192
177
|
|
|
193
178
|
if (item && isPanelData(item) && update) {
|
|
194
|
-
send({
|
|
195
|
-
type: "setPanelPixelSize",
|
|
196
|
-
panelId: item.id,
|
|
197
|
-
size: update,
|
|
198
|
-
});
|
|
179
|
+
send({ type: "setPanelPixelSize", panelId: item.id, size: update });
|
|
199
180
|
}
|
|
200
181
|
}
|
|
201
182
|
},
|
|
202
183
|
getTemplate: () => {
|
|
203
|
-
const context =
|
|
204
|
-
if (!context) throw new Error("No state");
|
|
184
|
+
const context = getContext();
|
|
205
185
|
return buildTemplate({ ...context, items: prepareItems(context) });
|
|
206
186
|
},
|
|
207
187
|
getState: () => (machineState.current === "idle" ? "idle" : "dragging"),
|
|
208
188
|
})
|
|
209
189
|
);
|
|
210
190
|
|
|
211
|
-
const getTemplate = () =>
|
|
212
|
-
const context = getContext();
|
|
213
|
-
const tempalte = buildTemplate(context);
|
|
214
|
-
return tempalte;
|
|
215
|
-
};
|
|
191
|
+
const getTemplate = () => buildTemplate(getContext());
|
|
216
192
|
|
|
217
193
|
onMount(() => send({ type: "unlockGroup" }));
|
|
218
194
|
onCleanup(() => send({ type: "lockGroup" }));
|
|
219
195
|
|
|
220
196
|
return (
|
|
221
197
|
<div
|
|
198
|
+
id={groupId}
|
|
222
199
|
ref={elementRef}
|
|
223
200
|
data-panel-group-wrapper
|
|
224
201
|
{...attrs}
|
|
@@ -348,10 +325,7 @@ export function Panel(props: PanelProps) {
|
|
|
348
325
|
createEffect(
|
|
349
326
|
on(contraintChanged, () => {
|
|
350
327
|
if (!hasMounted) return;
|
|
351
|
-
send?.({
|
|
352
|
-
type: "updateConstraints",
|
|
353
|
-
data: initPanel(),
|
|
354
|
-
});
|
|
328
|
+
send?.({ type: "updateConstraints", data: initPanel() });
|
|
355
329
|
})
|
|
356
330
|
);
|
|
357
331
|
|
|
@@ -374,10 +348,7 @@ export function Panel(props: PanelProps) {
|
|
|
374
348
|
|
|
375
349
|
if (typeof order !== "number") return;
|
|
376
350
|
|
|
377
|
-
send?.({
|
|
378
|
-
type: "registerDynamicPanel",
|
|
379
|
-
data: { ...initPanel(), order },
|
|
380
|
-
});
|
|
351
|
+
send?.({ type: "registerDynamicPanel", data: { ...initPanel(), order } });
|
|
381
352
|
dynamicPanelIsMounting = false;
|
|
382
353
|
});
|
|
383
354
|
|
|
@@ -392,16 +363,10 @@ export function Panel(props: PanelProps) {
|
|
|
392
363
|
on(currentCollapsed, () => {
|
|
393
364
|
const collapsed = props.collapsed?.() || false;
|
|
394
365
|
|
|
395
|
-
if (!panelData?.()?.collapseIsControlled)
|
|
396
|
-
return;
|
|
397
|
-
}
|
|
366
|
+
if (!panelData?.()?.collapseIsControlled) return;
|
|
398
367
|
|
|
399
368
|
if (collapsed) {
|
|
400
|
-
send?.({
|
|
401
|
-
type: "collapsePanel",
|
|
402
|
-
panelId: panelId(),
|
|
403
|
-
controlled: true,
|
|
404
|
-
});
|
|
369
|
+
send?.({ type: "collapsePanel", panelId: panelId(), controlled: true });
|
|
405
370
|
} else {
|
|
406
371
|
send?.({ type: "expandPanel", panelId: panelId(), controlled: true });
|
|
407
372
|
}
|
|
@@ -538,10 +503,7 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
538
503
|
createEffect(
|
|
539
504
|
on(contraintChanged, () => {
|
|
540
505
|
if (!hasMounted) return;
|
|
541
|
-
send?.({
|
|
542
|
-
type: "updateConstraints",
|
|
543
|
-
data: initHandle(),
|
|
544
|
-
});
|
|
506
|
+
send?.({ type: "updateConstraints", data: initHandle() });
|
|
545
507
|
})
|
|
546
508
|
);
|
|
547
509
|
|
|
@@ -564,10 +526,7 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
564
526
|
|
|
565
527
|
if (typeof order !== "number") return;
|
|
566
528
|
|
|
567
|
-
send?.({
|
|
568
|
-
type: "registerPanelHandle",
|
|
569
|
-
data: { ...initHandle(), order },
|
|
570
|
-
});
|
|
529
|
+
send?.({ type: "registerPanelHandle", data: { ...initHandle(), order } });
|
|
571
530
|
dynamicPanelHandleIsMounting = false;
|
|
572
531
|
});
|
|
573
532
|
|
|
@@ -593,16 +552,6 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
593
552
|
const activeDragHandleId = () => state?.()?.activeDragHandleId;
|
|
594
553
|
const isDragging = () => activeDragHandleId() === handleId();
|
|
595
554
|
const panelBeforeHandle = () => state?.()?.items[itemIndex() - 1];
|
|
596
|
-
const getCollapsiblePanel = () => {
|
|
597
|
-
const currentState = state?.();
|
|
598
|
-
if (!currentState) return undefined;
|
|
599
|
-
|
|
600
|
-
try {
|
|
601
|
-
return getCollapsiblePanelForHandleId(currentState, handleId());
|
|
602
|
-
} catch {
|
|
603
|
-
return undefined;
|
|
604
|
-
}
|
|
605
|
-
};
|
|
606
555
|
const panelAttributes = () => {
|
|
607
556
|
const panelBefore = panelBeforeHandle();
|
|
608
557
|
const currentState = state?.();
|
|
@@ -641,14 +590,24 @@ export function PanelResizer(props: PanelResizerProps) {
|
|
|
641
590
|
};
|
|
642
591
|
|
|
643
592
|
const onKeyDown = (e: KeyboardEvent) => {
|
|
644
|
-
const
|
|
593
|
+
const currentState = state?.();
|
|
594
|
+
if (!currentState) return undefined;
|
|
645
595
|
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
596
|
+
try {
|
|
597
|
+
const collapsiblePanel = getCollapsiblePanelForHandleId(
|
|
598
|
+
currentState,
|
|
599
|
+
handleId()
|
|
600
|
+
);
|
|
601
|
+
|
|
602
|
+
if (e.key === "Enter" && collapsiblePanel) {
|
|
603
|
+
if (collapsiblePanel.collapsed) {
|
|
604
|
+
send?.({ type: "expandPanel", panelId: collapsiblePanel.id });
|
|
605
|
+
} else {
|
|
606
|
+
send?.({ type: "collapsePanel", panelId: collapsiblePanel.id });
|
|
607
|
+
}
|
|
651
608
|
}
|
|
609
|
+
} catch {
|
|
610
|
+
return undefined;
|
|
652
611
|
}
|
|
653
612
|
};
|
|
654
613
|
|
package/src/context.tsx
CHANGED
|
@@ -4,11 +4,10 @@ import { GroupMachineContextValue, SendFn } from "@window-splitter/state";
|
|
|
4
4
|
export const InitialPrerenderContext = createContext<Accessor<boolean>>(
|
|
5
5
|
() => false
|
|
6
6
|
);
|
|
7
|
-
export const MachineActorContext = createContext<SendFn
|
|
8
|
-
export const GroupIdContext = createContext<string
|
|
9
|
-
export const MachineStateContext =
|
|
10
|
-
Accessor<GroupMachineContextValue | undefined
|
|
11
|
-
>();
|
|
7
|
+
export const MachineActorContext = createContext<SendFn>();
|
|
8
|
+
export const GroupIdContext = createContext<string>();
|
|
9
|
+
export const MachineStateContext =
|
|
10
|
+
createContext<Accessor<GroupMachineContextValue | undefined>>();
|
|
12
11
|
|
|
13
12
|
export function useInitialPrerenderContext() {
|
|
14
13
|
const context = useContext(InitialPrerenderContext);
|