@window-splitter/react 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
2
  
3
- > @window-splitter/react@0.8.6 build /Users/andrew/Documents/react-window-splitter/packages/react
3
+ > @window-splitter/react@1.0.2 build /Users/andrew/Documents/react-window-splitter/packages/react
4
4
  > tshy
5
5
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  
3
- > @window-splitter/react@0.8.4 lint /Users/andrew/Documents/react-window-splitter/packages/react
3
+ > @window-splitter/react@1.0.2 lint /Users/andrew/Documents/react-window-splitter/packages/react
4
4
  > eslint .
5
5
 
6
6
  =============
@@ -0,0 +1,33 @@
1
+
2
+ 
3
+ > @window-splitter/react@1.0.2 test /Users/andrew/Documents/react-window-splitter/packages/react
4
+ > CI=true vitest
5
+
6
+ [?25l
7
+  RUN  v3.1.2 /Users/andrew/Documents/react-window-splitter/packages/react
8
+
9
+ stdout | src/ReactWindowSplitter.test.tsx > Keyboard interactions with collapsed panels
10
+ COLLAPSE CONTROLLED false
11
+ stdout | src/ReactWindowSplitter.test.tsx > Keyboard interactions with collapsed panels
12
+ COLLAPSE CONTROLLED true
13
+ stdout | src/ReactWindowSplitter.test.tsx > Keyboard interactions with collapsed panels
14
+ COLLAPSE CONTROLLED false
15
+ stdout | src/ReactWindowSplitter.test.tsx > imperative panel API > panel
16
+ COLLAPSE PASSIVE true
17
+ stdout | src/ReactWindowSplitter.test.tsx > imperative panel API > panel
18
+ COLLAPSE PASSIVE false
19
+ ✓  chromium  src/ReactWindowSplitter.test.tsx (10 tests) 26925ms
20
+ ✓ horizontal layout  3568ms
21
+ ✓ vertical layout  1262ms
22
+ ✓ Autosave > localStorage  1246ms
23
+ ✓ Autosave > callback  4593ms
24
+ ✓ Autosave > cookie  1318ms
25
+ ✓ Keyboard interactions with collapsed panels  3234ms
26
+ ✓ imperative panel API > panel  11127ms
27
+
28
+  Test Files  1 passed (1)
29
+  Tests  10 passed (10)
30
+  Start at  22:17:37
31
+  Duration  28.18s (transform 0ms, setup 121ms, collect 29ms, tests 26.92s, environment 0ms, prepare 16ms)
32
+
33
+ [?25h
package/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ # v1.1.0 (Mon May 26 2025)
2
+
3
+ #### 🚀 Enhancement
4
+
5
+ - Add "shiftAmount" prop [#64](https://github.com/hipstersmoothie/window-splitter/pull/64) ([@hipstersmoothie](https://github.com/hipstersmoothie))
6
+
7
+ #### 🐛 Bug Fix
8
+
9
+ - update tests ([@hipstersmoothie](https://github.com/hipstersmoothie))
10
+ - Add "shiftAmount" prop ([@hipstersmoothie](https://github.com/hipstersmoothie))
11
+
12
+ #### Authors: 1
13
+
14
+ - Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
15
+
16
+ ---
17
+
1
18
  # v0.8.5 (Sun May 04 2025)
2
19
 
3
20
  #### 🐛 Bug Fix
@@ -1 +1 @@
1
- {"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;AA+If,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AA4ID,mEAAmE;AACnE,eAAO,MAAM,UAAU,wFAoBtB,CAAC;AA0KF,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,eAAO,MAAM,KAAK,mFAqEjB,CAAC;AAgIF,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa,GAAG,QAAQ,GAAG,WAAW,CACvC;CAAG;AAER,+CAA+C;AAC/C,eAAO,MAAM,YAAY,0FAqBxB,CAAC"}
1
+ {"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;AA+If,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AA4ID,mEAAmE;AACnE,eAAO,MAAM,UAAU,wFAoBtB,CAAC;AA4KF,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,eAAO,MAAM,KAAK,mFAqEjB,CAAC;AAgIF,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa,GAAG,QAAQ,GAAG,WAAW,CACvC;CAAG;AAER,+CAA+C;AAC/C,eAAO,MAAM,YAAY,0FAqBxB,CAAC"}
@@ -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, ...props }, ref) {
211
+ const PanelGroupImpl = react_1.default.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = "localStorage", 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);
@@ -232,6 +232,7 @@ const PanelGroupImpl = react_1.default.forwardRef(function PanelGroupImpl({ auto
232
232
  groupId,
233
233
  items: initialItems.current,
234
234
  autosaveStrategy,
235
+ shiftAmount,
235
236
  ...(typeof snapshotMemo === "object" ? snapshotMemo : undefined),
236
237
  } },
237
238
  react_1.default.createElement(PanelGroupImplementation, { ref: ref, ...props })));
@@ -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 ...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 ...(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 contraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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: () => {\n if (collapsible) {\n // TODO: setting controlled here might be wrong\n send({ type: \"collapsePanel\", panelId, controlled: true });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: () => {\n if (collapsible) {\n send({ type: \"expandPanel\", panelId, controlled: true });\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 contraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,0DAUoC;AACpC,+CAQe;AACf,kDA4BgC;AAChC,6CAK2B;AAC3B,mEAAuE;AACvE,6CAAuC;AAEvC,qBAAqB;AAErB,MAAM,iBAAiB,GAAG,IAAA,qBAAa,EAAiC;IACtE,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EACvC,SAAS,CACV,CAAC;AACF,MAAM,2BAA2B,GAAG,IAAA,qBAAa,EAE/C;IACA,OAAO,EAAE,SAAS;CAC4C,CAAC,CAAC;AAClE,MAAM,iBAAiB,GAAG,IAAA,qBAAa,EACrC,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;AACF,MAAM,YAAY,GAAG;IACnB,WAAW,CACT,QAA4D;QAE5D,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,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,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,aAAa,EAAE,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,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,IAAA,eAAO,EACzC,GAAG,EAAE,CACH,IAAA,oBAAY,EAAC,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,IAAA,cAAM,EAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,YAAY,CAAC,CAAC;QAE/D,IAAA,iBAAS,EAAC,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,8BAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;YACtC,8BAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,iBAAiB;gBAC5D,8BAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY;oBAC/C,8BAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,IACpC,QAAQ,CACkB,CACA,CACM,CACZ,CAC9B,CAAC;IACJ,CAAC;CACF,CAAC;AA2BF,MAAM,iBAAiB,GAAG,IAAA,qBAAa,EAAS,EAAE,CAAC,CAAC;AACpD,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;AAE9C,SAAS,aAAa,CAAC,EACrB,QAAQ,EACR,WAAW,GAIZ;IACC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAA,uBAAe,EAAC,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,uCAAK,SAAS,EAAC,oBAAoB;QACjC,8BAAC,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,eAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,eAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAA,aAAK,GAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,WAAW,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,gCAAQ,GAAE,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,IAAA,mBAAW,EAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,gBAAgB;QAC1B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,YAAY,GAAG,IAAA,cAAM,EAA2B,SAAS,CAAC,CAAC;IAEjE,oDAAoD;IACpD,IAAA,uBAAe,EAAC,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,IAAA,mBAAW,EAAC,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,IAAA,iCAAyB,EAAC;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,IAAA,mBAAW,EAAC,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,eAAK,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;AACtD,QAAA,UAAU,GAAG,eAAK,CAAC,UAAU,CACxC,SAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC7C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,cAAM,EAAS,EAAE,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAA,0CAAkB,EAAC,QAAQ,CAAC,CAAC;IAErD,OAAO,CACL,8BAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,CAAC,OAAO;QAClD,CAAC,cAAc,IAAI,CAClB,8BAAC,aAAa,IAAC,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IACtD,eAAe,CACF,CACjB;QAED,8BAAC,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,eAAK,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,IAAA,aAAK,GAAE,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,cAAc,CAAC;IACzD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,eAAK,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,IAAA,eAAO,EAAC,GAAG,EAAE;QAChC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,8BAAC,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,8BAAC,wBAAwB,IAAC,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAC3B,CACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,eAAK,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,eAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,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,IAAA,qBAAa,EAAC,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,IAAA,uBAAe,EAAC,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,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,OAAO,IAAA,gCAAoB,EAAC,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,eAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;IAE5C,IAAA,2BAAmB,EAAC,MAAM,IAAI,iBAAiB,EAAE,GAAG,EAAE;QACpD,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO;YACpB,aAAa,EAAE,GAAG,EAAE,CAAC,IAAA,+BAAuB,EAAC,UAAU,CAAC,OAAO,CAAC;YAChE,kBAAkB,EAAE,GAAG,EAAE,CACvB,IAAA,oCAA4B,EAAC,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,IAAA,mBAAW,EAAC,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,IAAA,qBAAa,EAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAA,oBAAY,EAAC,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,uCACE,GAAG,EAAE,GAAG,mBACO,OAAO,4BACE,WAAW,KAC/B,IAAA,2BAAe,EAAC,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;AACvB,QAAA,KAAK,GAAG,eAAK,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,eAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,eAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,OAAO,GAAG,gBAAgB,CAAC;IACjD,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvB,MAAM,WAAW,GAAG,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,MAAM,YAAY,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,IAAA,uBAAe,EAAC;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,8BAAC,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,eAAK,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,eAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,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,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GACpB,KAAK,IAAI,IAAA,sCAA8B,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE;QAC7C,IAAI,gBAAgB,EAAE,CAAC;YACrB,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,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,gBAAgB,EAAE,CAAC;YACrB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEjD,kEAAkE;IAClE,2CAA2C;IAC3C,eAAK,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,IAAA,sBAAc,EAAC,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,eAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAE1D,IAAA,2BAAmB,EAAC,MAAM,IAAI,iBAAiB,EAAE,GAAG,EAAE;QACpD,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,WAAW,EAAE,CAAC;oBAChB,+CAA+C;oBAC/C,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YACD,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,SAAS,CAAC;YAC3D,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,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,IAAA,yBAAiB,EAAC,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,IAAA,8BAAsB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,uCACE,GAAG,EAAE,GAAG,KACJ,IAAA,2BAAe,EACjB,KAAK,EACL,IAAA,iCAAqB,EAAC;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;AAClC,QAAA,YAAY,GAAG,eAAK,CAAC,UAAU,CAC1C,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG;IAC9B,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAC/B,MAAM,WAAW,GAAG,eAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,eAAK,CAAC,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,IAAA,iBAAS,EAAC,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,8BAAC,mBAAmB,IAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,KAAM,KAAK,GAAI,CAAC;AAC7E,CAAC,CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,eAAK,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,eAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,gCAAQ,GAAE,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,IAAA,mBAAW,EAAC,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,IAAA,sCAA8B,EAAC,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,IAAA,oBAAY,EAAC,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,eAAK,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,IAAA,iBAAS,EAAC,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,oBAAO,EAAC;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,gBAAgB,GACpB,WAAW;QACX,IAAA,4CAAoC,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE;QAC7C,IAAI,gBAAgB,EAAE,CAAC;YACrB,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,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,gBAAgB,EAAE,CAAC;YACrB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEjD,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,uCACE,GAAG,EAAE,GAA2C,KAC5C,IAAA,2BAAe,EACjB,KAAK,EACL,QAAQ;YACN,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAA,2BAAe,EAAC,SAAiD,EAAE;gBACjE,SAAS;gBACT,QAAQ,EAAE,CAAC;aACZ,CAAC,EACN,IAAA,wCAA4B,EAAC;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 contraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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: () => {\n if (collapsible) {\n // TODO: setting controlled here might be wrong\n send({ type: \"collapsePanel\", panelId, controlled: true });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: () => {\n if (collapsible) {\n send({ type: \"expandPanel\", panelId, controlled: true });\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 contraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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 +1 @@
1
- {"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;AA+If,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AA4ID,mEAAmE;AACnE,eAAO,MAAM,UAAU,wFAoBtB,CAAC;AA0KF,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,eAAO,MAAM,KAAK,mFAqEjB,CAAC;AAgIF,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa,GAAG,QAAQ,GAAG,WAAW,CACvC;CAAG;AAER,+CAA+C;AAC/C,eAAO,MAAM,YAAY,0FAqBxB,CAAC"}
1
+ {"version":3,"file":"ReactWindowSplitter.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAQN,MAAM,OAAO,CAAC;AA+If,MAAM,WAAW,eACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,qBAAqB;IACvB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AA4ID,mEAAmE;AACnE,eAAO,MAAM,UAAU,wFAoBtB,CAAC;AA4KF,MAAM,WAAW,UACf,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,oCAAoC;AACpC,eAAO,MAAM,KAAK,mFAqEjB,CAAC;AAgIF,MAAM,WAAW,iBACf,SAAQ,uBAAuB,EAC7B,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa,GAAG,QAAQ,GAAG,WAAW,CACvC;CAAG;AAER,+CAA+C;AAC/C,eAAO,MAAM,YAAY,0FAqBxB,CAAC"}
@@ -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, ...props }, ref) {
175
+ const PanelGroupImpl = React.forwardRef(function PanelGroupImpl({ autosaveId, autosaveStrategy = "localStorage", 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);
@@ -196,6 +196,7 @@ const PanelGroupImpl = React.forwardRef(function PanelGroupImpl({ autosaveId, au
196
196
  groupId,
197
197
  items: initialItems.current,
198
198
  autosaveStrategy,
199
+ shiftAmount,
199
200
  ...(typeof snapshotMemo === "object" ? snapshotMemo : undefined),
200
201
  } },
201
202
  React.createElement(PanelGroupImplementation, { ref: ref, ...props })));
@@ -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 ...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 ...(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 contraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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: () => {\n if (collapsible) {\n // TODO: setting controlled here might be wrong\n send({ type: \"collapsePanel\", panelId, controlled: true });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: () => {\n if (collapsible) {\n send({ type: \"expandPanel\", panelId, controlled: true });\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 contraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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 = \"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 contraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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: () => {\n if (collapsible) {\n // TODO: setting controlled here might be wrong\n send({ type: \"collapsePanel\", panelId, controlled: true });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: () => {\n if (collapsible) {\n send({ type: \"expandPanel\", panelId, controlled: true });\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 contraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (contraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (contraintChanged) {\n onConstraintChange();\n }\n }, [send, contraintChanged, 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"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@window-splitter/react",
4
4
  "sideEffects": false,
5
- "version": "1.0.1",
5
+ "version": "1.1.0",
6
6
  "description": "A WAI-ARIA compliant window splitter for React.",
7
7
  "homepage": "https://react-window-splitter-six.vercel.app",
8
8
  "repository": {
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@chromatic-com/storybook": "^1.6.1",
39
- "@internal/eslint-config": "1.0.1",
39
+ "@internal/eslint-config": "1.1.0",
40
40
  "@rsbuild/core": "^1.3.12",
41
41
  "@rsdoctor/rspack-plugin": "^1.0.2",
42
42
  "@storybook/react": "^8.2.9",
@@ -62,8 +62,8 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@react-aria/utils": "^3.28.2",
65
- "@window-splitter/interface": "1.0.1",
66
- "@window-splitter/state": "1.0.1"
65
+ "@window-splitter/interface": "1.1.0",
66
+ "@window-splitter/state": "1.1.0"
67
67
  },
68
68
  "tshy": {
69
69
  "exclude": [
@@ -98,5 +98,5 @@
98
98
  "resizable",
99
99
  "window"
100
100
  ],
101
- "gitHead": "3894944a5c2d65d6dfab9fd68144b3fc97ed1ee2"
101
+ "gitHead": "bb02be9bc8534214871f13704afd741d2fab810f"
102
102
  }
@@ -341,6 +341,7 @@ const PanelGroupImpl = React.forwardRef<
341
341
  autosaveStrategy = "localStorage",
342
342
  snapshot: snapshotProp,
343
343
  initialItems,
344
+ shiftAmount,
344
345
  ...props
345
346
  },
346
347
  ref
@@ -377,6 +378,7 @@ const PanelGroupImpl = React.forwardRef<
377
378
  groupId,
378
379
  items: initialItems.current,
379
380
  autosaveStrategy,
381
+ shiftAmount,
380
382
  ...(typeof snapshotMemo === "object" ? snapshotMemo : undefined),
381
383
  }}
382
384
  >
@@ -1,6 +1,6 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`Autosave > cookie 1`] = `"autosave-cookie-example=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A200%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A200%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel1%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%7D%2C%7B%22type%22%3A%22handle%22%2C%22size%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%2210%22%7D%2C%22id%22%3A%22resizer1%22%7D%2C%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel2%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-example%22%2C%22autosaveStrategy%22%3A%22cookie%22%7D"`;
3
+ exports[`Autosave > cookie 1`] = `"autosave-cookie-example=%7B%22size%22%3A%7B%22x%22%3A0%2C%22y%22%3A0%2C%22width%22%3A500%2C%22height%22%3A200%2C%22top%22%3A0%2C%22right%22%3A500%2C%22bottom%22%3A200%2C%22left%22%3A0%7D%2C%22items%22%3A%5B%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel1%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.7%22%7D%7D%2C%7B%22type%22%3A%22handle%22%2C%22size%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%2210%22%7D%2C%22id%22%3A%22resizer1%22%7D%2C%7B%22type%22%3A%22panel%22%2C%22min%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22max%22%3A%221fr%22%2C%22collapsible%22%3Afalse%2C%22collapsedSize%22%3A%7B%22type%22%3A%22pixel%22%2C%22value%22%3A%220%22%7D%2C%22onCollapseChange%22%3A%7B%7D%2C%22onResize%22%3A%7B%7D%2C%22collapseIsControlled%22%3Afalse%2C%22id%22%3A%22panel2%22%2C%22currentValue%22%3A%7B%22type%22%3A%22percent%22%2C%22value%22%3A%220.3%22%7D%7D%5D%2C%22orientation%22%3A%22horizontal%22%2C%22dragOvershoot%22%3A%220%22%2C%22groupId%22%3A%22autosave-cookie-example%22%2C%22autosaveStrategy%22%3A%22cookie%22%2C%22shiftAmount%22%3A15%7D"`;
4
4
 
5
5
  exports[`Autosave > localStorage 1`] = `
6
6
  [