@window-splitter/react 1.1.1--canary.9d2f98a.0 β 1.1.1
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/CHANGELOG.md +24 -0
- package/dist/commonjs/ReactWindowSplitter.js +1 -1
- package/dist/commonjs/ReactWindowSplitter.js.map +1 -1
- package/dist/commonjs/ReactWindowSplitter.stories.js +1 -1
- package/dist/commonjs/ReactWindowSplitter.stories.js.map +1 -1
- package/dist/esm/ReactWindowSplitter.js +1 -1
- package/dist/esm/ReactWindowSplitter.js.map +1 -1
- package/dist/esm/ReactWindowSplitter.stories.js +1 -1
- package/dist/esm/ReactWindowSplitter.stories.js.map +1 -1
- package/package.json +5 -5
- package/src/ReactWindowSplitter.stories.tsx +1 -1
- package/src/ReactWindowSplitter.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# v1.1.1 (Mon Jul 14 2025)
|
|
2
|
+
|
|
3
|
+
#### π Bug Fix
|
|
4
|
+
|
|
5
|
+
- Fix controlled panel resize bugs and make collapse/expand awaitable [#67](https://github.com/hipstersmoothie/window-splitter/pull/67) ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
6
|
+
- tests ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
7
|
+
- fix: parse stored default value to Big [#65](https://github.com/hipstersmoothie/window-splitter/pull/65) ([@andrefgneves](https://github.com/andrefgneves))
|
|
8
|
+
- fix: Prevent React panel group data from being saved to local storage when autosaveId is not set [#66](https://github.com/hipstersmoothie/window-splitter/pull/66) ([@y4ure](https://github.com/y4ure))
|
|
9
|
+
- fix lint ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
10
|
+
- self code review ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
11
|
+
- fix some controlled panel bugs ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
12
|
+
- typo ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
13
|
+
- awaitable colllapse ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
14
|
+
- fix: Prevent React panel group data from being saved to local storage when autosaveId is unset ([@y4ure](https://github.com/y4ure))
|
|
15
|
+
- fix: parse stored default value to Big ([@andrefgneves](https://github.com/andrefgneves))
|
|
16
|
+
|
|
17
|
+
#### Authors: 3
|
|
18
|
+
|
|
19
|
+
- Adam Yau ([@y4ure](https://github.com/y4ure))
|
|
20
|
+
- AndrΓ© Neves ([@andrefgneves](https://github.com/andrefgneves))
|
|
21
|
+
- Andrew Lisowski ([@sfc-gh-alisowski](https://github.com/sfc-gh-alisowski))
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
1
25
|
# v1.1.0 (Mon May 26 2025)
|
|
2
26
|
|
|
3
27
|
#### π Enhancement
|
|
@@ -208,7 +208,7 @@ exports.PanelGroup = react_1.default.forwardRef(function PanelGroup({ children,
|
|
|
208
208
|
!hasPreRendered && (react_1.default.createElement(PrerenderTree, { onPrerender: () => setHasPreRendered(true) }, indexedChildren)),
|
|
209
209
|
react_1.default.createElement(PanelGroupImpl, { ref: ref, initialItems: initialMap, ...props }, indexedChildren)));
|
|
210
210
|
});
|
|
211
|
-
const PanelGroupImpl = react_1.default.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = "localStorage", snapshot: snapshotProp, initialItems, shiftAmount, ...props }, ref) {
|
|
211
|
+
const PanelGroupImpl = react_1.default.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = autosaveId ? "localStorage" : undefined, snapshot: snapshotProp, initialItems, shiftAmount, ...props }, ref) {
|
|
212
212
|
const defaultGroupId = `panel-group-${(0, utils_1.useId)()}`;
|
|
213
213
|
const groupId = autosaveId || props.id || defaultGroupId;
|
|
214
214
|
const [snapshot, setSnapshot] = react_1.default.useState(snapshotProp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n measureGroupChildren,\n PanelGroupHandle,\n PanelHandle,\n SharedPanelGroupProps,\n SharedPanelProps,\n SharedPanelResizerProps,\n mergeAttributes,\n} from \"@window-splitter/interface\";\nimport React, {\n useEffect,\n useImperativeHandle,\n createContext,\n useRef,\n useState,\n useMemo,\n useContext,\n} from \"react\";\nimport {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getGroupSize,\n getPanelWithId,\n groupMachine,\n GroupMachineContextValue,\n initializePanel,\n InitializePanelHandleData,\n isPanelData,\n Item,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n getPanelGroupPixelSizes,\n getPanelGroupPercentageSizes,\n getPanelPixelSize,\n getPanelPercentageSize,\n getCursor,\n haveConstraintsChangedForPanel,\n PanelHandleData,\n ParsedPixelUnit,\n haveConstraintsChangedForPanelHandle,\n GroupMachineInput,\n GroupMachineEvent,\n State,\n initializePanelHandleData,\n} from \"@window-splitter/state\";\nimport {\n useEffectEvent,\n useId,\n useLayoutEffect,\n mergeRefs,\n} from \"@react-aria/utils\";\nimport { useIndex, useIndexedChildren } from \"./useIndexedChildren.js\";\nimport { useMove } from \"./useMove.js\";\n\n// #region Components\n\nconst GroupMachineState = createContext<{ current: State | undefined }>({\n current: undefined,\n});\nconst GroupMachineContext = createContext<GroupMachineContextValue | undefined>(\n undefined\n);\nconst GroupMachineStateContextRef = createContext<\n React.MutableRefObject<GroupMachineContextValue>\n>({\n current: undefined,\n} as unknown as React.MutableRefObject<GroupMachineContextValue>);\nconst GroupMachineActor = createContext<(e: GroupMachineEvent) => void>(\n () => {}\n);\nconst GroupMachine = {\n useSelector<R>(\n selector: (data: { context: GroupMachineContextValue }) => R\n ): R {\n const context = useContext(GroupMachineContext);\n if (!context) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return selector({ context });\n },\n useActorRef: () => {\n const send = useContext(GroupMachineActor);\n return { send };\n },\n useContextRef: () => {\n const ref = useContext(GroupMachineStateContextRef);\n if (!ref) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return ref;\n },\n Provider: ({\n input,\n children,\n }: {\n input: GroupMachineInput;\n children: React.ReactNode;\n }) => {\n const [intiialValue, send, state] = useMemo(\n () =>\n groupMachine(input, (value) => {\n currentContextRef.current = value;\n setCurrentValue({ ...value });\n }),\n // We only want this to run once, we dont care about changes to the input\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const currentContextRef = useRef(intiialValue);\n const [currentValue, setCurrentValue] = useState(intiialValue);\n\n useEffect(() => {\n send({ type: \"unlockGroup\" });\n\n return () => {\n // When we were on xstate we could fire off event during unmount and if the parent group\n // unmounted too the events would never apply. With out own state machine code it doesn't\n // do that so we have to lock the group as it unmounts so it's children don't de-register.\n send({ type: \"lockGroup\" });\n };\n }, [send]);\n\n return (\n <GroupMachineState.Provider value={state}>\n <GroupMachineStateContextRef.Provider value={currentContextRef}>\n <GroupMachineContext.Provider value={currentValue}>\n <GroupMachineActor.Provider value={send}>\n {children}\n </GroupMachineActor.Provider>\n </GroupMachineContext.Provider>\n </GroupMachineStateContextRef.Provider>\n </GroupMachineState.Provider>\n );\n },\n};\n\n// function useDebugGroupMachineContext({ id }: { id: string }) {\n// const value = GroupMachineContext.useSelector((state) => state.value);\n// const context = GroupMachineContext.useSelector((state) => state.context);\n// console.log(\n// \"GROUP CONTEXT\",\n// buildTemplate(context),\n// context.size,\n// context.items.map((item) =>\n// isPanelData(item)\n// ? {\n// type: item.currentValue.type,\n// value: item.currentValue.value.toNumber(),\n// }\n// : { type: item.size.type, value: item.size.value.toNumber() }\n// )\n// );\n// }\n\nexport interface PanelGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: React.Ref<PanelGroupHandle>;\n}\n\nconst InitialMapContext = createContext<Item[]>([]);\nconst PreRenderContext = createContext(false);\n\nfunction PrerenderTree({\n children,\n onPrerender,\n}: {\n children: React.ReactNode;\n onPrerender: () => void;\n}) {\n const [shouldPrerender, setShouldPrerender] = React.useState(true);\n\n useLayoutEffect(() => {\n setShouldPrerender(false);\n onPrerender();\n // We only want this to run once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return shouldPrerender ? (\n <div className=\"opacity-0 absolute\">\n <PreRenderContext.Provider value>{children}</PreRenderContext.Provider>\n </div>\n ) : null;\n}\n\nfunction useGroupItem<T extends Item>(\n itemArg: Omit<T, \"id\"> & { id?: string }\n): T {\n const isPrerender = React.useContext(PreRenderContext);\n const initialMap = React.useContext(InitialMapContext);\n const generatedId = useId();\n const id = itemArg.id || generatedId;\n const { index } = useIndex();\n const item = { ...itemArg, id } as T;\n\n if (isPrerender) {\n if (!initialMap.find((i) => i.id === item.id)) {\n initialMap.push(item);\n }\n return item;\n }\n\n // The way this hooks is called is never conditional so the usage here is fine\n /* eslint-disable react-hooks/rules-of-hooks */\n const currentItem = GroupMachine.useSelector(\n ({ context }) => context.items[index]\n ) as T;\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n\n const onCollapseChangeRef = isPanelData(itemArg)\n ? itemArg.onCollapseChange\n : undefined;\n const onResizeRef = isPanelData(itemArg) ? itemArg.onResize : undefined;\n const onUnmountRef = useRef<(() => void) | undefined>(undefined);\n\n // We register panels before layout so it looks good\n useLayoutEffect(() => {\n const context = machineRef.current;\n\n if (!context) {\n return;\n }\n\n let contextItem: Item | undefined;\n\n if (itemArg.id) {\n contextItem = context.items.find((i) => i.id === itemArg.id);\n\n if (!contextItem) {\n if (!itemArg.id) {\n throw new Error(\n \"When using dynamic panels you must provide an id on the items. This applies to React strict mode as well.\"\n );\n }\n\n if (isPanelData(itemArg)) {\n send({\n type: \"registerDynamicPanel\",\n data: { ...itemArg, order: index },\n });\n } else {\n send({\n type: \"registerPanelHandle\",\n data: initializePanelHandleData({\n ...(itemArg as unknown as InitializePanelHandleData),\n order: index,\n }),\n });\n }\n } else if (onCollapseChangeRef || onResizeRef) {\n send({\n type: \"rebindPanelCallbacks\",\n data: {\n id: itemArg.id,\n onCollapseChange: onCollapseChangeRef,\n onResize: onResizeRef,\n },\n });\n }\n } else {\n contextItem = context.items[index];\n }\n\n const unmountId = contextItem?.id || itemArg.id;\n\n onUnmountRef.current = () => {\n if (!unmountId) return;\n\n const el = document.querySelector(\n `[data-splitter-id=\"${unmountId}\"]`\n ) as HTMLElement;\n\n if (el || !unmountId) {\n return;\n }\n\n if (isPanelData(itemArg)) {\n send({ type: \"unregisterPanel\", id: unmountId });\n } else {\n send({ type: \"unregisterPanelHandle\", id: unmountId });\n }\n };\n }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);\n\n // And unregister after layout so we can tell if the element was actually removed.\n React.useEffect(() => {\n return () => {\n onUnmountRef.current?.();\n onUnmountRef.current = undefined;\n };\n }, []);\n\n return currentItem || item;\n /* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/** A group of panels that has constraints and a user can resize */\nexport const PanelGroup = React.forwardRef<HTMLDivElement, PanelGroupProps>(\n function PanelGroup({ children, ...props }, ref) {\n const [hasPreRendered, setHasPreRendered] = useState(false);\n const initialMap = useRef<Item[]>([]);\n const indexedChildren = useIndexedChildren(children);\n\n return (\n <InitialMapContext.Provider value={initialMap.current}>\n {!hasPreRendered && (\n <PrerenderTree onPrerender={() => setHasPreRendered(true)}>\n {indexedChildren}\n </PrerenderTree>\n )}\n\n <PanelGroupImpl ref={ref} initialItems={initialMap} {...props}>\n {indexedChildren}\n </PanelGroupImpl>\n </InitialMapContext.Provider>\n );\n }\n);\n\nconst PanelGroupImpl = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps & {\n initialItems: { current: Item[] };\n }\n>(function PanelGroupImpl(\n {\n autosaveId,\n autosaveStrategy = \"localStorage\",\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\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 = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n const p = getPanelWithId(context, panelId);\n\n if (collapsed === true && !p.collapsed) {\n send({ type: \"collapsePanel\", panelId, controlled: true });\n } else if (collapsed === false && p.collapsed) {\n send({ type: \"expandPanel\", panelId, controlled: true });\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, \"id\"> }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n ...props\n },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const unit = parseUnit(size);\n const { send } = GroupMachine.useActorRef();\n const { index } = useIndex();\n const handleId = GroupMachine.useSelector(\n ({ context }) => context.items[index]?.id || \"\"\n );\n const panelHandle = GroupMachine.useSelector(\n ({ context }) => context.items[index] as PanelHandleData\n );\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\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 return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n measureGroupChildren,\n PanelGroupHandle,\n PanelHandle,\n SharedPanelGroupProps,\n SharedPanelProps,\n SharedPanelResizerProps,\n mergeAttributes,\n} from \"@window-splitter/interface\";\nimport React, {\n useEffect,\n useImperativeHandle,\n createContext,\n useRef,\n useState,\n useMemo,\n useContext,\n} from \"react\";\nimport {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getGroupSize,\n getPanelWithId,\n groupMachine,\n GroupMachineContextValue,\n initializePanel,\n InitializePanelHandleData,\n isPanelData,\n Item,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n getPanelGroupPixelSizes,\n getPanelGroupPercentageSizes,\n getPanelPixelSize,\n getPanelPercentageSize,\n getCursor,\n haveConstraintsChangedForPanel,\n PanelHandleData,\n ParsedPixelUnit,\n haveConstraintsChangedForPanelHandle,\n GroupMachineInput,\n GroupMachineEvent,\n State,\n initializePanelHandleData,\n} from \"@window-splitter/state\";\nimport {\n useEffectEvent,\n useId,\n useLayoutEffect,\n mergeRefs,\n} from \"@react-aria/utils\";\nimport { useIndex, useIndexedChildren } from \"./useIndexedChildren.js\";\nimport { useMove } from \"./useMove.js\";\n\n// #region Components\n\nconst GroupMachineState = createContext<{ current: State | undefined }>({\n current: undefined,\n});\nconst GroupMachineContext = createContext<GroupMachineContextValue | undefined>(\n undefined\n);\nconst GroupMachineStateContextRef = createContext<\n React.MutableRefObject<GroupMachineContextValue>\n>({\n current: undefined,\n} as unknown as React.MutableRefObject<GroupMachineContextValue>);\nconst GroupMachineActor = createContext<(e: GroupMachineEvent) => void>(\n () => {}\n);\nconst GroupMachine = {\n useSelector<R>(\n selector: (data: { context: GroupMachineContextValue }) => R\n ): R {\n const context = useContext(GroupMachineContext);\n if (!context) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return selector({ context });\n },\n useActorRef: () => {\n const send = useContext(GroupMachineActor);\n return { send };\n },\n useContextRef: () => {\n const ref = useContext(GroupMachineStateContextRef);\n if (!ref) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return ref;\n },\n Provider: ({\n input,\n children,\n }: {\n input: GroupMachineInput;\n children: React.ReactNode;\n }) => {\n const [intiialValue, send, state] = useMemo(\n () =>\n groupMachine(input, (value) => {\n currentContextRef.current = value;\n setCurrentValue({ ...value });\n }),\n // We only want this to run once, we dont care about changes to the input\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const currentContextRef = useRef(intiialValue);\n const [currentValue, setCurrentValue] = useState(intiialValue);\n\n useEffect(() => {\n send({ type: \"unlockGroup\" });\n\n return () => {\n // When we were on xstate we could fire off event during unmount and if the parent group\n // unmounted too the events would never apply. With out own state machine code it doesn't\n // do that so we have to lock the group as it unmounts so it's children don't de-register.\n send({ type: \"lockGroup\" });\n };\n }, [send]);\n\n return (\n <GroupMachineState.Provider value={state}>\n <GroupMachineStateContextRef.Provider value={currentContextRef}>\n <GroupMachineContext.Provider value={currentValue}>\n <GroupMachineActor.Provider value={send}>\n {children}\n </GroupMachineActor.Provider>\n </GroupMachineContext.Provider>\n </GroupMachineStateContextRef.Provider>\n </GroupMachineState.Provider>\n );\n },\n};\n\n// function useDebugGroupMachineContext({ id }: { id: string }) {\n// const value = GroupMachineContext.useSelector((state) => state.value);\n// const context = GroupMachineContext.useSelector((state) => state.context);\n// console.log(\n// \"GROUP CONTEXT\",\n// buildTemplate(context),\n// context.size,\n// context.items.map((item) =>\n// isPanelData(item)\n// ? {\n// type: item.currentValue.type,\n// value: item.currentValue.value.toNumber(),\n// }\n// : { type: item.size.type, value: item.size.value.toNumber() }\n// )\n// );\n// }\n\nexport interface PanelGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: React.Ref<PanelGroupHandle>;\n}\n\nconst InitialMapContext = createContext<Item[]>([]);\nconst PreRenderContext = createContext(false);\n\nfunction PrerenderTree({\n children,\n onPrerender,\n}: {\n children: React.ReactNode;\n onPrerender: () => void;\n}) {\n const [shouldPrerender, setShouldPrerender] = React.useState(true);\n\n useLayoutEffect(() => {\n setShouldPrerender(false);\n onPrerender();\n // We only want this to run once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return shouldPrerender ? (\n <div className=\"opacity-0 absolute\">\n <PreRenderContext.Provider value>{children}</PreRenderContext.Provider>\n </div>\n ) : null;\n}\n\nfunction useGroupItem<T extends Item>(\n itemArg: Omit<T, \"id\"> & { id?: string }\n): T {\n const isPrerender = React.useContext(PreRenderContext);\n const initialMap = React.useContext(InitialMapContext);\n const generatedId = useId();\n const id = itemArg.id || generatedId;\n const { index } = useIndex();\n const item = { ...itemArg, id } as T;\n\n if (isPrerender) {\n if (!initialMap.find((i) => i.id === item.id)) {\n initialMap.push(item);\n }\n return item;\n }\n\n // The way this hooks is called is never conditional so the usage here is fine\n /* eslint-disable react-hooks/rules-of-hooks */\n const currentItem = GroupMachine.useSelector(\n ({ context }) => context.items[index]\n ) as T;\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n\n const onCollapseChangeRef = isPanelData(itemArg)\n ? itemArg.onCollapseChange\n : undefined;\n const onResizeRef = isPanelData(itemArg) ? itemArg.onResize : undefined;\n const onUnmountRef = useRef<(() => void) | undefined>(undefined);\n\n // We register panels before layout so it looks good\n useLayoutEffect(() => {\n const context = machineRef.current;\n\n if (!context) {\n return;\n }\n\n let contextItem: Item | undefined;\n\n if (itemArg.id) {\n contextItem = context.items.find((i) => i.id === itemArg.id);\n\n if (!contextItem) {\n if (!itemArg.id) {\n throw new Error(\n \"When using dynamic panels you must provide an id on the items. This applies to React strict mode as well.\"\n );\n }\n\n if (isPanelData(itemArg)) {\n send({\n type: \"registerDynamicPanel\",\n data: { ...itemArg, order: index },\n });\n } else {\n send({\n type: \"registerPanelHandle\",\n data: initializePanelHandleData({\n ...(itemArg as unknown as InitializePanelHandleData),\n order: index,\n }),\n });\n }\n } else if (onCollapseChangeRef || onResizeRef) {\n send({\n type: \"rebindPanelCallbacks\",\n data: {\n id: itemArg.id,\n onCollapseChange: onCollapseChangeRef,\n onResize: onResizeRef,\n },\n });\n }\n } else {\n contextItem = context.items[index];\n }\n\n const unmountId = contextItem?.id || itemArg.id;\n\n onUnmountRef.current = () => {\n if (!unmountId) return;\n\n const el = document.querySelector(\n `[data-splitter-id=\"${unmountId}\"]`\n ) as HTMLElement;\n\n if (el || !unmountId) {\n return;\n }\n\n if (isPanelData(itemArg)) {\n send({ type: \"unregisterPanel\", id: unmountId });\n } else {\n send({ type: \"unregisterPanelHandle\", id: unmountId });\n }\n };\n }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);\n\n // And unregister after layout so we can tell if the element was actually removed.\n React.useEffect(() => {\n return () => {\n onUnmountRef.current?.();\n onUnmountRef.current = undefined;\n };\n }, []);\n\n return currentItem || item;\n /* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/** A group of panels that has constraints and a user can resize */\nexport const PanelGroup = React.forwardRef<HTMLDivElement, PanelGroupProps>(\n function PanelGroup({ children, ...props }, ref) {\n const [hasPreRendered, setHasPreRendered] = useState(false);\n const initialMap = useRef<Item[]>([]);\n const indexedChildren = useIndexedChildren(children);\n\n return (\n <InitialMapContext.Provider value={initialMap.current}>\n {!hasPreRendered && (\n <PrerenderTree onPrerender={() => setHasPreRendered(true)}>\n {indexedChildren}\n </PrerenderTree>\n )}\n\n <PanelGroupImpl ref={ref} initialItems={initialMap} {...props}>\n {indexedChildren}\n </PanelGroupImpl>\n </InitialMapContext.Provider>\n );\n }\n);\n\nconst PanelGroupImpl = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps & {\n initialItems: { current: Item[] };\n }\n>(function PanelGroupImpl(\n {\n autosaveId,\n autosaveStrategy = autosaveId ? \"localStorage\" : undefined,\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\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 = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n const p = getPanelWithId(context, panelId);\n\n if (collapsed === true && !p.collapsed) {\n send({ type: \"collapsePanel\", panelId, controlled: true });\n } else if (collapsed === false && p.collapsed) {\n send({ type: \"expandPanel\", panelId, controlled: true });\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, \"id\"> }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n ...props\n },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const unit = parseUnit(size);\n const { send } = GroupMachine.useActorRef();\n const { index } = useIndex();\n const handleId = GroupMachine.useSelector(\n ({ context }) => context.items[index]?.id || \"\"\n );\n const panelHandle = GroupMachine.useSelector(\n ({ context }) => context.items[index] as PanelHandleData\n );\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\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 return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
|
|
@@ -325,7 +325,7 @@ function ConditionalPanelComplex() {
|
|
|
325
325
|
react_1.default.createElement("button", { type: "button", onClick: () => setIsExpanded(true) }, "Expand")));
|
|
326
326
|
}
|
|
327
327
|
function WithDefaultWidth() {
|
|
328
|
-
return (react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { style: { height: "400px" } },
|
|
328
|
+
return (react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { style: { height: "400px" }, autosaveId: "with-default-width" },
|
|
329
329
|
react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "#333366" } }),
|
|
330
330
|
react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px" }),
|
|
331
331
|
react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { default: "100px", min: "100px", max: "400px", style: { backgroundColor: "#ff3366" } })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\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 borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {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({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\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 AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\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 {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\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 handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\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 borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"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: 40,\n height: \"100%\",\n boxSizing: \"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({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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\", boxSizing: \"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 const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\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.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={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 {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 <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\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 {isExpanded && (\n <>\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 </>\n )}\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 </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\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\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\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 borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {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({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\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 AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\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 {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\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 handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\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 borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"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: 40,\n height: \"100%\",\n boxSizing: \"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({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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\", boxSizing: \"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 const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\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.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={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 {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 <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\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 {isExpanded && (\n <>\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 </>\n )}\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 </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }} autosaveId=\"with-default-width\">\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\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\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n"]}
|
|
@@ -172,7 +172,7 @@ export const PanelGroup = React.forwardRef(function PanelGroup({ children, ...pr
|
|
|
172
172
|
!hasPreRendered && (React.createElement(PrerenderTree, { onPrerender: () => setHasPreRendered(true) }, indexedChildren)),
|
|
173
173
|
React.createElement(PanelGroupImpl, { ref: ref, initialItems: initialMap, ...props }, indexedChildren)));
|
|
174
174
|
});
|
|
175
|
-
const PanelGroupImpl = React.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = "localStorage", snapshot: snapshotProp, initialItems, shiftAmount, ...props }, ref) {
|
|
175
|
+
const PanelGroupImpl = React.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = autosaveId ? "localStorage" : undefined, snapshot: snapshotProp, initialItems, shiftAmount, ...props }, ref) {
|
|
176
176
|
const defaultGroupId = `panel-group-${useId()}`;
|
|
177
177
|
const groupId = autosaveId || props.id || defaultGroupId;
|
|
178
178
|
const [snapshot, setSnapshot] = React.useState(snapshotProp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EAMpB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,EACZ,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,QAAQ,EACR,OAAO,EACP,UAAU,GACX,MAAM,OAAO,CAAC;AACf,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,eAAe,EAEf,WAAW,EAGX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,SAAS,EACT,8BAA8B,EAG9B,oCAAoC,EAIpC,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,KAAK,EACL,eAAe,EACf,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,qBAAqB;AAErB,MAAM,iBAAiB,GAAG,aAAa,CAAiC;IACtE,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,aAAa,CACvC,SAAS,CACV,CAAC;AACF,MAAM,2BAA2B,GAAG,aAAa,CAE/C;IACA,OAAO,EAAE,SAAS;CAC4C,CAAC,CAAC;AAClE,MAAM,iBAAiB,GAAG,aAAa,CACrC,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;AACF,MAAM,YAAY,GAAG;IACnB,WAAW,CACT,QAA4D;QAE5D,MAAM,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,WAAW,EAAE,GAAG,EAAE;QAChB,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,QAAQ,EAAE,CAAC,EACT,KAAK,EACL,QAAQ,GAIT,EAAE,EAAE;QACH,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO,CACzC,GAAG,EAAE,CACH,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;YAClC,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;QACJ,yEAAyE;QACzE,uDAAuD;QACvD,EAAE,CACH,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE/D,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAE9B,OAAO,GAAG,EAAE;gBACV,wFAAwF;gBACxF,yFAAyF;gBACzF,0FAA0F;gBAC1F,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEX,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;YACtC,oBAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB;gBAC5D,oBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY;oBAC/C,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,IACpC,QAAQ,CACkB,CACA,CACM,CACZ,CAC9B,CAAC;IACJ,CAAC;CACF,CAAC;AA2BF,MAAM,iBAAiB,GAAG,aAAa,CAAS,EAAE,CAAC,CAAC;AACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAE9C,SAAS,aAAa,CAAC,EACrB,QAAQ,EACR,WAAW,GAIZ;IACC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnE,eAAe,CAAC,GAAG,EAAE;QACnB,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,WAAW,EAAE,CAAC;QACd,gCAAgC;QAChC,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,eAAe,CAAC,CAAC,CAAC,CACvB,6BAAK,SAAS,EAAC,oBAAoB;QACjC,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,UAAE,QAAQ,CAA6B,CACnE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CACnB,OAAwC;IAExC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,WAAW,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,EAAO,CAAC;IAErC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,+CAA+C;IAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAC1C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CACjC,CAAC;IACP,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAEhD,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,gBAAgB;QAC1B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,MAAM,CAA2B,SAAS,CAAC,CAAC;IAEjE,oDAAoD;IACpD,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,WAA6B,CAAC;QAElC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACf,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;gBACJ,CAAC;gBAED,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,IAAI,EAAE,sBAAsB;wBAC5B,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;qBACnC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,IAAI,EAAE,qBAAqB;wBAC3B,IAAI,EAAE,yBAAyB,CAAC;4BAC9B,GAAI,OAAgD;4BACpD,KAAK,EAAE,KAAK;yBACb,CAAC;qBACH,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,mBAAmB,IAAI,WAAW,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBACH,IAAI,EAAE,sBAAsB;oBAC5B,IAAI,EAAE;wBACJ,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,gBAAgB,EAAE,mBAAmB;wBACrC,QAAQ,EAAE,WAAW;qBACtB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;QAEhD,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAC/B,sBAAsB,SAAS,IAAI,CACrB,CAAC;YAEjB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEzE,kFAAkF;IAClF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzB,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,WAAW,IAAI,IAAI,CAAC;IAC3B,8CAA8C;AAChD,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,SAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC7C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,CAAC,OAAO;QAClD,CAAC,cAAc,IAAI,CAClB,oBAAC,aAAa,IAAC,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IACtD,eAAe,CACF,CACjB;QAED,oBAAC,cAAc,IAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,KAAM,KAAK,IAC1D,eAAe,CACD,CACU,CAC9B,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAKrC,SAAS,cAAc,CACvB,EACE,UAAU,EACV,gBAAgB,GAAG,cAAc,EACjC,QAAQ,EAAE,YAAY,EACtB,YAAY,EACZ,WAAW,EACX,GAAG,KAAK,EACT,EACD,GAAG;IAEH,MAAM,cAAc,GAAG,eAAe,KAAK,EAAE,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,cAAc,CAAC;IACzD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAE5C,YAAY,CAAC,CAAC;IAEhB,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,UAAU;QACV,CAAC,QAAQ;QACT,gBAAgB,KAAK,cAAc,EACnC,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EAAE;YACL,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO;YACP,KAAK,EAAE,YAAY,CAAC,OAAO;YAC3B,gBAAgB;YAChB,WAAW;YACX,GAAG,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;SACjE;QAED,oBAAC,wBAAwB,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAC3B,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,KAAK,CAAC,UAAU,CAG/C,SAAS,wBAAwB,CACjC,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAClD,QAAQ;IAER,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CACrC,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAClD,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAC7B,CAAC;IAEF,wEAAwE;IACxE,IAAI,eAAe,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;QACvD,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,8BAA8B;IAC9B,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;QAEjC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAErB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAE5D,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAClD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/C,CAAC;IACF,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,oBAAoB,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE;YACrD,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9B,gDAAgD;IAEhD,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE5C,mBAAmB,CAAC,MAAM,IAAI,iBAAiB,EAAE,GAAG,EAAE;QACpD,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO;YACpB,aAAa,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC;YAChE,kBAAkB,EAAE,GAAG,EAAE,CACvB,4BAA4B,CAAC,UAAU,CAAC,OAAO,CAAC;YAClD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;gBACpB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBAEnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBAE9B,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;wBACxC,IAAI,CAAC;4BACH,IAAI,EAAE,mBAAmB;4BACzB,OAAO,EAAE,IAAI,CAAC,EAAE;4BAChB,IAAI,EAAE,MAAM;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBACnC,OAAO,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;SACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,mBACO,OAAO,4BACE,WAAW,KAC/B,eAAe,CAAC,KAAK,EAAE;YACzB,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,mBAAmB,EACjB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACrD,gBAAgB,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACnE,MAAM,EAAE,MAAM;aACf;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AASH,oCAAoC;AACpC,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CACnC,SAAS,KAAK,CACZ,EACE,gBAAgB,EAChB,GAAG,EACH,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,GAAG,KAAK,EACT,EACD,QAAQ;IAER,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACjD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3D,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,OAAO,GAAG,gBAAgB,CAAC;IACjD,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,eAAe,CAAC;YACrB,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,aAAa;YAC5B,gBAAgB,EAAE,mBAAmB;YACrC,iBAAiB,EAAE,iBAAiB;YACpC,QAAQ,EAAE,WAAW;YACrB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,gBAAgB;YAChB,OAAO,EAAE,WAAW;YACpB,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE;QACD,iBAAiB;QACjB,SAAS;QACT,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,GAAG;QACH,GAAG;QACH,KAAK,CAAC,EAAE;QACR,WAAW;QACX,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oBAAC,YAAY,IACX,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,YAAY,KACnB,KAAK,EACT,OAAO,EAAE,OAAO,GAChB,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAgBnC,SAAS,YAAY,CACrB,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EACxE,QAAQ;IAER,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GACrB,KAAK,IAAI,8BAA8B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,EAAE;QAC7C,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,iBAAiB,EAAE,CAAC;YACtB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElD,kEAAkE;IAClE,2CAA2C;IAC3C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YAEnC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE3C,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBACvC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3C,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAE1D,mBAAmB,CAAC,MAAM,IAAI,iBAAiB,EAAE,GAAG,EAAE;QACpD,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO;YACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACtE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,SAAS,CAAC;YAC3D,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACpE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAC3D,YAAY,EAAE,GAAG,EAAE;gBACjB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBACnC,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,iBAAiB,EAAE,GAAG,EAAE;gBACtB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBACnC,OAAO,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,KACJ,eAAe,CACjB,KAAK,EACL,qBAAqB,CAAC;YACpB,OAAO;YACP,EAAE,EAAE,OAAO;YACX,SAAS;YACT,WAAW,EAAE,KAAK,EAAE,WAAW;SAChC,CAAC,EACF;YACE,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,QAAQ;aACnB;SACF,CACF,GACD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AASH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAoB;QACxC,EAAE,EAAE,KAAK,CAAC,EAAE;KACb,CAAC,EACF,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CACjB,CAAC;IAEF,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,oBAAC,mBAAmB,IAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;AAC7E,CAAC,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAG1C,SAAS,mBAAmB,CAC5B,EACE,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EACD,QAAQ;IAER,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CACvC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAChD,CAAC;IACF,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAC1C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAoB,CACzD,CAAC;IACF,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,OAAO,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CACrC,CAAC;IACF,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAC5B,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CACxC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CACvC,CAAC;IACF,MAAM,kBAAkB,GAAG,YAAY,CAAC,WAAW,CACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAC5C,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,IAAI,MAAqC,CAAC;IAE1C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC5B,WAAW,EAAE,GAAG,EAAE;YAChB,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtD,WAAW,EAAE,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpD,SAAS,EAAE,EAAE,CAAC;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,iBAAiB,GACrB,WAAW;QACX,oCAAoC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,EAAE;QAC7C,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,iBAAiB,EAAE,CAAC;YACtB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC3D,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,gBAAgB,EAAE,CAAC;YAC1C,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BACE,GAAG,EAAE,GAA2C,KAC5C,eAAe,CACjB,KAAK,EACL,QAAQ;YACN,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,eAAe,CAAC,SAAiD,EAAE;gBACjE,SAAS;gBACT,QAAQ,EAAE,CAAC;aACZ,CAAC,EACN,4BAA4B,CAAC;YAC3B,OAAO;YACP,EAAE,EAAE,QAAQ;YACZ,WAAW;YACX,UAAU;YACV,kBAAkB;YAClB,QAAQ;YACR,UAAU,EAAE,iBAAiB,EAAE,EAAE;YACjC,GAAG,EAAE,iBAAiB,EAAE,GAAG;YAC3B,GAAG,EAAE,iBAAiB,EAAE,GAAG;YAC3B,YAAY,EAAE,iBAAiB,EAAE,YAAY;YAC7C,SAAS,EAAE,UAAU;SACtB,CAAC,EACF;YACE,KAAK,EAAE;gBACL,MAAM;gBACN,GAAG,CAAC,WAAW,KAAK,YAAY;oBAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;oBAClD,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aACtD;SACF,CACF,GACD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["\"use client\";\n\nimport {\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n measureGroupChildren,\n PanelGroupHandle,\n PanelHandle,\n SharedPanelGroupProps,\n SharedPanelProps,\n SharedPanelResizerProps,\n mergeAttributes,\n} from \"@window-splitter/interface\";\nimport React, {\n useEffect,\n useImperativeHandle,\n createContext,\n useRef,\n useState,\n useMemo,\n useContext,\n} from \"react\";\nimport {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getGroupSize,\n getPanelWithId,\n groupMachine,\n GroupMachineContextValue,\n initializePanel,\n InitializePanelHandleData,\n isPanelData,\n Item,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n getPanelGroupPixelSizes,\n getPanelGroupPercentageSizes,\n getPanelPixelSize,\n getPanelPercentageSize,\n getCursor,\n haveConstraintsChangedForPanel,\n PanelHandleData,\n ParsedPixelUnit,\n haveConstraintsChangedForPanelHandle,\n GroupMachineInput,\n GroupMachineEvent,\n State,\n initializePanelHandleData,\n} from \"@window-splitter/state\";\nimport {\n useEffectEvent,\n useId,\n useLayoutEffect,\n mergeRefs,\n} from \"@react-aria/utils\";\nimport { useIndex, useIndexedChildren } from \"./useIndexedChildren.js\";\nimport { useMove } from \"./useMove.js\";\n\n// #region Components\n\nconst GroupMachineState = createContext<{ current: State | undefined }>({\n current: undefined,\n});\nconst GroupMachineContext = createContext<GroupMachineContextValue | undefined>(\n undefined\n);\nconst GroupMachineStateContextRef = createContext<\n React.MutableRefObject<GroupMachineContextValue>\n>({\n current: undefined,\n} as unknown as React.MutableRefObject<GroupMachineContextValue>);\nconst GroupMachineActor = createContext<(e: GroupMachineEvent) => void>(\n () => {}\n);\nconst GroupMachine = {\n useSelector<R>(\n selector: (data: { context: GroupMachineContextValue }) => R\n ): R {\n const context = useContext(GroupMachineContext);\n if (!context) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return selector({ context });\n },\n useActorRef: () => {\n const send = useContext(GroupMachineActor);\n return { send };\n },\n useContextRef: () => {\n const ref = useContext(GroupMachineStateContextRef);\n if (!ref) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return ref;\n },\n Provider: ({\n input,\n children,\n }: {\n input: GroupMachineInput;\n children: React.ReactNode;\n }) => {\n const [intiialValue, send, state] = useMemo(\n () =>\n groupMachine(input, (value) => {\n currentContextRef.current = value;\n setCurrentValue({ ...value });\n }),\n // We only want this to run once, we dont care about changes to the input\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const currentContextRef = useRef(intiialValue);\n const [currentValue, setCurrentValue] = useState(intiialValue);\n\n useEffect(() => {\n send({ type: \"unlockGroup\" });\n\n return () => {\n // When we were on xstate we could fire off event during unmount and if the parent group\n // unmounted too the events would never apply. With out own state machine code it doesn't\n // do that so we have to lock the group as it unmounts so it's children don't de-register.\n send({ type: \"lockGroup\" });\n };\n }, [send]);\n\n return (\n <GroupMachineState.Provider value={state}>\n <GroupMachineStateContextRef.Provider value={currentContextRef}>\n <GroupMachineContext.Provider value={currentValue}>\n <GroupMachineActor.Provider value={send}>\n {children}\n </GroupMachineActor.Provider>\n </GroupMachineContext.Provider>\n </GroupMachineStateContextRef.Provider>\n </GroupMachineState.Provider>\n );\n },\n};\n\n// function useDebugGroupMachineContext({ id }: { id: string }) {\n// const value = GroupMachineContext.useSelector((state) => state.value);\n// const context = GroupMachineContext.useSelector((state) => state.context);\n// console.log(\n// \"GROUP CONTEXT\",\n// buildTemplate(context),\n// context.size,\n// context.items.map((item) =>\n// isPanelData(item)\n// ? {\n// type: item.currentValue.type,\n// value: item.currentValue.value.toNumber(),\n// }\n// : { type: item.size.type, value: item.size.value.toNumber() }\n// )\n// );\n// }\n\nexport interface PanelGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: React.Ref<PanelGroupHandle>;\n}\n\nconst InitialMapContext = createContext<Item[]>([]);\nconst PreRenderContext = createContext(false);\n\nfunction PrerenderTree({\n children,\n onPrerender,\n}: {\n children: React.ReactNode;\n onPrerender: () => void;\n}) {\n const [shouldPrerender, setShouldPrerender] = React.useState(true);\n\n useLayoutEffect(() => {\n setShouldPrerender(false);\n onPrerender();\n // We only want this to run once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return shouldPrerender ? (\n <div className=\"opacity-0 absolute\">\n <PreRenderContext.Provider value>{children}</PreRenderContext.Provider>\n </div>\n ) : null;\n}\n\nfunction useGroupItem<T extends Item>(\n itemArg: Omit<T, \"id\"> & { id?: string }\n): T {\n const isPrerender = React.useContext(PreRenderContext);\n const initialMap = React.useContext(InitialMapContext);\n const generatedId = useId();\n const id = itemArg.id || generatedId;\n const { index } = useIndex();\n const item = { ...itemArg, id } as T;\n\n if (isPrerender) {\n if (!initialMap.find((i) => i.id === item.id)) {\n initialMap.push(item);\n }\n return item;\n }\n\n // The way this hooks is called is never conditional so the usage here is fine\n /* eslint-disable react-hooks/rules-of-hooks */\n const currentItem = GroupMachine.useSelector(\n ({ context }) => context.items[index]\n ) as T;\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n\n const onCollapseChangeRef = isPanelData(itemArg)\n ? itemArg.onCollapseChange\n : undefined;\n const onResizeRef = isPanelData(itemArg) ? itemArg.onResize : undefined;\n const onUnmountRef = useRef<(() => void) | undefined>(undefined);\n\n // We register panels before layout so it looks good\n useLayoutEffect(() => {\n const context = machineRef.current;\n\n if (!context) {\n return;\n }\n\n let contextItem: Item | undefined;\n\n if (itemArg.id) {\n contextItem = context.items.find((i) => i.id === itemArg.id);\n\n if (!contextItem) {\n if (!itemArg.id) {\n throw new Error(\n \"When using dynamic panels you must provide an id on the items. This applies to React strict mode as well.\"\n );\n }\n\n if (isPanelData(itemArg)) {\n send({\n type: \"registerDynamicPanel\",\n data: { ...itemArg, order: index },\n });\n } else {\n send({\n type: \"registerPanelHandle\",\n data: initializePanelHandleData({\n ...(itemArg as unknown as InitializePanelHandleData),\n order: index,\n }),\n });\n }\n } else if (onCollapseChangeRef || onResizeRef) {\n send({\n type: \"rebindPanelCallbacks\",\n data: {\n id: itemArg.id,\n onCollapseChange: onCollapseChangeRef,\n onResize: onResizeRef,\n },\n });\n }\n } else {\n contextItem = context.items[index];\n }\n\n const unmountId = contextItem?.id || itemArg.id;\n\n onUnmountRef.current = () => {\n if (!unmountId) return;\n\n const el = document.querySelector(\n `[data-splitter-id=\"${unmountId}\"]`\n ) as HTMLElement;\n\n if (el || !unmountId) {\n return;\n }\n\n if (isPanelData(itemArg)) {\n send({ type: \"unregisterPanel\", id: unmountId });\n } else {\n send({ type: \"unregisterPanelHandle\", id: unmountId });\n }\n };\n }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);\n\n // And unregister after layout so we can tell if the element was actually removed.\n React.useEffect(() => {\n return () => {\n onUnmountRef.current?.();\n onUnmountRef.current = undefined;\n };\n }, []);\n\n return currentItem || item;\n /* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/** A group of panels that has constraints and a user can resize */\nexport const PanelGroup = React.forwardRef<HTMLDivElement, PanelGroupProps>(\n function PanelGroup({ children, ...props }, ref) {\n const [hasPreRendered, setHasPreRendered] = useState(false);\n const initialMap = useRef<Item[]>([]);\n const indexedChildren = useIndexedChildren(children);\n\n return (\n <InitialMapContext.Provider value={initialMap.current}>\n {!hasPreRendered && (\n <PrerenderTree onPrerender={() => setHasPreRendered(true)}>\n {indexedChildren}\n </PrerenderTree>\n )}\n\n <PanelGroupImpl ref={ref} initialItems={initialMap} {...props}>\n {indexedChildren}\n </PanelGroupImpl>\n </InitialMapContext.Provider>\n );\n }\n);\n\nconst PanelGroupImpl = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps & {\n initialItems: { current: Item[] };\n }\n>(function PanelGroupImpl(\n {\n autosaveId,\n autosaveStrategy = \"localStorage\",\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\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 = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n const p = getPanelWithId(context, panelId);\n\n if (collapsed === true && !p.collapsed) {\n send({ type: \"collapsePanel\", panelId, controlled: true });\n } else if (collapsed === false && p.collapsed) {\n send({ type: \"expandPanel\", panelId, controlled: true });\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, \"id\"> }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n ...props\n },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const unit = parseUnit(size);\n const { send } = GroupMachine.useActorRef();\n const { index } = useIndex();\n const handleId = GroupMachine.useSelector(\n ({ context }) => context.items[index]?.id || \"\"\n );\n const panelHandle = GroupMachine.useSelector(\n ({ context }) => context.items[index] as PanelHandleData\n );\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\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 return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n getPanelDomAttributes,\n getPanelResizerDomAttributes,\n measureGroupChildren,\n PanelGroupHandle,\n PanelHandle,\n SharedPanelGroupProps,\n SharedPanelProps,\n SharedPanelResizerProps,\n mergeAttributes,\n} from \"@window-splitter/interface\";\nimport React, {\n useEffect,\n useImperativeHandle,\n createContext,\n useRef,\n useState,\n useMemo,\n useContext,\n} from \"react\";\nimport {\n buildTemplate,\n getCollapsiblePanelForHandleId,\n getGroupSize,\n getPanelWithId,\n groupMachine,\n GroupMachineContextValue,\n initializePanel,\n InitializePanelHandleData,\n isPanelData,\n Item,\n PanelData,\n parseUnit,\n prepareItems,\n prepareSnapshot,\n getPanelGroupPixelSizes,\n getPanelGroupPercentageSizes,\n getPanelPixelSize,\n getPanelPercentageSize,\n getCursor,\n haveConstraintsChangedForPanel,\n PanelHandleData,\n ParsedPixelUnit,\n haveConstraintsChangedForPanelHandle,\n GroupMachineInput,\n GroupMachineEvent,\n State,\n initializePanelHandleData,\n} from \"@window-splitter/state\";\nimport {\n useEffectEvent,\n useId,\n useLayoutEffect,\n mergeRefs,\n} from \"@react-aria/utils\";\nimport { useIndex, useIndexedChildren } from \"./useIndexedChildren.js\";\nimport { useMove } from \"./useMove.js\";\n\n// #region Components\n\nconst GroupMachineState = createContext<{ current: State | undefined }>({\n current: undefined,\n});\nconst GroupMachineContext = createContext<GroupMachineContextValue | undefined>(\n undefined\n);\nconst GroupMachineStateContextRef = createContext<\n React.MutableRefObject<GroupMachineContextValue>\n>({\n current: undefined,\n} as unknown as React.MutableRefObject<GroupMachineContextValue>);\nconst GroupMachineActor = createContext<(e: GroupMachineEvent) => void>(\n () => {}\n);\nconst GroupMachine = {\n useSelector<R>(\n selector: (data: { context: GroupMachineContextValue }) => R\n ): R {\n const context = useContext(GroupMachineContext);\n if (!context) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return selector({ context });\n },\n useActorRef: () => {\n const send = useContext(GroupMachineActor);\n return { send };\n },\n useContextRef: () => {\n const ref = useContext(GroupMachineStateContextRef);\n if (!ref) {\n throw new Error(\n \"GroupMachineContext must be used within a GroupMachineProvider\"\n );\n }\n return ref;\n },\n Provider: ({\n input,\n children,\n }: {\n input: GroupMachineInput;\n children: React.ReactNode;\n }) => {\n const [intiialValue, send, state] = useMemo(\n () =>\n groupMachine(input, (value) => {\n currentContextRef.current = value;\n setCurrentValue({ ...value });\n }),\n // We only want this to run once, we dont care about changes to the input\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n const currentContextRef = useRef(intiialValue);\n const [currentValue, setCurrentValue] = useState(intiialValue);\n\n useEffect(() => {\n send({ type: \"unlockGroup\" });\n\n return () => {\n // When we were on xstate we could fire off event during unmount and if the parent group\n // unmounted too the events would never apply. With out own state machine code it doesn't\n // do that so we have to lock the group as it unmounts so it's children don't de-register.\n send({ type: \"lockGroup\" });\n };\n }, [send]);\n\n return (\n <GroupMachineState.Provider value={state}>\n <GroupMachineStateContextRef.Provider value={currentContextRef}>\n <GroupMachineContext.Provider value={currentValue}>\n <GroupMachineActor.Provider value={send}>\n {children}\n </GroupMachineActor.Provider>\n </GroupMachineContext.Provider>\n </GroupMachineStateContextRef.Provider>\n </GroupMachineState.Provider>\n );\n },\n};\n\n// function useDebugGroupMachineContext({ id }: { id: string }) {\n// const value = GroupMachineContext.useSelector((state) => state.value);\n// const context = GroupMachineContext.useSelector((state) => state.context);\n// console.log(\n// \"GROUP CONTEXT\",\n// buildTemplate(context),\n// context.size,\n// context.items.map((item) =>\n// isPanelData(item)\n// ? {\n// type: item.currentValue.type,\n// value: item.currentValue.value.toNumber(),\n// }\n// : { type: item.size.type, value: item.size.value.toNumber() }\n// )\n// );\n// }\n\nexport interface PanelGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n SharedPanelGroupProps {\n /** Imperative handle to control the group */\n handle?: React.Ref<PanelGroupHandle>;\n}\n\nconst InitialMapContext = createContext<Item[]>([]);\nconst PreRenderContext = createContext(false);\n\nfunction PrerenderTree({\n children,\n onPrerender,\n}: {\n children: React.ReactNode;\n onPrerender: () => void;\n}) {\n const [shouldPrerender, setShouldPrerender] = React.useState(true);\n\n useLayoutEffect(() => {\n setShouldPrerender(false);\n onPrerender();\n // We only want this to run once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return shouldPrerender ? (\n <div className=\"opacity-0 absolute\">\n <PreRenderContext.Provider value>{children}</PreRenderContext.Provider>\n </div>\n ) : null;\n}\n\nfunction useGroupItem<T extends Item>(\n itemArg: Omit<T, \"id\"> & { id?: string }\n): T {\n const isPrerender = React.useContext(PreRenderContext);\n const initialMap = React.useContext(InitialMapContext);\n const generatedId = useId();\n const id = itemArg.id || generatedId;\n const { index } = useIndex();\n const item = { ...itemArg, id } as T;\n\n if (isPrerender) {\n if (!initialMap.find((i) => i.id === item.id)) {\n initialMap.push(item);\n }\n return item;\n }\n\n // The way this hooks is called is never conditional so the usage here is fine\n /* eslint-disable react-hooks/rules-of-hooks */\n const currentItem = GroupMachine.useSelector(\n ({ context }) => context.items[index]\n ) as T;\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n\n const onCollapseChangeRef = isPanelData(itemArg)\n ? itemArg.onCollapseChange\n : undefined;\n const onResizeRef = isPanelData(itemArg) ? itemArg.onResize : undefined;\n const onUnmountRef = useRef<(() => void) | undefined>(undefined);\n\n // We register panels before layout so it looks good\n useLayoutEffect(() => {\n const context = machineRef.current;\n\n if (!context) {\n return;\n }\n\n let contextItem: Item | undefined;\n\n if (itemArg.id) {\n contextItem = context.items.find((i) => i.id === itemArg.id);\n\n if (!contextItem) {\n if (!itemArg.id) {\n throw new Error(\n \"When using dynamic panels you must provide an id on the items. This applies to React strict mode as well.\"\n );\n }\n\n if (isPanelData(itemArg)) {\n send({\n type: \"registerDynamicPanel\",\n data: { ...itemArg, order: index },\n });\n } else {\n send({\n type: \"registerPanelHandle\",\n data: initializePanelHandleData({\n ...(itemArg as unknown as InitializePanelHandleData),\n order: index,\n }),\n });\n }\n } else if (onCollapseChangeRef || onResizeRef) {\n send({\n type: \"rebindPanelCallbacks\",\n data: {\n id: itemArg.id,\n onCollapseChange: onCollapseChangeRef,\n onResize: onResizeRef,\n },\n });\n }\n } else {\n contextItem = context.items[index];\n }\n\n const unmountId = contextItem?.id || itemArg.id;\n\n onUnmountRef.current = () => {\n if (!unmountId) return;\n\n const el = document.querySelector(\n `[data-splitter-id=\"${unmountId}\"]`\n ) as HTMLElement;\n\n if (el || !unmountId) {\n return;\n }\n\n if (isPanelData(itemArg)) {\n send({ type: \"unregisterPanel\", id: unmountId });\n } else {\n send({ type: \"unregisterPanelHandle\", id: unmountId });\n }\n };\n }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);\n\n // And unregister after layout so we can tell if the element was actually removed.\n React.useEffect(() => {\n return () => {\n onUnmountRef.current?.();\n onUnmountRef.current = undefined;\n };\n }, []);\n\n return currentItem || item;\n /* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/** A group of panels that has constraints and a user can resize */\nexport const PanelGroup = React.forwardRef<HTMLDivElement, PanelGroupProps>(\n function PanelGroup({ children, ...props }, ref) {\n const [hasPreRendered, setHasPreRendered] = useState(false);\n const initialMap = useRef<Item[]>([]);\n const indexedChildren = useIndexedChildren(children);\n\n return (\n <InitialMapContext.Provider value={initialMap.current}>\n {!hasPreRendered && (\n <PrerenderTree onPrerender={() => setHasPreRendered(true)}>\n {indexedChildren}\n </PrerenderTree>\n )}\n\n <PanelGroupImpl ref={ref} initialItems={initialMap} {...props}>\n {indexedChildren}\n </PanelGroupImpl>\n </InitialMapContext.Provider>\n );\n }\n);\n\nconst PanelGroupImpl = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps & {\n initialItems: { current: Item[] };\n }\n>(function PanelGroupImpl(\n {\n autosaveId,\n autosaveStrategy = autosaveId ? \"localStorage\" : undefined,\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\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 = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n const p = getPanelWithId(context, panelId);\n\n if (collapsed === true && !p.collapsed) {\n send({ type: \"collapsePanel\", panelId, controlled: true });\n } else if (collapsed === false && p.collapsed) {\n send({ type: \"expandPanel\", panelId, controlled: true });\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, \"id\"> }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n ...props\n },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const unit = parseUnit(size);\n const { send } = GroupMachine.useActorRef();\n const { index } = useIndex();\n const handleId = GroupMachine.useSelector(\n ({ context }) => context.items[index]?.id || \"\"\n );\n const panelHandle = GroupMachine.useSelector(\n ({ context }) => context.items[index] as PanelHandleData\n );\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\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 return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
|
|
@@ -270,7 +270,7 @@ export function ConditionalPanelComplex() {
|
|
|
270
270
|
React.createElement("button", { type: "button", onClick: () => setIsExpanded(true) }, "Expand")));
|
|
271
271
|
}
|
|
272
272
|
export function WithDefaultWidth() {
|
|
273
|
-
return (React.createElement(PanelGroup, { style: { height: "400px" } },
|
|
273
|
+
return (React.createElement(PanelGroup, { style: { height: "400px" }, autosaveId: "with-default-width" },
|
|
274
274
|
React.createElement(Panel, { style: { backgroundColor: "#333366" } }),
|
|
275
275
|
React.createElement(PanelResizer, { size: "3px" }),
|
|
276
276
|
React.createElement(Panel, { default: "100px", min: "100px", max: "400px", style: { backgroundColor: "#ff3366" } })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\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 borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {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({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\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 AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\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 {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\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 handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\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 borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"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: 40,\n height: \"100%\",\n boxSizing: \"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({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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\", boxSizing: \"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 const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\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.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={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 {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 <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\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 {isExpanded && (\n <>\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 </>\n )}\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 </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }}>\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\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\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ReactWindowSplitter.stories.js","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport { spring } from \"framer-motion\";\nimport {\n PanelGroup,\n PanelGroupProps,\n Panel,\n PanelProps,\n PanelResizer,\n PanelResizerProps,\n} from \"./ReactWindowSplitter.js\";\nimport { PanelGroupHandle, PanelHandle } from \"@window-splitter/interface\";\nimport { PercentUnit } from \"@window-splitter/state\";\n\nexport default {\n title: \"Components/React\",\n};\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 borderRadius: 12,\n boxSizing: \"border-box\",\n ...props.style,\n }}\n />\n );\n}\n\nfunction StyledPanel({ children, ...props }: PanelProps) {\n return (\n <Panel\n style={{\n overflow: \"hidden\",\n }}\n {...props}\n >\n <div\n style={{\n height: \"100%\",\n width: \"100%\",\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n }}\n >\n {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({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\n <StyledPanel>Panel 1</StyledPanel>\n <StyledResizer />\n <StyledPanel min=\"100px\">Panel 2</StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function Autosave({ handle }: { handle?: React.Ref<PanelGroupHandle> }) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example\">\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 AutosaveCollapsible({\n handle,\n onCollapseChange = console.log,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n onCollapseChange?: (c: boolean) => void;\n}) {\n return (\n <StyledPanelGroup handle={handle} autosaveId=\"autosave-example-2\">\n <StyledPanel\n id=\"1\"\n collapsible\n collapsedSize=\"100px\"\n min=\"140px\"\n onCollapseChange={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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [customOn, setCustomOn] = React.useState(false);\n\n return (\n <>\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n default=\"100px\"\n {...(customOn ? { min: \"200px\" } : { min: \"100px\" })}\n >\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 {...(customOn ? { min: \"100px\" } : { min: \"400px\" })}\n {...(customOn ? { max: \"300px\" } : { max: \"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({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\n orientation=\"vertical\"\n style={{ height: 322 }}\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 handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup\n handle={handle}\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 borderRadius: 12,\n height: 400,\n }}\n >\n <Panel min=\"10%\">left</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"vertical\">\n <Panel min=\"10%\">top</Panel>\n <StyledResizer />\n <Panel min=\"10%\">\n <PanelGroup orientation=\"horizontal\">\n <Panel min=\"20%\">left</Panel>\n <StyledResizer />\n <Panel min=\"20%\">right</Panel>\n </PanelGroup>\n </Panel>\n </PanelGroup>\n </Panel>\n <StyledResizer />\n <Panel min=\"10%\">right</Panel>\n </PanelGroup>\n );\n}\n\nexport function WithOverflow() {\n return (\n <StyledPanelGroup style={{ height: 400 }}>\n <Panel min=\"200px\">\n <div\n style={{\n overflow: \"auto\",\n padding: 40,\n height: \"100%\",\n boxSizing: \"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: 40,\n height: \"100%\",\n boxSizing: \"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({\n leftPanelHandle,\n rightPanelHandle,\n handle,\n}: {\n leftPanelHandle?: React.Ref<PanelHandle>;\n handle?: React.Ref<PanelGroupHandle>;\n rightPanelHandle?: React.Ref<PanelHandle>;\n}) {\n const [collapsed, setCollapsed] = React.useState(true);\n\n return (\n <StyledPanelGroup handle={handle}>\n <StyledPanel\n handle={leftPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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={rightPanelHandle}\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n defaultCollapsed\n collapseAnimation={{ easing: \"bounce\", duration: 1000 }}\n style={{ border: \"10px solid blue\", boxSizing: \"border-box\" }}\n collapsed={collapsed}\n onCollapseChange={(isCollapsed) => {\n console.log(\"COLLAPSE CONTROLLED\", isCollapsed);\n setCollapsed(isCollapsed);\n }}\n >\n <div>3</div>\n </StyledPanel>\n </StyledPanelGroup>\n );\n}\n\nexport function CustomCollapseAnimation() {\n const springFn = useMemo(() => {\n return spring({\n keyframes: [0, 1],\n velocity: 1,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n });\n }, []);\n\n return (\n <StyledPanelGroup>\n <StyledPanel\n min=\"100px\"\n collapsible\n collapsedSize=\"60px\"\n style={{ border: \"10px solid green\", boxSizing: \"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\", boxSizing: \"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 const groupRef = React.useRef<PanelGroupHandle>(null);\n const panelRef = React.useRef<PanelHandle>(null);\n\n return (\n <>\n <StyledPanelGroup handle={groupRef}>\n <StyledPanel\n handle={panelRef}\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.current?.getPixelSizes()}`)}\n >\n Get pixel sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Sizes: ${groupRef.current?.getPercentageSizes()}`)\n }\n >\n Get percent sizes\n </button>\n <button\n type=\"button\"\n onClick={() =>\n groupRef.current?.setSizes([\n \"200px\",\n \"10px\",\n \"50%\",\n \"10px\",\n \"150px\",\n ])\n }\n >\n Override sizes\n </button>\n </div>\n\n <div>\n <button type=\"button\" onClick={() => panelRef.current?.collapse()}>\n Collapse\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Collapsed: ${panelRef.current?.isCollapsed()}`)}\n >\n Is Collapsed?\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.expand()}>\n Expand\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Expanded: ${panelRef.current?.isExpanded()}`)}\n >\n Is Expanded?\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Id: ${panelRef.current?.getId()}`)}\n >\n Get Id\n </button>\n <button\n type=\"button\"\n onClick={() => alert(`Size: ${panelRef.current?.getPixelSize()}`)}\n >\n Get Pixel Size\n </button>\n <button\n type=\"button\"\n onClick={() =>\n alert(`Percentage: ${panelRef.current?.getPercentageSize()}`)\n }\n >\n Get Percentage Size\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"30px\")}>\n Set size to 100px\n </button>\n <button type=\"button\" onClick={() => panelRef.current?.setSize(\"50%\")}>\n Set size to 50%\n </button>\n </div>\n </>\n );\n}\n\nexport function ConditionalPanel({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\n <StyledPanelGroup handle={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 {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 <button type=\"button\" onClick={() => setIsExpanded(true)}>\n Expand\n </button>\n </React.StrictMode>\n );\n}\n\nexport function ConditionalPanelComplex() {\n const [isExpanded, setIsExpanded] = React.useState(false);\n\n return (\n <React.StrictMode>\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 {isExpanded && (\n <>\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 </>\n )}\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 </React.StrictMode>\n );\n}\n\nexport function WithDefaultWidth() {\n return (\n <PanelGroup style={{ height: \"400px\" }} autosaveId=\"with-default-width\">\n <Panel style={{ backgroundColor: \"#333366\" }} />\n <PanelResizer size=\"3px\" />\n {/* I expected the right panel to be 100px wide */}\n <Panel\n default=\"100px\"\n min=\"100px\"\n max=\"400px\"\n style={{ backgroundColor: \"#ff3366\" }}\n />\n </PanelGroup>\n );\n}\n\nexport function StaticAtRest({\n handle,\n}: {\n handle?: React.Ref<PanelGroupHandle>;\n}) {\n return (\n <StyledPanelGroup handle={handle} style={{ height: 200 }}>\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\nfunction Flex({\n direction = \"row\",\n gap = \"0x\",\n align = \"start\",\n justify = \"start\",\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n direction?: \"row\" | \"column\";\n gap?: string;\n align?: \"center\" | \"start\" | \"end\";\n justify?: \"center\" | \"start\" | \"end\" | \"between\";\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: direction,\n gap,\n alignItems: align,\n justifyContent: justify === \"between\" ? \"space-between\" : justify,\n }}\n {...props}\n />\n );\n}\n\nexport function SiblingCollapsiblePanels() {\n const sidebarHandle = useRef<PanelHandle>(null);\n const editorHandle = useRef<PanelHandle>(null);\n const previewHandle = useRef<PanelHandle>(null);\n const [editModeSize, setEditModeSize] = useState<number[] | undefined>();\n const panelGroupRef = useRef<PanelGroupHandle>(null);\n const [isEditMode, setIsEditMode] = useState(true);\n\n const handleEditModeToggle = useCallback(async () => {\n const newMode = !isEditMode;\n setIsEditMode(newMode);\n\n if (!newMode) {\n setEditModeSize(panelGroupRef.current?.getPercentageSizes());\n\n await sidebarHandle.current?.collapse();\n await editorHandle.current?.collapse();\n await previewHandle.current?.expand();\n } else {\n if (editModeSize) {\n panelGroupRef.current?.setSizes(\n editModeSize.map((i) => `${i * 100}%` as PercentUnit)\n );\n }\n\n await sidebarHandle.current?.expand();\n await editorHandle.current?.expand();\n await previewHandle.current?.expand();\n }\n }, [editModeSize, isEditMode]);\n\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(!isEditMode);\n const [isEditorCollapsed, setIsEditorCollapsed] = useState(!isEditMode);\n const [isPreviewCollapsed, setIsPreviewCollapsed] = useState(false);\n\n const handleSidebarCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsSidebarCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handleEditorCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsEditorCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n const handlePreviewCollapseChange = useCallback(\n (isCollapsed: boolean) => {\n if (isEditMode) {\n setIsPreviewCollapsed(isCollapsed);\n }\n },\n [isEditMode]\n );\n\n return (\n <Flex direction=\"column\" style={{ height: \"90vh\", width: \"800px\" }}>\n <StyledPanelGroup handle={panelGroupRef}>\n <StyledPanel\n handle={sidebarHandle}\n id=\"sidebar\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isSidebarCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleSidebarCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Sidebar\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-1\" />\n <StyledPanel\n handle={editorHandle}\n id=\"editor\"\n min=\"100px\"\n default=\"200px\"\n collapsible\n collapsed={isEditorCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handleEditorCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Editor\n </Flex>\n </StyledPanel>\n <StyledResizer id=\"resizer-2\" />\n <StyledPanel\n handle={previewHandle}\n id=\"preview\"\n min=\"100px\"\n collapsible\n collapsed={isPreviewCollapsed}\n // collapseAnimation=\"ease-in-out\"\n onCollapseChange={handlePreviewCollapseChange}\n >\n <Flex\n align=\"center\"\n justify=\"center\"\n style={{ height: \"100%\", width: \"100%\" }}\n >\n Preview\n </Flex>\n </StyledPanel>\n </StyledPanelGroup>\n <Flex align=\"center\" justify=\"between\">\n <Flex gap=\"2px\">\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsSidebarCollapsed(\n (prevSidebarCollapsed) => !prevSidebarCollapsed\n )\n }\n style={{\n backgroundColor: isSidebarCollapsed ? \"blue\" : undefined,\n }}\n >\n {isSidebarCollapsed ? \"Open sidebar\" : \"Close sidebar\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsEditorCollapsed(\n (prevEditorCollapsed) => !prevEditorCollapsed\n )\n }\n style={{\n backgroundColor: isEditorCollapsed ? \"blue\" : undefined,\n }}\n >\n {isEditorCollapsed ? \"Open editor\" : \"Close editor\"}\n </button>\n <button\n disabled={!isEditMode}\n type=\"button\"\n onClick={() =>\n setIsPreviewCollapsed(\n (prevPreviewCollapsed) => !prevPreviewCollapsed\n )\n }\n style={{\n backgroundColor: isPreviewCollapsed ? \"blue\" : undefined,\n }}\n >\n {isPreviewCollapsed ? \"Open preview\" : \"Close preview\"}\n </button>\n </Flex>\n <Flex gap=\"8px\">\n <button\n type=\"button\"\n onClick={handleEditModeToggle}\n style={{\n backgroundColor: isEditMode ? \"blue\" : undefined,\n }}\n >\n Edit mode\n </button>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@window-splitter/react",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "1.1.1
|
|
5
|
+
"version": "1.1.1",
|
|
6
6
|
"description": "A WAI-ARIA compliant window splitter for React.",
|
|
7
7
|
"homepage": "https://react-window-splitter-six.vercel.app",
|
|
8
8
|
"repository": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@chromatic-com/storybook": "^1.6.1",
|
|
39
|
-
"@internal/eslint-config": "1.1.1
|
|
39
|
+
"@internal/eslint-config": "1.1.1",
|
|
40
40
|
"@rsbuild/core": "^1.3.12",
|
|
41
41
|
"@rsdoctor/rspack-plugin": "^1.0.2",
|
|
42
42
|
"@storybook/react": "^8.2.9",
|
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@react-aria/utils": "^3.28.2",
|
|
65
|
-
"@window-splitter/interface": "1.1.1
|
|
66
|
-
"@window-splitter/state": "1.1.1
|
|
65
|
+
"@window-splitter/interface": "1.1.1",
|
|
66
|
+
"@window-splitter/state": "1.1.1"
|
|
67
67
|
},
|
|
68
68
|
"tshy": {
|
|
69
69
|
"exclude": [
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"resizable",
|
|
99
99
|
"window"
|
|
100
100
|
],
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "a7f123555c7e5ef966007731aba4dfae73cd19a2"
|
|
102
102
|
}
|
|
@@ -673,7 +673,7 @@ export function ConditionalPanelComplex() {
|
|
|
673
673
|
|
|
674
674
|
export function WithDefaultWidth() {
|
|
675
675
|
return (
|
|
676
|
-
<PanelGroup style={{ height: "400px" }}>
|
|
676
|
+
<PanelGroup style={{ height: "400px" }} autosaveId="with-default-width">
|
|
677
677
|
<Panel style={{ backgroundColor: "#333366" }} />
|
|
678
678
|
<PanelResizer size="3px" />
|
|
679
679
|
{/* I expected the right panel to be 100px wide */}
|
|
@@ -338,7 +338,7 @@ const PanelGroupImpl = React.forwardRef<
|
|
|
338
338
|
>(function PanelGroupImpl(
|
|
339
339
|
{
|
|
340
340
|
autosaveId,
|
|
341
|
-
autosaveStrategy = "localStorage",
|
|
341
|
+
autosaveStrategy = autosaveId ? "localStorage" : undefined,
|
|
342
342
|
snapshot: snapshotProp,
|
|
343
343
|
initialItems,
|
|
344
344
|
shiftAmount,
|