@window-splitter/react 1.1.1 → 1.1.2

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@1.1.0 build /Users/alisowski/Documents/react-window-splitter/packages/react
3
+ > @window-splitter/react@1.1.1 build /Users/alisowski/Documents/react-window-splitter/packages/react
4
4
  > tshy
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # v1.1.2 (Mon Jul 21 2025)
2
+
3
+ #### ⚠️ Pushed to `main`
4
+
5
+ - handle order changes (andrew.lisowski@snowflake.com)
6
+ - use correct unmount function, not just latest (andrew.lisowski@snowflake.com)
7
+ - type (andrew.lisowski@snowflake.com)
8
+ - better item matching based on ids and not just indexes (andrew.lisowski@snowflake.com)
9
+
10
+ #### Authors: 1
11
+
12
+ - Andrew Lisowski (andrew.lisowski@snowflake.com)
13
+
14
+ ---
15
+
1
16
  # v1.1.1 (Mon Jul 14 2025)
2
17
 
3
18
  #### 🐛 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;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;AAmIF,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;AAgJf,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;AA6JD,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;AAuIF,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,0FA4BxB,CAAC"}
@@ -70,15 +70,15 @@ const GroupMachine = {
70
70
  return ref;
71
71
  },
72
72
  Provider: ({ input, children, }) => {
73
- const [intiialValue, send, state] = (0, react_1.useMemo)(() => (0, state_1.groupMachine)(input, (value) => {
73
+ const [initialValue, send, state] = (0, react_1.useMemo)(() => (0, state_1.groupMachine)(input, (value) => {
74
74
  currentContextRef.current = value;
75
75
  setCurrentValue({ ...value });
76
76
  }),
77
77
  // We only want this to run once, we dont care about changes to the input
78
78
  // eslint-disable-next-line react-hooks/exhaustive-deps
79
79
  []);
80
- const currentContextRef = (0, react_1.useRef)(intiialValue);
81
- const [currentValue, setCurrentValue] = (0, react_1.useState)(intiialValue);
80
+ const currentContextRef = (0, react_1.useRef)(initialValue);
81
+ const [currentValue, setCurrentValue] = (0, react_1.useState)(initialValue);
82
82
  (0, react_1.useEffect)(() => {
83
83
  send({ type: "unlockGroup" });
84
84
  return () => {
@@ -122,7 +122,13 @@ function useGroupItem(itemArg) {
122
122
  }
123
123
  // The way this hooks is called is never conditional so the usage here is fine
124
124
  /* eslint-disable react-hooks/rules-of-hooks */
125
- const currentItem = GroupMachine.useSelector(({ context }) => context.items[index]);
125
+ const currentItem = GroupMachine.useSelector(({ context }) => {
126
+ const itemAtIndex = context.items[index];
127
+ if (itemAtIndex && itemAtIndex.id === item.id) {
128
+ return itemAtIndex;
129
+ }
130
+ return context.items[index];
131
+ });
126
132
  const { send } = GroupMachine.useActorRef();
127
133
  const machineRef = GroupMachine.useContextRef();
128
134
  const onCollapseChangeRef = (0, state_1.isPanelData)(itemArg)
@@ -190,12 +196,23 @@ function useGroupItem(itemArg) {
190
196
  };
191
197
  }, [index, itemArg, machineRef, send, onCollapseChangeRef, onResizeRef]);
192
198
  // And unregister after layout so we can tell if the element was actually removed.
193
- react_1.default.useEffect(() => {
194
- return () => {
195
- onUnmountRef.current?.();
196
- onUnmountRef.current = undefined;
197
- };
198
- }, []);
199
+ react_1.default.useEffect(() => onUnmountRef.current, [currentItem?.id]);
200
+ // If an item index updates we need to update the state machine
201
+ const indexId = `${index}-${itemArg.id || currentItem?.id || item.id}`;
202
+ const lastIndexId = (0, react_1.useRef)(indexId);
203
+ const onUpdateIndex = (0, utils_1.useEffectEvent)(() => {
204
+ send({
205
+ type: "updateItemIndex",
206
+ itemId: itemArg.id || currentItem?.id || item.id,
207
+ index,
208
+ });
209
+ });
210
+ react_1.default.useLayoutEffect(() => {
211
+ if (lastIndexId.current !== indexId) {
212
+ onUpdateIndex();
213
+ }
214
+ lastIndexId.current = indexId;
215
+ }, [indexId, onUpdateIndex]);
199
216
  return currentItem || item;
200
217
  /* eslint-enable react-hooks/rules-of-hooks */
201
218
  }
@@ -393,12 +410,17 @@ const PanelVisible = react_1.default.forwardRef(function PanelVisible({ collapsi
393
410
  if (context.items.length === 0) {
394
411
  return;
395
412
  }
396
- const p = (0, state_1.getPanelWithId)(context, panelId);
397
- if (collapsed === true && !p.collapsed) {
398
- send({ type: "collapsePanel", panelId, controlled: true });
413
+ try {
414
+ const p = (0, state_1.getPanelWithId)(context, panelId);
415
+ if (collapsed === true && !p.collapsed) {
416
+ send({ type: "collapsePanel", panelId, controlled: true });
417
+ }
418
+ else if (collapsed === false && p.collapsed) {
419
+ send({ type: "expandPanel", panelId, controlled: true });
420
+ }
399
421
  }
400
- else if (collapsed === false && p.collapsed) {
401
- send({ type: "expandPanel", panelId, controlled: true });
422
+ catch {
423
+ // with conditional panels the panel might not be registered yet
402
424
  }
403
425
  }
404
426
  }, [send, collapsed, panelId, machineRef]);
@@ -457,20 +479,26 @@ exports.PanelResizer = react_1.default.forwardRef(function PanelResizer(props, r
457
479
  size: (0, state_1.parseUnit)(size),
458
480
  id: props.id,
459
481
  }), [size, props.id]);
460
- useGroupItem(data);
482
+ const { id: handleId } = useGroupItem(data);
461
483
  if (isPrerender) {
462
484
  return null;
463
485
  }
464
- return react_1.default.createElement(PanelResizerVisible, { ref: ref, panelHandleProp: data, ...props });
486
+ return (react_1.default.createElement(PanelResizerVisible, { ref: ref, panelHandleProp: data, ...props, handleId: handleId }));
465
487
  });
466
- const PanelResizerVisible = react_1.default.forwardRef(function PanelResizerVisible({ size = "0px", disabled, onDragStart, onDrag, onDragEnd, panelHandleProp, ...props }, outerRef) {
488
+ const PanelResizerVisible = react_1.default.forwardRef(function PanelResizerVisible({ size = "0px", disabled, onDragStart, onDrag, onDragEnd, panelHandleProp, handleId: handleIdProp, ...props }, outerRef) {
467
489
  const innerRef = react_1.default.useRef(null);
468
490
  const ref = (0, utils_1.mergeRefs)(outerRef, innerRef);
469
491
  const unit = (0, state_1.parseUnit)(size);
470
492
  const { send } = GroupMachine.useActorRef();
471
493
  const { index } = (0, useIndexedChildren_js_1.useIndex)();
472
- const handleId = GroupMachine.useSelector(({ context }) => context.items[index]?.id || "");
473
- const panelHandle = GroupMachine.useSelector(({ context }) => context.items[index]);
494
+ const panelHandle = GroupMachine.useSelector(({ context }) => {
495
+ const item = context.items.find((i) => i.id === handleIdProp) || context.items[index];
496
+ if (item && (0, state_1.isPanelHandle)(item)) {
497
+ return item;
498
+ }
499
+ return undefined;
500
+ });
501
+ const handleId = panelHandle?.id || "";
474
502
  const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {
475
503
  const panel = context.items[index - 1];
476
504
  if (!panel)
@@ -1 +1 @@
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,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC1D,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,iBAAiB,GACrB,KAAK,IAAI,IAAA,sCAA8B,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE;QAC7C,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,iBAAiB,EAAE,CAAC;YACtB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElD,kEAAkE;IAClE,2CAA2C;IAC3C,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,KAAK,IAAI,EAAE;gBACnB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACtE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,SAAS,CAAC;YAC3D,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACpE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAC3D,YAAY,EAAE,GAAG,EAAE;gBACjB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBACnC,OAAO,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,iBAAiB,GACrB,WAAW;QACX,IAAA,4CAAoC,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,GAAG,EAAE;QAC7C,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,iBAAiB,EAAE,CAAC;YACtB,kBAAkB,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC3D,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,gBAAgB,EAAE,CAAC;YAC1C,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,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 = autosaveId ? \"localStorage\" : undefined,\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\n\n for (let index = 0; index < updates.length; index++) {\n const item = context.items[index];\n const update = updates[index];\n\n if (item && isPanelData(item) && update) {\n send({\n type: \"setPanelPixelSize\",\n panelId: item.id,\n size: update,\n });\n }\n }\n },\n getTemplate: () => {\n const context = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n const p = getPanelWithId(context, panelId);\n\n if (collapsed === true && !p.collapsed) {\n send({ type: \"collapsePanel\", panelId, controlled: true });\n } else if (collapsed === false && p.collapsed) {\n send({ type: \"expandPanel\", panelId, controlled: true });\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return <PanelResizerVisible ref={ref} panelHandleProp={data} {...props} />;\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & { panelHandleProp: Omit<PanelHandleData, \"id\"> }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n ...props\n },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const unit = parseUnit(size);\n const { send } = GroupMachine.useActorRef();\n const { index } = useIndex();\n const handleId = GroupMachine.useSelector(\n ({ context }) => context.items[index]?.id || \"\"\n );\n const panelHandle = GroupMachine.useSelector(\n ({ context }) => context.items[index] as PanelHandleData\n );\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" && collapsiblePanel) {\n if (collapsiblePanel.collapsed) {\n send({ type: \"expandPanel\", panelId: collapsiblePanel.id });\n } else {\n send({ type: \"collapsePanel\", panelId: collapsiblePanel.id });\n }\n }\n };\n\n return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
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 isPanelHandle,\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 [initialValue, 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(initialValue);\n const [currentValue, setCurrentValue] = useState(initialValue);\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(({ context }) => {\n const itemAtIndex = context.items[index];\n if (itemAtIndex && itemAtIndex.id === item.id) {\n return itemAtIndex;\n }\n return context.items[index];\n }) as T | undefined;\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(() => onUnmountRef.current, [currentItem?.id]);\n\n // If an item index updates we need to update the state machine\n const indexId = `${index}-${itemArg.id || currentItem?.id || item.id}`;\n const lastIndexId = useRef(indexId);\n const onUpdateIndex = useEffectEvent(() => {\n send({\n type: \"updateItemIndex\",\n itemId: itemArg.id || currentItem?.id || item.id,\n index,\n });\n });\n React.useLayoutEffect(() => {\n if (lastIndexId.current !== indexId) {\n onUpdateIndex();\n }\n\n lastIndexId.current = indexId;\n }, [indexId, onUpdateIndex]);\n\n return currentItem || item;\n /* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/** A group of panels that has constraints and a user can resize */\nexport const PanelGroup = React.forwardRef<HTMLDivElement, PanelGroupProps>(\n function PanelGroup({ children, ...props }, ref) {\n const [hasPreRendered, setHasPreRendered] = useState(false);\n const initialMap = useRef<Item[]>([]);\n const indexedChildren = useIndexedChildren(children);\n\n return (\n <InitialMapContext.Provider value={initialMap.current}>\n {!hasPreRendered && (\n <PrerenderTree onPrerender={() => setHasPreRendered(true)}>\n {indexedChildren}\n </PrerenderTree>\n )}\n\n <PanelGroupImpl ref={ref} initialItems={initialMap} {...props}>\n {indexedChildren}\n </PanelGroupImpl>\n </InitialMapContext.Provider>\n );\n }\n);\n\nconst PanelGroupImpl = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps & {\n initialItems: { current: Item[] };\n }\n>(function PanelGroupImpl(\n {\n autosaveId,\n autosaveStrategy = autosaveId ? \"localStorage\" : undefined,\n snapshot: snapshotProp,\n initialItems,\n shiftAmount,\n ...props\n },\n ref\n) {\n const defaultGroupId = `panel-group-${useId()}`;\n const groupId = autosaveId || props.id || defaultGroupId;\n const [snapshot, setSnapshot] = React.useState<\n GroupMachineContextValue | true | undefined\n >(snapshotProp);\n\n if (\n typeof window !== \"undefined\" &&\n autosaveId &&\n !snapshot &&\n autosaveStrategy === \"localStorage\"\n ) {\n const localSnapshot = localStorage.getItem(autosaveId);\n\n if (localSnapshot) {\n setSnapshot(JSON.parse(localSnapshot));\n } else {\n setSnapshot(true);\n }\n }\n\n const snapshotMemo = useMemo(() => {\n return typeof snapshot === \"object\" ? prepareSnapshot(snapshot) : undefined;\n }, [snapshot]);\n\n return (\n <GroupMachine.Provider\n input={{\n orientation: props.orientation,\n groupId,\n items: initialItems.current,\n autosaveStrategy,\n shiftAmount,\n ...(typeof snapshotMemo === \"object\" ? snapshotMemo : undefined),\n }}\n >\n <PanelGroupImplementation ref={ref} {...props} />\n </GroupMachine.Provider>\n );\n});\n\nconst PanelGroupImplementation = React.forwardRef<\n HTMLDivElement,\n PanelGroupProps\n>(function PanelGroupImplementation(\n { handle, orientation: orientationProp, ...props },\n outerRef\n) {\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const template = GroupMachine.useSelector((state) =>\n buildTemplate(state.context)\n );\n\n // When the prop for `orientation` updates also update the state machine\n if (orientationProp && orientationProp !== orientation) {\n send({ type: \"setOrientation\", orientation: orientationProp });\n }\n\n // Track the size of the group\n useLayoutEffect(() => {\n const { current: el } = innerRef;\n\n if (!el) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (!entry) {\n return;\n }\n\n send({ type: \"setSize\", size: entry.contentRect });\n });\n\n observer.observe(el);\n\n send({ type: \"setSize\", size: el.getBoundingClientRect() });\n\n return () => {\n observer.disconnect();\n };\n }, [send, innerRef, groupId]);\n\n const childIds = GroupMachine.useSelector((state) =>\n state.context.items.map((i) => i.id).join(\",\")\n );\n useLayoutEffect(() => {\n return measureGroupChildren(groupId, (childrenSizes) => {\n send({ type: \"setActualItemsSize\", childrenSizes });\n });\n }, [send, groupId, childIds]);\n\n // useDebugGroupMachineContext({ id: groupId });\n\n const fallbackHandleRef = React.useRef<PanelGroupHandle>(null);\n const state = useContext(GroupMachineState);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => groupId,\n getPixelSizes: () => getPanelGroupPixelSizes(machineRef.current),\n getPercentageSizes: () =>\n getPanelGroupPercentageSizes(machineRef.current),\n setSizes: (updates) => {\n const context = machineRef.current;\n\n for (let index = 0; index < updates.length; index++) {\n const item = context.items[index];\n const update = updates[index];\n\n if (item && isPanelData(item) && update) {\n send({\n type: \"setPanelPixelSize\",\n panelId: item.id,\n size: update,\n });\n }\n }\n },\n getTemplate: () => {\n const context = machineRef.current;\n return buildTemplate({ ...context, items: prepareItems(context) });\n },\n getState: () => (state.current === \"idle\" ? \"idle\" : \"dragging\"),\n };\n });\n\n return (\n <div\n ref={ref}\n data-group-id={groupId}\n data-group-orientation={orientation}\n {...mergeAttributes(props, {\n style: {\n display: \"grid\",\n gridTemplateColumns:\n orientation === \"horizontal\" ? template : undefined,\n gridTemplateRows: orientation === \"vertical\" ? template : undefined,\n height: \"100%\",\n },\n })}\n />\n );\n});\n\nexport interface PanelProps\n extends SharedPanelProps<boolean>,\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n /** Imperative handle to control the panel */\n handle?: React.Ref<PanelHandle>;\n}\n\n/** A panel within a `PanelGroup` */\nexport const Panel = React.forwardRef<HTMLDivElement, PanelProps>(\n function Panel(\n {\n defaultCollapsed,\n min,\n max,\n default: defaultSize,\n collapsedSize,\n onCollapseChange,\n onResize,\n collapseAnimation,\n isStaticAtRest,\n ...props\n },\n outerRef\n ) {\n const { collapsible = false, collapsed } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const onCollapseChangeRef = React.useRef(onCollapseChange);\n useEffect(() => {\n onCollapseChangeRef.current = onCollapseChange;\n }, [onCollapseChange]);\n const onResizeRef = React.useRef(onResize);\n useEffect(() => {\n onResizeRef.current = onResize;\n }, [onResize]);\n const panelDataRef = React.useMemo(() => {\n return initializePanel({\n min: min,\n max: max,\n collapsible: collapsible,\n collapsed: collapsed,\n collapsedSize: collapsedSize,\n onCollapseChange: onCollapseChangeRef,\n collapseAnimation: collapseAnimation,\n onResize: onResizeRef,\n id: props.id,\n defaultCollapsed,\n default: defaultSize,\n isStaticAtRest,\n });\n }, [\n collapseAnimation,\n collapsed,\n collapsedSize,\n collapsible,\n defaultCollapsed,\n max,\n min,\n props.id,\n defaultSize,\n isStaticAtRest,\n ]);\n\n const { id: panelId } = useGroupItem(panelDataRef);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelVisible\n ref={outerRef}\n panelProp={panelDataRef}\n {...props}\n panelId={panelId}\n />\n );\n }\n);\n\nconst PanelVisible = React.forwardRef<\n HTMLDivElement,\n Omit<\n PanelProps,\n | \"collapsedSize\"\n | \"onCollapseChange\"\n | \"defaultCollapsed\"\n | \"min\"\n | \"max\"\n | \"collapseAnimation\"\n | \"onResize\"\n > & {\n panelId: string;\n /** The latest prop that was received by the `Panel` component */\n panelProp: Omit<PanelData, \"id\">;\n }\n>(function PanelVisible(\n { collapsible = false, collapsed, handle, panelId, panelProp, ...props },\n outerRef\n) {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const ref = mergeRefs(outerRef, innerRef);\n const { send } = GroupMachine.useActorRef();\n const machineRef = GroupMachine.useContextRef();\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const panel = GroupMachine.useSelector(({ context }) => {\n try {\n return getPanelWithId(context, panelId);\n } catch {\n return undefined;\n }\n });\n\n const constraintChanged =\n panel && haveConstraintsChangedForPanel(panelProp, panel);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelProp, id: panel.id },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n // For controlled collapse we track if the `collapse` prop changes\n // and update the state machine if it does.\n React.useEffect(() => {\n if (typeof collapsed !== \"undefined\") {\n const context = machineRef.current;\n\n if (context.items.length === 0) {\n return;\n }\n\n try {\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 } catch {\n // with conditional panels the panel might not be registered yet\n }\n }\n }, [send, collapsed, panelId, machineRef]);\n\n const fallbackHandleRef = React.useRef<PanelHandle>(null);\n\n useImperativeHandle(handle || fallbackHandleRef, () => {\n return {\n getId: () => panelId,\n collapse: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"collapsePanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isCollapsed: () => Boolean(collapsible && panel?.collapsed),\n expand: async () => {\n if (collapsible) {\n await new Promise<void>((resolve) => {\n send({ type: \"expandPanel\", panelId, controlled: true, resolve });\n });\n }\n },\n isExpanded: () => Boolean(collapsible && !panel?.collapsed),\n getPixelSize: () => {\n const context = machineRef.current;\n return getPanelPixelSize(context, panelId);\n },\n setSize: (size) => {\n send({ type: \"setPanelPixelSize\", panelId, size });\n },\n getPercentageSize: () => {\n const context = machineRef.current;\n return getPanelPercentageSize(context, panelId);\n },\n };\n });\n\n return (\n <div\n ref={ref}\n {...mergeAttributes(\n props,\n getPanelDomAttributes({\n groupId,\n id: panelId,\n collapsed,\n collapsible: panel?.collapsible,\n }),\n {\n style: {\n minWidth: 0,\n minHeight: 0,\n overflow: \"hidden\",\n },\n }\n )}\n />\n );\n});\n\nexport interface PanelResizerProps\n extends SharedPanelResizerProps,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onDragStart\" | \"onDrag\" | \"onDragEnd\"\n > {}\n\n/** A resize handle to place between panels. */\nexport const PanelResizer = React.forwardRef<HTMLDivElement, PanelResizerProps>(\n function PanelResizer(props, ref) {\n const { size = \"0px\" } = props;\n const isPrerender = React.useContext(PreRenderContext);\n const data = React.useMemo(\n () => ({\n type: \"handle\" as const,\n size: parseUnit(size) as ParsedPixelUnit,\n id: props.id,\n }),\n [size, props.id]\n );\n\n const { id: handleId } = useGroupItem(data);\n\n if (isPrerender) {\n return null;\n }\n\n return (\n <PanelResizerVisible\n ref={ref}\n panelHandleProp={data}\n {...props}\n handleId={handleId}\n />\n );\n }\n);\n\nconst PanelResizerVisible = React.forwardRef<\n HTMLDivElement,\n PanelResizerProps & {\n panelHandleProp: Omit<PanelHandleData, \"id\">;\n handleId: string;\n }\n>(function PanelResizerVisible(\n {\n size = \"0px\",\n disabled,\n onDragStart,\n onDrag,\n onDragEnd,\n panelHandleProp,\n handleId: handleIdProp,\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 panelHandle = GroupMachine.useSelector(({ context }) => {\n const item =\n context.items.find((i) => i.id === handleIdProp) || context.items[index];\n\n if (item && isPanelHandle(item)) {\n return item;\n }\n\n return undefined;\n });\n const handleId = panelHandle?.id || \"\";\n const panelBeforeHandle = GroupMachine.useSelector(({ context }) => {\n const panel = context.items[index - 1];\n if (!panel) return undefined;\n if (!isPanelData(panel)) return undefined;\n return panel;\n });\n const collapsiblePanel = GroupMachine.useSelector(({ context }) => {\n try {\n return getCollapsiblePanelForHandleId(context, handleId);\n } catch {\n return undefined;\n }\n });\n const orientation = GroupMachine.useSelector(\n (state) => state.context.orientation\n );\n const groupsSize = GroupMachine.useSelector((state) =>\n getGroupSize(state.context)\n );\n const overshoot = GroupMachine.useSelector(\n (state) => state.context.dragOvershoot\n );\n const activeDragHandleId = GroupMachine.useSelector(\n (state) => state.context.activeDragHandleId\n );\n const groupId = GroupMachine.useSelector((state) => state.context.groupId);\n const [isDragging, setIsDragging] = React.useState(false);\n\n let cursor: React.CSSProperties[\"cursor\"];\n\n if (disabled) {\n cursor = \"default\";\n } else {\n cursor = getCursor({ dragOvershoot: overshoot, orientation });\n }\n\n const { moveProps } = useMove({\n onMoveStart: () => {\n send({ type: \"dragHandleStart\", handleId: handleId });\n onDragStart?.();\n setIsDragging(true);\n document.body.style.cursor = cursor || \"auto\";\n },\n onMove: (e) => {\n send({ type: \"dragHandle\", handleId: handleId, value: e });\n onDrag?.();\n },\n onMoveEnd: () => {\n send({ type: \"dragHandleEnd\", handleId: handleId });\n onDragEnd?.();\n setIsDragging(false);\n document.body.style.cursor = \"auto\";\n },\n });\n\n const constraintChanged =\n panelHandle &&\n haveConstraintsChangedForPanelHandle(panelHandleProp, panelHandle);\n\n const onConstraintChange = useEffectEvent(() => {\n if (constraintChanged) {\n send({\n type: \"updateConstraints\",\n data: { ...panelHandleProp, id: handleId },\n });\n }\n });\n\n React.useEffect(() => {\n if (constraintChanged) {\n onConstraintChange();\n }\n }, [send, constraintChanged, onConstraintChange]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" && collapsiblePanel) {\n if (collapsiblePanel.collapsed) {\n send({ type: \"expandPanel\", panelId: collapsiblePanel.id });\n } else {\n send({ type: \"collapsePanel\", panelId: collapsiblePanel.id });\n }\n }\n };\n\n return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n {...mergeAttributes(\n props,\n disabled\n ? {}\n : mergeAttributes(moveProps as React.HTMLAttributes<HTMLDivElement>, {\n onKeyDown,\n tabIndex: 0,\n }),\n getPanelResizerDomAttributes({\n groupId,\n id: handleId,\n orientation,\n isDragging,\n activeDragHandleId,\n disabled,\n controlsId: panelBeforeHandle?.id,\n min: panelBeforeHandle?.min,\n max: panelBeforeHandle?.max,\n currentValue: panelBeforeHandle?.currentValue,\n groupSize: groupsSize,\n }),\n {\n style: {\n cursor,\n ...(orientation === \"horizontal\"\n ? { width: unit.value.toNumber(), height: \"100%\" }\n : { height: unit.value.toNumber(), width: \"100%\" }),\n },\n }\n )}\n />\n );\n});\n\n// #endregion\n"]}
@@ -45,4 +45,7 @@ export declare function StaticAtRest({ handle, }: {
45
45
  handle?: React.Ref<PanelGroupHandle>;
46
46
  }): React.JSX.Element;
47
47
  export declare function SiblingCollapsiblePanels(): React.JSX.Element;
48
+ export declare function Admin({ handle }: {
49
+ handle?: React.Ref<PanelGroupHandle>;
50
+ }): React.JSX.Element;
48
51
  //# sourceMappingURL=ReactWindowSplitter.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReactWindowSplitter.stories.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;;;;AAG3E,wBAEE;AA+CF,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ1E;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ5E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,gBAA8B,GAC/B,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC,qBAgBA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA6BA;AAED,wBAAgB,SAAS,sBAgBxB;AAED,wBAAgB,YAAY,sBAgB3B;AAED,wBAAgB,iBAAiB,sBAYhC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAkBA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAqBA;AAED,wBAAgB,YAAY,sBA6B3B;AAED,wBAAgB,YAAY,sBAoG3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,gBAAgB,EAChB,MAAM,GACP,EAAE;IACD,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3C,qBAwCA;AAED,wBAAgB,uBAAuB,sBAuCtC;AAED,wBAAgB,eAAe,sBA2G9B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA8BA;AAED,wBAAgB,uBAAuB,sBA4CtC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAYA;AA4BD,wBAAgB,wBAAwB,sBAkLvC"}
1
+ {"version":3,"file":"ReactWindowSplitter.stories.d.ts","sourceRoot":"","sources":["../../src/ReactWindowSplitter.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;;;;AAG3E,wBAEE;AA+CF,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ1E;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAQ5E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,gBAA8B,GAC/B,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC,qBAgBA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA6BA;AAED,wBAAgB,SAAS,sBAgBxB;AAED,wBAAgB,YAAY,sBAgB3B;AAED,wBAAgB,iBAAiB,sBAYhC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAkBA;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAqBA;AAED,wBAAgB,YAAY,sBA6B3B;AAED,wBAAgB,YAAY,sBAoG3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,gBAAgB,EAChB,MAAM,GACP,EAAE;IACD,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;CAC3C,qBAwCA;AAED,wBAAgB,uBAAuB,sBAuCtC;AAED,wBAAgB,eAAe,sBA2G9B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBA8BA;AAED,wBAAgB,uBAAuB,sBA4CtC;AAED,wBAAgB,gBAAgB,sBAc/B;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC,qBAYA;AA4BD,wBAAgB,wBAAwB,sBAkLvC;AAED,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAE,qBAkEzE"}
@@ -53,6 +53,7 @@ exports.ConditionalPanelComplex = ConditionalPanelComplex;
53
53
  exports.WithDefaultWidth = WithDefaultWidth;
54
54
  exports.StaticAtRest = StaticAtRest;
55
55
  exports.SiblingCollapsiblePanels = SiblingCollapsiblePanels;
56
+ exports.Admin = Admin;
56
57
  const react_1 = __importStar(require("react"));
57
58
  const framer_motion_1 = require("framer-motion");
58
59
  const ReactWindowSplitter_js_1 = require("./ReactWindowSplitter.js");
@@ -422,4 +423,27 @@ function SiblingCollapsiblePanels() {
422
423
  backgroundColor: isEditMode ? "blue" : undefined,
423
424
  } }, "Edit mode")))));
424
425
  }
426
+ function Admin({ handle }) {
427
+ const [showTraces, setShowTraces] = (0, react_1.useState)(false);
428
+ const [chatCollapsed, setChatCollapsed] = (0, react_1.useState)(false);
429
+ return (react_1.default.createElement(react_1.default.Fragment, null,
430
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelGroup, { handle: handle, style: { height: "calc(100vh - 100px)" } },
431
+ !showTraces && (react_1.default.createElement(react_1.default.Fragment, null,
432
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "red" }, min: "200px", max: "240px", id: "sidebar" },
433
+ react_1.default.createElement("div", null, "Sidebar")),
434
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px", id: "sidebar-resizer" }),
435
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "blue" }, min: "250px", id: "main" },
436
+ react_1.default.createElement("div", null, "Main")),
437
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px", id: "main-resizer" }))),
438
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "#333366" }, min: "33%", collapsible: true, collapsedSize: "8px", id: "chat", collapsed: chatCollapsed, onCollapseChange: setChatCollapsed },
439
+ react_1.default.createElement("div", null, "Chat")),
440
+ showTraces && (react_1.default.createElement(react_1.default.Fragment, null,
441
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px", id: "details-resizer" }),
442
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "green" }, default: "33%", min: "100px", id: "details" },
443
+ react_1.default.createElement("div", null, "Details")),
444
+ react_1.default.createElement(ReactWindowSplitter_js_1.PanelResizer, { size: "3px", id: "traces-resizer" }),
445
+ react_1.default.createElement(ReactWindowSplitter_js_1.Panel, { style: { backgroundColor: "yellow" }, default: "33%", min: "100px", id: "traces" },
446
+ react_1.default.createElement("div", null, "Traces"))))),
447
+ react_1.default.createElement("button", { type: "button", onClick: () => setShowTraces(!showTraces) }, showTraces ? "Hide traces" : "Show traces")));
448
+ }
425
449
  //# sourceMappingURL=ReactWindowSplitter.stories.js.map