{"version":3,"file":"index.mjs","sources":["../../node_modules/lucide-react/dist/esm/icons/grip-vertical.js","../../node_modules/react-resizable-panels/dist/react-resizable-panels.js","../../src/components/ui/resizable/resizable.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"circle\", { cx: \"9\", cy: \"12\", r: \"1\", key: \"1vctgf\" }],\n  [\"circle\", { cx: \"9\", cy: \"5\", r: \"1\", key: \"hp0tcf\" }],\n  [\"circle\", { cx: \"9\", cy: \"19\", r: \"1\", key: \"fkjjf6\" }],\n  [\"circle\", { cx: \"15\", cy: \"12\", r: \"1\", key: \"1tmaij\" }],\n  [\"circle\", { cx: \"15\", cy: \"5\", r: \"1\", key: \"19l28e\" }],\n  [\"circle\", { cx: \"15\", cy: \"19\", r: \"1\", key: \"f4zoj3\" }]\n];\nconst GripVertical = createLucideIcon(\"GripVertical\", __iconNode);\n\nexport { __iconNode, GripVertical as default };\n//# sourceMappingURL=grip-vertical.js.map\n","import * as React from 'react';\nimport { createContext, useLayoutEffect, useRef, forwardRef, createElement, useContext, useImperativeHandle, useState, useCallback, useEffect, useMemo } from 'react';\n\nconst isBrowser = typeof window !== \"undefined\";\n\n// The \"contextmenu\" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled\n\nconst PanelGroupContext = createContext(null);\nPanelGroupContext.displayName = \"PanelGroupContext\";\n\nconst DATA_ATTRIBUTES = {\n  group: \"data-panel-group\",\n  groupDirection: \"data-panel-group-direction\",\n  groupId: \"data-panel-group-id\",\n  panel: \"data-panel\",\n  panelCollapsible: \"data-panel-collapsible\",\n  panelId: \"data-panel-id\",\n  panelSize: \"data-panel-size\",\n  resizeHandle: \"data-resize-handle\",\n  resizeHandleActive: \"data-resize-handle-active\",\n  resizeHandleEnabled: \"data-panel-resize-handle-enabled\",\n  resizeHandleId: \"data-panel-resize-handle-id\",\n  resizeHandleState: \"data-resize-handle-state\"\n};\nconst PRECISION = 10;\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : () => {};\n\nconst useId = React[\"useId\".toString()];\nconst wrappedUseId = typeof useId === \"function\" ? useId : () => null;\nlet counter = 0;\nfunction useUniqueId(idFromParams = null) {\n  const idFromUseId = wrappedUseId();\n  const idRef = useRef(idFromParams || idFromUseId || null);\n  if (idRef.current === null) {\n    idRef.current = \"\" + counter++;\n  }\n  return idFromParams !== null && idFromParams !== void 0 ? idFromParams : idRef.current;\n}\n\nfunction PanelWithForwardedRef({\n  children,\n  className: classNameFromProps = \"\",\n  collapsedSize,\n  collapsible,\n  defaultSize,\n  forwardedRef,\n  id: idFromProps,\n  maxSize,\n  minSize,\n  onCollapse,\n  onExpand,\n  onResize,\n  order,\n  style: styleFromProps,\n  tagName: Type = \"div\",\n  ...rest\n}) {\n  const context = useContext(PanelGroupContext);\n  if (context === null) {\n    throw Error(`Panel components must be rendered within a PanelGroup container`);\n  }\n  const {\n    collapsePanel,\n    expandPanel,\n    getPanelSize,\n    getPanelStyle,\n    groupId,\n    isPanelCollapsed,\n    reevaluatePanelConstraints,\n    registerPanel,\n    resizePanel,\n    unregisterPanel\n  } = context;\n  const panelId = useUniqueId(idFromProps);\n  const panelDataRef = useRef({\n    callbacks: {\n      onCollapse,\n      onExpand,\n      onResize\n    },\n    constraints: {\n      collapsedSize,\n      collapsible,\n      defaultSize,\n      maxSize,\n      minSize\n    },\n    id: panelId,\n    idIsFromProps: idFromProps !== undefined,\n    order\n  });\n  useRef({\n    didLogMissingDefaultSizeWarning: false\n  });\n  useIsomorphicLayoutEffect(() => {\n    const {\n      callbacks,\n      constraints\n    } = panelDataRef.current;\n    const prevConstraints = {\n      ...constraints\n    };\n    panelDataRef.current.id = panelId;\n    panelDataRef.current.idIsFromProps = idFromProps !== undefined;\n    panelDataRef.current.order = order;\n    callbacks.onCollapse = onCollapse;\n    callbacks.onExpand = onExpand;\n    callbacks.onResize = onResize;\n    constraints.collapsedSize = collapsedSize;\n    constraints.collapsible = collapsible;\n    constraints.defaultSize = defaultSize;\n    constraints.maxSize = maxSize;\n    constraints.minSize = minSize;\n\n    // If constraints have changed, we should revisit panel sizes.\n    // This is uncommon but may happen if people are trying to implement pixel based constraints.\n    if (prevConstraints.collapsedSize !== constraints.collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !== constraints.minSize) {\n      reevaluatePanelConstraints(panelDataRef.current, prevConstraints);\n    }\n  });\n  useIsomorphicLayoutEffect(() => {\n    const panelData = panelDataRef.current;\n    registerPanel(panelData);\n    return () => {\n      unregisterPanel(panelData);\n    };\n  }, [order, panelId, registerPanel, unregisterPanel]);\n  useImperativeHandle(forwardedRef, () => ({\n    collapse: () => {\n      collapsePanel(panelDataRef.current);\n    },\n    expand: minSize => {\n      expandPanel(panelDataRef.current, minSize);\n    },\n    getId() {\n      return panelId;\n    },\n    getSize() {\n      return getPanelSize(panelDataRef.current);\n    },\n    isCollapsed() {\n      return isPanelCollapsed(panelDataRef.current);\n    },\n    isExpanded() {\n      return !isPanelCollapsed(panelDataRef.current);\n    },\n    resize: size => {\n      resizePanel(panelDataRef.current, size);\n    }\n  }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);\n  const style = getPanelStyle(panelDataRef.current, defaultSize);\n  return createElement(Type, {\n    ...rest,\n    children,\n    className: classNameFromProps,\n    id: panelId,\n    style: {\n      ...style,\n      ...styleFromProps\n    },\n    // CSS selectors\n    [DATA_ATTRIBUTES.groupId]: groupId,\n    [DATA_ATTRIBUTES.panel]: \"\",\n    [DATA_ATTRIBUTES.panelCollapsible]: collapsible || undefined,\n    [DATA_ATTRIBUTES.panelId]: panelId,\n    [DATA_ATTRIBUTES.panelSize]: parseFloat(\"\" + style.flexGrow).toFixed(1)\n  });\n}\nconst Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {\n  ...props,\n  forwardedRef: ref\n}));\nPanelWithForwardedRef.displayName = \"Panel\";\nPanel.displayName = \"forwardRef(Panel)\";\n\nlet nonce;\nfunction getNonce() {\n  return nonce;\n}\nfunction setNonce(value) {\n  nonce = value;\n}\n\nlet currentCursorStyle = null;\nlet enabled = true;\nlet getCustomCursorStyleFunction = null;\nlet prevRuleIndex = -1;\nlet styleElement = null;\nfunction customizeGlobalCursorStyles(callback) {\n  getCustomCursorStyleFunction = callback;\n}\nfunction disableGlobalCursorStyles() {\n  enabled = false;\n}\nfunction enableGlobalCursorStyles() {\n  enabled = true;\n}\nfunction getCursorStyle(state, constraintFlags, isPointerDown) {\n  const horizontalMin = (constraintFlags & EXCEEDED_HORIZONTAL_MIN) !== 0;\n  const horizontalMax = (constraintFlags & EXCEEDED_HORIZONTAL_MAX) !== 0;\n  const verticalMin = (constraintFlags & EXCEEDED_VERTICAL_MIN) !== 0;\n  const verticalMax = (constraintFlags & EXCEEDED_VERTICAL_MAX) !== 0;\n  if (getCustomCursorStyleFunction) {\n    return getCustomCursorStyleFunction({\n      exceedsHorizontalMaximum: horizontalMax,\n      exceedsHorizontalMinimum: horizontalMin,\n      exceedsVerticalMaximum: verticalMax,\n      exceedsVerticalMinimum: verticalMin,\n      intersectsHorizontalDragHandle: state === \"horizontal\" || state === \"intersection\",\n      intersectsVerticalDragHandle: state === \"vertical\" || state === \"intersection\",\n      isPointerDown\n    });\n  }\n  if (constraintFlags) {\n    if (horizontalMin) {\n      if (verticalMin) {\n        return \"se-resize\";\n      } else if (verticalMax) {\n        return \"ne-resize\";\n      } else {\n        return \"e-resize\";\n      }\n    } else if (horizontalMax) {\n      if (verticalMin) {\n        return \"sw-resize\";\n      } else if (verticalMax) {\n        return \"nw-resize\";\n      } else {\n        return \"w-resize\";\n      }\n    } else if (verticalMin) {\n      return \"s-resize\";\n    } else if (verticalMax) {\n      return \"n-resize\";\n    }\n  }\n  switch (state) {\n    case \"horizontal\":\n      return \"ew-resize\";\n    case \"intersection\":\n      return \"move\";\n    case \"vertical\":\n      return \"ns-resize\";\n  }\n}\nfunction resetGlobalCursorStyle() {\n  if (styleElement !== null) {\n    document.head.removeChild(styleElement);\n    currentCursorStyle = null;\n    styleElement = null;\n    prevRuleIndex = -1;\n  }\n}\nfunction setGlobalCursorStyle(state, constraintFlags, isPointerDown) {\n  var _styleElement$sheet$i, _styleElement$sheet2;\n  if (!enabled) {\n    return;\n  }\n  const style = getCursorStyle(state, constraintFlags, isPointerDown);\n  if (currentCursorStyle === style) {\n    return;\n  }\n  currentCursorStyle = style;\n  if (styleElement === null) {\n    styleElement = document.createElement(\"style\");\n    const nonce = getNonce();\n    if (nonce) {\n      styleElement.setAttribute(\"nonce\", nonce);\n    }\n    document.head.appendChild(styleElement);\n  }\n  if (prevRuleIndex >= 0) {\n    var _styleElement$sheet;\n    (_styleElement$sheet = styleElement.sheet) === null || _styleElement$sheet === void 0 ? void 0 : _styleElement$sheet.removeRule(prevRuleIndex);\n  }\n  prevRuleIndex = (_styleElement$sheet$i = (_styleElement$sheet2 = styleElement.sheet) === null || _styleElement$sheet2 === void 0 ? void 0 : _styleElement$sheet2.insertRule(`*{cursor: ${style} !important;}`)) !== null && _styleElement$sheet$i !== void 0 ? _styleElement$sheet$i : -1;\n}\n\nfunction isKeyDown(event) {\n  return event.type === \"keydown\";\n}\nfunction isPointerEvent(event) {\n  return event.type.startsWith(\"pointer\");\n}\nfunction isMouseEvent(event) {\n  return event.type.startsWith(\"mouse\");\n}\n\nfunction getResizeEventCoordinates(event) {\n  if (isPointerEvent(event)) {\n    if (event.isPrimary) {\n      return {\n        x: event.clientX,\n        y: event.clientY\n      };\n    }\n  } else if (isMouseEvent(event)) {\n    return {\n      x: event.clientX,\n      y: event.clientY\n    };\n  }\n  return {\n    x: Infinity,\n    y: Infinity\n  };\n}\n\nfunction getInputType() {\n  if (typeof matchMedia === \"function\") {\n    return matchMedia(\"(pointer:coarse)\").matches ? \"coarse\" : \"fine\";\n  }\n}\n\nfunction intersects(rectOne, rectTwo, strict) {\n  if (strict) {\n    return rectOne.x < rectTwo.x + rectTwo.width && rectOne.x + rectOne.width > rectTwo.x && rectOne.y < rectTwo.y + rectTwo.height && rectOne.y + rectOne.height > rectTwo.y;\n  } else {\n    return rectOne.x <= rectTwo.x + rectTwo.width && rectOne.x + rectOne.width >= rectTwo.x && rectOne.y <= rectTwo.y + rectTwo.height && rectOne.y + rectOne.height >= rectTwo.y;\n  }\n}\n\n// Forked from NPM stacking-order@2.0.0\n\n/**\n * Determine which of two nodes appears in front of the other —\n * if `a` is in front, returns 1, otherwise returns -1\n * @param {HTMLElement | SVGElement} a\n * @param {HTMLElement | SVGElement} b\n */\nfunction compare(a, b) {\n  if (a === b) throw new Error(\"Cannot compare node with itself\");\n  const ancestors = {\n    a: get_ancestors(a),\n    b: get_ancestors(b)\n  };\n  let common_ancestor;\n\n  // remove shared ancestors\n  while (ancestors.a.at(-1) === ancestors.b.at(-1)) {\n    a = ancestors.a.pop();\n    b = ancestors.b.pop();\n    common_ancestor = a;\n  }\n  assert(common_ancestor, \"Stacking order can only be calculated for elements with a common ancestor\");\n  const z_indexes = {\n    a: get_z_index(find_stacking_context(ancestors.a)),\n    b: get_z_index(find_stacking_context(ancestors.b))\n  };\n  if (z_indexes.a === z_indexes.b) {\n    const children = common_ancestor.childNodes;\n    const furthest_ancestors = {\n      a: ancestors.a.at(-1),\n      b: ancestors.b.at(-1)\n    };\n    let i = children.length;\n    while (i--) {\n      const child = children[i];\n      if (child === furthest_ancestors.a) return 1;\n      if (child === furthest_ancestors.b) return -1;\n    }\n  }\n  return Math.sign(z_indexes.a - z_indexes.b);\n}\nconst props = /\\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\\b/;\n\n/** @param {HTMLElement | SVGElement} node */\nfunction is_flex_item(node) {\n  var _get_parent;\n  // @ts-ignore\n  const display = getComputedStyle((_get_parent = get_parent(node)) !== null && _get_parent !== void 0 ? _get_parent : node).display;\n  return display === \"flex\" || display === \"inline-flex\";\n}\n\n/** @param {HTMLElement | SVGElement} node */\nfunction creates_stacking_context(node) {\n  const style = getComputedStyle(node);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n  if (style.position === \"fixed\") return true;\n  // Forked to fix upstream bug https://github.com/Rich-Harris/stacking-order/issues/3\n  // if (\n  //   (style.zIndex !== \"auto\" && style.position !== \"static\") ||\n  //   is_flex_item(node)\n  // )\n  if (style.zIndex !== \"auto\" && (style.position !== \"static\" || is_flex_item(node))) return true;\n  if (+style.opacity < 1) return true;\n  if (\"transform\" in style && style.transform !== \"none\") return true;\n  if (\"webkitTransform\" in style && style.webkitTransform !== \"none\") return true;\n  if (\"mixBlendMode\" in style && style.mixBlendMode !== \"normal\") return true;\n  if (\"filter\" in style && style.filter !== \"none\") return true;\n  if (\"webkitFilter\" in style && style.webkitFilter !== \"none\") return true;\n  if (\"isolation\" in style && style.isolation === \"isolate\") return true;\n  if (props.test(style.willChange)) return true;\n  // @ts-expect-error\n  if (style.webkitOverflowScrolling === \"touch\") return true;\n  return false;\n}\n\n/** @param {(HTMLElement| SVGElement)[]} nodes */\nfunction find_stacking_context(nodes) {\n  let i = nodes.length;\n  while (i--) {\n    const node = nodes[i];\n    assert(node, \"Missing node\");\n    if (creates_stacking_context(node)) return node;\n  }\n  return null;\n}\n\n/** @param {HTMLElement | SVGElement} node */\nfunction get_z_index(node) {\n  return node && Number(getComputedStyle(node).zIndex) || 0;\n}\n\n/** @param {HTMLElement} node */\nfunction get_ancestors(node) {\n  const ancestors = [];\n  while (node) {\n    ancestors.push(node);\n    // @ts-ignore\n    node = get_parent(node);\n  }\n  return ancestors; // [ node, ... <body>, <html>, document ]\n}\n\n/** @param {HTMLElement} node */\nfunction get_parent(node) {\n  const {\n    parentNode\n  } = node;\n  if (parentNode && parentNode instanceof ShadowRoot) {\n    return parentNode.host;\n  }\n  return parentNode;\n}\n\nconst EXCEEDED_HORIZONTAL_MIN = 0b0001;\nconst EXCEEDED_HORIZONTAL_MAX = 0b0010;\nconst EXCEEDED_VERTICAL_MIN = 0b0100;\nconst EXCEEDED_VERTICAL_MAX = 0b1000;\nconst isCoarsePointer = getInputType() === \"coarse\";\nlet intersectingHandles = [];\nlet isPointerDown = false;\nlet ownerDocumentCounts = new Map();\nlet panelConstraintFlags = new Map();\nconst registeredResizeHandlers = new Set();\nfunction registerResizeHandle(resizeHandleId, element, direction, hitAreaMargins, setResizeHandlerState) {\n  var _ownerDocumentCounts$;\n  const {\n    ownerDocument\n  } = element;\n  const data = {\n    direction,\n    element,\n    hitAreaMargins,\n    setResizeHandlerState\n  };\n  const count = (_ownerDocumentCounts$ = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$ !== void 0 ? _ownerDocumentCounts$ : 0;\n  ownerDocumentCounts.set(ownerDocument, count + 1);\n  registeredResizeHandlers.add(data);\n  updateListeners();\n  return function unregisterResizeHandle() {\n    var _ownerDocumentCounts$2;\n    panelConstraintFlags.delete(resizeHandleId);\n    registeredResizeHandlers.delete(data);\n    const count = (_ownerDocumentCounts$2 = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$2 !== void 0 ? _ownerDocumentCounts$2 : 1;\n    ownerDocumentCounts.set(ownerDocument, count - 1);\n    updateListeners();\n    if (count === 1) {\n      ownerDocumentCounts.delete(ownerDocument);\n    }\n\n    // If the resize handle that is currently unmounting is intersecting with the pointer,\n    // update the global pointer to account for the change\n    if (intersectingHandles.includes(data)) {\n      const index = intersectingHandles.indexOf(data);\n      if (index >= 0) {\n        intersectingHandles.splice(index, 1);\n      }\n      updateCursor();\n\n      // Also instruct the handle to stop dragging; this prevents the parent group from being left in an inconsistent state\n      // See github.com/bvaughn/react-resizable-panels/issues/402\n      setResizeHandlerState(\"up\", true, null);\n    }\n  };\n}\nfunction handlePointerDown(event) {\n  const {\n    target\n  } = event;\n  const {\n    x,\n    y\n  } = getResizeEventCoordinates(event);\n  isPointerDown = true;\n  recalculateIntersectingHandles({\n    target,\n    x,\n    y\n  });\n  updateListeners();\n  if (intersectingHandles.length > 0) {\n    updateResizeHandlerStates(\"down\", event);\n\n    // Update cursor based on return value(s) from active handles\n    updateCursor();\n    event.preventDefault();\n    if (!isWithinResizeHandle(target)) {\n      event.stopImmediatePropagation();\n    }\n  }\n}\nfunction handlePointerMove(event) {\n  const {\n    x,\n    y\n  } = getResizeEventCoordinates(event);\n\n  // Edge case (see #340)\n  // Detect when the pointer has been released outside an iframe on a different domain\n  if (isPointerDown &&\n  // Skip this check for \"pointerleave\" events, else Firefox triggers a false positive (see #514)\n  event.type !== \"pointerleave\" && event.buttons === 0) {\n    isPointerDown = false;\n    updateResizeHandlerStates(\"up\", event);\n  }\n  if (!isPointerDown) {\n    const {\n      target\n    } = event;\n\n    // Recalculate intersecting handles whenever the pointer moves, except if it has already been pressed\n    // at that point, the handles may not move with the pointer (depending on constraints)\n    // but the same set of active handles should be locked until the pointer is released\n    recalculateIntersectingHandles({\n      target,\n      x,\n      y\n    });\n  }\n  updateResizeHandlerStates(\"move\", event);\n\n  // Update cursor based on return value(s) from active handles\n  updateCursor();\n  if (intersectingHandles.length > 0) {\n    event.preventDefault();\n  }\n}\nfunction handlePointerUp(event) {\n  const {\n    target\n  } = event;\n  const {\n    x,\n    y\n  } = getResizeEventCoordinates(event);\n  panelConstraintFlags.clear();\n  isPointerDown = false;\n  if (intersectingHandles.length > 0) {\n    event.preventDefault();\n    if (!isWithinResizeHandle(target)) {\n      event.stopImmediatePropagation();\n    }\n  }\n  updateResizeHandlerStates(\"up\", event);\n  recalculateIntersectingHandles({\n    target,\n    x,\n    y\n  });\n  updateCursor();\n  updateListeners();\n}\nfunction isWithinResizeHandle(element) {\n  let currentElement = element;\n  while (currentElement) {\n    if (currentElement.hasAttribute(DATA_ATTRIBUTES.resizeHandle)) {\n      return true;\n    }\n    currentElement = currentElement.parentElement;\n  }\n  return false;\n}\nfunction recalculateIntersectingHandles({\n  target,\n  x,\n  y\n}) {\n  intersectingHandles.splice(0);\n  let targetElement = null;\n  if (target instanceof HTMLElement || target instanceof SVGElement) {\n    targetElement = target;\n  }\n  registeredResizeHandlers.forEach(data => {\n    const {\n      element: dragHandleElement,\n      hitAreaMargins\n    } = data;\n    const dragHandleRect = dragHandleElement.getBoundingClientRect();\n    const {\n      bottom,\n      left,\n      right,\n      top\n    } = dragHandleRect;\n    const margin = isCoarsePointer ? hitAreaMargins.coarse : hitAreaMargins.fine;\n    const eventIntersects = x >= left - margin && x <= right + margin && y >= top - margin && y <= bottom + margin;\n    if (eventIntersects) {\n      // TRICKY\n      // We listen for pointers events at the root in order to support hit area margins\n      // (determining when the pointer is close enough to an element to be considered a \"hit\")\n      // Clicking on an element \"above\" a handle (e.g. a modal) should prevent a hit though\n      // so at this point we need to compare stacking order of a potentially intersecting drag handle,\n      // and the element that was actually clicked/touched\n      if (targetElement !== null && document.contains(targetElement) && dragHandleElement !== targetElement && !dragHandleElement.contains(targetElement) && !targetElement.contains(dragHandleElement) &&\n      // Calculating stacking order has a cost, so we should avoid it if possible\n      // That is why we only check potentially intersecting handles,\n      // and why we skip if the event target is within the handle's DOM\n      compare(targetElement, dragHandleElement) > 0) {\n        // If the target is above the drag handle, then we also need to confirm they overlap\n        // If they are beside each other (e.g. a panel and its drag handle) then the handle is still interactive\n        //\n        // It's not enough to compare only the target\n        // The target might be a small element inside of a larger container\n        // (For example, a SPAN or a DIV inside of a larger modal dialog)\n        let currentElement = targetElement;\n        let didIntersect = false;\n        while (currentElement) {\n          if (currentElement.contains(dragHandleElement)) {\n            break;\n          } else if (intersects(currentElement.getBoundingClientRect(), dragHandleRect, true)) {\n            didIntersect = true;\n            break;\n          }\n          currentElement = currentElement.parentElement;\n        }\n        if (didIntersect) {\n          return;\n        }\n      }\n      intersectingHandles.push(data);\n    }\n  });\n}\nfunction reportConstraintsViolation(resizeHandleId, flag) {\n  panelConstraintFlags.set(resizeHandleId, flag);\n}\nfunction updateCursor() {\n  let intersectsHorizontal = false;\n  let intersectsVertical = false;\n  intersectingHandles.forEach(data => {\n    const {\n      direction\n    } = data;\n    if (direction === \"horizontal\") {\n      intersectsHorizontal = true;\n    } else {\n      intersectsVertical = true;\n    }\n  });\n  let constraintFlags = 0;\n  panelConstraintFlags.forEach(flag => {\n    constraintFlags |= flag;\n  });\n  if (intersectsHorizontal && intersectsVertical) {\n    setGlobalCursorStyle(\"intersection\", constraintFlags, isPointerDown);\n  } else if (intersectsHorizontal) {\n    setGlobalCursorStyle(\"horizontal\", constraintFlags, isPointerDown);\n  } else if (intersectsVertical) {\n    setGlobalCursorStyle(\"vertical\", constraintFlags, isPointerDown);\n  } else {\n    resetGlobalCursorStyle();\n  }\n}\nlet listenersAbortController;\nfunction updateListeners() {\n  var _listenersAbortContro;\n  (_listenersAbortContro = listenersAbortController) === null || _listenersAbortContro === void 0 ? void 0 : _listenersAbortContro.abort();\n  listenersAbortController = new AbortController();\n  const options = {\n    capture: true,\n    signal: listenersAbortController.signal\n  };\n  if (!registeredResizeHandlers.size) {\n    return;\n  }\n  if (isPointerDown) {\n    if (intersectingHandles.length > 0) {\n      ownerDocumentCounts.forEach((count, ownerDocument) => {\n        const {\n          body\n        } = ownerDocument;\n        if (count > 0) {\n          body.addEventListener(\"contextmenu\", handlePointerUp, options);\n          body.addEventListener(\"pointerleave\", handlePointerMove, options);\n          body.addEventListener(\"pointermove\", handlePointerMove, options);\n        }\n      });\n    }\n    ownerDocumentCounts.forEach((_, ownerDocument) => {\n      const {\n        body\n      } = ownerDocument;\n      body.addEventListener(\"pointerup\", handlePointerUp, options);\n      body.addEventListener(\"pointercancel\", handlePointerUp, options);\n    });\n  } else {\n    ownerDocumentCounts.forEach((count, ownerDocument) => {\n      const {\n        body\n      } = ownerDocument;\n      if (count > 0) {\n        body.addEventListener(\"pointerdown\", handlePointerDown, options);\n        body.addEventListener(\"pointermove\", handlePointerMove, options);\n      }\n    });\n  }\n}\nfunction updateResizeHandlerStates(action, event) {\n  registeredResizeHandlers.forEach(data => {\n    const {\n      setResizeHandlerState\n    } = data;\n    const isActive = intersectingHandles.includes(data);\n    setResizeHandlerState(action, isActive, event);\n  });\n}\n\nfunction useForceUpdate() {\n  const [_, setCount] = useState(0);\n  return useCallback(() => setCount(prevCount => prevCount + 1), []);\n}\n\nfunction assert(expectedCondition, message) {\n  if (!expectedCondition) {\n    console.error(message);\n    throw Error(message);\n  }\n}\n\nfunction fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {\n  if (actual.toFixed(fractionDigits) === expected.toFixed(fractionDigits)) {\n    return 0;\n  } else {\n    return actual > expected ? 1 : -1;\n  }\n}\nfunction fuzzyNumbersEqual$1(actual, expected, fractionDigits = PRECISION) {\n  return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyNumbersEqual(actual, expected, fractionDigits) {\n  return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nfunction fuzzyLayoutsEqual(actual, expected, fractionDigits) {\n  if (actual.length !== expected.length) {\n    return false;\n  }\n  for (let index = 0; index < actual.length; index++) {\n    const actualSize = actual[index];\n    const expectedSize = expected[index];\n    if (!fuzzyNumbersEqual(actualSize, expectedSize, fractionDigits)) {\n      return false;\n    }\n  }\n  return true;\n}\n\n// Panel size must be in percentages; pixel values should be pre-converted\nfunction resizePanel({\n  panelConstraints: panelConstraintsArray,\n  panelIndex,\n  size\n}) {\n  const panelConstraints = panelConstraintsArray[panelIndex];\n  assert(panelConstraints != null, `Panel constraints not found for index ${panelIndex}`);\n  let {\n    collapsedSize = 0,\n    collapsible,\n    maxSize = 100,\n    minSize = 0\n  } = panelConstraints;\n  if (fuzzyCompareNumbers(size, minSize) < 0) {\n    if (collapsible) {\n      // Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.\n      const halfwayPoint = (collapsedSize + minSize) / 2;\n      if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {\n        size = collapsedSize;\n      } else {\n        size = minSize;\n      }\n    } else {\n      size = minSize;\n    }\n  }\n  size = Math.min(maxSize, size);\n  size = parseFloat(size.toFixed(PRECISION));\n  return size;\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction adjustLayoutByDelta({\n  delta,\n  initialLayout,\n  panelConstraints: panelConstraintsArray,\n  pivotIndices,\n  prevLayout,\n  trigger\n}) {\n  if (fuzzyNumbersEqual(delta, 0)) {\n    return initialLayout;\n  }\n  const nextLayout = [...initialLayout];\n  const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n  assert(firstPivotIndex != null, \"Invalid first pivot index\");\n  assert(secondPivotIndex != null, \"Invalid second pivot index\");\n  let deltaApplied = 0;\n\n  // const DEBUG = [];\n  // DEBUG.push(`adjustLayoutByDelta()`);\n  // DEBUG.push(`  initialLayout: ${initialLayout.join(\", \")}`);\n  // DEBUG.push(`  prevLayout: ${prevLayout.join(\", \")}`);\n  // DEBUG.push(`  delta: ${delta}`);\n  // DEBUG.push(`  pivotIndices: ${pivotIndices.join(\", \")}`);\n  // DEBUG.push(`  trigger: ${trigger}`);\n  // DEBUG.push(\"\");\n\n  // A resizing panel affects the panels before or after it.\n  //\n  // A negative delta means the panel(s) immediately after the resize handle should grow/expand by decreasing its offset.\n  // Other panels may also need to shrink/contract (and shift) to make room, depending on the min weights.\n  //\n  // A positive delta means the panel(s) immediately before the resize handle should \"expand\".\n  // This is accomplished by shrinking/contracting (and shifting) one or more of the panels after the resize handle.\n\n  {\n    // If this is a resize triggered by a keyboard event, our logic for expanding/collapsing is different.\n    // We no longer check the halfway threshold because this may prevent the panel from expanding at all.\n    if (trigger === \"keyboard\") {\n      {\n        // Check if we should expand a collapsed panel\n        const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n        const panelConstraints = panelConstraintsArray[index];\n        assert(panelConstraints, `Panel constraints not found for index ${index}`);\n        const {\n          collapsedSize = 0,\n          collapsible,\n          minSize = 0\n        } = panelConstraints;\n\n        // DEBUG.push(`edge case check 1: ${index}`);\n        // DEBUG.push(`  -> collapsible? ${collapsible}`);\n        if (collapsible) {\n          const prevSize = initialLayout[index];\n          assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n          if (fuzzyNumbersEqual(prevSize, collapsedSize)) {\n            const localDelta = minSize - prevSize;\n            // DEBUG.push(`  -> expand delta: ${localDelta}`);\n\n            if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n              delta = delta < 0 ? 0 - localDelta : localDelta;\n              // DEBUG.push(`  -> delta: ${delta}`);\n            }\n          }\n        }\n      }\n\n      {\n        // Check if we should collapse a panel at its minimum size\n        const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n        const panelConstraints = panelConstraintsArray[index];\n        assert(panelConstraints, `No panel constraints found for index ${index}`);\n        const {\n          collapsedSize = 0,\n          collapsible,\n          minSize = 0\n        } = panelConstraints;\n\n        // DEBUG.push(`edge case check 2: ${index}`);\n        // DEBUG.push(`  -> collapsible? ${collapsible}`);\n        if (collapsible) {\n          const prevSize = initialLayout[index];\n          assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n          if (fuzzyNumbersEqual(prevSize, minSize)) {\n            const localDelta = prevSize - collapsedSize;\n            // DEBUG.push(`  -> expand delta: ${localDelta}`);\n\n            if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n              delta = delta < 0 ? 0 - localDelta : localDelta;\n              // DEBUG.push(`  -> delta: ${delta}`);\n            }\n          }\n        }\n      }\n    }\n    // DEBUG.push(\"\");\n  }\n\n  {\n    // Pre-calculate max available delta in the opposite direction of our pivot.\n    // This will be the maximum amount we're allowed to expand/contract the panels in the primary direction.\n    // If this amount is less than the requested delta, adjust the requested delta.\n    // If this amount is greater than the requested delta, that's useful information too–\n    // as an expanding panel might change from collapsed to min size.\n\n    const increment = delta < 0 ? 1 : -1;\n    let index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n    let maxAvailableDelta = 0;\n\n    // DEBUG.push(\"pre calc...\");\n    while (true) {\n      const prevSize = initialLayout[index];\n      assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n      const maxSafeSize = resizePanel({\n        panelConstraints: panelConstraintsArray,\n        panelIndex: index,\n        size: 100\n      });\n      const delta = maxSafeSize - prevSize;\n      // DEBUG.push(`  ${index}: ${prevSize} -> ${maxSafeSize}`);\n\n      maxAvailableDelta += delta;\n      index += increment;\n      if (index < 0 || index >= panelConstraintsArray.length) {\n        break;\n      }\n    }\n\n    // DEBUG.push(`  -> max available delta: ${maxAvailableDelta}`);\n    const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));\n    delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;\n    // DEBUG.push(`  -> adjusted delta: ${delta}`);\n    // DEBUG.push(\"\");\n  }\n\n  {\n    // Delta added to a panel needs to be subtracted from other panels (within the constraints that those panels allow).\n\n    const pivotIndex = delta < 0 ? firstPivotIndex : secondPivotIndex;\n    let index = pivotIndex;\n    while (index >= 0 && index < panelConstraintsArray.length) {\n      const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n      const prevSize = initialLayout[index];\n      assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n      const unsafeSize = prevSize - deltaRemaining;\n      const safeSize = resizePanel({\n        panelConstraints: panelConstraintsArray,\n        panelIndex: index,\n        size: unsafeSize\n      });\n      if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n        deltaApplied += prevSize - safeSize;\n        nextLayout[index] = safeSize;\n        if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {\n          numeric: true\n        }) >= 0) {\n          break;\n        }\n      }\n      if (delta < 0) {\n        index--;\n      } else {\n        index++;\n      }\n    }\n  }\n  // DEBUG.push(`after 1: ${nextLayout.join(\", \")}`);\n  // DEBUG.push(`  deltaApplied: ${deltaApplied}`);\n  // DEBUG.push(\"\");\n\n  // If we were unable to resize any of the panels panels, return the previous state.\n  // This will essentially bailout and ignore e.g. drags past a panel's boundaries\n  if (fuzzyLayoutsEqual(prevLayout, nextLayout)) {\n    // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n    // console.log(DEBUG.join(\"\\n\"));\n\n    return prevLayout;\n  }\n  {\n    // Now distribute the applied delta to the panels in the other direction\n    const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n    const prevSize = initialLayout[pivotIndex];\n    assert(prevSize != null, `Previous layout not found for panel index ${pivotIndex}`);\n    const unsafeSize = prevSize + deltaApplied;\n    const safeSize = resizePanel({\n      panelConstraints: panelConstraintsArray,\n      panelIndex: pivotIndex,\n      size: unsafeSize\n    });\n\n    // Adjust the pivot panel before, but only by the amount that surrounding panels were able to shrink/contract.\n    nextLayout[pivotIndex] = safeSize;\n\n    // Edge case where expanding or contracting one panel caused another one to change collapsed state\n    if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {\n      let deltaRemaining = unsafeSize - safeSize;\n      const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n      let index = pivotIndex;\n      while (index >= 0 && index < panelConstraintsArray.length) {\n        const prevSize = nextLayout[index];\n        assert(prevSize != null, `Previous layout not found for panel index ${index}`);\n        const unsafeSize = prevSize + deltaRemaining;\n        const safeSize = resizePanel({\n          panelConstraints: panelConstraintsArray,\n          panelIndex: index,\n          size: unsafeSize\n        });\n        if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n          deltaRemaining -= safeSize - prevSize;\n          nextLayout[index] = safeSize;\n        }\n        if (fuzzyNumbersEqual(deltaRemaining, 0)) {\n          break;\n        }\n        if (delta > 0) {\n          index--;\n        } else {\n          index++;\n        }\n      }\n    }\n  }\n  // DEBUG.push(`after 2: ${nextLayout.join(\", \")}`);\n  // DEBUG.push(`  deltaApplied: ${deltaApplied}`);\n  // DEBUG.push(\"\");\n\n  const totalSize = nextLayout.reduce((total, size) => size + total, 0);\n  // DEBUG.push(`total size: ${totalSize}`);\n\n  // If our new layout doesn't add up to 100%, that means the requested delta can't be applied\n  // In that case, fall back to our most recent valid layout\n  if (!fuzzyNumbersEqual(totalSize, 100)) {\n    // DEBUG.push(`bailout to previous layout: ${prevLayout.join(\", \")}`);\n    // console.log(DEBUG.join(\"\\n\"));\n\n    return prevLayout;\n  }\n\n  // console.log(DEBUG.join(\"\\n\"));\n  return nextLayout;\n}\n\nfunction calculateAriaValues({\n  layout,\n  panelsArray,\n  pivotIndices\n}) {\n  let currentMinSize = 0;\n  let currentMaxSize = 100;\n  let totalMinSize = 0;\n  let totalMaxSize = 0;\n  const firstIndex = pivotIndices[0];\n  assert(firstIndex != null, \"No pivot index found\");\n\n  // A panel's effective min/max sizes also need to account for other panel's sizes.\n  panelsArray.forEach((panelData, index) => {\n    const {\n      constraints\n    } = panelData;\n    const {\n      maxSize = 100,\n      minSize = 0\n    } = constraints;\n    if (index === firstIndex) {\n      currentMinSize = minSize;\n      currentMaxSize = maxSize;\n    } else {\n      totalMinSize += minSize;\n      totalMaxSize += maxSize;\n    }\n  });\n  const valueMax = Math.min(currentMaxSize, 100 - totalMinSize);\n  const valueMin = Math.max(currentMinSize, 100 - totalMaxSize);\n  const valueNow = layout[firstIndex];\n  return {\n    valueMax,\n    valueMin,\n    valueNow\n  };\n}\n\nfunction getResizeHandleElementsForGroup(groupId, scope = document) {\n  return Array.from(scope.querySelectorAll(`[${DATA_ATTRIBUTES.resizeHandleId}][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getResizeHandleElementIndex(groupId, id, scope = document) {\n  const handles = getResizeHandleElementsForGroup(groupId, scope);\n  const index = handles.findIndex(handle => handle.getAttribute(DATA_ATTRIBUTES.resizeHandleId) === id);\n  return index !== null && index !== void 0 ? index : null;\n}\n\nfunction determinePivotIndices(groupId, dragHandleId, panelGroupElement) {\n  const index = getResizeHandleElementIndex(groupId, dragHandleId, panelGroupElement);\n  return index != null ? [index, index + 1] : [-1, -1];\n}\n\nfunction isHTMLElement(target) {\n  if (target instanceof HTMLElement) {\n    return true;\n  }\n\n  // Fallback to duck typing to handle edge case of portals within a popup window\n  return typeof target === \"object\" && target !== null && \"tagName\" in target && \"getAttribute\" in target;\n}\n\nfunction getPanelGroupElement(id, rootElement = document) {\n  // If the root element is the PanelGroup\n  if (isHTMLElement(rootElement) && rootElement.dataset.panelGroupId == id) {\n    return rootElement;\n  }\n\n  // Else query children\n  const element = rootElement.querySelector(`[data-panel-group][data-panel-group-id=\"${id}\"]`);\n  if (element) {\n    return element;\n  }\n  return null;\n}\n\nfunction getResizeHandleElement(id, scope = document) {\n  const element = scope.querySelector(`[${DATA_ATTRIBUTES.resizeHandleId}=\"${id}\"]`);\n  if (element) {\n    return element;\n  }\n  return null;\n}\n\nfunction getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {\n  var _panelsArray$index$id, _panelsArray$index, _panelsArray$id, _panelsArray;\n  const handle = getResizeHandleElement(handleId, scope);\n  const handles = getResizeHandleElementsForGroup(groupId, scope);\n  const index = handle ? handles.indexOf(handle) : -1;\n  const idBefore = (_panelsArray$index$id = (_panelsArray$index = panelsArray[index]) === null || _panelsArray$index === void 0 ? void 0 : _panelsArray$index.id) !== null && _panelsArray$index$id !== void 0 ? _panelsArray$index$id : null;\n  const idAfter = (_panelsArray$id = (_panelsArray = panelsArray[index + 1]) === null || _panelsArray === void 0 ? void 0 : _panelsArray.id) !== null && _panelsArray$id !== void 0 ? _panelsArray$id : null;\n  return [idBefore, idAfter];\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterPanelGroupBehavior({\n  committedValuesRef,\n  eagerValuesRef,\n  groupId,\n  layout,\n  panelDataArray,\n  panelGroupElement,\n  setLayout\n}) {\n  useRef({\n    didWarnAboutMissingResizeHandle: false\n  });\n  useIsomorphicLayoutEffect(() => {\n    if (!panelGroupElement) {\n      return;\n    }\n    const resizeHandleElements = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n    for (let index = 0; index < panelDataArray.length - 1; index++) {\n      const {\n        valueMax,\n        valueMin,\n        valueNow\n      } = calculateAriaValues({\n        layout,\n        panelsArray: panelDataArray,\n        pivotIndices: [index, index + 1]\n      });\n      const resizeHandleElement = resizeHandleElements[index];\n      if (resizeHandleElement == null) ; else {\n        const panelData = panelDataArray[index];\n        assert(panelData, `No panel data found for index \"${index}\"`);\n        resizeHandleElement.setAttribute(\"aria-controls\", panelData.id);\n        resizeHandleElement.setAttribute(\"aria-valuemax\", \"\" + Math.round(valueMax));\n        resizeHandleElement.setAttribute(\"aria-valuemin\", \"\" + Math.round(valueMin));\n        resizeHandleElement.setAttribute(\"aria-valuenow\", valueNow != null ? \"\" + Math.round(valueNow) : \"\");\n      }\n    }\n    return () => {\n      resizeHandleElements.forEach((resizeHandleElement, index) => {\n        resizeHandleElement.removeAttribute(\"aria-controls\");\n        resizeHandleElement.removeAttribute(\"aria-valuemax\");\n        resizeHandleElement.removeAttribute(\"aria-valuemin\");\n        resizeHandleElement.removeAttribute(\"aria-valuenow\");\n      });\n    };\n  }, [groupId, layout, panelDataArray, panelGroupElement]);\n  useEffect(() => {\n    if (!panelGroupElement) {\n      return;\n    }\n    const eagerValues = eagerValuesRef.current;\n    assert(eagerValues, `Eager values not found`);\n    const {\n      panelDataArray\n    } = eagerValues;\n    const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n    assert(groupElement != null, `No group found for id \"${groupId}\"`);\n    const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n    assert(handles, `No resize handles found for group id \"${groupId}\"`);\n    const cleanupFunctions = handles.map(handle => {\n      const handleId = handle.getAttribute(DATA_ATTRIBUTES.resizeHandleId);\n      assert(handleId, `Resize handle element has no handle id attribute`);\n      const [idBefore, idAfter] = getResizeHandlePanelIds(groupId, handleId, panelDataArray, panelGroupElement);\n      if (idBefore == null || idAfter == null) {\n        return () => {};\n      }\n      const onKeyDown = event => {\n        if (event.defaultPrevented) {\n          return;\n        }\n        switch (event.key) {\n          case \"Enter\":\n            {\n              event.preventDefault();\n              const index = panelDataArray.findIndex(panelData => panelData.id === idBefore);\n              if (index >= 0) {\n                const panelData = panelDataArray[index];\n                assert(panelData, `No panel data found for index ${index}`);\n                const size = layout[index];\n                const {\n                  collapsedSize = 0,\n                  collapsible,\n                  minSize = 0\n                } = panelData.constraints;\n                if (size != null && collapsible) {\n                  const nextLayout = adjustLayoutByDelta({\n                    delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,\n                    initialLayout: layout,\n                    panelConstraints: panelDataArray.map(panelData => panelData.constraints),\n                    pivotIndices: determinePivotIndices(groupId, handleId, panelGroupElement),\n                    prevLayout: layout,\n                    trigger: \"keyboard\"\n                  });\n                  if (layout !== nextLayout) {\n                    setLayout(nextLayout);\n                  }\n                }\n              }\n              break;\n            }\n        }\n      };\n      handle.addEventListener(\"keydown\", onKeyDown);\n      return () => {\n        handle.removeEventListener(\"keydown\", onKeyDown);\n      };\n    });\n    return () => {\n      cleanupFunctions.forEach(cleanupFunction => cleanupFunction());\n    };\n  }, [panelGroupElement, committedValuesRef, eagerValuesRef, groupId, layout, panelDataArray, setLayout]);\n}\n\nfunction areEqual(arrayA, arrayB) {\n  if (arrayA.length !== arrayB.length) {\n    return false;\n  }\n  for (let index = 0; index < arrayA.length; index++) {\n    if (arrayA[index] !== arrayB[index]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getResizeEventCursorPosition(direction, event) {\n  const isHorizontal = direction === \"horizontal\";\n  const {\n    x,\n    y\n  } = getResizeEventCoordinates(event);\n  return isHorizontal ? x : y;\n}\n\nfunction calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {\n  const isHorizontal = direction === \"horizontal\";\n  const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n  assert(handleElement, `No resize handle element found for id \"${dragHandleId}\"`);\n  const groupId = handleElement.getAttribute(DATA_ATTRIBUTES.groupId);\n  assert(groupId, `Resize handle element has no group id attribute`);\n  let {\n    initialCursorPosition\n  } = initialDragState;\n  const cursorPosition = getResizeEventCursorPosition(direction, event);\n  const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n  assert(groupElement, `No group element found for id \"${groupId}\"`);\n  const groupRect = groupElement.getBoundingClientRect();\n  const groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height;\n  const offsetPixels = cursorPosition - initialCursorPosition;\n  const offsetPercentage = offsetPixels / groupSizeInPixels * 100;\n  return offsetPercentage;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\nfunction calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) {\n  if (isKeyDown(event)) {\n    const isHorizontal = direction === \"horizontal\";\n    let delta = 0;\n    if (event.shiftKey) {\n      delta = 100;\n    } else if (keyboardResizeBy != null) {\n      delta = keyboardResizeBy;\n    } else {\n      delta = 10;\n    }\n    let movement = 0;\n    switch (event.key) {\n      case \"ArrowDown\":\n        movement = isHorizontal ? 0 : delta;\n        break;\n      case \"ArrowLeft\":\n        movement = isHorizontal ? -delta : 0;\n        break;\n      case \"ArrowRight\":\n        movement = isHorizontal ? delta : 0;\n        break;\n      case \"ArrowUp\":\n        movement = isHorizontal ? 0 : -delta;\n        break;\n      case \"End\":\n        movement = 100;\n        break;\n      case \"Home\":\n        movement = -100;\n        break;\n    }\n    return movement;\n  } else {\n    if (initialDragState == null) {\n      return 0;\n    }\n    return calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement);\n  }\n}\n\nfunction calculateUnsafeDefaultLayout({\n  panelDataArray\n}) {\n  const layout = Array(panelDataArray.length);\n  const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n  let numPanelsWithSizes = 0;\n  let remainingSize = 100;\n\n  // Distribute default sizes first\n  for (let index = 0; index < panelDataArray.length; index++) {\n    const panelConstraints = panelConstraintsArray[index];\n    assert(panelConstraints, `Panel constraints not found for index ${index}`);\n    const {\n      defaultSize\n    } = panelConstraints;\n    if (defaultSize != null) {\n      numPanelsWithSizes++;\n      layout[index] = defaultSize;\n      remainingSize -= defaultSize;\n    }\n  }\n\n  // Remaining size should be distributed evenly between panels without default sizes\n  for (let index = 0; index < panelDataArray.length; index++) {\n    const panelConstraints = panelConstraintsArray[index];\n    assert(panelConstraints, `Panel constraints not found for index ${index}`);\n    const {\n      defaultSize\n    } = panelConstraints;\n    if (defaultSize != null) {\n      continue;\n    }\n    const numRemainingPanels = panelDataArray.length - numPanelsWithSizes;\n    const size = remainingSize / numRemainingPanels;\n    numPanelsWithSizes++;\n    layout[index] = size;\n    remainingSize -= size;\n  }\n  return layout;\n}\n\n// Layout should be pre-converted into percentages\nfunction callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {\n  layout.forEach((size, index) => {\n    const panelData = panelsArray[index];\n    assert(panelData, `Panel data not found for index ${index}`);\n    const {\n      callbacks,\n      constraints,\n      id: panelId\n    } = panelData;\n    const {\n      collapsedSize = 0,\n      collapsible\n    } = constraints;\n    const lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];\n    if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n      panelIdToLastNotifiedSizeMap[panelId] = size;\n      const {\n        onCollapse,\n        onExpand,\n        onResize\n      } = callbacks;\n      if (onResize) {\n        onResize(size, lastNotifiedSize);\n      }\n      if (collapsible && (onCollapse || onExpand)) {\n        if (onExpand && (lastNotifiedSize == null || fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && !fuzzyNumbersEqual$1(size, collapsedSize)) {\n          onExpand();\n        }\n        if (onCollapse && (lastNotifiedSize == null || !fuzzyNumbersEqual$1(lastNotifiedSize, collapsedSize)) && fuzzyNumbersEqual$1(size, collapsedSize)) {\n          onCollapse();\n        }\n      }\n    }\n  });\n}\n\nfunction compareLayouts(a, b) {\n  if (a.length !== b.length) {\n    return false;\n  } else {\n    for (let index = 0; index < a.length; index++) {\n      if (a[index] != b[index]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n// This method returns a number between 1 and 100 representing\n\n// the % of the group's overall space this panel should occupy.\nfunction computePanelFlexBoxStyle({\n  defaultSize,\n  dragState,\n  layout,\n  panelData,\n  panelIndex,\n  precision = 3\n}) {\n  const size = layout[panelIndex];\n  let flexGrow;\n  if (size == null) {\n    // Initial render (before panels have registered themselves)\n    // In order to support server rendering, fall back to default size if provided\n    flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : \"1\";\n  } else if (panelData.length === 1) {\n    // Special case: Single panel group should always fill full width/height\n    flexGrow = \"1\";\n  } else {\n    flexGrow = size.toFixed(precision);\n  }\n  return {\n    flexBasis: 0,\n    flexGrow,\n    flexShrink: 1,\n    // Without this, Panel sizes may be unintentionally overridden by their content\n    overflow: \"hidden\",\n    // Disable pointer events inside of a panel during resize\n    // This avoid edge cases like nested iframes\n    pointerEvents: dragState !== null ? \"none\" : undefined\n  };\n}\n\nfunction debounce(callback, durationMs = 10) {\n  let timeoutId = null;\n  let callable = (...args) => {\n    if (timeoutId !== null) {\n      clearTimeout(timeoutId);\n    }\n    timeoutId = setTimeout(() => {\n      callback(...args);\n    }, durationMs);\n  };\n  return callable;\n}\n\n// PanelGroup might be rendering in a server-side environment where localStorage is not available\n// or on a browser with cookies/storage disabled.\n// In either case, this function avoids accessing localStorage until needed,\n// and avoids throwing user-visible errors.\nfunction initializeDefaultStorage(storageObject) {\n  try {\n    if (typeof localStorage !== \"undefined\") {\n      // Bypass this check for future calls\n      storageObject.getItem = name => {\n        return localStorage.getItem(name);\n      };\n      storageObject.setItem = (name, value) => {\n        localStorage.setItem(name, value);\n      };\n    } else {\n      throw new Error(\"localStorage not supported in this environment\");\n    }\n  } catch (error) {\n    console.error(error);\n    storageObject.getItem = () => null;\n    storageObject.setItem = () => {};\n  }\n}\n\nfunction getPanelGroupKey(autoSaveId) {\n  return `react-resizable-panels:${autoSaveId}`;\n}\n\n// Note that Panel ids might be user-provided (stable) or useId generated (non-deterministic)\n// so they should not be used as part of the serialization key.\n// Using the min/max size attributes should work well enough as a backup.\n// Pre-sorting by minSize allows remembering layouts even if panels are re-ordered/dragged.\nfunction getPanelKey(panels) {\n  return panels.map(panel => {\n    const {\n      constraints,\n      id,\n      idIsFromProps,\n      order\n    } = panel;\n    if (idIsFromProps) {\n      return id;\n    } else {\n      return order ? `${order}:${JSON.stringify(constraints)}` : JSON.stringify(constraints);\n    }\n  }).sort((a, b) => a.localeCompare(b)).join(\",\");\n}\nfunction loadSerializedPanelGroupState(autoSaveId, storage) {\n  try {\n    const panelGroupKey = getPanelGroupKey(autoSaveId);\n    const serialized = storage.getItem(panelGroupKey);\n    if (serialized) {\n      const parsed = JSON.parse(serialized);\n      if (typeof parsed === \"object\" && parsed != null) {\n        return parsed;\n      }\n    }\n  } catch (error) {}\n  return null;\n}\nfunction loadPanelGroupState(autoSaveId, panels, storage) {\n  var _loadSerializedPanelG, _state$panelKey;\n  const state = (_loadSerializedPanelG = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG !== void 0 ? _loadSerializedPanelG : {};\n  const panelKey = getPanelKey(panels);\n  return (_state$panelKey = state[panelKey]) !== null && _state$panelKey !== void 0 ? _state$panelKey : null;\n}\nfunction savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {\n  var _loadSerializedPanelG2;\n  const panelGroupKey = getPanelGroupKey(autoSaveId);\n  const panelKey = getPanelKey(panels);\n  const state = (_loadSerializedPanelG2 = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG2 !== void 0 ? _loadSerializedPanelG2 : {};\n  state[panelKey] = {\n    expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),\n    layout: sizes\n  };\n  try {\n    storage.setItem(panelGroupKey, JSON.stringify(state));\n  } catch (error) {\n    console.error(error);\n  }\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction validatePanelGroupLayout({\n  layout: prevLayout,\n  panelConstraints\n}) {\n  const nextLayout = [...prevLayout];\n  const nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n\n  // Validate layout expectations\n  if (nextLayout.length !== panelConstraints.length) {\n    throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map(size => `${size}%`).join(\", \")}`);\n  } else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100) && nextLayout.length > 0) {\n    for (let index = 0; index < panelConstraints.length; index++) {\n      const unsafeSize = nextLayout[index];\n      assert(unsafeSize != null, `No layout data found for index ${index}`);\n      const safeSize = 100 / nextLayoutTotalSize * unsafeSize;\n      nextLayout[index] = safeSize;\n    }\n  }\n  let remainingSize = 0;\n\n  // First pass: Validate the proposed layout given each panel's constraints\n  for (let index = 0; index < panelConstraints.length; index++) {\n    const unsafeSize = nextLayout[index];\n    assert(unsafeSize != null, `No layout data found for index ${index}`);\n    const safeSize = resizePanel({\n      panelConstraints,\n      panelIndex: index,\n      size: unsafeSize\n    });\n    if (unsafeSize != safeSize) {\n      remainingSize += unsafeSize - safeSize;\n      nextLayout[index] = safeSize;\n    }\n  }\n\n  // If there is additional, left over space, assign it to any panel(s) that permits it\n  // (It's not worth taking multiple additional passes to evenly distribute)\n  if (!fuzzyNumbersEqual(remainingSize, 0)) {\n    for (let index = 0; index < panelConstraints.length; index++) {\n      const prevSize = nextLayout[index];\n      assert(prevSize != null, `No layout data found for index ${index}`);\n      const unsafeSize = prevSize + remainingSize;\n      const safeSize = resizePanel({\n        panelConstraints,\n        panelIndex: index,\n        size: unsafeSize\n      });\n      if (prevSize !== safeSize) {\n        remainingSize -= safeSize - prevSize;\n        nextLayout[index] = safeSize;\n\n        // Once we've used up the remainder, bail\n        if (fuzzyNumbersEqual(remainingSize, 0)) {\n          break;\n        }\n      }\n    }\n  }\n  return nextLayout;\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100;\nconst defaultStorage = {\n  getItem: name => {\n    initializeDefaultStorage(defaultStorage);\n    return defaultStorage.getItem(name);\n  },\n  setItem: (name, value) => {\n    initializeDefaultStorage(defaultStorage);\n    defaultStorage.setItem(name, value);\n  }\n};\nconst debounceMap = {};\nfunction PanelGroupWithForwardedRef({\n  autoSaveId = null,\n  children,\n  className: classNameFromProps = \"\",\n  direction,\n  forwardedRef,\n  id: idFromProps = null,\n  onLayout = null,\n  keyboardResizeBy = null,\n  storage = defaultStorage,\n  style: styleFromProps,\n  tagName: Type = \"div\",\n  ...rest\n}) {\n  const groupId = useUniqueId(idFromProps);\n  const panelGroupElementRef = useRef(null);\n  const [dragState, setDragState] = useState(null);\n  const [layout, setLayout] = useState([]);\n  const forceUpdate = useForceUpdate();\n  const panelIdToLastNotifiedSizeMapRef = useRef({});\n  const panelSizeBeforeCollapseRef = useRef(new Map());\n  const prevDeltaRef = useRef(0);\n  const committedValuesRef = useRef({\n    autoSaveId,\n    direction,\n    dragState,\n    id: groupId,\n    keyboardResizeBy,\n    onLayout,\n    storage\n  });\n  const eagerValuesRef = useRef({\n    layout,\n    panelDataArray: [],\n    panelDataArrayChanged: false\n  });\n  useRef({\n    didLogIdAndOrderWarning: false,\n    didLogPanelConstraintsWarning: false,\n    prevPanelIds: []\n  });\n  useImperativeHandle(forwardedRef, () => ({\n    getId: () => committedValuesRef.current.id,\n    getLayout: () => {\n      const {\n        layout\n      } = eagerValuesRef.current;\n      return layout;\n    },\n    setLayout: unsafeLayout => {\n      const {\n        onLayout\n      } = committedValuesRef.current;\n      const {\n        layout: prevLayout,\n        panelDataArray\n      } = eagerValuesRef.current;\n      const safeLayout = validatePanelGroupLayout({\n        layout: unsafeLayout,\n        panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n      });\n      if (!areEqual(prevLayout, safeLayout)) {\n        setLayout(safeLayout);\n        eagerValuesRef.current.layout = safeLayout;\n        if (onLayout) {\n          onLayout(safeLayout);\n        }\n        callPanelCallbacks(panelDataArray, safeLayout, panelIdToLastNotifiedSizeMapRef.current);\n      }\n    }\n  }), []);\n  useIsomorphicLayoutEffect(() => {\n    committedValuesRef.current.autoSaveId = autoSaveId;\n    committedValuesRef.current.direction = direction;\n    committedValuesRef.current.dragState = dragState;\n    committedValuesRef.current.id = groupId;\n    committedValuesRef.current.onLayout = onLayout;\n    committedValuesRef.current.storage = storage;\n  });\n  useWindowSplitterPanelGroupBehavior({\n    committedValuesRef,\n    eagerValuesRef,\n    groupId,\n    layout,\n    panelDataArray: eagerValuesRef.current.panelDataArray,\n    setLayout,\n    panelGroupElement: panelGroupElementRef.current\n  });\n  useEffect(() => {\n    const {\n      panelDataArray\n    } = eagerValuesRef.current;\n\n    // If this panel has been configured to persist sizing information, save sizes to local storage.\n    if (autoSaveId) {\n      if (layout.length === 0 || layout.length !== panelDataArray.length) {\n        return;\n      }\n      let debouncedSave = debounceMap[autoSaveId];\n\n      // Limit the frequency of localStorage updates.\n      if (debouncedSave == null) {\n        debouncedSave = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL);\n        debounceMap[autoSaveId] = debouncedSave;\n      }\n\n      // Clone mutable data before passing to the debounced function,\n      // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n      const clonedPanelDataArray = [...panelDataArray];\n      const clonedPanelSizesBeforeCollapse = new Map(panelSizeBeforeCollapseRef.current);\n      debouncedSave(autoSaveId, clonedPanelDataArray, clonedPanelSizesBeforeCollapse, layout, storage);\n    }\n  }, [autoSaveId, layout, storage]);\n\n  // DEV warnings\n  useEffect(() => {\n  });\n\n  // External APIs are safe to memoize via committed values ref\n  const collapsePanel = useCallback(panelData => {\n    const {\n      onLayout\n    } = committedValuesRef.current;\n    const {\n      layout: prevLayout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    if (panelData.constraints.collapsible) {\n      const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n      const {\n        collapsedSize = 0,\n        panelSize,\n        pivotIndices\n      } = panelDataHelper(panelDataArray, panelData, prevLayout);\n      assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n      if (!fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n        // Store size before collapse;\n        // This is the size that gets restored if the expand() API is used.\n        panelSizeBeforeCollapseRef.current.set(panelData.id, panelSize);\n        const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n        const delta = isLastPanel ? panelSize - collapsedSize : collapsedSize - panelSize;\n        const nextLayout = adjustLayoutByDelta({\n          delta,\n          initialLayout: prevLayout,\n          panelConstraints: panelConstraintsArray,\n          pivotIndices,\n          prevLayout,\n          trigger: \"imperative-api\"\n        });\n        if (!compareLayouts(prevLayout, nextLayout)) {\n          setLayout(nextLayout);\n          eagerValuesRef.current.layout = nextLayout;\n          if (onLayout) {\n            onLayout(nextLayout);\n          }\n          callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n        }\n      }\n    }\n  }, []);\n\n  // External APIs are safe to memoize via committed values ref\n  const expandPanel = useCallback((panelData, minSizeOverride) => {\n    const {\n      onLayout\n    } = committedValuesRef.current;\n    const {\n      layout: prevLayout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    if (panelData.constraints.collapsible) {\n      const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n      const {\n        collapsedSize = 0,\n        panelSize = 0,\n        minSize: minSizeFromProps = 0,\n        pivotIndices\n      } = panelDataHelper(panelDataArray, panelData, prevLayout);\n      const minSize = minSizeOverride !== null && minSizeOverride !== void 0 ? minSizeOverride : minSizeFromProps;\n      if (fuzzyNumbersEqual$1(panelSize, collapsedSize)) {\n        // Restore this panel to the size it was before it was collapsed, if possible.\n        const prevPanelSize = panelSizeBeforeCollapseRef.current.get(panelData.id);\n        const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;\n        const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n        const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize;\n        const nextLayout = adjustLayoutByDelta({\n          delta,\n          initialLayout: prevLayout,\n          panelConstraints: panelConstraintsArray,\n          pivotIndices,\n          prevLayout,\n          trigger: \"imperative-api\"\n        });\n        if (!compareLayouts(prevLayout, nextLayout)) {\n          setLayout(nextLayout);\n          eagerValuesRef.current.layout = nextLayout;\n          if (onLayout) {\n            onLayout(nextLayout);\n          }\n          callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n        }\n      }\n    }\n  }, []);\n\n  // External APIs are safe to memoize via committed values ref\n  const getPanelSize = useCallback(panelData => {\n    const {\n      layout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    const {\n      panelSize\n    } = panelDataHelper(panelDataArray, panelData, layout);\n    assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n    return panelSize;\n  }, []);\n\n  // This API should never read from committedValuesRef\n  const getPanelStyle = useCallback((panelData, defaultSize) => {\n    const {\n      panelDataArray\n    } = eagerValuesRef.current;\n    const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n    return computePanelFlexBoxStyle({\n      defaultSize,\n      dragState,\n      layout,\n      panelData: panelDataArray,\n      panelIndex\n    });\n  }, [dragState, layout]);\n\n  // External APIs are safe to memoize via committed values ref\n  const isPanelCollapsed = useCallback(panelData => {\n    const {\n      layout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    const {\n      collapsedSize = 0,\n      collapsible,\n      panelSize\n    } = panelDataHelper(panelDataArray, panelData, layout);\n    assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n    return collapsible === true && fuzzyNumbersEqual$1(panelSize, collapsedSize);\n  }, []);\n\n  // External APIs are safe to memoize via committed values ref\n  const isPanelExpanded = useCallback(panelData => {\n    const {\n      layout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    const {\n      collapsedSize = 0,\n      collapsible,\n      panelSize\n    } = panelDataHelper(panelDataArray, panelData, layout);\n    assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n    return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;\n  }, []);\n  const registerPanel = useCallback(panelData => {\n    const {\n      panelDataArray\n    } = eagerValuesRef.current;\n    panelDataArray.push(panelData);\n    panelDataArray.sort((panelA, panelB) => {\n      const orderA = panelA.order;\n      const orderB = panelB.order;\n      if (orderA == null && orderB == null) {\n        return 0;\n      } else if (orderA == null) {\n        return -1;\n      } else if (orderB == null) {\n        return 1;\n      } else {\n        return orderA - orderB;\n      }\n    });\n    eagerValuesRef.current.panelDataArrayChanged = true;\n    forceUpdate();\n  }, [forceUpdate]);\n\n  // (Re)calculate group layout whenever panels are registered or unregistered.\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useIsomorphicLayoutEffect(() => {\n    if (eagerValuesRef.current.panelDataArrayChanged) {\n      eagerValuesRef.current.panelDataArrayChanged = false;\n      const {\n        autoSaveId,\n        onLayout,\n        storage\n      } = committedValuesRef.current;\n      const {\n        layout: prevLayout,\n        panelDataArray\n      } = eagerValuesRef.current;\n\n      // If this panel has been configured to persist sizing information,\n      // default size should be restored from local storage if possible.\n      let unsafeLayout = null;\n      if (autoSaveId) {\n        const state = loadPanelGroupState(autoSaveId, panelDataArray, storage);\n        if (state) {\n          panelSizeBeforeCollapseRef.current = new Map(Object.entries(state.expandToSizes));\n          unsafeLayout = state.layout;\n        }\n      }\n      if (unsafeLayout == null) {\n        unsafeLayout = calculateUnsafeDefaultLayout({\n          panelDataArray\n        });\n      }\n\n      // Validate even saved layouts in case something has changed since last render\n      // e.g. for pixel groups, this could be the size of the window\n      const nextLayout = validatePanelGroupLayout({\n        layout: unsafeLayout,\n        panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n      });\n      if (!areEqual(prevLayout, nextLayout)) {\n        setLayout(nextLayout);\n        eagerValuesRef.current.layout = nextLayout;\n        if (onLayout) {\n          onLayout(nextLayout);\n        }\n        callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n      }\n    }\n  });\n\n  // Reset the cached layout if hidden by the Activity/Offscreen API\n  useIsomorphicLayoutEffect(() => {\n    const eagerValues = eagerValuesRef.current;\n    return () => {\n      eagerValues.layout = [];\n    };\n  }, []);\n  const registerResizeHandle = useCallback(dragHandleId => {\n    let isRTL = false;\n    const panelGroupElement = panelGroupElementRef.current;\n    if (panelGroupElement) {\n      const style = window.getComputedStyle(panelGroupElement, null);\n      if (style.getPropertyValue(\"direction\") === \"rtl\") {\n        isRTL = true;\n      }\n    }\n    return function resizeHandler(event) {\n      event.preventDefault();\n      const panelGroupElement = panelGroupElementRef.current;\n      if (!panelGroupElement) {\n        return () => null;\n      }\n      const {\n        direction,\n        dragState,\n        id: groupId,\n        keyboardResizeBy,\n        onLayout\n      } = committedValuesRef.current;\n      const {\n        layout: prevLayout,\n        panelDataArray\n      } = eagerValuesRef.current;\n      const {\n        initialLayout\n      } = dragState !== null && dragState !== void 0 ? dragState : {};\n      const pivotIndices = determinePivotIndices(groupId, dragHandleId, panelGroupElement);\n      let delta = calculateDeltaPercentage(event, dragHandleId, direction, dragState, keyboardResizeBy, panelGroupElement);\n      const isHorizontal = direction === \"horizontal\";\n      if (isHorizontal && isRTL) {\n        delta = -delta;\n      }\n      const panelConstraints = panelDataArray.map(panelData => panelData.constraints);\n      const nextLayout = adjustLayoutByDelta({\n        delta,\n        initialLayout: initialLayout !== null && initialLayout !== void 0 ? initialLayout : prevLayout,\n        panelConstraints,\n        pivotIndices,\n        prevLayout,\n        trigger: isKeyDown(event) ? \"keyboard\" : \"mouse-or-touch\"\n      });\n      const layoutChanged = !compareLayouts(prevLayout, nextLayout);\n\n      // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n      // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n      if (isPointerEvent(event) || isMouseEvent(event)) {\n        // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n        // In this case, Panel sizes might not change–\n        // but updating cursor in this scenario would cause a flicker.\n        if (prevDeltaRef.current != delta) {\n          prevDeltaRef.current = delta;\n          if (!layoutChanged && delta !== 0) {\n            // If the pointer has moved too far to resize the panel any further, note this so we can update the cursor.\n            // This mimics VS Code behavior.\n            if (isHorizontal) {\n              reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX);\n            } else {\n              reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX);\n            }\n          } else {\n            reportConstraintsViolation(dragHandleId, 0);\n          }\n        }\n      }\n      if (layoutChanged) {\n        setLayout(nextLayout);\n        eagerValuesRef.current.layout = nextLayout;\n        if (onLayout) {\n          onLayout(nextLayout);\n        }\n        callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n      }\n    };\n  }, []);\n\n  // External APIs are safe to memoize via committed values ref\n  const resizePanel = useCallback((panelData, unsafePanelSize) => {\n    const {\n      onLayout\n    } = committedValuesRef.current;\n    const {\n      layout: prevLayout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n    const {\n      panelSize,\n      pivotIndices\n    } = panelDataHelper(panelDataArray, panelData, prevLayout);\n    assert(panelSize != null, `Panel size not found for panel \"${panelData.id}\"`);\n    const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n    const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n    const nextLayout = adjustLayoutByDelta({\n      delta,\n      initialLayout: prevLayout,\n      panelConstraints: panelConstraintsArray,\n      pivotIndices,\n      prevLayout,\n      trigger: \"imperative-api\"\n    });\n    if (!compareLayouts(prevLayout, nextLayout)) {\n      setLayout(nextLayout);\n      eagerValuesRef.current.layout = nextLayout;\n      if (onLayout) {\n        onLayout(nextLayout);\n      }\n      callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n    }\n  }, []);\n  const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {\n    const {\n      layout,\n      panelDataArray\n    } = eagerValuesRef.current;\n    const {\n      collapsedSize: prevCollapsedSize = 0,\n      collapsible: prevCollapsible\n    } = prevConstraints;\n    const {\n      collapsedSize: nextCollapsedSize = 0,\n      collapsible: nextCollapsible,\n      maxSize: nextMaxSize = 100,\n      minSize: nextMinSize = 0\n    } = panelData.constraints;\n    const {\n      panelSize: prevPanelSize\n    } = panelDataHelper(panelDataArray, panelData, layout);\n    if (prevPanelSize == null) {\n      // It's possible that the panels in this group have changed since the last render\n      return;\n    }\n    if (prevCollapsible && nextCollapsible && fuzzyNumbersEqual$1(prevPanelSize, prevCollapsedSize)) {\n      if (!fuzzyNumbersEqual$1(prevCollapsedSize, nextCollapsedSize)) {\n        resizePanel(panelData, nextCollapsedSize);\n      }\n    } else if (prevPanelSize < nextMinSize) {\n      resizePanel(panelData, nextMinSize);\n    } else if (prevPanelSize > nextMaxSize) {\n      resizePanel(panelData, nextMaxSize);\n    }\n  }, [resizePanel]);\n\n  // TODO Multiple drag handles can be active at the same time so this API is a bit awkward now\n  const startDragging = useCallback((dragHandleId, event) => {\n    const {\n      direction\n    } = committedValuesRef.current;\n    const {\n      layout\n    } = eagerValuesRef.current;\n    if (!panelGroupElementRef.current) {\n      return;\n    }\n    const handleElement = getResizeHandleElement(dragHandleId, panelGroupElementRef.current);\n    assert(handleElement, `Drag handle element not found for id \"${dragHandleId}\"`);\n    const initialCursorPosition = getResizeEventCursorPosition(direction, event);\n    setDragState({\n      dragHandleId,\n      dragHandleRect: handleElement.getBoundingClientRect(),\n      initialCursorPosition,\n      initialLayout: layout\n    });\n  }, []);\n  const stopDragging = useCallback(() => {\n    setDragState(null);\n  }, []);\n  const unregisterPanel = useCallback(panelData => {\n    const {\n      panelDataArray\n    } = eagerValuesRef.current;\n    const index = findPanelDataIndex(panelDataArray, panelData);\n    if (index >= 0) {\n      panelDataArray.splice(index, 1);\n\n      // TRICKY\n      // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n      // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n      // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n      delete panelIdToLastNotifiedSizeMapRef.current[panelData.id];\n      eagerValuesRef.current.panelDataArrayChanged = true;\n      forceUpdate();\n    }\n  }, [forceUpdate]);\n  const context = useMemo(() => ({\n    collapsePanel,\n    direction,\n    dragState,\n    expandPanel,\n    getPanelSize,\n    getPanelStyle,\n    groupId,\n    isPanelCollapsed,\n    isPanelExpanded,\n    reevaluatePanelConstraints,\n    registerPanel,\n    registerResizeHandle,\n    resizePanel,\n    startDragging,\n    stopDragging,\n    unregisterPanel,\n    panelGroupElement: panelGroupElementRef.current\n  }), [collapsePanel, dragState, direction, expandPanel, getPanelSize, getPanelStyle, groupId, isPanelCollapsed, isPanelExpanded, reevaluatePanelConstraints, registerPanel, registerResizeHandle, resizePanel, startDragging, stopDragging, unregisterPanel]);\n  const style = {\n    display: \"flex\",\n    flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\n    height: \"100%\",\n    overflow: \"hidden\",\n    width: \"100%\"\n  };\n  return createElement(PanelGroupContext.Provider, {\n    value: context\n  }, createElement(Type, {\n    ...rest,\n    children,\n    className: classNameFromProps,\n    id: idFromProps,\n    ref: panelGroupElementRef,\n    style: {\n      ...style,\n      ...styleFromProps\n    },\n    // CSS selectors\n    [DATA_ATTRIBUTES.group]: \"\",\n    [DATA_ATTRIBUTES.groupDirection]: direction,\n    [DATA_ATTRIBUTES.groupId]: groupId\n  }));\n}\nconst PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {\n  ...props,\n  forwardedRef: ref\n}));\nPanelGroupWithForwardedRef.displayName = \"PanelGroup\";\nPanelGroup.displayName = \"forwardRef(PanelGroup)\";\nfunction findPanelDataIndex(panelDataArray, panelData) {\n  return panelDataArray.findIndex(prevPanelData => prevPanelData === panelData || prevPanelData.id === panelData.id);\n}\nfunction panelDataHelper(panelDataArray, panelData, layout) {\n  const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n  const isLastPanel = panelIndex === panelDataArray.length - 1;\n  const pivotIndices = isLastPanel ? [panelIndex - 1, panelIndex] : [panelIndex, panelIndex + 1];\n  const panelSize = layout[panelIndex];\n  return {\n    ...panelData.constraints,\n    panelSize,\n    pivotIndices\n  };\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterResizeHandlerBehavior({\n  disabled,\n  handleId,\n  resizeHandler,\n  panelGroupElement\n}) {\n  useEffect(() => {\n    if (disabled || resizeHandler == null || panelGroupElement == null) {\n      return;\n    }\n    const handleElement = getResizeHandleElement(handleId, panelGroupElement);\n    if (handleElement == null) {\n      return;\n    }\n    const onKeyDown = event => {\n      if (event.defaultPrevented) {\n        return;\n      }\n      switch (event.key) {\n        case \"ArrowDown\":\n        case \"ArrowLeft\":\n        case \"ArrowRight\":\n        case \"ArrowUp\":\n        case \"End\":\n        case \"Home\":\n          {\n            event.preventDefault();\n            resizeHandler(event);\n            break;\n          }\n        case \"F6\":\n          {\n            event.preventDefault();\n            const groupId = handleElement.getAttribute(DATA_ATTRIBUTES.groupId);\n            assert(groupId, `No group element found for id \"${groupId}\"`);\n            const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n            const index = getResizeHandleElementIndex(groupId, handleId, panelGroupElement);\n            assert(index !== null, `No resize element found for id \"${handleId}\"`);\n            const nextIndex = event.shiftKey ? index > 0 ? index - 1 : handles.length - 1 : index + 1 < handles.length ? index + 1 : 0;\n            const nextHandle = handles[nextIndex];\n            nextHandle.focus();\n            break;\n          }\n      }\n    };\n    handleElement.addEventListener(\"keydown\", onKeyDown);\n    return () => {\n      handleElement.removeEventListener(\"keydown\", onKeyDown);\n    };\n  }, [panelGroupElement, disabled, handleId, resizeHandler]);\n}\n\nfunction PanelResizeHandle({\n  children = null,\n  className: classNameFromProps = \"\",\n  disabled = false,\n  hitAreaMargins,\n  id: idFromProps,\n  onBlur,\n  onClick,\n  onDragging,\n  onFocus,\n  onPointerDown,\n  onPointerUp,\n  style: styleFromProps = {},\n  tabIndex = 0,\n  tagName: Type = \"div\",\n  ...rest\n}) {\n  var _hitAreaMargins$coars, _hitAreaMargins$fine;\n  const elementRef = useRef(null);\n\n  // Use a ref to guard against users passing inline props\n  const callbacksRef = useRef({\n    onClick,\n    onDragging,\n    onPointerDown,\n    onPointerUp\n  });\n  useEffect(() => {\n    callbacksRef.current.onClick = onClick;\n    callbacksRef.current.onDragging = onDragging;\n    callbacksRef.current.onPointerDown = onPointerDown;\n    callbacksRef.current.onPointerUp = onPointerUp;\n  });\n  const panelGroupContext = useContext(PanelGroupContext);\n  if (panelGroupContext === null) {\n    throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);\n  }\n  const {\n    direction,\n    groupId,\n    registerResizeHandle: registerResizeHandleWithParentGroup,\n    startDragging,\n    stopDragging,\n    panelGroupElement\n  } = panelGroupContext;\n  const resizeHandleId = useUniqueId(idFromProps);\n  const [state, setState] = useState(\"inactive\");\n  const [isFocused, setIsFocused] = useState(false);\n  const [resizeHandler, setResizeHandler] = useState(null);\n  const committedValuesRef = useRef({\n    state\n  });\n  useIsomorphicLayoutEffect(() => {\n    committedValuesRef.current.state = state;\n  });\n  useEffect(() => {\n    if (disabled) {\n      setResizeHandler(null);\n    } else {\n      const resizeHandler = registerResizeHandleWithParentGroup(resizeHandleId);\n      setResizeHandler(() => resizeHandler);\n    }\n  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);\n\n  // Extract hit area margins before passing them to the effect's dependency array\n  // so that inline object values won't trigger re-renders\n  const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;\n  const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;\n  useEffect(() => {\n    if (disabled || resizeHandler == null) {\n      return;\n    }\n    const element = elementRef.current;\n    assert(element, \"Element ref not attached\");\n    let didMove = false;\n    const setResizeHandlerState = (action, isActive, event) => {\n      if (!isActive) {\n        setState(\"inactive\");\n        return;\n      }\n      switch (action) {\n        case \"down\":\n          {\n            setState(\"drag\");\n            didMove = false;\n            assert(event, 'Expected event to be defined for \"down\" action');\n            startDragging(resizeHandleId, event);\n            const {\n              onDragging,\n              onPointerDown\n            } = callbacksRef.current;\n            onDragging === null || onDragging === void 0 ? void 0 : onDragging(true);\n            onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown();\n            break;\n          }\n        case \"move\":\n          {\n            const {\n              state\n            } = committedValuesRef.current;\n            didMove = true;\n            if (state !== \"drag\") {\n              setState(\"hover\");\n            }\n            assert(event, 'Expected event to be defined for \"move\" action');\n            resizeHandler(event);\n            break;\n          }\n        case \"up\":\n          {\n            setState(\"hover\");\n            stopDragging();\n            const {\n              onClick,\n              onDragging,\n              onPointerUp\n            } = callbacksRef.current;\n            onDragging === null || onDragging === void 0 ? void 0 : onDragging(false);\n            onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp();\n            if (!didMove) {\n              onClick === null || onClick === void 0 ? void 0 : onClick();\n            }\n            break;\n          }\n      }\n    };\n    return registerResizeHandle(resizeHandleId, element, direction, {\n      coarse: coarseHitAreaMargins,\n      fine: fineHitAreaMargins\n    }, setResizeHandlerState);\n  }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);\n  useWindowSplitterResizeHandlerBehavior({\n    disabled,\n    handleId: resizeHandleId,\n    resizeHandler,\n    panelGroupElement\n  });\n  const style = {\n    touchAction: \"none\",\n    userSelect: \"none\"\n  };\n  return createElement(Type, {\n    ...rest,\n    children,\n    className: classNameFromProps,\n    id: idFromProps,\n    onBlur: () => {\n      setIsFocused(false);\n      onBlur === null || onBlur === void 0 ? void 0 : onBlur();\n    },\n    onFocus: () => {\n      setIsFocused(true);\n      onFocus === null || onFocus === void 0 ? void 0 : onFocus();\n    },\n    ref: elementRef,\n    role: \"separator\",\n    style: {\n      ...style,\n      ...styleFromProps\n    },\n    tabIndex,\n    // CSS selectors\n    [DATA_ATTRIBUTES.groupDirection]: direction,\n    [DATA_ATTRIBUTES.groupId]: groupId,\n    [DATA_ATTRIBUTES.resizeHandle]: \"\",\n    [DATA_ATTRIBUTES.resizeHandleActive]: state === \"drag\" ? \"pointer\" : isFocused ? \"keyboard\" : undefined,\n    [DATA_ATTRIBUTES.resizeHandleEnabled]: !disabled,\n    [DATA_ATTRIBUTES.resizeHandleId]: resizeHandleId,\n    [DATA_ATTRIBUTES.resizeHandleState]: state\n  });\n}\nPanelResizeHandle.displayName = \"PanelResizeHandle\";\n\nfunction usePanelGroupContext() {\n  const context = useContext(PanelGroupContext);\n  return {\n    direction: context === null || context === void 0 ? void 0 : context.direction,\n    groupId: context === null || context === void 0 ? void 0 : context.groupId\n  };\n}\n\nfunction getPanelElement(id, scope = document) {\n  const element = scope.querySelector(`[data-panel-id=\"${id}\"]`);\n  if (element) {\n    return element;\n  }\n  return null;\n}\n\nfunction getPanelElementsForGroup(groupId, scope = document) {\n  return Array.from(scope.querySelectorAll(`[data-panel][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getIntersectingRectangle(rectOne, rectTwo, strict) {\n  if (!intersects(rectOne, rectTwo, strict)) {\n    return {\n      x: 0,\n      y: 0,\n      width: 0,\n      height: 0\n    };\n  }\n  return {\n    x: Math.max(rectOne.x, rectTwo.x),\n    y: Math.max(rectOne.y, rectTwo.y),\n    width: Math.min(rectOne.x + rectOne.width, rectTwo.x + rectTwo.width) - Math.max(rectOne.x, rectTwo.x),\n    height: Math.min(rectOne.y + rectOne.height, rectTwo.y + rectTwo.height) - Math.max(rectOne.y, rectTwo.y)\n  };\n}\n\nexport { DATA_ATTRIBUTES, Panel, PanelGroup, PanelResizeHandle, assert, customizeGlobalCursorStyles, disableGlobalCursorStyles, enableGlobalCursorStyles, getIntersectingRectangle, getPanelElement, getPanelElementsForGroup, getPanelGroupElement, getResizeHandleElement, getResizeHandleElementIndex, getResizeHandleElementsForGroup, getResizeHandlePanelIds, intersects, setNonce, usePanelGroupContext };\n","import { GripVerticalIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction ResizablePanelGroup({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n\treturn (\n\t\t<ResizablePrimitive.PanelGroup\n\t\t\tdata-slot=\"resizable-panel-group\"\n\t\t\tclassName={cn(\"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ResizablePanel({ ...props }: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n\treturn <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n\twithHandle,\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n\twithHandle?: boolean;\n}) {\n\treturn (\n\t\t<ResizablePrimitive.PanelResizeHandle\n\t\t\tdata-slot=\"resizable-handle\"\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{withHandle && (\n\t\t\t\t<div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n\t\t\t\t\t<GripVerticalIcon className=\"size-2.5\" />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</ResizablePrimitive.PanelResizeHandle>\n\t);\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"],"names":["isBrowser","window","PanelGroupContext","createContext","displayName","DATA_ATTRIBUTES","group","groupDirection","groupId","panel","panelCollapsible","panelId","panelSize","resizeHandle","resizeHandleActive","resizeHandleEnabled","resizeHandleId","resizeHandleState","PRECISION","useIsomorphicLayoutEffect","useLayoutEffect","useId","React","toString","wrappedUseId","counter","useUniqueId","idFromParams","idFromUseId","idRef","useRef","current","PanelWithForwardedRef","children","className","classNameFromProps","collapsedSize","collapsible","defaultSize","forwardedRef","id","idFromProps","maxSize","minSize","onCollapse","onExpand","onResize","order","style","styleFromProps","tagName","Type","rest","context","useContext","Error","collapsePanel","expandPanel","getPanelSize","getPanelStyle","isPanelCollapsed","reevaluatePanelConstraints","registerPanel","resizePanel","unregisterPanel","panelDataRef","callbacks","constraints","idIsFromProps","undefined","didLogMissingDefaultSizeWarning","prevConstraints","panelData","useImperativeHandle","collapse","expand","getId","getSize","isCollapsed","isExpanded","resize","size","createElement","parseFloat","flexGrow","toFixed","Panel","forwardRef","props","ref","currentCursorStyle","prevRuleIndex","styleElement","getCursorStyle","state","constraintFlags","isPointerDown","horizontalMin","EXCEEDED_HORIZONTAL_MIN","horizontalMax","EXCEEDED_HORIZONTAL_MAX","verticalMin","EXCEEDED_VERTICAL_MIN","verticalMax","EXCEEDED_VERTICAL_MAX","resetGlobalCursorStyle","document","head","removeChild","setGlobalCursorStyle","_styleElement$sheet$i","_styleElement$sheet2","appendChild","_styleElement$sheet","sheet","removeRule","insertRule","isKeyDown","event","type","isPointerEvent","startsWith","isMouseEvent","getResizeEventCoordinates","isPrimary","x","clientX","y","clientY","Infinity","getInputType","matchMedia","matches","intersects","rectOne","rectTwo","strict","width","height","compare","a","b","ancestors","get_ancestors","common_ancestor","at","pop","assert","z_indexes","get_z_index","find_stacking_context","childNodes","furthest_ancestors","i","length","child","Math","sign","is_flex_item","node","_get_parent","display","getComputedStyle","get_parent","creates_stacking_context","position","zIndex","opacity","transform","webkitTransform","mixBlendMode","filter","webkitFilter","isolation","test","willChange","webkitOverflowScrolling","nodes","Number","push","parentNode","ShadowRoot","host","isCoarsePointer","intersectingHandles","ownerDocumentCounts","Map","panelConstraintFlags","registeredResizeHandlers","Set","registerResizeHandle","element","direction","hitAreaMargins","setResizeHandlerState","_ownerDocumentCounts$","ownerDocument","data","count","get","set","add","updateListeners","unregisterResizeHandle","_ownerDocumentCounts$2","delete","includes","index","indexOf","splice","updateCursor","handlePointerDown","target","recalculateIntersectingHandles","updateResizeHandlerStates","preventDefault","isWithinResizeHandle","stopImmediatePropagation","handlePointerMove","buttons","handlePointerUp","clear","currentElement","hasAttribute","parentElement","targetElement","HTMLElement","SVGElement","forEach","dragHandleElement","dragHandleRect","getBoundingClientRect","bottom","left","right","top","margin","coarse","fine","eventIntersects","contains","didIntersect","reportConstraintsViolation","flag","intersectsHorizontal","intersectsVertical","listenersAbortController","_listenersAbortContro","abort","AbortController","options","capture","signal","body","addEventListener","_","action","isActive","useForceUpdate","setCount","useState","useCallback","prevCount","expectedCondition","message","console","error","fuzzyCompareNumbers","actual","expected","fractionDigits","fuzzyNumbersEqual$1","fuzzyNumbersEqual","fuzzyLayoutsEqual","actualSize","expectedSize","panelConstraints","panelConstraintsArray","panelIndex","halfwayPoint","min","adjustLayoutByDelta","delta","initialLayout","pivotIndices","prevLayout","trigger","nextLayout","firstPivotIndex","secondPivotIndex","deltaApplied","prevSize","localDelta","abs","increment","maxAvailableDelta","maxSafeSize","minAbsDelta","pivotIndex","deltaRemaining","unsafeSize","safeSize","localeCompare","numeric","totalSize","reduce","total","calculateAriaValues","layout","panelsArray","currentMinSize","currentMaxSize","totalMinSize","totalMaxSize","firstIndex","valueMax","valueMin","max","valueNow","getResizeHandleElementsForGroup","scope","Array","from","querySelectorAll","getResizeHandleElementIndex","handles","findIndex","handle","getAttribute","determinePivotIndices","dragHandleId","panelGroupElement","isHTMLElement","getPanelGroupElement","rootElement","dataset","panelGroupId","querySelector","getResizeHandleElement","getResizeHandlePanelIds","handleId","_panelsArray$index$id","_panelsArray$index","_panelsArray$id","_panelsArray","idBefore","idAfter","useWindowSplitterPanelGroupBehavior","committedValuesRef","eagerValuesRef","panelDataArray","setLayout","didWarnAboutMissingResizeHandle","resizeHandleElements","resizeHandleElement","setAttribute","round","removeAttribute","useEffect","eagerValues","groupElement","cleanupFunctions","map","onKeyDown","defaultPrevented","key","removeEventListener","cleanupFunction","areEqual","arrayA","arrayB","getResizeEventCursorPosition","isHorizontal","calculateDragOffsetPercentage","initialDragState","handleElement","initialCursorPosition","cursorPosition","groupRect","groupSizeInPixels","offsetPixels","offsetPercentage","calculateDeltaPercentage","keyboardResizeBy","shiftKey","movement","calculateUnsafeDefaultLayout","numPanelsWithSizes","remainingSize","numRemainingPanels","callPanelCallbacks","panelIdToLastNotifiedSizeMap","lastNotifiedSize","compareLayouts","computePanelFlexBoxStyle","dragState","precision","flexBasis","flexShrink","overflow","pointerEvents","debounce","callback","durationMs","timeoutId","callable","args","clearTimeout","setTimeout","initializeDefaultStorage","storageObject","localStorage","getItem","name","setItem","value","getPanelGroupKey","autoSaveId","getPanelKey","panels","JSON","stringify","sort","join","loadSerializedPanelGroupState","storage","panelGroupKey","serialized","parsed","parse","loadPanelGroupState","_loadSerializedPanelG","_state$panelKey","panelKey","savePanelGroupState","panelSizesBeforeCollapse","sizes","_loadSerializedPanelG2","expandToSizes","Object","fromEntries","entries","validatePanelGroupLayout","nextLayoutTotalSize","accumulated","LOCAL_STORAGE_DEBOUNCE_INTERVAL","defaultStorage","debounceMap","PanelGroupWithForwardedRef","onLayout","panelGroupElementRef","setDragState","forceUpdate","panelIdToLastNotifiedSizeMapRef","panelSizeBeforeCollapseRef","prevDeltaRef","panelDataArrayChanged","didLogIdAndOrderWarning","didLogPanelConstraintsWarning","prevPanelIds","getLayout","unsafeLayout","safeLayout","debouncedSave","clonedPanelDataArray","clonedPanelSizesBeforeCollapse","panelDataHelper","isLastPanel","findPanelDataIndex","minSizeOverride","minSizeFromProps","prevPanelSize","baseSize","isPanelExpanded","panelA","panelB","orderA","orderB","isRTL","getPropertyValue","resizeHandler","layoutChanged","unsafePanelSize","prevCollapsedSize","prevCollapsible","nextCollapsedSize","nextCollapsible","nextMaxSize","nextMinSize","startDragging","stopDragging","useMemo","flexDirection","Provider","PanelGroup","prevPanelData","useWindowSplitterResizeHandlerBehavior","disabled","nextIndex","nextHandle","focus","PanelResizeHandle","onBlur","onClick","onDragging","onFocus","onPointerDown","onPointerUp","tabIndex","_hitAreaMargins$coars","_hitAreaMargins$fine","elementRef","callbacksRef","panelGroupContext","registerResizeHandleWithParentGroup","setState","isFocused","setIsFocused","setResizeHandler","coarseHitAreaMargins","fineHitAreaMargins","didMove","touchAction","userSelect","role","ResizablePanelGroup","ResizablePrimitive","data-slot","cn","ResizablePanel","ResizableHandle","withHandle","div","GripVerticalIcon"],"mappings":"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","x_google_ignoreList":[0,1]}