{"version":3,"sources":["jsdelivr-header.js","/npm/@zag-js/splitter@1.41.2/dist/chunk-QZ7TP4HQ.mjs","/npm/@zag-js/splitter@1.41.2/dist/splitter.anatomy.mjs","/npm/@zag-js/splitter@1.41.2/dist/splitter.dom.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/aria.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/fuzzy.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/size.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/panel.mjs","/npm/@zag-js/splitter@1.41.2/dist/splitter.connect.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/resize-panel.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/resize-by-delta.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/validate-sizes.mjs","/npm/@zag-js/splitter@1.41.2/dist/splitter.machine.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/preserve-fixed-panel-sizes.mjs","/npm/@zag-js/splitter@1.41.2/dist/splitter.props.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/intersects.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/stacking-order.mjs","/npm/@zag-js/splitter@1.41.2/dist/utils/registry.mjs"],"names":[],"mappings":"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","file":"/npm/@zag-js/splitter@1.41.2/dist/index.mjs/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.48.0.\n * Original file: /npm/@zag-js/splitter@1.41.2/dist/index.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\nexport {\n  __publicField\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/splitter.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"splitter\").parts(\"root\", \"panel\", \"resizeTrigger\", \"resizeTriggerIndicator\");\nvar parts = anatomy.build();\nexport {\n  anatomy,\n  parts\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/splitter.dom.ts\nimport { isHTMLElement, queryAll } from \"@zag-js/dom-query\";\nvar getRootId = (ctx) => ctx.ids?.root ?? `splitter:${ctx.id}`;\nvar getResizeTriggerId = (ctx, id) => ctx.ids?.resizeTrigger?.(id) ?? `splitter:${ctx.id}:splitter:${id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `splitter:${ctx.id}:label`;\nvar getPanelId = (ctx, id) => ctx.ids?.panel?.(id) ?? `splitter:${ctx.id}:panel:${id}`;\nvar getPanelEls = (ctx) => queryAll(getRootEl(ctx), `[data-part=panel][data-ownedby='${CSS.escape(getRootId(ctx))}']`);\nvar getGlobalCursorId = (ctx) => `splitter:${ctx.id}:global-cursor`;\nvar getRootEl = (ctx) => ctx.getById(getRootId(ctx));\nvar getResizeTriggerEl = (ctx, id) => id != null ? ctx.getById(getResizeTriggerId(ctx, id)) : null;\nvar getPanelEl = (ctx, id) => ctx.getById(getPanelId(ctx, id));\nvar getPanelIdFromEl = (el) => {\n  return isHTMLElement(el) && el.dataset.part === \"panel\" ? el.dataset.id : void 0;\n};\nvar getPrevPanelId = (el) => {\n  let prev = el?.previousElementSibling ?? null;\n  while (prev) {\n    const id = getPanelIdFromEl(prev);\n    if (id) return id;\n    prev = prev.previousElementSibling;\n  }\n};\nvar getNextPanelId = (el) => {\n  let next = el?.nextElementSibling ?? null;\n  while (next) {\n    const id = getPanelIdFromEl(next);\n    if (id) return id;\n    next = next.nextElementSibling;\n  }\n};\nvar resolveResizeTriggerId = (ctx, id) => {\n  const [beforeId, afterId] = id.split(\":\");\n  if (beforeId && afterId) return id;\n  const triggerEl = getResizeTriggerEl(ctx, id);\n  const resolvedBeforeId = beforeId || getPrevPanelId(triggerEl);\n  const resolvedAfterId = afterId || getNextPanelId(triggerEl);\n  return resolvedBeforeId && resolvedAfterId ? `${resolvedBeforeId}:${resolvedAfterId}` : null;\n};\nvar getCursor = (state, x) => {\n  let cursor = x ? \"col-resize\" : \"row-resize\";\n  if (state.isAtMin) cursor = x ? \"e-resize\" : \"s-resize\";\n  if (state.isAtMax) cursor = x ? \"w-resize\" : \"n-resize\";\n  return cursor;\n};\nvar getResizeTriggerEls = (ctx) => {\n  return queryAll(getRootEl(ctx), `[role=separator][data-ownedby='${CSS.escape(getRootId(ctx))}']`);\n};\nvar getGlobalCursorEl = (ctx) => {\n  return ctx.getDoc().getElementById(getGlobalCursorId(ctx));\n};\nvar setupGlobalCursor = (ctx, state, x, nonce) => {\n  const styleEl = getGlobalCursorEl(ctx);\n  const textContent = `* { cursor: ${getCursor(state, x)} !important; }`;\n  if (styleEl) {\n    styleEl.textContent = textContent;\n  } else {\n    const style = ctx.getDoc().createElement(\"style\");\n    if (nonce) style.nonce = nonce;\n    style.id = getGlobalCursorId(ctx);\n    style.textContent = textContent;\n    ctx.getDoc().head.appendChild(style);\n  }\n};\nvar removeGlobalCursor = (ctx) => {\n  const styleEl = getGlobalCursorEl(ctx);\n  styleEl?.remove();\n};\nexport {\n  getCursor,\n  getGlobalCursorEl,\n  getGlobalCursorId,\n  getLabelId,\n  getPanelEl,\n  getPanelEls,\n  getPanelId,\n  getResizeTriggerEl,\n  getResizeTriggerEls,\n  getResizeTriggerId,\n  getRootEl,\n  getRootId,\n  removeGlobalCursor,\n  resolveResizeTriggerId,\n  setupGlobalCursor\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/aria.ts\nimport { ensure } from \"@zag-js/utils\";\nfunction calculateAriaValues({\n  size,\n  panels,\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  ensure(firstIndex, () => \"No pivot index found\");\n  panels.forEach((panel, index) => {\n    const { maxSize = 100, minSize = 0 } = panel;\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 = size[firstIndex];\n  return {\n    valueMax,\n    valueMin,\n    valueNow\n  };\n}\nfunction getAriaValue(size, panels, handleId) {\n  const [beforeId, afterId] = handleId.split(\":\");\n  const beforeIndex = panels.findIndex((panel) => panel.id === beforeId);\n  const afterIndex = panels.findIndex((panel) => panel.id === afterId);\n  if (beforeIndex === -1 || afterIndex === -1) {\n    return {\n      beforeId: beforeId || void 0,\n      afterId: afterId || void 0,\n      valueMax: void 0,\n      valueMin: void 0,\n      valueNow: void 0\n    };\n  }\n  const { valueMax, valueMin, valueNow } = calculateAriaValues({\n    size,\n    panels,\n    pivotIndices: [beforeIndex, afterIndex]\n  });\n  return {\n    beforeId,\n    afterId,\n    valueMax: Math.round(valueMax),\n    valueMin: Math.round(valueMin),\n    valueNow: valueNow != null ? Math.round(valueNow) : void 0\n  };\n}\nexport {\n  calculateAriaValues,\n  getAriaValue\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/fuzzy.ts\nvar PRECISION = 10;\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(actual, expected, fractionDigits = PRECISION) {\n  if (actual == null || expected == null) return false;\n  return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\nfunction fuzzySizeEqual(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}\nexport {\n  PRECISION,\n  fuzzyCompareNumbers,\n  fuzzyNumbersEqual,\n  fuzzySizeEqual\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/size.ts\nvar sizeRegex = /^(-?\\d*\\.?\\d+)(%|px|em|rem|vw|vh)?$/;\nvar percentRegex = /^(-?\\d*\\.?\\d+)%$/;\nfunction getRootSize(rootEl, orientation) {\n  if (!rootEl) return 0;\n  const rect = rootEl.getBoundingClientRect();\n  return orientation === \"horizontal\" ? rect.width : rect.height;\n}\nfunction getGroupSize(rootEl, orientation) {\n  return getRootSize(rootEl, orientation);\n}\nfunction toPixelValue(value, unit, rootEl) {\n  const win = rootEl.ownerDocument.defaultView;\n  if (!win) return void 0;\n  switch (unit) {\n    case \"px\":\n      return value;\n    case \"em\": {\n      const fontSize = Number.parseFloat(win.getComputedStyle(rootEl).fontSize);\n      return value * fontSize;\n    }\n    case \"rem\": {\n      const fontSize = Number.parseFloat(win.getComputedStyle(rootEl.ownerDocument.documentElement).fontSize);\n      return value * fontSize;\n    }\n    case \"vw\":\n      return value / 100 * win.innerWidth;\n    case \"vh\":\n      return value / 100 * win.innerHeight;\n    default:\n      return void 0;\n  }\n}\nfunction parsePanelSize(size, rootEl, orientation) {\n  if (size == null) return void 0;\n  if (typeof size === \"number\") {\n    return size;\n  }\n  const match = size.trim().match(sizeRegex);\n  if (!match) return void 0;\n  const value = Number.parseFloat(match[1]);\n  if (!Number.isFinite(value)) return void 0;\n  const unit = match[2];\n  if (unit == null || unit === \"%\") {\n    return value;\n  }\n  if (!rootEl) return void 0;\n  const rootSize = getRootSize(rootEl, orientation);\n  if (rootSize === 0) return void 0;\n  const px = toPixelValue(value, unit, rootEl);\n  return px == null ? void 0 : px / rootSize * 100;\n}\nfunction toCssPanelSize(size) {\n  if (size == null) return void 0;\n  if (typeof size === \"number\") {\n    return `${size}%`;\n  }\n  const trimmed = size.trim();\n  if (percentRegex.test(trimmed)) {\n    return trimmed;\n  }\n  const match = trimmed.match(sizeRegex);\n  if (!match) return void 0;\n  const value = Number.parseFloat(match[1]);\n  if (!Number.isFinite(value)) return void 0;\n  const unit = match[2];\n  return unit == null ? `${value}%` : `${value}${unit}`;\n}\nfunction resolvePanelSizes({\n  sizes,\n  panels,\n  rootEl,\n  orientation\n}) {\n  const nextSize = Array(panels.length);\n  let remainingSize = 100;\n  let numPanelsWithSizes = 0;\n  for (let index = 0; index < panels.length; index++) {\n    const size = parsePanelSize(sizes?.[index], rootEl, orientation);\n    if (size == null) continue;\n    numPanelsWithSizes++;\n    nextSize[index] = size;\n    remainingSize -= size;\n  }\n  for (let index = 0; index < panels.length; index++) {\n    if (nextSize[index] != null) continue;\n    const numRemainingPanels = panels.length - numPanelsWithSizes;\n    const size = numRemainingPanels > 0 ? remainingSize / numRemainingPanels : 0;\n    numPanelsWithSizes++;\n    nextSize[index] = size;\n    remainingSize -= size;\n  }\n  return nextSize;\n}\nfunction normalizePanels(panels, rootEl, orientation) {\n  return panels.map((panel) => ({\n    ...panel,\n    minSize: parsePanelSize(panel.minSize, rootEl, orientation),\n    maxSize: parsePanelSize(panel.maxSize, rootEl, orientation),\n    collapsedSize: parsePanelSize(panel.collapsedSize, rootEl, orientation)\n  }));\n}\nexport {\n  getGroupSize,\n  normalizePanels,\n  parsePanelSize,\n  resolvePanelSizes,\n  toCssPanelSize\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/panel.ts\nimport { ensure } from \"@zag-js/utils\";\nimport { toCssPanelSize } from \"./size.mjs\";\nfunction getPanelById(panels, id) {\n  const panel = panels.find((panel2) => panel2.id === id);\n  ensure(panel, () => `Panel data not found for id \"${id}\"`);\n  return panel;\n}\nfunction findPanelDataIndex(panels, panel) {\n  return panels.findIndex((prevPanel) => prevPanel === panel || prevPanel.id === panel.id);\n}\nfunction findPanelIndex(panels, id) {\n  return panels.findIndex((panel) => panel.id === id);\n}\nfunction panelDataHelper(panels, panel, sizes) {\n  const index = findPanelIndex(panels, panel.id);\n  const pivotIndices = index === panels.length - 1 ? [index - 1, index] : [index, index + 1];\n  const panelSize = sizes[index];\n  return { ...panel, panelSize, pivotIndices };\n}\nfunction sortPanels(panels) {\n  return panels.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}\nfunction getPanelLayout(panels) {\n  return panels.map((panel) => panel.id).sort().join(\":\");\n}\nfunction serializePanels(panels) {\n  const keys = panels.map((panel) => panel.id);\n  const sortedKeys = keys.sort();\n  const serialized = sortedKeys.map((key) => {\n    const panel = panels.find((panel2) => panel2.id === key);\n    return JSON.stringify(panel);\n  });\n  return serialized.join(\",\");\n}\nfunction getPanelFlexBoxStyle({\n  size,\n  defaultSize,\n  dragState,\n  resolvedSizes,\n  panels,\n  panelIndex,\n  horizontal,\n  precision = 3\n}) {\n  const resolvedSize = resolvedSizes[panelIndex];\n  const layoutSize = size ?? defaultSize;\n  const panel = panels[panelIndex];\n  let flexGrow;\n  let flexBasis;\n  let flexShrink = 1;\n  const constraintAxis = horizontal ? \"Width\" : \"Height\";\n  const minSize = panel ? toCssPanelSize(panel.minSize) : void 0;\n  const maxSize = panel ? toCssPanelSize(panel.maxSize) : void 0;\n  const layoutCssSize = toCssPanelSize(layoutSize);\n  if (resolvedSize == null) {\n    if (layoutCssSize != null) {\n      if (layoutCssSize.endsWith(\"%\")) {\n        flexGrow = Number.parseFloat(layoutCssSize).toPrecision(precision);\n      } else {\n        flexBasis = getClampedFlexBasis({\n          basis: layoutCssSize,\n          minSize,\n          maxSize\n        });\n        flexGrow = \"0\";\n        flexShrink = 0;\n      }\n    } else {\n      flexGrow = \"1\";\n    }\n  } else if (panels.length === 1) {\n    flexGrow = \"1\";\n  } else {\n    flexGrow = resolvedSize.toPrecision(precision);\n  }\n  return {\n    flexBasis: flexBasis ?? 0,\n    flexGrow,\n    flexShrink,\n    ...minSize ? { [`min${constraintAxis}`]: minSize } : {},\n    ...maxSize ? { [`max${constraintAxis}`]: maxSize } : {},\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\" : void 0\n  };\n}\nfunction getClampedFlexBasis({\n  basis,\n  minSize,\n  maxSize\n}) {\n  return `clamp(${minSize ?? \"0%\"}, ${basis}, ${maxSize ?? \"100%\"})`;\n}\nfunction getUnsafeDefaultSize({ panels, size: sizes }) {\n  const finalSizes = Array(panels.length);\n  let numPanelsWithSizes = 0;\n  let remainingSize = 100;\n  for (let index = 0; index < panels.length; index++) {\n    const panel = panels[index];\n    ensure(panel, () => `Panel data not found for index ${index}`);\n    const defaultSize = sizes[index];\n    if (defaultSize != null) {\n      numPanelsWithSizes++;\n      finalSizes[index] = defaultSize;\n      remainingSize -= defaultSize;\n    }\n  }\n  for (let index = 0; index < panels.length; index++) {\n    const panel = panels[index];\n    ensure(panel, () => `Panel data not found for index ${index}`);\n    const defaultSize = sizes[index];\n    if (defaultSize != null) {\n      continue;\n    }\n    const numRemainingPanels = panels.length - numPanelsWithSizes;\n    const size = remainingSize / numRemainingPanels;\n    numPanelsWithSizes++;\n    finalSizes[index] = size;\n    remainingSize -= size;\n  }\n  return finalSizes;\n}\nexport {\n  findPanelDataIndex,\n  findPanelIndex,\n  getPanelById,\n  getPanelFlexBoxStyle,\n  getPanelLayout,\n  getUnsafeDefaultSize,\n  panelDataHelper,\n  serializePanels,\n  sortPanels\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/splitter.connect.ts\nimport { dataAttr, getEventKey, getEventPoint, isLeftClick } from \"@zag-js/dom-query\";\nimport { ensure } from \"@zag-js/utils\";\nimport { parts } from \"./splitter.anatomy.mjs\";\nimport * as dom from \"./splitter.dom.mjs\";\nimport { getAriaValue } from \"./utils/aria.mjs\";\nimport { fuzzyCompareNumbers, fuzzyNumbersEqual } from \"./utils/fuzzy.mjs\";\nimport { findPanelIndex, getPanelById, getPanelFlexBoxStyle, getPanelLayout, panelDataHelper } from \"./utils/panel.mjs\";\nimport { resolvePanelSizes } from \"./utils/size.mjs\";\nfunction connect(service, normalize) {\n  const { state, send, prop, computed, context, scope } = service;\n  const horizontal = computed(\"horizontal\");\n  const dragging = state.matches(\"dragging\");\n  const registry = prop(\"registry\");\n  const orientation = prop(\"orientation\");\n  const rawPanels = prop(\"panels\");\n  const panels = context.get(\"panels\");\n  const getResolvedSizes = () => {\n    const sizes = context.get(\"size\");\n    if (sizes.length > 0) return sizes;\n    return resolvePanelSizes({\n      sizes: prop(\"size\") ?? prop(\"defaultSize\"),\n      panels: rawPanels,\n      rootEl: null,\n      orientation\n    });\n  };\n  const getPanelStyle = (id) => {\n    const panelIndex = rawPanels.findIndex((panel) => panel.id === id);\n    const size = prop(\"size\")?.[panelIndex];\n    const defaultSize = prop(\"defaultSize\")?.[panelIndex];\n    const dragState = context.get(\"dragState\");\n    return getPanelFlexBoxStyle({\n      size,\n      defaultSize,\n      dragState,\n      resolvedSizes: context.get(\"size\"),\n      panels: rawPanels,\n      panelIndex,\n      horizontal\n    });\n  };\n  const resolveResizeTriggerId = (id) => {\n    const [beforeId, afterId] = id.split(\":\");\n    if (beforeId && afterId) return id;\n    if (beforeId) {\n      const index = rawPanels.findIndex((panel) => panel.id === beforeId);\n      const nextPanel = rawPanels[index + 1];\n      return nextPanel ? `${beforeId}:${nextPanel.id}` : id;\n    }\n    if (afterId) {\n      const index = rawPanels.findIndex((panel) => panel.id === afterId);\n      const prevPanel = rawPanels[index - 1];\n      return prevPanel ? `${prevPanel.id}:${afterId}` : id;\n    }\n    return id;\n  };\n  const getResizeTriggerState = (props) => {\n    const { id, disabled } = props;\n    const dragging2 = context.get(\"dragState\")?.resizeTriggerId === id;\n    const focused = dragging2 || state.matches(\"focused\") && context.get(\"keyboardState\")?.resizeTriggerId === id;\n    return {\n      dragging: dragging2,\n      focused,\n      disabled: !!disabled\n    };\n  };\n  return {\n    dragging,\n    orientation,\n    getPanels() {\n      return rawPanels;\n    },\n    getPanelById(id) {\n      return getPanelById(rawPanels, id);\n    },\n    getItems() {\n      return rawPanels.flatMap((panel, index, arr) => {\n        const nextPanel = arr[index + 1];\n        if (panel && nextPanel) {\n          return [\n            { type: \"panel\", id: panel.id },\n            { type: \"handle\", id: `${panel.id}:${nextPanel.id}` }\n          ];\n        }\n        return [{ type: \"panel\", id: panel.id }];\n      });\n    },\n    getSizes() {\n      return getResolvedSizes();\n    },\n    setSizes(size) {\n      send({ type: \"SIZE.SET\", size });\n    },\n    resetSizes() {\n      send({ type: \"SIZE.RESET\" });\n    },\n    collapsePanel(id) {\n      send({ type: \"PANEL.COLLAPSE\", id });\n    },\n    expandPanel(id, minSize) {\n      send({ type: \"PANEL.EXPAND\", id, minSize });\n    },\n    resizePanel(id, unsafePanelSize) {\n      send({ type: \"PANEL.RESIZE\", id, size: unsafePanelSize });\n    },\n    getPanelSize(id) {\n      const panels2 = context.get(\"panels\");\n      const size = getResolvedSizes();\n      const panelData = getPanelById(panels2, id);\n      const { panelSize } = panelDataHelper(panels2, panelData, size);\n      ensure(panelSize != null, () => `Panel size not found for panel \"${panelData.id}\"`);\n      return panelSize;\n    },\n    isPanelCollapsed(id) {\n      const panels2 = context.get(\"panels\");\n      const size = getResolvedSizes();\n      const panelData = getPanelById(panels2, id);\n      const { collapsedSize = 0, collapsible, panelSize } = panelDataHelper(panels2, panelData, size);\n      ensure(panelSize != null, () => `Panel size not found for panel \"${panelData.id}\"`);\n      return collapsible === true && fuzzyNumbersEqual(panelSize, collapsedSize);\n    },\n    isPanelExpanded(id) {\n      const panels2 = context.get(\"panels\");\n      const size = getResolvedSizes();\n      const panelData = getPanelById(panels2, id);\n      const { collapsedSize = 0, collapsible, panelSize } = panelDataHelper(panels2, panelData, size);\n      ensure(panelSize != null, () => `Panel size not found for panel \"${panelData.id}\"`);\n      return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;\n    },\n    getLayout() {\n      return getPanelLayout(prop(\"panels\"));\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        \"data-orientation\": orientation,\n        \"data-dragging\": dataAttr(dragging),\n        id: dom.getRootId(scope),\n        dir: prop(\"dir\"),\n        style: {\n          display: \"flex\",\n          flexDirection: horizontal ? \"row\" : \"column\",\n          height: \"100%\",\n          width: \"100%\",\n          overflow: \"hidden\"\n        }\n      });\n    },\n    getPanelProps(props) {\n      const { id } = props;\n      return normalize.element({\n        ...parts.panel.attrs,\n        \"data-orientation\": orientation,\n        \"data-dragging\": dataAttr(dragging),\n        dir: prop(\"dir\"),\n        \"data-id\": id,\n        \"data-index\": findPanelIndex(prop(\"panels\"), id),\n        id: dom.getPanelId(scope, id),\n        \"data-ownedby\": dom.getRootId(scope),\n        style: getPanelStyle(id)\n      });\n    },\n    getResizeTriggerState,\n    getResizeTriggerIndicator(props) {\n      const triggerState = getResizeTriggerState(props);\n      return normalize.element({\n        ...parts.resizeTriggerIndicator.attrs,\n        \"data-orientation\": orientation,\n        \"data-focus\": dataAttr(triggerState.focused),\n        \"data-dragging\": dataAttr(triggerState.dragging),\n        \"data-disabled\": dataAttr(triggerState.disabled),\n        \"data-ownedby\": dom.getRootId(scope)\n      });\n    },\n    getResizeTriggerProps(props) {\n      const { id } = props;\n      const triggerState = getResizeTriggerState(props);\n      const resolvedId = resolveResizeTriggerId(id);\n      const aria = getAriaValue(getResolvedSizes(), panels, resolvedId);\n      return normalize.element({\n        ...parts.resizeTrigger.attrs,\n        dir: prop(\"dir\"),\n        id: dom.getResizeTriggerId(scope, id),\n        role: \"separator\",\n        \"data-id\": id,\n        \"data-ownedby\": dom.getRootId(scope),\n        tabIndex: triggerState.disabled ? void 0 : 0,\n        \"aria-valuenow\": aria.valueNow,\n        \"aria-valuemin\": aria.valueMin,\n        \"aria-valuemax\": aria.valueMax,\n        \"data-orientation\": orientation,\n        \"aria-orientation\": orientation,\n        \"aria-controls\": aria.beforeId && aria.afterId ? `${dom.getPanelId(scope, aria.beforeId)} ${dom.getPanelId(scope, aria.afterId)}` : void 0,\n        \"data-focus\": dataAttr(triggerState.focused),\n        \"data-dragging\": dataAttr(triggerState.dragging),\n        \"data-disabled\": dataAttr(triggerState.disabled),\n        style: {\n          touchAction: \"none\",\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\",\n          flex: \"0 0 auto\",\n          pointerEvents: triggerState.disabled ? \"none\" : triggerState.dragging && !triggerState.focused ? \"none\" : void 0,\n          cursor: triggerState.disabled || registry ? void 0 : horizontal ? \"col-resize\" : \"row-resize\",\n          [horizontal ? \"minHeight\" : \"minWidth\"]: \"0\"\n        },\n        onPointerDown(event) {\n          if (!isLeftClick(event)) return;\n          if (triggerState.disabled) {\n            event.preventDefault();\n            return;\n          }\n          event.currentTarget.focus({ preventScroll: true });\n          if (registry) {\n            return;\n          }\n          const point = getEventPoint(event);\n          send({ type: \"POINTER_DOWN\", id, point });\n          event.currentTarget.setPointerCapture(event.pointerId);\n          event.preventDefault();\n          event.stopPropagation();\n        },\n        onPointerUp(event) {\n          if (triggerState.disabled) return;\n          if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n            event.currentTarget.releasePointerCapture(event.pointerId);\n          }\n        },\n        onPointerOver() {\n          if (triggerState.disabled || registry) return;\n          send({ type: \"POINTER_OVER\", id });\n        },\n        onPointerLeave() {\n          if (triggerState.disabled || registry) return;\n          send({ type: \"POINTER_LEAVE\", id });\n        },\n        onBlur() {\n          if (triggerState.disabled) return;\n          send({ type: \"BLUR\" });\n        },\n        onFocus() {\n          if (triggerState.disabled) return;\n          send({ type: \"FOCUS\", id });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (triggerState.disabled) return;\n          const keyboardResizeBy = prop(\"keyboardResizeBy\");\n          let delta = 0;\n          if (event.shiftKey) {\n            delta = 10;\n          } else if (keyboardResizeBy != null) {\n            delta = keyboardResizeBy;\n          } else {\n            delta = 1;\n          }\n          const keyMap = {\n            Enter() {\n              send({ type: \"ENTER\", id });\n            },\n            ArrowUp() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: horizontal ? 0 : -delta });\n            },\n            ArrowDown() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: horizontal ? 0 : delta });\n            },\n            ArrowLeft() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: horizontal ? -delta : 0 });\n            },\n            ArrowRight() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: horizontal ? delta : 0 });\n            },\n            Home() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: -100 });\n            },\n            End() {\n              send({ type: \"KEYBOARD_MOVE\", id, delta: 100 });\n            },\n            F6() {\n              send({ type: \"FOCUS.CYCLE\", id, shiftKey: event.shiftKey });\n            }\n          };\n          const key = getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation\n          });\n          const exec = keyMap[key];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    }\n  };\n}\nexport {\n  connect\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/resize-panel.ts\nimport { ensure } from \"@zag-js/utils\";\nimport { fuzzyCompareNumbers, PRECISION } from \"./fuzzy.mjs\";\nfunction resizePanel({ panels, index, size }) {\n  const panel = panels[index];\n  ensure(panel, () => `Panel data not found for index ${index}`);\n  let { collapsedSize = 0, collapsible, maxSize = 100, minSize = 0 } = panel;\n  if (fuzzyCompareNumbers(size, minSize) < 0) {\n    if (collapsible) {\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}\nexport {\n  resizePanel\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/resize-by-delta.ts\nimport { ensure } from \"@zag-js/utils\";\nimport { fuzzyCompareNumbers, fuzzySizeEqual, fuzzyNumbersEqual } from \"./fuzzy.mjs\";\nimport { resizePanel } from \"./resize-panel.mjs\";\nfunction resizeByDelta(props) {\n  let { delta, initialSize, panels, pivotIndices, prevSize, trigger } = props;\n  if (fuzzyNumbersEqual(delta, 0)) {\n    return initialSize;\n  }\n  const nextSize = [...initialSize];\n  const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n  ensure(firstPivotIndex, () => \"Invalid first pivot index\");\n  ensure(secondPivotIndex, () => \"Invalid second pivot index\");\n  let deltaApplied = 0;\n  {\n    if (trigger === \"keyboard\") {\n      {\n        const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n        const panel = panels[index];\n        ensure(panel, () => `Panel data not found for index ${index}`);\n        const { collapsedSize = 0, collapsible, minSize = 0 } = panel;\n        if (collapsible) {\n          const prevSize2 = initialSize[index];\n          ensure(prevSize2, () => `Previous size not found for panel index ${index}`);\n          if (fuzzyNumbersEqual(prevSize2, collapsedSize)) {\n            const localDelta = minSize - prevSize2;\n            if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n              delta = delta < 0 ? 0 - localDelta : localDelta;\n            }\n          }\n        }\n      }\n      {\n        const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n        const panel = panels[index];\n        ensure(panel, () => `No panel data found for index ${index}`);\n        const { collapsedSize = 0, collapsible, minSize = 0 } = panel;\n        if (collapsible) {\n          const prevSize2 = initialSize[index];\n          ensure(prevSize2, () => `Previous size not found for panel index ${index}`);\n          if (fuzzyNumbersEqual(prevSize2, minSize)) {\n            const localDelta = prevSize2 - collapsedSize;\n            if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n              delta = delta < 0 ? 0 - localDelta : localDelta;\n            }\n          }\n        }\n      }\n    }\n  }\n  {\n    const increment = delta < 0 ? 1 : -1;\n    let index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n    let maxAvailableDelta = 0;\n    while (true) {\n      const prevSize2 = initialSize[index];\n      ensure(prevSize2, () => `Previous size not found for panel index ${index}`);\n      const maxSafeSize = resizePanel({\n        panels,\n        index,\n        size: 100\n      });\n      const delta2 = maxSafeSize - prevSize2;\n      maxAvailableDelta += delta2;\n      index += increment;\n      if (index < 0 || index >= panels.length) {\n        break;\n      }\n    }\n    const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));\n    delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;\n  }\n  {\n    const pivotIndex = delta < 0 ? firstPivotIndex : secondPivotIndex;\n    let index = pivotIndex;\n    while (index >= 0 && index < panels.length) {\n      const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n      const prevSize2 = initialSize[index];\n      ensure(prevSize2, () => `Previous size not found for panel index ${index}`);\n      const unsafeSize = prevSize2 - deltaRemaining;\n      const safeSize = resizePanel({ panels, index, size: unsafeSize });\n      if (!fuzzyNumbersEqual(prevSize2, safeSize)) {\n        deltaApplied += prevSize2 - safeSize;\n        nextSize[index] = safeSize;\n        if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), void 0, {\n          numeric: true\n        }) >= 0) {\n          break;\n        }\n      }\n      if (delta < 0) {\n        index--;\n      } else {\n        index++;\n      }\n    }\n  }\n  if (fuzzySizeEqual(prevSize, nextSize)) {\n    return prevSize;\n  }\n  {\n    const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n    const prevSize2 = initialSize[pivotIndex];\n    ensure(prevSize2, () => `Previous size not found for panel index ${pivotIndex}`);\n    const unsafeSize = prevSize2 + deltaApplied;\n    const safeSize = resizePanel({ panels, index: pivotIndex, size: unsafeSize });\n    nextSize[pivotIndex] = safeSize;\n    if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {\n      let deltaRemaining = unsafeSize - safeSize;\n      const pivotIndex2 = delta < 0 ? secondPivotIndex : firstPivotIndex;\n      let index = pivotIndex2;\n      while (index >= 0 && index < panels.length) {\n        const prevSize3 = nextSize[index];\n        ensure(prevSize3, () => `Previous size not found for panel index ${index}`);\n        const unsafeSize2 = prevSize3 + deltaRemaining;\n        const safeSize2 = resizePanel({ panels, index, size: unsafeSize2 });\n        if (!fuzzyNumbersEqual(prevSize3, safeSize2)) {\n          deltaRemaining -= safeSize2 - prevSize3;\n          nextSize[index] = safeSize2;\n        }\n        if (fuzzyNumbersEqual(deltaRemaining, 0)) {\n          break;\n        }\n        if (delta > 0) {\n          index--;\n        } else {\n          index++;\n        }\n      }\n    }\n  }\n  const totalSize = nextSize.reduce((total, size) => size + total, 0);\n  if (!fuzzyNumbersEqual(totalSize, 100)) {\n    return prevSize;\n  }\n  return nextSize;\n}\nexport {\n  resizeByDelta\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/validate-sizes.ts\nimport { ensure } from \"@zag-js/utils\";\nimport { fuzzyNumbersEqual } from \"./fuzzy.mjs\";\nimport { resizePanel } from \"./resize-panel.mjs\";\nfunction validateSizes({ size: prevSize, panels }) {\n  const nextSize = [...prevSize];\n  const nextSizeTotalSize = nextSize.reduce((accumulated, current) => accumulated + current, 0);\n  if (nextSize.length !== panels.length) {\n    throw Error(`Invalid ${panels.length} panel size: ${nextSize.map((size) => `${size}%`).join(\", \")}`);\n  } else if (!fuzzyNumbersEqual(nextSizeTotalSize, 100) && nextSize.length > 0) {\n    for (let index = 0; index < panels.length; index++) {\n      const unsafeSize = nextSize[index];\n      ensure(unsafeSize, () => `No size data found for index ${index}`);\n      const safeSize = 100 / nextSizeTotalSize * unsafeSize;\n      nextSize[index] = safeSize;\n    }\n  }\n  let remainingSize = 0;\n  for (let index = 0; index < panels.length; index++) {\n    const unsafeSize = nextSize[index];\n    ensure(unsafeSize, () => `No size data found for index ${index}`);\n    const safeSize = resizePanel({ panels, index, size: unsafeSize });\n    if (unsafeSize != safeSize) {\n      remainingSize += unsafeSize - safeSize;\n      nextSize[index] = safeSize;\n    }\n  }\n  if (!fuzzyNumbersEqual(remainingSize, 0)) {\n    for (let index = 0; index < panels.length; index++) {\n      const prevSize2 = nextSize[index];\n      ensure(prevSize2, () => `No size data found for index ${index}`);\n      const unsafeSize = prevSize2 + remainingSize;\n      const safeSize = resizePanel({ panels, index, size: unsafeSize });\n      if (prevSize2 !== safeSize) {\n        remainingSize -= safeSize - prevSize2;\n        nextSize[index] = safeSize;\n        if (fuzzyNumbersEqual(remainingSize, 0)) {\n          break;\n        }\n      }\n    }\n  }\n  return nextSize;\n}\nexport {\n  validateSizes\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/splitter.machine.ts\nimport { createMachine } from \"@zag-js/core\";\nimport { observeChildren, resizeObserverBorderBox, trackPointerMove } from \"@zag-js/dom-query\";\nimport { ensure, ensureProps, isEqual, next, prev, setRafTimeout } from \"@zag-js/utils\";\nimport * as dom from \"./splitter.dom.mjs\";\nimport { getAriaValue } from \"./utils/aria.mjs\";\nimport { fuzzyNumbersEqual, fuzzySizeEqual } from \"./utils/fuzzy.mjs\";\nimport {\n  findPanelDataIndex,\n  getPanelById,\n  getPanelLayout,\n  panelDataHelper,\n  serializePanels,\n  sortPanels\n} from \"./utils/panel.mjs\";\nimport { preserveFixedPanelSizes } from \"./utils/preserve-fixed-panel-sizes.mjs\";\nimport { resizeByDelta } from \"./utils/resize-by-delta.mjs\";\nimport { getGroupSize, normalizePanels, resolvePanelSizes } from \"./utils/size.mjs\";\nimport { validateSizes } from \"./utils/validate-sizes.mjs\";\nvar machine = createMachine({\n  props({ props }) {\n    ensureProps(props, [\"panels\"]);\n    return {\n      orientation: \"horizontal\",\n      defaultSize: [],\n      dir: \"ltr\",\n      ...props,\n      panels: sortPanels(props.panels)\n    };\n  },\n  initialState() {\n    return \"idle\";\n  },\n  context({ prop, bindable, getContext, getRefs }) {\n    return {\n      panels: bindable(() => ({\n        defaultValue: normalizePanels(prop(\"panels\"), null, prop(\"orientation\"))\n      })),\n      size: bindable(() => ({\n        defaultValue: [],\n        isEqual(a, b) {\n          return b != null && fuzzySizeEqual(a, b);\n        },\n        onChange(value) {\n          const ctx = getContext();\n          const refs = getRefs();\n          if (refs.get(\"suppressOnResize\")) return;\n          const sizesBeforeCollapse = refs.get(\"panelSizeBeforeCollapse\");\n          const expandToSizes = Object.fromEntries(sizesBeforeCollapse.entries());\n          const resizeTriggerId = ctx.get(\"dragState\")?.resizeTriggerId ?? null;\n          const layout = getPanelLayout(prop(\"panels\"));\n          prop(\"onResize\")?.({\n            size: value,\n            layout,\n            resizeTriggerId,\n            expandToSizes\n          });\n        }\n      })),\n      dragState: bindable(() => ({\n        defaultValue: null\n      })),\n      keyboardState: bindable(() => ({\n        defaultValue: null\n      }))\n    };\n  },\n  watch({ track, action, prop }) {\n    track(\n      [\n        () => serializePanels(prop(\"panels\")),\n        () => JSON.stringify(prop(\"size\") ?? []),\n        () => JSON.stringify(prop(\"defaultSize\") ?? [])\n      ],\n      () => {\n        action([\"syncSize\"]);\n      }\n    );\n  },\n  refs() {\n    return {\n      panelSizeBeforeCollapse: /* @__PURE__ */ new Map(),\n      prevDelta: 0,\n      panelIdToLastNotifiedSizeMap: /* @__PURE__ */ new Map(),\n      initialSize: null,\n      prevInitialLayout: null,\n      prevGroupSize: null,\n      lastRequestedSize: null,\n      suppressOnResize: false\n    };\n  },\n  computed: {\n    horizontal({ prop }) {\n      return prop(\"orientation\") === \"horizontal\";\n    }\n  },\n  on: {\n    \"SIZE.SET\": {\n      actions: [\"setSize\"]\n    },\n    \"SIZE.RESET\": {\n      actions: [\"resetSize\"]\n    },\n    \"PANEL.COLLAPSE\": {\n      actions: [\"collapsePanel\"]\n    },\n    \"PANEL.EXPAND\": {\n      actions: [\"expandPanel\"]\n    },\n    \"PANEL.RESIZE\": {\n      actions: [\"resizePanel\"]\n    },\n    \"ROOT.RESIZE\": {\n      actions: [\"syncSize\"]\n    }\n  },\n  entry: [\"syncSize\"],\n  exit: [\"clearGlobalCursor\"],\n  effects: [\"trackResizeHandles\", \"trackRootResize\"],\n  states: {\n    idle: {\n      entry: [\"clearDraggingState\", \"clearKeyboardState\"],\n      on: {\n        POINTER_OVER: {\n          target: \"hover:temp\",\n          actions: [\"setKeyboardState\"]\n        },\n        FOCUS: {\n          target: \"focused\",\n          actions: [\"setKeyboardState\"]\n        },\n        POINTER_DOWN: {\n          target: \"dragging\",\n          actions: [\"setDraggingState\"]\n        }\n      }\n    },\n    \"hover:temp\": {\n      effects: [\"waitForHoverDelay\"],\n      on: {\n        HOVER_DELAY: {\n          target: \"hover\"\n        },\n        POINTER_DOWN: {\n          target: \"dragging\",\n          actions: [\"setDraggingState\"]\n        },\n        POINTER_LEAVE: {\n          target: \"idle\"\n        }\n      }\n    },\n    hover: {\n      tags: [\"focus\"],\n      on: {\n        POINTER_DOWN: {\n          target: \"dragging\",\n          actions: [\"setDraggingState\"]\n        },\n        POINTER_LEAVE: {\n          target: \"idle\"\n        }\n      }\n    },\n    focused: {\n      tags: [\"focus\"],\n      on: {\n        BLUR: {\n          target: \"idle\"\n        },\n        ENTER: {\n          actions: [\"collapseOrExpandPanel\"]\n        },\n        POINTER_DOWN: {\n          target: \"dragging\",\n          actions: [\"setDraggingState\"]\n        },\n        KEYBOARD_MOVE: {\n          actions: [\"invokeOnResizeStart\", \"setKeyboardValue\", \"invokeOnResizeEnd\"]\n        },\n        \"FOCUS.CYCLE\": {\n          actions: [\"focusNextResizeTrigger\"]\n        }\n      }\n    },\n    dragging: {\n      tags: [\"focus\"],\n      effects: [\"trackPointerMove\"],\n      entry: [\"invokeOnResizeStart\"],\n      on: {\n        POINTER_MOVE: {\n          actions: [\"setPointerValue\", \"setGlobalCursor\"]\n        },\n        POINTER_UP: [\n          {\n            guard: \"isResizeTriggerFocused\",\n            target: \"focused\",\n            actions: [\"invokeOnResizeEnd\", \"setKeyboardState\", \"clearDraggingState\", \"clearGlobalCursor\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnResizeEnd\", \"clearGlobalCursor\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      isResizeTriggerFocused({ context, scope }) {\n        const dragState = context.get(\"dragState\");\n        return scope.isActiveElement(dom.getResizeTriggerEl(scope, dragState?.resizeTriggerId));\n      }\n    },\n    effects: {\n      trackResizeHandles: ({ prop, scope, send }) => {\n        const registry = prop(\"registry\");\n        if (!registry) return;\n        let cleanups = [];\n        const exec = () => {\n          cleanups.forEach((fn) => fn());\n          cleanups = dom.getResizeTriggerEls(scope).map((resizeTriggerEl) => {\n            const id = resizeTriggerEl.dataset.id;\n            if (!id) return;\n            return registry.register({\n              id: dom.getResizeTriggerId(scope, id),\n              element: resizeTriggerEl,\n              orientation: prop(\"orientation\"),\n              onActivate(point) {\n                send({ type: \"POINTER_DOWN\", id, point });\n              },\n              onDeactivate() {\n                send({ type: \"POINTER_UP\" });\n              }\n            });\n          }).filter(Boolean);\n        };\n        exec();\n        const observeCleanup = observeChildren(dom.getRootEl(scope), {\n          callback: exec\n        });\n        return () => {\n          cleanups.forEach((fn) => fn());\n          observeCleanup?.();\n        };\n      },\n      trackRootResize: ({ scope, send }) => {\n        const rootEl = dom.getRootEl(scope);\n        if (!rootEl) return;\n        return resizeObserverBorderBox.observe(rootEl, () => {\n          send({ type: \"ROOT.RESIZE\" });\n        });\n      },\n      waitForHoverDelay: ({ send }) => {\n        return setRafTimeout(() => {\n          send({ type: \"HOVER_DELAY\" });\n        }, 250);\n      },\n      trackPointerMove: ({ scope, send }) => {\n        const doc = scope.getDoc();\n        return trackPointerMove(doc, {\n          onPointerMove(info) {\n            send({ type: \"POINTER_MOVE\", point: info.point });\n          },\n          onPointerUp() {\n            send({ type: \"POINTER_UP\" });\n          }\n        });\n      }\n    },\n    actions: {\n      setSize(params) {\n        const { context, event, prop, scope } = params;\n        const unsafeSize = event.size;\n        const prevSize = context.get(\"size\");\n        const panels = context.get(\"panels\");\n        const safeSize = validateSizes({\n          size: resolvePanelSizes({\n            sizes: unsafeSize,\n            panels: prop(\"panels\"),\n            rootEl: dom.getRootEl(scope),\n            orientation: prop(\"orientation\")\n          }),\n          panels\n        });\n        if (!isEqual(prevSize, safeSize)) {\n          setSize(params, safeSize);\n        }\n      },\n      resetSize(params) {\n        const { refs, context, prop, scope } = params;\n        const initialSize = refs.get(\"initialSize\");\n        const nextSize = initialSize ?? validateSizes({\n          size: resolvePanelSizes({\n            sizes: prop(\"size\") ?? prop(\"defaultSize\"),\n            panels: prop(\"panels\"),\n            rootEl: dom.getRootEl(scope),\n            orientation: prop(\"orientation\")\n          }),\n          panels: context.get(\"panels\")\n        });\n        setSize(params, nextSize);\n      },\n      syncSize(params) {\n        const { context, scope, prop, refs } = params;\n        const rootEl = dom.getRootEl(scope);\n        if (!rootEl) return;\n        const orientation = prop(\"orientation\");\n        const nextGroupSize = getGroupSize(rootEl, orientation);\n        if (nextGroupSize <= 0) return;\n        const panels = normalizePanels(prop(\"panels\"), rootEl, prop(\"orientation\"));\n        context.set(\"panels\", panels);\n        const sizeSpec = prop(\"size\") ?? prop(\"defaultSize\");\n        const initialLayout = `${getPanelLayout(prop(\"panels\"))}:${JSON.stringify(prop(\"size\") ?? [])}:${JSON.stringify(prop(\"defaultSize\") ?? [])}`;\n        const prevGroupSize = refs.get(\"prevGroupSize\");\n        const currentSize = context.get(\"size\");\n        const nextResolvedSize = resolvePanelSizes({\n          sizes: sizeSpec,\n          panels: prop(\"panels\"),\n          rootEl,\n          orientation\n        });\n        const canPreserveLayout = prevGroupSize != null && prevGroupSize !== nextGroupSize && currentSize.length === panels.length;\n        const nextSize = canPreserveLayout ? preserveFixedPanelSizes({\n          panels,\n          prevLayout: currentSize,\n          prevGroupSize,\n          nextGroupSize\n        }) : nextResolvedSize;\n        const safeSize = validateSizes({\n          size: nextSize,\n          panels\n        });\n        if (refs.get(\"prevInitialLayout\") !== initialLayout) {\n          refs.set(\"initialSize\", safeSize);\n          refs.set(\"prevInitialLayout\", initialLayout);\n        }\n        const prevSize = context.get(\"size\");\n        if (!isEqual(prevSize, safeSize)) {\n          refs.set(\"suppressOnResize\", prop(\"size\") != null || prevSize.length === 0);\n          context.set(\"size\", safeSize);\n          refs.set(\"suppressOnResize\", false);\n        }\n        refs.set(\"prevGroupSize\", nextGroupSize);\n      },\n      setDraggingState({ context, event, prop, scope }) {\n        const orientation = prop(\"orientation\");\n        const size = context.get(\"size\");\n        const resizeTriggerId = event.id;\n        const resolvedResizeTriggerId = dom.resolveResizeTriggerId(scope, resizeTriggerId);\n        if (!resolvedResizeTriggerId) return;\n        const panelGroupEl = dom.getRootEl(scope);\n        if (!panelGroupEl) return;\n        const handleElement = dom.getResizeTriggerEl(scope, resizeTriggerId);\n        ensure(handleElement, () => `Drag handle element not found for id \"${resizeTriggerId}\"`);\n        const initialCursorPosition = orientation === \"horizontal\" ? event.point.x : event.point.y;\n        context.set(\"dragState\", {\n          resizeTriggerId: event.id,\n          resolvedResizeTriggerId,\n          resizeTriggerRect: handleElement.getBoundingClientRect(),\n          initialCursorPosition,\n          initialSize: size\n        });\n      },\n      clearDraggingState({ context }) {\n        context.set(\"dragState\", null);\n      },\n      setKeyboardState({ context, event, scope }) {\n        const id = event.id ?? context.get(\"dragState\")?.resizeTriggerId;\n        if (id == null) return;\n        context.set(\"keyboardState\", {\n          resizeTriggerId: id,\n          resolvedResizeTriggerId: dom.resolveResizeTriggerId(scope, id)\n        });\n      },\n      clearKeyboardState({ context }) {\n        context.set(\"keyboardState\", null);\n      },\n      collapsePanel(params) {\n        const { context, event, refs } = params;\n        const prevSize = context.get(\"size\");\n        const panels = context.get(\"panels\");\n        const panel = panels.find((panel2) => panel2.id === event.id);\n        ensure(panel, () => `Panel data not found for id \"${event.id}\"`);\n        if (panel.collapsible) {\n          const { collapsedSize = 0, panelSize, pivotIndices } = panelDataHelper(panels, panel, prevSize);\n          ensure(panelSize != null, () => `Panel size not found for panel \"${panel.id}\"`);\n          if (!fuzzyNumbersEqual(panelSize, collapsedSize)) {\n            refs.get(\"panelSizeBeforeCollapse\").set(panel.id, panelSize);\n            const isLastPanel = findPanelDataIndex(panels, panel) === panels.length - 1;\n            const delta = isLastPanel ? panelSize - collapsedSize : collapsedSize - panelSize;\n            const nextSize = resizeByDelta({\n              delta,\n              initialSize: prevSize,\n              panels,\n              pivotIndices,\n              prevSize,\n              trigger: \"imperative-api\"\n            });\n            if (!isEqual(prevSize, nextSize)) {\n              setSize(params, nextSize);\n            }\n          }\n        }\n      },\n      expandPanel(params) {\n        const { context, event, refs } = params;\n        const panels = context.get(\"panels\");\n        const prevSize = context.get(\"size\");\n        const panel = panels.find((panel2) => panel2.id === event.id);\n        ensure(panel, () => `Panel data not found for id \"${event.id}\"`);\n        if (panel.collapsible) {\n          const {\n            collapsedSize = 0,\n            panelSize = 0,\n            minSize: minSizeFromProps = 0,\n            pivotIndices\n          } = panelDataHelper(panels, panel, prevSize);\n          const minSize = event.minSize ?? minSizeFromProps;\n          if (fuzzyNumbersEqual(panelSize, collapsedSize)) {\n            const prevPanelSize = refs.get(\"panelSizeBeforeCollapse\").get(panel.id);\n            const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;\n            const isLastPanel = findPanelDataIndex(panels, panel) === panels.length - 1;\n            const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize;\n            const nextSize = resizeByDelta({\n              delta,\n              initialSize: prevSize,\n              panels,\n              pivotIndices,\n              prevSize,\n              trigger: \"imperative-api\"\n            });\n            if (!isEqual(prevSize, nextSize)) {\n              setSize(params, nextSize);\n            }\n          }\n        }\n      },\n      resizePanel(params) {\n        const { context, event } = params;\n        const prevSize = context.get(\"size\");\n        const panels = context.get(\"panels\");\n        const panel = getPanelById(panels, event.id);\n        const unsafePanelSize = event.size;\n        const { panelSize, pivotIndices } = panelDataHelper(panels, panel, prevSize);\n        ensure(panelSize != null, () => `Panel size not found for panel \"${panel.id}\"`);\n        const isLastPanel = findPanelDataIndex(panels, panel) === panels.length - 1;\n        const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n        const nextSize = resizeByDelta({\n          delta,\n          initialSize: prevSize,\n          panels,\n          pivotIndices,\n          prevSize,\n          trigger: \"imperative-api\"\n        });\n        if (!isEqual(prevSize, nextSize)) {\n          setSize(params, nextSize);\n        }\n      },\n      setPointerValue(params) {\n        const { context, event, prop, scope } = params;\n        const dragState = context.get(\"dragState\");\n        if (!dragState) return;\n        const { resolvedResizeTriggerId, initialSize, initialCursorPosition } = dragState;\n        const panels = context.get(\"panels\");\n        const panelGroupElement = dom.getRootEl(scope);\n        ensure(panelGroupElement, () => `Panel group element not found`);\n        const pivotIndices = resolvedResizeTriggerId.split(\":\").map((id) => panels.findIndex((panel) => panel.id === id));\n        const horizontal = prop(\"orientation\") === \"horizontal\";\n        const cursorPosition = horizontal ? event.point.x : event.point.y;\n        const groupRect = panelGroupElement.getBoundingClientRect();\n        const groupSizeInPixels = horizontal ? groupRect.width : groupRect.height;\n        const offsetPixels = cursorPosition - initialCursorPosition;\n        const offsetPercentage = offsetPixels / groupSizeInPixels * 100;\n        const prevSize = context.get(\"size\");\n        const nextSize = resizeByDelta({\n          delta: offsetPercentage,\n          initialSize: initialSize ?? prevSize,\n          panels,\n          pivotIndices,\n          prevSize,\n          trigger: \"mouse-or-touch\"\n        });\n        if (!isEqual(prevSize, nextSize)) {\n          setSize(params, nextSize);\n        }\n      },\n      setKeyboardValue(params) {\n        const { context, event } = params;\n        const panelDataArray = context.get(\"panels\");\n        const resizeTriggerId = dom.resolveResizeTriggerId(params.scope, event.id);\n        if (!resizeTriggerId) return;\n        const delta = event.delta;\n        const pivotIndices = resizeTriggerId.split(\":\").map((id) => panelDataArray.findIndex((panelData) => panelData.id === id));\n        const prevSize = context.get(\"size\");\n        const nextSize = resizeByDelta({\n          delta,\n          initialSize: prevSize,\n          panels: panelDataArray,\n          pivotIndices,\n          prevSize,\n          trigger: \"keyboard\"\n        });\n        if (!isEqual(prevSize, nextSize)) {\n          setSize(params, nextSize);\n        }\n      },\n      invokeOnResizeEnd({ context, prop, refs }) {\n        queueMicrotask(() => {\n          const dragState = context.get(\"dragState\");\n          prop(\"onResizeEnd\")?.({\n            size: refs.get(\"lastRequestedSize\") ?? context.get(\"size\"),\n            resizeTriggerId: dragState?.resizeTriggerId ?? null\n          });\n        });\n      },\n      invokeOnResizeStart({ prop }) {\n        queueMicrotask(() => {\n          prop(\"onResizeStart\")?.();\n        });\n      },\n      collapseOrExpandPanel(params) {\n        const { context, refs } = params;\n        const panelDataArray = context.get(\"panels\");\n        const sizes = context.get(\"size\");\n        const resizeTriggerId = context.get(\"keyboardState\")?.resolvedResizeTriggerId;\n        const [idBefore, idAfter] = resizeTriggerId?.split(\":\") ?? [];\n        const index = panelDataArray.findIndex((panelData2) => panelData2.id === idBefore);\n        if (index === -1) return;\n        const panelData = panelDataArray[index];\n        ensure(panelData, () => `No panel data found for index ${index}`);\n        const size = sizes[index];\n        const { collapsedSize = 0, collapsible, minSize = 0 } = panelData;\n        if (size != null && collapsible) {\n          const pivotIndices = [idBefore, idAfter].map(\n            (id) => panelDataArray.findIndex((panelData2) => panelData2.id === id)\n          );\n          const nextSize = resizeByDelta({\n            delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,\n            initialSize: refs.get(\"initialSize\") ?? sizes,\n            panels: panelDataArray,\n            pivotIndices,\n            prevSize: sizes,\n            trigger: \"keyboard\"\n          });\n          if (!isEqual(sizes, nextSize)) {\n            setSize(params, nextSize);\n          }\n        }\n      },\n      setGlobalCursor(params) {\n        const { context, scope, prop } = params;\n        const registry = prop(\"registry\");\n        if (registry) return;\n        const dragState = context.get(\"dragState\");\n        if (!dragState) return;\n        const panels = context.get(\"panels\");\n        const horizontal = prop(\"orientation\") === \"horizontal\";\n        const [idBefore] = dragState.resolvedResizeTriggerId.split(\":\");\n        const indexBefore = panels.findIndex((panel2) => panel2.id === idBefore);\n        const panel = panels[indexBefore];\n        const size = context.get(\"size\");\n        const aria = getAriaValue(size, panels, dragState.resolvedResizeTriggerId);\n        const isAtMin = fuzzyNumbersEqual(aria.valueNow, aria.valueMin) || fuzzyNumbersEqual(aria.valueNow, panel.collapsedSize);\n        const isAtMax = fuzzyNumbersEqual(aria.valueNow, aria.valueMax);\n        const cursorState = { isAtMin, isAtMax };\n        dom.setupGlobalCursor(scope, cursorState, horizontal, prop(\"nonce\"));\n      },\n      clearGlobalCursor({ scope }) {\n        dom.removeGlobalCursor(scope);\n      },\n      focusNextResizeTrigger({ event, scope }) {\n        const resizeTriggers = dom.getResizeTriggerEls(scope);\n        const index = resizeTriggers.findIndex((el) => el.dataset.id === event.id);\n        const handleEl = event.shiftKey ? prev(resizeTriggers, index) : next(resizeTriggers, index);\n        handleEl?.focus();\n      }\n    }\n  }\n});\nfunction setSize(params, sizes) {\n  const { refs, prop, context } = params;\n  const panelsArray = context.get(\"panels\");\n  const onCollapse = prop(\"onCollapse\");\n  const onExpand = prop(\"onExpand\");\n  const onResize = prop(\"onResize\");\n  const onResizeStart = prop(\"onResizeStart\");\n  const onResizeEnd = prop(\"onResizeEnd\");\n  const panelIdToLastNotifiedSizeMap = refs.get(\"panelIdToLastNotifiedSizeMap\");\n  const dragState = context.get(\"dragState\");\n  const keyboardState = context.get(\"keyboardState\");\n  const isProgrammatic = dragState === null && keyboardState === null;\n  refs.set(\"lastRequestedSize\", sizes);\n  if (isProgrammatic && onResizeStart) {\n    queueMicrotask(() => {\n      onResizeStart();\n    });\n  }\n  if (prop(\"size\") == null) {\n    context.set(\"size\", sizes);\n  } else if (onResize) {\n    const sizesBeforeCollapse = refs.get(\"panelSizeBeforeCollapse\");\n    const expandToSizes = Object.fromEntries(sizesBeforeCollapse.entries());\n    const resizeTriggerId = dragState?.resizeTriggerId ?? null;\n    const layout = getPanelLayout(prop(\"panels\"));\n    onResize({\n      size: sizes,\n      layout,\n      resizeTriggerId,\n      expandToSizes\n    });\n  }\n  sizes.forEach((size, index) => {\n    const panelData = panelsArray[index];\n    ensure(panelData, () => `Panel data not found for index ${index}`);\n    const { collapsedSize = 0, collapsible, id: panelId } = panelData;\n    const lastNotifiedSize = panelIdToLastNotifiedSizeMap.get(panelId);\n    if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n      panelIdToLastNotifiedSizeMap.set(panelId, size);\n      if (collapsible && lastNotifiedSize != null && (onCollapse || onExpand)) {\n        if (fuzzyNumbersEqual(lastNotifiedSize, collapsedSize) && !fuzzyNumbersEqual(size, collapsedSize)) {\n          onExpand?.({ panelId, size });\n        }\n        if (!fuzzyNumbersEqual(lastNotifiedSize, collapsedSize) && fuzzyNumbersEqual(size, collapsedSize)) {\n          onCollapse?.({ panelId, size });\n        }\n      }\n    }\n  });\n  if (isProgrammatic && onResizeEnd) {\n    queueMicrotask(() => {\n      onResizeEnd({\n        size: sizes,\n        resizeTriggerId: null\n        // Programmatic changes don't have a resize trigger\n      });\n    });\n  }\n}\nexport {\n  machine\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/preserve-fixed-panel-sizes.ts\nimport { fuzzyNumbersEqual } from \"./fuzzy.mjs\";\nfunction preserveFixedPanelSizes({\n  panels,\n  prevLayout,\n  prevGroupSize,\n  nextGroupSize\n}) {\n  if (prevGroupSize <= 0 || nextGroupSize <= 0) {\n    return prevLayout;\n  }\n  const nextLayout = [...prevLayout];\n  const relativeIndices = [];\n  let fixedTotal = 0;\n  let relativeTotal = 0;\n  panels.forEach((panel, index) => {\n    if (panel.resizeBehavior === \"preserve-pixel-size\") {\n      const prevPixelSize = prevLayout[index] / 100 * prevGroupSize;\n      const nextPercentSize = prevPixelSize / nextGroupSize * 100;\n      nextLayout[index] = nextPercentSize;\n      fixedTotal += nextPercentSize;\n    } else {\n      relativeIndices.push(index);\n      relativeTotal += prevLayout[index];\n    }\n  });\n  if (relativeIndices.length === 0) {\n    const total2 = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n    if (fuzzyNumbersEqual(total2, 100)) {\n      return nextLayout;\n    }\n    if (total2 <= 0) {\n      return prevLayout;\n    }\n    const scale2 = 100 / total2;\n    return nextLayout.map((size) => size * scale2);\n  }\n  const remainingSize = 100 - fixedTotal;\n  if (remainingSize <= 0) {\n    const total2 = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n    if (fuzzyNumbersEqual(total2, 100)) {\n      return nextLayout;\n    }\n    const scale2 = 100 / Math.max(total2, 1);\n    return nextLayout.map((size) => size * scale2);\n  }\n  if (fuzzyNumbersEqual(relativeTotal, 0)) {\n    const size = remainingSize / relativeIndices.length;\n    relativeIndices.forEach((index) => {\n      nextLayout[index] = size;\n    });\n    return nextLayout;\n  }\n  relativeIndices.forEach((index) => {\n    nextLayout[index] = prevLayout[index] / relativeTotal * remainingSize;\n  });\n  const total = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n  if (fuzzyNumbersEqual(total, 100)) {\n    return nextLayout;\n  }\n  const scale = 100 / total;\n  return nextLayout.map((size) => size * scale);\n}\nexport {\n  preserveFixedPanelSizes\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/splitter.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n  \"dir\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"onResize\",\n  \"onResizeStart\",\n  \"onResizeEnd\",\n  \"onCollapse\",\n  \"onExpand\",\n  \"orientation\",\n  \"size\",\n  \"defaultSize\",\n  \"panels\",\n  \"keyboardResizeBy\",\n  \"nonce\",\n  \"registry\"\n]);\nvar splitProps = createSplitProps(props);\nvar panelProps = createProps()([\"id\"]);\nvar splitPanelProps = createSplitProps(panelProps);\nvar resizeTriggerProps = createProps()([\"disabled\", \"id\"]);\nvar splitResizeTriggerProps = createSplitProps(resizeTriggerProps);\nexport {\n  panelProps,\n  props,\n  resizeTriggerProps,\n  splitPanelProps,\n  splitProps,\n  splitResizeTriggerProps\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/intersects.ts\nfunction intersects(r1, r2, strict = false) {\n  if (strict) {\n    return r1.x < r2.x + r2.width && r1.x + r1.width > r2.x && r1.y < r2.y + r2.height && r1.y + r1.height > r2.y;\n  }\n  return r1.x <= r2.x + r2.width && r1.x + r1.width >= r2.x && r1.y <= r2.y + r2.height && r1.y + r1.height >= r2.y;\n}\nfunction toRect(r) {\n  return { x: r.x, y: r.y, width: r.width, height: r.height };\n}\nexport {\n  intersects,\n  toRect\n};\n","import \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/stacking-order.ts\nimport { getAncestorElements, getComputedStyle, getParentElement } from \"@zag-js/dom-query\";\nimport { ensure, hasProp } from \"@zag-js/utils\";\nfunction compareStackingOrder(a, b) {\n  if (a === b) throw new Error(\"Cannot compare node with itself\");\n  const ancestors = {\n    a: getAncestorElements(a),\n    b: getAncestorElements(b)\n  };\n  let commonAncestor = null;\n  while (ancestors.a.at(-1) === ancestors.b.at(-1)) {\n    const currentA = ancestors.a.pop();\n    ancestors.b.pop();\n    commonAncestor = currentA;\n  }\n  ensure(\n    commonAncestor,\n    () => \"[stacking-order] Stacking order can only be calculated for elements with a common ancestor\"\n  );\n  const zIndexes = {\n    a: getZIndex(findStackingContext(ancestors.a)),\n    b: getZIndex(findStackingContext(ancestors.b))\n  };\n  if (zIndexes.a === zIndexes.b) {\n    const children = commonAncestor.childNodes;\n    const furthestAncestors = {\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 === furthestAncestors.a) return 1;\n      if (child === furthestAncestors.b) return -1;\n    }\n  }\n  return Math.sign(zIndexes.a - zIndexes.b);\n}\nvar STACKING_PROPS_REGEX = /\\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\\b/;\nfunction isFlexItem(node) {\n  const parent = getParentElement(node);\n  const display = getComputedStyle(parent ?? node).display;\n  return display === \"flex\" || display === \"inline-flex\";\n}\nfunction createsStackingContext(node) {\n  const style = getComputedStyle(node);\n  if (style.position === \"fixed\") return true;\n  if (style.zIndex !== \"auto\" && (style.position !== \"static\" || isFlexItem(node))) return true;\n  if (+style.opacity < 1) return true;\n  if (hasProp(style, \"transform\") && style.transform !== \"none\") return true;\n  if (hasProp(style, \"webkitTransform\") && style.webkitTransform !== \"none\") return true;\n  if (hasProp(style, \"mixBlendMode\") && style.mixBlendMode !== \"normal\") return true;\n  if (hasProp(style, \"filter\") && style.filter !== \"none\") return true;\n  if (hasProp(style, \"webkitFilter\") && style.webkitFilter !== \"none\") return true;\n  if (hasProp(style, \"isolation\") && style.isolation === \"isolate\") return true;\n  if (STACKING_PROPS_REGEX.test(style.willChange)) return true;\n  if (style.webkitOverflowScrolling === \"touch\") return true;\n  return false;\n}\nfunction findStackingContext(nodes) {\n  let i = nodes.length;\n  while (i--) {\n    const node = nodes[i];\n    ensure(node, () => \"[stacking-order] missing node in findStackingContext\");\n    if (createsStackingContext(node)) return node;\n  }\n  return null;\n}\nvar getZIndex = (node) => {\n  return node && Number(getComputedStyle(node).zIndex) || 0;\n};\nexport {\n  compareStackingOrder\n};\n","import {\n  __publicField\n} from \"../chunk-QZ7TP4HQ.mjs\";\n\n// src/utils/registry.ts\nimport { contains, getDocument, getParentElement, isElement } from \"@zag-js/dom-query\";\nimport { intersects, toRect } from \"./intersects.mjs\";\nimport { compareStackingOrder } from \"./stacking-order.mjs\";\nvar SplitterRegistry = class {\n  constructor(options = {}) {\n    __publicField(this, \"handles\", /* @__PURE__ */ new Map());\n    __publicField(this, \"state\", {\n      activeHandleIds: /* @__PURE__ */ new Set(),\n      isPointerDown: false\n    });\n    __publicField(this, \"listenerAttached\", false);\n    __publicField(this, \"options\");\n    __publicField(this, \"handlePointerMove\", (event) => {\n      if (this.state.isPointerDown) return;\n      const pointerType = this.getPointerType(event);\n      const intersecting = this.findHitHandles(event.clientX, event.clientY, pointerType);\n      const newActiveIds = new Set(intersecting.map((h) => h.id));\n      const changed = newActiveIds.size !== this.state.activeHandleIds.size || [...newActiveIds].some((id) => !this.state.activeHandleIds.has(id));\n      if (changed) {\n        this.state.activeHandleIds = newActiveIds;\n        this.updateCursor(intersecting);\n      }\n    });\n    __publicField(this, \"handlePointerDown\", (event) => {\n      const pointerType = this.getPointerType(event);\n      const intersecting = this.findIntersectingHandles(event.clientX, event.clientY, pointerType, event.target);\n      if (intersecting.length > 0) {\n        this.state.isPointerDown = true;\n        this.state.activeHandleIds = new Set(intersecting.map((h) => h.id));\n        const point = { x: event.clientX, y: event.clientY };\n        intersecting.forEach((handle) => {\n          handle.onActivate(point);\n        });\n        this.updateCursor(intersecting);\n      }\n    });\n    __publicField(this, \"handlePointerUp\", (_event) => {\n      if (this.state.isPointerDown) {\n        this.state.isPointerDown = false;\n        this.handles.forEach((handle) => {\n          if (this.state.activeHandleIds.has(handle.id)) {\n            handle.onDeactivate();\n          }\n        });\n        this.state.activeHandleIds.clear();\n        this.clearGlobalCursor();\n      }\n    });\n    __publicField(this, \"globalCursorId\", \"splitter-registry-cursor\");\n    this.options = {\n      nonce: options.nonce ?? \"\",\n      hitAreaMargins: {\n        coarse: options.hitAreaMargins?.coarse ?? 15,\n        fine: options.hitAreaMargins?.fine ?? 5\n      }\n    };\n  }\n  register(data) {\n    this.handles.set(data.id, data);\n    this.attachGlobalListeners();\n    return () => {\n      this.handles.delete(data.id);\n      this.state.activeHandleIds.delete(data.id);\n      if (this.handles.size === 0) {\n        this.detachGlobalListeners();\n      }\n    };\n  }\n  attachGlobalListeners() {\n    if (this.listenerAttached) return;\n    this.doc.addEventListener(\"pointermove\", this.handlePointerMove, true);\n    this.doc.addEventListener(\"pointerdown\", this.handlePointerDown, true);\n    this.doc.addEventListener(\"pointerup\", this.handlePointerUp, true);\n    this.listenerAttached = true;\n  }\n  detachGlobalListeners() {\n    if (!this.listenerAttached) return;\n    this.doc.removeEventListener(\"pointermove\", this.handlePointerMove, true);\n    this.doc.removeEventListener(\"pointerdown\", this.handlePointerDown, true);\n    this.doc.removeEventListener(\"pointerup\", this.handlePointerUp, true);\n    this.listenerAttached = false;\n  }\n  getPointerType(event) {\n    return event.pointerType === \"touch\" || event.pointerType === \"pen\" ? \"coarse\" : \"fine\";\n  }\n  get doc() {\n    const firstHandle = this.handles.values().next().value;\n    return getDocument(firstHandle?.element);\n  }\n  /**\n   * Fast hit-test: only checks pointer proximity to handles (no stacking order).\n   * Used for pointermove cursor feedback.\n   */\n  findHitHandles(x, y, pointerType) {\n    const intersecting = [];\n    const margin = this.options.hitAreaMargins[pointerType];\n    this.handles.forEach((handle) => {\n      const rect = handle.element.getBoundingClientRect();\n      const hit = x >= rect.left - margin && x <= rect.right + margin && y >= rect.top - margin && y <= rect.bottom + margin;\n      if (hit) intersecting.push(handle);\n    });\n    return intersecting;\n  }\n  /**\n   * Full intersection check: hit-test + stacking order verification.\n   * Used for pointerdown activation where correctness matters.\n   */\n  findIntersectingHandles(x, y, pointerType, eventTarget) {\n    const hits = this.findHitHandles(x, y, pointerType);\n    const targetElement = isElement(eventTarget) ? eventTarget : null;\n    if (!targetElement || !contains(this.doc, targetElement)) return hits;\n    return hits.filter((handle) => {\n      const dragHandleElement = handle.element;\n      if (targetElement === dragHandleElement || contains(dragHandleElement, targetElement) || contains(targetElement, dragHandleElement)) {\n        return true;\n      }\n      try {\n        if (compareStackingOrder(targetElement, dragHandleElement) > 0) {\n          const dragHandleRect = dragHandleElement.getBoundingClientRect();\n          let currentElement = targetElement;\n          while (currentElement) {\n            if (currentElement.contains(dragHandleElement)) break;\n            const currentRect = currentElement.getBoundingClientRect();\n            if (intersects(toRect(currentRect), toRect(dragHandleRect), true)) {\n              return false;\n            }\n            currentElement = getParentElement(currentElement);\n          }\n        }\n      } catch {\n      }\n      return true;\n    });\n  }\n  updateCursor(intersecting) {\n    if (intersecting.length === 0) {\n      this.clearGlobalCursor();\n      return;\n    }\n    const hasHorizontal = intersecting.some((h) => h.orientation === \"horizontal\");\n    const hasVertical = intersecting.some((h) => h.orientation === \"vertical\");\n    let cursor = \"default\";\n    if (hasHorizontal && hasVertical) {\n      cursor = \"move\";\n    } else if (hasHorizontal) {\n      cursor = \"ew-resize\";\n    } else if (hasVertical) {\n      cursor = \"ns-resize\";\n    }\n    this.setGlobalCursor(cursor);\n  }\n  setGlobalCursor(cursor) {\n    const doc = this.doc;\n    let styleEl = doc.getElementById(this.globalCursorId);\n    const textContent = `* { cursor: ${cursor} !important; }`;\n    if (styleEl) {\n      styleEl.textContent = textContent;\n    } else {\n      styleEl = doc.createElement(\"style\");\n      styleEl.id = this.globalCursorId;\n      styleEl.textContent = textContent;\n      if (this.options.nonce) {\n        styleEl.nonce = this.options.nonce;\n      }\n      doc.head.appendChild(styleEl);\n    }\n  }\n  clearGlobalCursor() {\n    const styleEl = this.doc.getElementById(this.globalCursorId);\n    styleEl?.remove();\n  }\n};\nvar registry = (opts = {}) => new SplitterRegistry(opts);\nexport {\n  SplitterRegistry,\n  registry\n};\n"]}