{"version":3,"file":"MoveExperiment.vue_vue_type_script_setup_true_lang-DOeRNw4o.js","sources":["../../node_modules/reka-ui/dist/utils/style.js","../../node_modules/reka-ui/dist/utils/events.js","../../node_modules/reka-ui/dist/utils/assert.js","../../node_modules/reka-ui/dist/utils/stackingOrder.js","../../node_modules/reka-ui/dist/utils/registry.js","../../node_modules/reka-ui/dist/utils/rects.js","../../node_modules/reka-ui/dist/utils/compare.js","../../node_modules/reka-ui/dist/utils/constants.js","../../node_modules/reka-ui/dist/utils/resizePanel.js","../../node_modules/reka-ui/dist/utils/layout.js","../../node_modules/reka-ui/dist/shared/browser.js","../../node_modules/reka-ui/dist/utils/dom.js","../../node_modules/reka-ui/dist/utils/calculate.js","../../node_modules/reka-ui/dist/utils/callPanelCallbacks.js","../../node_modules/reka-ui/dist/utils/pivot.js","../../node_modules/reka-ui/dist/utils/storage.js","../../node_modules/reka-ui/dist/composables/useWindowSplitterPanelGroupBehavior.js","../../node_modules/reka-ui/dist/Splitter/SplitterGroup.js","../../node_modules/reka-ui/dist/utils/debounce.js","../../node_modules/reka-ui/dist/utils/validation.js","../../node_modules/reka-ui/dist/Splitter/SplitterPanel.js","../../node_modules/reka-ui/dist/Splitter/SplitterResizeHandle.js","../../node_modules/reka-ui/dist/composables/useWindowSplitterBehavior.js","../../node_modules/lucide-vue-next/dist/esm/icons/arrow-up-right.js","../../node_modules/lucide-vue-next/dist/esm/icons/circle-alert.js","../../node_modules/lucide-vue-next/dist/esm/icons/circle.js","../../node_modules/lucide-vue-next/dist/esm/icons/folder-input.js","../../node_modules/lucide-vue-next/dist/esm/icons/grip-vertical.js","../../node_modules/lucide-vue-next/dist/esm/icons/squirrel.js","../../src/components/StatusBadge.vue","../../src/components/ui/resizable/ResizableHandle.vue","../../src/components/ui/resizable/ResizablePanelGroup.vue","../../src/components/move/PanelList.vue","../../src/components/move/MoveExperiment.vue"],"sourcesContent":["import { E as EXCEEDED_HORIZONTAL_MIN, a as EXCEEDED_HORIZONTAL_MAX, b as EXCEEDED_VERTICAL_MIN, c as EXCEEDED_VERTICAL_MAX } from './registry.js';\n\nlet currentCursorStyle = null;\nlet styleElement = null;\nfunction getCursorStyle(state, constraintFlags) {\n if (constraintFlags) {\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 (horizontalMin) {\n if (verticalMin)\n return \"se-resize\";\n else if (verticalMax)\n return \"ne-resize\";\n else\n return \"e-resize\";\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 } 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 }\n}\nfunction setGlobalCursorStyle(state, constraintFlags) {\n const style = getCursorStyle(state, constraintFlags);\n if (currentCursorStyle === style)\n return;\n currentCursorStyle = style;\n if (styleElement === null) {\n styleElement = document.createElement(\"style\");\n document.head.appendChild(styleElement);\n }\n styleElement.innerHTML = `*{cursor: ${style}!important;}`;\n}\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 flexGrow = defaultSize !== undefined ? defaultSize.toPrecision(precision) : \"1\";\n } else if (panelData.length === 1) {\n flexGrow = \"1\";\n } else {\n flexGrow = size.toPrecision(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\nexport { computePanelFlexBoxStyle as c, resetGlobalCursorStyle as r, setGlobalCursorStyle as s };\n//# sourceMappingURL=style.js.map\n","function isKeyDown(event) {\n return event.type === \"keydown\";\n}\nfunction isMouseEvent(event) {\n return event.type.startsWith(\"mouse\");\n}\nfunction isTouchEvent(event) {\n return event.type.startsWith(\"touch\");\n}\nfunction getResizeEventCoordinates(event) {\n if (isMouseEvent(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n } else if (isTouchEvent(event)) {\n const touch = event.touches[0];\n if (touch && touch.clientX && touch.clientY) {\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n }\n return {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY\n };\n}\nfunction getResizeEventCursorPosition(direction, event) {\n const isHorizontal = direction === \"horizontal\";\n const { x, y } = getResizeEventCoordinates(event);\n return isHorizontal ? x : y;\n}\n\nexport { isMouseEvent as a, isTouchEvent as b, getResizeEventCoordinates as c, getResizeEventCursorPosition as g, isKeyDown as i };\n//# sourceMappingURL=events.js.map\n","function assert(expectedCondition, message = \"Assertion failed!\") {\n if (!expectedCondition) {\n console.error(message);\n throw new Error(message);\n }\n}\n\nexport { assert as a };\n//# sourceMappingURL=assert.js.map\n","import { a as assert } from './assert.js';\n\nfunction compare(a, b) {\n if (a === b)\n throw new Error(\"Cannot compare node with itself\");\n const ancestors = {\n a: getAncestors(a),\n b: getAncestors(b)\n };\n let common_ancestor;\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);\n const z_indexes = {\n a: getZIndex(findStackingContext(ancestors.a)),\n b: getZIndex(findStackingContext(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)\n return 1;\n if (child === furthest_ancestors.b)\n 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/;\nfunction isFlexItem(node) {\n const display = getComputedStyle(getParent(node)).display;\n return display === \"flex\" || display === \"inline-flex\";\n}\nfunction createsStackingContext(node) {\n const style = getComputedStyle(node);\n if (style.position === \"fixed\")\n return true;\n if (style.zIndex !== \"auto\" && (style.position !== \"static\" || isFlexItem(node))) {\n return true;\n }\n if (+style.opacity < 1)\n return true;\n if (\"transform\" in style && style.transform !== \"none\")\n return true;\n if (\"webkitTransform\" in style && style.webkitTransform !== \"none\")\n return true;\n if (\"mixBlendMode\" in style && style.mixBlendMode !== \"normal\")\n return true;\n if (\"filter\" in style && style.filter !== \"none\")\n return true;\n if (\"webkitFilter\" in style && style.webkitFilter !== \"none\")\n return true;\n if (\"isolation\" in style && style.isolation === \"isolate\")\n return true;\n if (props.test(style.willChange))\n return true;\n if (style.webkitOverflowScrolling === \"touch\")\n return true;\n return false;\n}\nfunction findStackingContext(nodes) {\n let i = nodes.length;\n while (i--) {\n const node = nodes[i];\n assert(node);\n if (createsStackingContext(node))\n return node;\n }\n return null;\n}\nfunction getZIndex(node) {\n return node && Number(getComputedStyle(node).zIndex) || 0;\n}\nfunction getAncestors(node) {\n const ancestors = [];\n while (node) {\n ancestors.push(node);\n node = getParent(node);\n }\n return ancestors;\n}\nfunction getParent(node) {\n return node.parentNode instanceof DocumentFragment && node.parentNode?.host || node.parentNode;\n}\n\nexport { compare as c };\n//# sourceMappingURL=stackingOrder.js.map\n","import { s as setGlobalCursorStyle, r as resetGlobalCursorStyle } from './style.js';\nimport { c as getResizeEventCoordinates } from './events.js';\nimport { i as intersects } from './rects.js';\nimport { c as compare } from './stackingOrder.js';\n\nconst EXCEEDED_HORIZONTAL_MIN = 1;\nconst EXCEEDED_HORIZONTAL_MAX = 2;\nconst EXCEEDED_VERTICAL_MIN = 4;\nconst EXCEEDED_VERTICAL_MAX = 8;\nfunction getInputType() {\n if (typeof matchMedia === \"function\")\n return matchMedia(\"(pointer:coarse)\").matches ? \"coarse\" : \"fine\";\n}\nconst isCoarsePointer = getInputType() === \"coarse\";\nconst intersectingHandles = [];\nlet isPointerDown = false;\nconst ownerDocumentCounts = /* @__PURE__ */ new Map();\nconst panelConstraintFlags = /* @__PURE__ */ new Map();\nconst registeredResizeHandlers = /* @__PURE__ */ new Set();\nfunction registerResizeHandle(resizeHandleId, element, direction, hitAreaMargins, setResizeHandlerState) {\n const { ownerDocument } = element;\n const data = {\n direction,\n element,\n hitAreaMargins,\n setResizeHandlerState\n };\n const count = ownerDocumentCounts.get(ownerDocument) ?? 0;\n ownerDocumentCounts.set(ownerDocument, count + 1);\n registeredResizeHandlers.add(data);\n updateListeners();\n return function unregisterResizeHandle() {\n panelConstraintFlags.delete(resizeHandleId);\n registeredResizeHandlers.delete(data);\n const count2 = ownerDocumentCounts.get(ownerDocument) ?? 1;\n ownerDocumentCounts.set(ownerDocument, count2 - 1);\n updateListeners();\n resetGlobalCursorStyle();\n if (count2 === 1)\n ownerDocumentCounts.delete(ownerDocument);\n };\n}\nfunction handlePointerDown(event) {\n const { target } = event;\n const { x, y } = getResizeEventCoordinates(event);\n isPointerDown = true;\n recalculateIntersectingHandles({ target, x, y });\n updateListeners();\n if (intersectingHandles.length > 0) {\n updateResizeHandlerStates(\"down\", event);\n event.preventDefault();\n }\n}\nfunction handlePointerMove(event) {\n const { x, y } = getResizeEventCoordinates(event);\n if (!isPointerDown) {\n const { target } = event;\n recalculateIntersectingHandles({ target, x, y });\n }\n updateResizeHandlerStates(\"move\", event);\n updateCursor();\n if (intersectingHandles.length > 0)\n event.preventDefault();\n}\nfunction handlePointerUp(event) {\n const { target } = event;\n const { x, y } = getResizeEventCoordinates(event);\n panelConstraintFlags.clear();\n isPointerDown = false;\n if (intersectingHandles.length > 0)\n event.preventDefault();\n updateResizeHandlerStates(\"up\", event);\n recalculateIntersectingHandles({ target, x, y });\n updateCursor();\n updateListeners();\n}\nfunction recalculateIntersectingHandles({\n target,\n x,\n y\n}) {\n intersectingHandles.splice(0);\n let targetElement = null;\n if (target instanceof HTMLElement)\n targetElement = target;\n registeredResizeHandlers.forEach((data) => {\n const { element: dragHandleElement, hitAreaMargins } = data;\n const dragHandleRect = dragHandleElement.getBoundingClientRect();\n const { bottom, left, right, top } = 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 if (targetElement !== null && dragHandleElement !== targetElement && !dragHandleElement.contains(targetElement) && !targetElement.contains(dragHandleElement) && compare(targetElement, dragHandleElement) > 0) {\n let currentElement = targetElement;\n let didIntersect = false;\n while (currentElement) {\n if (currentElement.contains(dragHandleElement)) {\n break;\n } else if (intersects(\n currentElement.getBoundingClientRect(),\n dragHandleRect)) {\n didIntersect = true;\n break;\n }\n currentElement = currentElement.parentElement;\n }\n if (didIntersect)\n return;\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 { direction } = data;\n if (direction.value === \"horizontal\")\n intersectsHorizontal = true;\n else\n intersectsVertical = true;\n });\n let constraintFlags = 0;\n panelConstraintFlags.forEach((flag) => {\n constraintFlags |= flag;\n });\n if (intersectsHorizontal && intersectsVertical)\n setGlobalCursorStyle(\"intersection\", constraintFlags);\n else if (intersectsHorizontal)\n setGlobalCursorStyle(\"horizontal\", constraintFlags);\n else if (intersectsVertical)\n setGlobalCursorStyle(\"vertical\", constraintFlags);\n else\n resetGlobalCursorStyle();\n}\nfunction updateListeners() {\n ownerDocumentCounts.forEach((_, ownerDocument) => {\n const { body } = ownerDocument;\n body.removeEventListener(\"contextmenu\", handlePointerUp);\n body.removeEventListener(\"mousedown\", handlePointerDown);\n body.removeEventListener(\"mouseleave\", handlePointerMove);\n body.removeEventListener(\"mousemove\", handlePointerMove);\n body.removeEventListener(\"touchmove\", handlePointerMove);\n body.removeEventListener(\"touchstart\", handlePointerDown);\n });\n window.removeEventListener(\"mouseup\", handlePointerUp);\n window.removeEventListener(\"touchcancel\", handlePointerUp);\n window.removeEventListener(\"touchend\", handlePointerUp);\n if (registeredResizeHandlers.size > 0) {\n if (isPointerDown) {\n if (intersectingHandles.length > 0) {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const { body } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"contextmenu\", handlePointerUp);\n body.addEventListener(\"mouseleave\", handlePointerMove);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n }\n });\n }\n window.addEventListener(\"mouseup\", handlePointerUp);\n window.addEventListener(\"touchcancel\", handlePointerUp);\n window.addEventListener(\"touchend\", handlePointerUp);\n } else {\n ownerDocumentCounts.forEach((count, ownerDocument) => {\n const { body } = ownerDocument;\n if (count > 0) {\n body.addEventListener(\"mousedown\", handlePointerDown);\n body.addEventListener(\"mousemove\", handlePointerMove);\n body.addEventListener(\"touchmove\", handlePointerMove, {\n passive: false\n });\n body.addEventListener(\"touchstart\", handlePointerDown);\n }\n });\n }\n }\n}\nfunction updateResizeHandlerStates(action, event) {\n registeredResizeHandlers.forEach((data) => {\n const { setResizeHandlerState } = data;\n const isActive = intersectingHandles.includes(data);\n setResizeHandlerState(action, isActive, event);\n });\n}\n\nexport { EXCEEDED_HORIZONTAL_MIN as E, EXCEEDED_HORIZONTAL_MAX as a, EXCEEDED_VERTICAL_MIN as b, EXCEEDED_VERTICAL_MAX as c, registerResizeHandle as d, reportConstraintsViolation as r };\n//# sourceMappingURL=registry.js.map\n","function intersects(rectOne, rectTwo, strict) {\n {\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\nexport { intersects as i };\n//# sourceMappingURL=rects.js.map\n","import { P as PRECISION } from './constants.js';\n\nfunction fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {\n actual = Number.parseFloat(actual.toFixed(fractionDigits));\n expected = Number.parseFloat(expected.toFixed(fractionDigits));\n const delta = actual - expected;\n if (delta === 0)\n return 0;\n else\n return delta > 0 ? 1 : -1;\n}\nfunction fuzzyNumbersEqual(actual, expected, fractionDigits) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\nexport { fuzzyCompareNumbers as a, fuzzyNumbersEqual as f };\n//# sourceMappingURL=compare.js.map\n","const PRECISION = 10;\n\nexport { PRECISION as P };\n//# sourceMappingURL=constants.js.map\n","import { P as PRECISION } from './constants.js';\nimport { a as assert } from './assert.js';\nimport { a as fuzzyCompareNumbers } from './compare.js';\n\nfunction resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex,\n size\n}) {\n const panelConstraints = panelConstraintsArray[panelIndex];\n assert(panelConstraints != null);\n const { collapsedSize = 0, collapsible, maxSize = 100, minSize = 0 } = panelConstraints;\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 } else {\n size = minSize;\n }\n }\n size = Math.min(maxSize, size);\n size = Number.parseFloat(size.toFixed(PRECISION));\n return size;\n}\n\nexport { resizePanel as r };\n//# sourceMappingURL=resizePanel.js.map\n","import { a as assert } from './assert.js';\nimport { f as fuzzyNumbersEqual, a as fuzzyCompareNumbers } from './compare.js';\nimport { r as resizePanel } from './resizePanel.js';\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 return true;\n}\nfunction adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger\n}) {\n if (fuzzyNumbersEqual(delta, 0))\n return prevLayout;\n const nextLayout = [...prevLayout];\n const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n assert(firstPivotIndex != null);\n assert(secondPivotIndex != null);\n let deltaApplied = 0;\n {\n if (trigger === \"keyboard\") {\n {\n const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n if (panelConstraints.collapsible) {\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const panelConstraints2 = panelConstraintsArray[index];\n assert(panelConstraints2);\n const { collapsedSize = 0, minSize = 0 } = panelConstraints2;\n if (fuzzyNumbersEqual(prevSize, collapsedSize)) {\n const localDelta = minSize - prevSize;\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0)\n delta = delta < 0 ? 0 - localDelta : localDelta;\n }\n }\n }\n {\n const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const { collapsible } = panelConstraints;\n if (collapsible) {\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const panelConstraints2 = panelConstraintsArray[index];\n assert(panelConstraints2);\n const { collapsedSize = 0, minSize = 0 } = panelConstraints2;\n if (fuzzyNumbersEqual(prevSize, minSize)) {\n const localDelta = prevSize - collapsedSize;\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0)\n delta = delta < 0 ? 0 - localDelta : localDelta;\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 prevSize = prevLayout[index];\n assert(prevSize != null);\n const maxSafeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: 100\n });\n const delta2 = maxSafeSize - prevSize;\n maxAvailableDelta += delta2;\n index += increment;\n if (index < 0 || index >= panelConstraintsArray.length)\n break;\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 < panelConstraintsArray.length) {\n const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n const prevSize = prevLayout[index];\n assert(prevSize != null);\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.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {\n numeric: true\n }) >= 0) {\n break;\n }\n }\n if (delta < 0)\n index--;\n else\n index++;\n }\n }\n if (fuzzyNumbersEqual(deltaApplied, 0)) {\n return prevLayout;\n }\n {\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const prevSize = prevLayout[pivotIndex];\n assert(prevSize != null);\n const unsafeSize = prevSize + deltaApplied;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: pivotIndex,\n size: unsafeSize\n });\n nextLayout[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 < panelConstraintsArray.length) {\n const prevSize2 = nextLayout[index];\n assert(prevSize2 != null);\n const unsafeSize2 = prevSize2 + deltaRemaining;\n const safeSize2 = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize2\n });\n if (!fuzzyNumbersEqual(prevSize2, safeSize2)) {\n deltaRemaining -= safeSize2 - prevSize2;\n nextLayout[index] = safeSize2;\n }\n if (fuzzyNumbersEqual(deltaRemaining, 0))\n break;\n if (delta > 0)\n index--;\n else\n index++;\n }\n }\n }\n const totalSize = nextLayout.reduce((total, size) => size + total, 0);\n if (!fuzzyNumbersEqual(totalSize, 100))\n return prevLayout;\n return nextLayout;\n}\n\nexport { adjustLayoutByDelta as a, compareLayouts as c };\n//# sourceMappingURL=layout.js.map\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser as i };\n//# sourceMappingURL=browser.js.map\n","import { i as isBrowser } from '../shared/browser.js';\n\nfunction getPanelGroupElement(id, rootElement = document) {\n if (!isBrowser)\n return null;\n if (rootElement instanceof HTMLElement && rootElement?.dataset?.panelGroupId === id) {\n return rootElement;\n }\n const element = rootElement.querySelector(\n `[data-panel-group][data-panel-group-id=\"${id}\"]`\n );\n if (element)\n return element;\n return null;\n}\nfunction getResizeHandleElement(id, scope = document) {\n if (!isBrowser)\n return null;\n const element = scope.querySelector(`[data-panel-resize-handle-id=\"${id}\"]`);\n if (element)\n return element;\n return null;\n}\nfunction getResizeHandleElementIndex(groupId, id, scope = document) {\n if (!isBrowser)\n return null;\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handles.findIndex(\n (handle) => handle.getAttribute(\"data-panel-resize-handle-id\") === id\n );\n return index ?? null;\n}\nfunction getResizeHandleElementsForGroup(groupId, scope = document) {\n if (!isBrowser)\n return [];\n return Array.from(\n scope.querySelectorAll(\n `[data-panel-resize-handle-id][data-panel-group-id=\"${groupId}\"]`\n )\n );\n}\nfunction getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {\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 ?? null;\n const idAfter = panelsArray[index + 1]?.id ?? null;\n return [idBefore, idAfter];\n}\n\nexport { getResizeHandleElementsForGroup as a, getResizeHandleElementIndex as b, getPanelGroupElement as c, getResizeHandlePanelIds as d, getResizeHandleElement as g };\n//# sourceMappingURL=dom.js.map\n","import { a as assert } from './assert.js';\nimport { g as getResizeHandleElement, c as getPanelGroupElement } from './dom.js';\nimport { i as isKeyDown, g as getResizeEventCursorPosition } from './events.js';\n\nfunction calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {\n const isHorizontal = direction === \"horizontal\";\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n assert(handleElement);\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId);\n const { initialCursorPosition } = initialDragState;\n const cursorPosition = getResizeEventCursorPosition(direction, event);\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement);\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}\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\n delta = keyboardResizeBy ?? 10;\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 return calculateDragOffsetPercentage(\n event,\n dragHandleId,\n direction,\n initialDragState,\n panelGroupElement\n );\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);\n panelsArray.forEach((panelData, index) => {\n const { constraints } = panelData;\n const { maxSize = 100, minSize = 0 } = 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}\nfunction calculateUnsafeDefaultLayout({\n panelDataArray\n}) {\n const layout = Array(panelDataArray.length);\n const panelConstraintsArray = panelDataArray.map(\n (panelData) => panelData.constraints\n );\n let numPanelsWithSizes = 0;\n let remainingSize = 100;\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const { defaultSize } = panelConstraints;\n if (defaultSize != null) {\n numPanelsWithSizes++;\n layout[index] = defaultSize;\n remainingSize -= defaultSize;\n }\n }\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const { defaultSize } = panelConstraints;\n if (defaultSize != null)\n continue;\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\nexport { calculateDeltaPercentage as a, calculateAriaValues as b, calculateUnsafeDefaultLayout as c };\n//# sourceMappingURL=calculate.js.map\n","import { a as assert } from './assert.js';\n\nfunction callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {\n layout.forEach((size, index) => {\n const panelData = panelsArray[index];\n assert(panelData);\n const { callbacks, constraints, id: panelId } = panelData;\n const { collapsedSize = 0, collapsible } = constraints;\n const lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];\n if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n panelIdToLastNotifiedSizeMap[panelId] = size;\n const { onCollapse, onExpand, onResize } = callbacks;\n if (onResize)\n onResize(size, lastNotifiedSize);\n if (collapsible && (onCollapse || onExpand)) {\n if (onExpand && (lastNotifiedSize == null || lastNotifiedSize === collapsedSize) && size !== collapsedSize) {\n onExpand();\n }\n if (onCollapse && (lastNotifiedSize == null || lastNotifiedSize !== collapsedSize) && size === collapsedSize) {\n onCollapse();\n }\n }\n }\n });\n}\n\nexport { callPanelCallbacks as c };\n//# sourceMappingURL=callPanelCallbacks.js.map\n","import { b as getResizeHandleElementIndex } from './dom.js';\n\nfunction determinePivotIndices(groupId, dragHandleId, panelGroupElement) {\n const index = getResizeHandleElementIndex(\n groupId,\n dragHandleId,\n panelGroupElement\n );\n return index != null ? [index, index + 1] : [-1, -1];\n}\n\nexport { determinePivotIndices as d };\n//# sourceMappingURL=pivot.js.map\n","function initializeDefaultStorage(storageObject) {\n try {\n if (typeof localStorage !== \"undefined\") {\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 TypeError(\"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 `reka:${autoSaveId}`;\n}\nfunction getPanelKey(panels) {\n return panels.map((panel) => {\n const { constraints, id, idIsFromProps, order } = 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 } catch (error) {\n }\n return null;\n}\nfunction loadPanelGroupState(autoSaveId, panels, storage) {\n const state = loadSerializedPanelGroupState(autoSaveId, storage) ?? {};\n const panelKey = getPanelKey(panels);\n return state[panelKey] ?? null;\n}\nfunction savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const panelKey = getPanelKey(panels);\n const state = loadSerializedPanelGroupState(autoSaveId, storage) ?? {};\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\nexport { initializeDefaultStorage as i, loadPanelGroupState as l, savePanelGroupState as s };\n//# sourceMappingURL=storage.js.map\n","import { watchEffect } from 'vue';\nimport { a as adjustLayoutByDelta } from '../utils/layout.js';\nimport { a as assert } from '../utils/assert.js';\nimport { b as calculateAriaValues } from '../utils/calculate.js';\nimport { d as determinePivotIndices } from '../utils/pivot.js';\nimport { a as getResizeHandleElementsForGroup, c as getPanelGroupElement, d as getResizeHandlePanelIds } from '../utils/dom.js';\nimport { f as fuzzyNumbersEqual } from '../utils/compare.js';\n\nfunction useWindowSplitterPanelGroupBehavior({\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray,\n panelGroupElement,\n setLayout\n}) {\n watchEffect((onCleanup) => {\n const _panelGroupElement = panelGroupElement.value;\n if (!_panelGroupElement)\n return;\n const resizeHandleElements = getResizeHandleElementsForGroup(\n groupId,\n _panelGroupElement\n );\n for (let index = 0; index < panelDataArray.length - 1; index++) {\n const { valueMax, valueMin, valueNow } = calculateAriaValues({\n layout: layout.value,\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);\n resizeHandleElement.setAttribute(\"aria-controls\", panelData.id);\n resizeHandleElement.setAttribute(\n \"aria-valuemax\",\n `${Math.round(valueMax)}`\n );\n resizeHandleElement.setAttribute(\n \"aria-valuemin\",\n `${Math.round(valueMin)}`\n );\n resizeHandleElement.setAttribute(\n \"aria-valuenow\",\n valueNow != null ? `${Math.round(valueNow)}` : \"\"\n );\n }\n }\n onCleanup(() => {\n resizeHandleElements.forEach((resizeHandleElement) => {\n resizeHandleElement.removeAttribute(\"aria-controls\");\n resizeHandleElement.removeAttribute(\"aria-valuemax\");\n resizeHandleElement.removeAttribute(\"aria-valuemin\");\n resizeHandleElement.removeAttribute(\"aria-valuenow\");\n });\n });\n });\n watchEffect((onCleanup) => {\n const _panelGroupElement = panelGroupElement.value;\n if (!_panelGroupElement)\n return;\n const eagerValues = eagerValuesRef.value;\n assert(eagerValues);\n const { panelDataArray: panelDataArray2 } = 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);\n const cleanupFunctions = handles.map((handle) => {\n const handleId = handle.getAttribute(\"data-panel-resize-handle-id\");\n assert(handleId);\n const [idBefore, idAfter] = getResizeHandlePanelIds(\n groupId,\n handleId,\n panelDataArray2,\n _panelGroupElement\n );\n if (idBefore == null || idAfter == null)\n return () => {\n };\n const onKeyDown = (event) => {\n if (event.defaultPrevented)\n return;\n switch (event.key) {\n case \"Enter\": {\n event.preventDefault();\n const index = panelDataArray2.findIndex(\n (panelData) => panelData.id === idBefore\n );\n if (index >= 0) {\n const panelData = panelDataArray2[index];\n assert(panelData);\n const size = layout.value[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 layout: layout.value,\n panelConstraints: panelDataArray2.map(\n (panelData2) => panelData2.constraints\n ),\n pivotIndices: determinePivotIndices(\n groupId,\n handleId,\n _panelGroupElement\n ),\n trigger: \"keyboard\"\n });\n if (layout.value !== nextLayout)\n setLayout(nextLayout);\n }\n }\n break;\n }\n }\n };\n handle.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handle.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n onCleanup(() => {\n cleanupFunctions.forEach((cleanupFunction) => cleanupFunction());\n });\n });\n}\n\nexport { useWindowSplitterPanelGroupBehavior as u };\n//# sourceMappingURL=useWindowSplitterPanelGroupBehavior.js.map\n","import { defineComponent, toRefs, ref, computed, watchEffect, watch, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport { r as reportConstraintsViolation, E as EXCEEDED_HORIZONTAL_MIN, a as EXCEEDED_HORIZONTAL_MAX, b as EXCEEDED_VERTICAL_MIN, c as EXCEEDED_VERTICAL_MAX } from '../utils/registry.js';\nimport { a as adjustLayoutByDelta, c as compareLayouts } from '../utils/layout.js';\nimport { a as assert } from '../utils/assert.js';\nimport { c as calculateUnsafeDefaultLayout, a as calculateDeltaPercentage } from '../utils/calculate.js';\nimport { c as callPanelCallbacks } from '../utils/callPanelCallbacks.js';\nimport { c as computePanelFlexBoxStyle } from '../utils/style.js';\nimport { d as debounce } from '../utils/debounce.js';\nimport { d as determinePivotIndices } from '../utils/pivot.js';\nimport { g as getResizeHandleElement } from '../utils/dom.js';\nimport { i as isKeyDown, a as isMouseEvent, b as isTouchEvent, g as getResizeEventCursorPosition } from '../utils/events.js';\nimport { v as validatePanelGroupLayout } from '../utils/validation.js';\nimport { s as savePanelGroupState, l as loadPanelGroupState, i as initializeDefaultStorage } from '../utils/storage.js';\nimport { u as useWindowSplitterPanelGroupBehavior } from '../composables/useWindowSplitterPanelGroupBehavior.js';\nimport { u as useId } from '../shared/useId.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { a as areEqual } from '../shared/arrays.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\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 [injectPanelGroupContext, providePanelGroupContext] = createContext(\"PanelGroup\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SplitterGroup\",\n props: {\n id: {},\n autoSaveId: { default: null },\n direction: {},\n keyboardResizeBy: { default: 10 },\n storage: { default: () => defaultStorage },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"layout\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const debounceMap = {};\n const { direction } = toRefs(props);\n const groupId = useId(props.id, \"reka-splitter-group\");\n const dir = useDirection();\n const { forwardRef, currentElement: panelGroupElementRef } = useForwardExpose();\n const dragState = ref(null);\n const layout = ref([]);\n const panelIdToLastNotifiedSizeMapRef = ref({});\n const panelSizeBeforeCollapseRef = ref(/* @__PURE__ */ new Map());\n const prevDeltaRef = ref(0);\n const committedValuesRef = computed(() => ({\n autoSaveId: props.autoSaveId,\n direction: props.direction,\n dragState: dragState.value,\n id: groupId,\n keyboardResizeBy: props.keyboardResizeBy,\n storage: props.storage\n }));\n const eagerValuesRef = ref({\n layout: layout.value,\n panelDataArray: [],\n panelDataArrayChanged: false\n });\n const setLayout = (val) => layout.value = val;\n useWindowSplitterPanelGroupBehavior({\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.value.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef\n });\n watchEffect(() => {\n const { panelDataArray } = eagerValuesRef.value;\n const { autoSaveId } = props;\n if (autoSaveId) {\n if (layout.value.length === 0 || layout.value.length !== panelDataArray.length)\n return;\n let debouncedSave = debounceMap[autoSaveId];\n if (!debouncedSave) {\n debouncedSave = debounce(\n savePanelGroupState,\n LOCAL_STORAGE_DEBOUNCE_INTERVAL\n );\n debounceMap[autoSaveId] = debouncedSave;\n }\n const clonedPanelDataArray = [...panelDataArray];\n const clonedPanelSizesBeforeCollapse = new Map(\n panelSizeBeforeCollapseRef.value\n );\n debouncedSave(\n autoSaveId,\n clonedPanelDataArray,\n clonedPanelSizesBeforeCollapse,\n layout.value,\n props.storage\n );\n }\n });\n function getPanelStyle(panelData, defaultSize) {\n const { panelDataArray } = eagerValuesRef.value;\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState: dragState.value,\n layout: layout.value,\n panelData: panelDataArray,\n panelIndex\n });\n }\n function registerPanel(panelData) {\n const { panelDataArray } = eagerValuesRef.value;\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 eagerValuesRef.value.panelDataArrayChanged = true;\n }\n watch(() => eagerValuesRef.value.panelDataArrayChanged, () => {\n if (eagerValuesRef.value.panelDataArrayChanged) {\n eagerValuesRef.value.panelDataArrayChanged = false;\n const { autoSaveId, storage } = committedValuesRef.value;\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value;\n let unsafeLayout = null;\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage);\n if (state) {\n panelSizeBeforeCollapseRef.value = new Map(\n Object.entries(state.expandToSizes)\n );\n unsafeLayout = state.layout;\n }\n }\n if (unsafeLayout === null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray\n });\n }\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(\n (panelData) => panelData.constraints\n )\n });\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.value.layout = nextLayout;\n emits(\"layout\", nextLayout);\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value\n );\n }\n }\n });\n function registerResizeHandle(dragHandleId) {\n return function resizeHandler(event) {\n event.preventDefault();\n const panelGroupElement = panelGroupElementRef.value;\n if (!panelGroupElement)\n return () => null;\n const { direction: direction2, dragState: dragState2, id: groupId2, keyboardResizeBy } = committedValuesRef.value;\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value;\n const { initialLayout } = dragState2 ?? {};\n const pivotIndices = determinePivotIndices(\n groupId2,\n dragHandleId,\n panelGroupElement\n );\n let delta = calculateDeltaPercentage(\n event,\n dragHandleId,\n direction2,\n dragState2,\n keyboardResizeBy,\n panelGroupElement\n );\n if (delta === 0)\n return;\n const isHorizontal = direction2 === \"horizontal\";\n if (dir.value === \"rtl\" && isHorizontal)\n delta = -delta;\n const panelConstraints = panelDataArray.map((panelData) => panelData.constraints);\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: initialLayout ?? prevLayout,\n panelConstraints,\n pivotIndices,\n trigger: isKeyDown(event) ? \"keyboard\" : \"mouse-or-touch\"\n });\n const layoutChanged = !compareLayouts(prevLayout, nextLayout);\n if (isMouseEvent(event) || isTouchEvent(event)) {\n if (prevDeltaRef.value !== delta) {\n prevDeltaRef.value = delta;\n if (!layoutChanged) {\n if (isHorizontal) {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX\n );\n } else {\n reportConstraintsViolation(\n dragHandleId,\n delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX\n );\n }\n } else {\n reportConstraintsViolation(dragHandleId, 0);\n }\n }\n }\n if (layoutChanged) {\n setLayout(nextLayout);\n eagerValuesRef.value.layout = nextLayout;\n emits(\"layout\", nextLayout);\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value\n );\n }\n };\n }\n function resizePanel(panelData, unsafePanelSize) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value;\n const panelConstraintsArray = panelDataArray.map((panelData2) => panelData2.constraints);\n const { panelSize, pivotIndices } = panelDataHelper(\n panelDataArray,\n panelData,\n prevLayout\n );\n assert(panelSize != null);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.value.layout = nextLayout;\n emits(\"layout\", nextLayout);\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value\n );\n }\n }\n function reevaluatePanelConstraints(panelData, prevConstraints) {\n const { layout: layout2, panelDataArray } = eagerValuesRef.value;\n const index = findPanelDataIndex(panelDataArray, panelData);\n panelDataArray[index] = panelData;\n eagerValuesRef.value.panelDataArrayChanged = true;\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 { panelSize: prevPanelSize } = panelDataHelper(\n panelDataArray,\n panelData,\n layout2\n );\n if (prevPanelSize === null) {\n return;\n }\n if (prevCollapsible && nextCollapsible && prevPanelSize === prevCollapsedSize) {\n if (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 }\n function startDragging(dragHandleId, event) {\n const { direction: direction2 } = committedValuesRef.value;\n const { layout: layout2 } = eagerValuesRef.value;\n if (!panelGroupElementRef.value)\n return;\n const handleElement = getResizeHandleElement(\n dragHandleId,\n panelGroupElementRef.value\n );\n assert(handleElement);\n const initialCursorPosition = getResizeEventCursorPosition(\n direction2,\n event\n );\n dragState.value = {\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout2\n };\n }\n function stopDragging() {\n dragState.value = null;\n }\n function unregisterPanel(panelData) {\n const { panelDataArray } = eagerValuesRef.value;\n const index = findPanelDataIndex(panelDataArray, panelData);\n if (index >= 0) {\n panelDataArray.splice(index, 1);\n delete panelIdToLastNotifiedSizeMapRef.value[panelData.id];\n eagerValuesRef.value.panelDataArrayChanged = true;\n }\n }\n function collapsePanel(panelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n (panelData2) => panelData2.constraints\n );\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`\n );\n if (panelSize !== collapsedSize) {\n panelSizeBeforeCollapseRef.value.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 layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.value.layout = nextLayout;\n emits(\"layout\", nextLayout);\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value\n );\n }\n }\n }\n }\n function expandPanel(panelData) {\n const { layout: prevLayout, panelDataArray } = eagerValuesRef.value;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(\n (panelData2) => panelData2.constraints\n );\n const {\n collapsedSize = 0,\n panelSize,\n minSize = 0,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n if (panelSize === collapsedSize) {\n const prevPanelSize = panelSizeBeforeCollapseRef.value.get(\n panelData.id\n );\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 layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.value.layout = nextLayout;\n emits(\"layout\", nextLayout);\n callPanelCallbacks(\n panelDataArray,\n nextLayout,\n panelIdToLastNotifiedSizeMapRef.value\n );\n }\n }\n }\n }\n function getPanelSize(panelData) {\n const { layout: layout2, panelDataArray } = eagerValuesRef.value;\n const { panelSize } = panelDataHelper(panelDataArray, panelData, layout2);\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`\n );\n return panelSize;\n }\n function isPanelCollapsed(panelData) {\n const { layout: layout2, panelDataArray } = eagerValuesRef.value;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout2);\n if (!collapsible)\n return false;\n if (panelSize === undefined) {\n return panelData.constraints.defaultSize === panelData.constraints.collapsedSize;\n } else {\n return panelSize === collapsedSize;\n }\n }\n function isPanelExpanded(panelData) {\n const { layout: layout2, panelDataArray } = eagerValuesRef.value;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout2);\n assert(\n panelSize != null,\n `Panel size not found for panel \"${panelData.id}\"`\n );\n return !collapsible || panelSize > collapsedSize;\n }\n providePanelGroupContext({\n direction,\n dragState: dragState.value,\n groupId,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef,\n collapsePanel,\n expandPanel,\n isPanelCollapsed,\n isPanelExpanded,\n getPanelSize,\n getPanelStyle\n });\n function findPanelDataIndex(panelDataArray, panelData) {\n return panelDataArray.findIndex(\n (prevPanelData) => prevPanelData === panelData || prevPanelData.id === panelData.id\n );\n }\n function panelDataHelper(panelDataArray, panelData, layout2) {\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 = layout2[panelIndex];\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices\n };\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n ref: unref(forwardRef),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n style: normalizeStyle({\n display: \"flex\",\n flexDirection: unref(direction) === \"horizontal\" ? \"row\" : \"column\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\"\n }),\n \"data-panel-group\": \"\",\n \"data-orientation\": unref(direction),\n \"data-panel-group-id\": unref(groupId)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", { layout: layout.value })\n ]),\n _: 3\n }, 8, [\"as\", \"as-child\", \"style\", \"data-orientation\", \"data-panel-group-id\"]);\n };\n }\n});\n\nexport { _sfc_main as _, injectPanelGroupContext as i };\n//# sourceMappingURL=SplitterGroup.js.map\n","function debounce(callback, durationMs = 10) {\n let timeoutId = null;\n const callable = (...args) => {\n if (timeoutId !== null)\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n callback(...args);\n }, durationMs);\n };\n return callable;\n}\n\nexport { debounce as d };\n//# sourceMappingURL=debounce.js.map\n","import { a as assert } from './assert.js';\nimport { f as fuzzyNumbersEqual } from './compare.js';\nimport { r as resizePanel } from './resizePanel.js';\n\nfunction validatePanelGroupLayout({\n layout: prevLayout,\n panelConstraints\n}) {\n const nextLayout = [...prevLayout];\n const nextLayoutTotalSize = nextLayout.reduce(\n (accumulated, current) => accumulated + current,\n 0\n );\n if (nextLayout.length !== panelConstraints.length) {\n throw new Error(\n `Invalid ${panelConstraints.length} panel layout: ${nextLayout.map((size) => `${size}%`).join(\", \")}`\n );\n } else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100)) {\n {\n console.warn(\n `WARNING: Invalid layout total size: ${nextLayout.map((size) => `${size}%`).join(\", \")}. Layout normalization will be applied.`\n );\n }\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null);\n const safeSize = 100 / nextLayoutTotalSize * unsafeSize;\n nextLayout[index] = safeSize;\n }\n }\n let remainingSize = 0;\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null);\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 if (!fuzzyNumbersEqual(remainingSize, 0)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const prevSize = nextLayout[index];\n assert(prevSize != null);\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 if (fuzzyNumbersEqual(remainingSize, 0))\n break;\n }\n }\n }\n return nextLayout;\n}\n\nexport { validatePanelGroupLayout as v };\n//# sourceMappingURL=validation.js.map\n","import { defineComponent, computed, watch, onMounted, onUnmounted, openBlock, createBlock, unref, normalizeStyle, withCtx, renderSlot } from 'vue';\nimport { P as PRECISION } from '../utils/constants.js';\nimport { i as injectPanelGroupContext } from './SplitterGroup.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SplitterPanel\",\n props: {\n collapsedSize: {},\n collapsible: { type: Boolean },\n defaultSize: {},\n id: {},\n maxSize: {},\n minSize: {},\n order: {},\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"collapse\", \"expand\", \"resize\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const panelGroupContext = injectPanelGroupContext();\n if (panelGroupContext === null) {\n throw new Error(\n \"SplitterPanel components must be rendered within a SplitterGroup container\"\n );\n }\n const { collapsePanel, expandPanel, getPanelSize, getPanelStyle, isPanelCollapsed, resizePanel, groupId, reevaluatePanelConstraints, registerPanel, unregisterPanel } = panelGroupContext;\n const panelId = useId(props.id, \"reka-splitter-panel\");\n const panelDataRef = computed(() => ({\n callbacks: {\n onCollapse: () => emits(\"collapse\"),\n onExpand: () => emits(\"expand\"),\n onResize: (...args) => emits(\"resize\", ...args)\n },\n constraints: {\n collapsedSize: props.collapsedSize && Number.parseFloat(props.collapsedSize.toFixed(PRECISION)),\n collapsible: props.collapsible,\n defaultSize: props.defaultSize,\n /** Panel id (unique within group); falls back to useId when not provided */\n /** Panel id (unique within group); falls back to useId when not provided */\n maxSize: props.maxSize,\n minSize: props.minSize\n },\n id: panelId,\n idIsFromProps: props.id !== undefined,\n order: props.order\n }));\n watch(() => panelDataRef.value.constraints, (constraints, prevConstraints) => {\n if (prevConstraints.collapsedSize !== constraints.collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !== constraints.minSize) {\n reevaluatePanelConstraints(panelDataRef.value, prevConstraints);\n }\n }, { deep: true });\n onMounted(() => {\n const panelData = panelDataRef.value;\n registerPanel(panelData);\n onUnmounted(() => {\n unregisterPanel(panelData);\n });\n });\n const style = computed(() => getPanelStyle(panelDataRef.value, props.defaultSize));\n const isCollapsed = computed(() => isPanelCollapsed(panelDataRef.value));\n const isExpanded = computed(() => !isCollapsed.value);\n __expose({\n /** If panel is `collapsible`, collapse it fully. */\n collapse: () => {\n collapsePanel(panelDataRef.value);\n },\n /** If panel is currently collapsed, expand it to its most recent size. */\n expand: () => {\n expandPanel(panelDataRef.value);\n },\n /** Gets the current size of the panel as a percentage (1 - 100). */\n getSize() {\n return getPanelSize(panelDataRef.value);\n },\n /** Resize panel to the specified percentage (1 - 100). */\n resize: (size) => {\n resizePanel(panelDataRef.value, size);\n },\n /** Returns `true` if the panel is currently collapsed */\n isCollapsed,\n /** Returns `true` if the panel is currently not collapsed */\n isExpanded\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n id: unref(panelId),\n style: normalizeStyle(style.value),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n \"data-panel\": \"\",\n \"data-panel-collapsible\": _ctx.collapsible || undefined,\n \"data-panel-group-id\": unref(groupId),\n \"data-panel-id\": unref(panelId),\n \"data-panel-size\": Number.parseFloat(`${style.value.flexGrow}`).toFixed(1),\n \"data-state\": _ctx.collapsible ? isCollapsed.value ? \"collapsed\" : \"expanded\" : undefined\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n isCollapsed: isCollapsed.value,\n isExpanded: isExpanded.value\n })\n ]),\n _: 3\n }, 8, [\"id\", \"style\", \"as\", \"as-child\", \"data-panel-collapsible\", \"data-panel-group-id\", \"data-panel-id\", \"data-panel-size\", \"data-state\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SplitterPanel.js.map\n","import { defineComponent, toRefs, ref, watch, watchEffect, openBlock, createBlock, unref, withCtx, renderSlot } from 'vue';\nimport { d as registerResizeHandle } from '../utils/registry.js';\nimport { a as assert } from '../utils/assert.js';\nimport { u as useWindowSplitterResizeHandlerBehavior } from '../composables/useWindowSplitterBehavior.js';\nimport { u as useForwardExpose } from '../shared/useForwardExpose.js';\nimport { u as useId } from '../shared/useId.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { i as injectPanelGroupContext } from './SplitterGroup.js';\nimport { i as isBrowser } from '../shared/browser.js';\n\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"SplitterResizeHandle\",\n props: {\n id: {},\n hitAreaMargins: {},\n tabindex: { default: 0 },\n disabled: { type: Boolean },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"dragging\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { forwardRef, currentElement } = useForwardExpose();\n const { disabled } = toRefs(props);\n const panelGroupContext = injectPanelGroupContext();\n if (panelGroupContext === null) {\n throw new Error(\n \"PanelResizeHandle components must be rendered within a PanelGroup container\"\n );\n }\n const {\n direction,\n groupId,\n registerResizeHandle: registerResizeHandleWithParentGroup,\n startDragging,\n stopDragging,\n panelGroupElement\n } = panelGroupContext;\n const resizeHandleId = useId(props.id, \"reka-splitter-resize-handle\");\n const state = ref(\"inactive\");\n const isFocused = ref(false);\n const resizeHandler = ref(null);\n watch(disabled, () => {\n if (!isBrowser)\n return;\n if (disabled.value)\n resizeHandler.value = null;\n else\n resizeHandler.value = registerResizeHandleWithParentGroup(resizeHandleId);\n }, { immediate: true });\n watchEffect((onCleanup) => {\n if (disabled.value || resizeHandler.value === null)\n return;\n const element = currentElement.value;\n if (!element)\n return;\n assert(element);\n const setResizeHandlerState = (action, isActive, event) => {\n if (isActive) {\n switch (action) {\n case \"down\": {\n state.value = \"drag\";\n startDragging(resizeHandleId, event);\n emits(\"dragging\", true);\n break;\n }\n case \"move\": {\n if (state.value !== \"drag\")\n state.value = \"hover\";\n resizeHandler.value?.(event);\n break;\n }\n case \"up\": {\n state.value = \"hover\";\n stopDragging();\n emits(\"dragging\", false);\n break;\n }\n }\n } else {\n state.value = \"inactive\";\n }\n };\n onCleanup(registerResizeHandle(\n resizeHandleId,\n element,\n direction,\n {\n // Coarse inputs (e.g. finger/touch)\n coarse: props.hitAreaMargins?.coarse ?? 15,\n // Fine inputs (e.g. mouse)\n fine: props.hitAreaMargins?.fine ?? 5\n },\n setResizeHandlerState\n ));\n });\n useWindowSplitterResizeHandlerBehavior({\n disabled,\n resizeHandler,\n handleId: resizeHandleId,\n panelGroupElement\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(Primitive), {\n id: unref(resizeHandleId),\n ref: unref(forwardRef),\n style: {\n touchAction: \"none\",\n userSelect: \"none\"\n },\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n role: \"separator\",\n \"data-resize-handle\": \"\",\n tabindex: _ctx.tabindex,\n \"data-state\": state.value,\n \"data-disabled\": unref(disabled) ? \"\" : undefined,\n \"data-orientation\": unref(direction),\n \"data-panel-group-id\": unref(groupId),\n \"data-resize-handle-active\": state.value === \"drag\" ? \"pointer\" : isFocused.value ? \"keyboard\" : undefined,\n \"data-resize-handle-state\": state.value,\n \"data-panel-resize-handle-enabled\": !unref(disabled),\n \"data-panel-resize-handle-id\": unref(resizeHandleId),\n onBlur: _cache[0] || (_cache[0] = ($event) => isFocused.value = false),\n onFocus: _cache[1] || (_cache[1] = ($event) => isFocused.value = false)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"as\", \"as-child\", \"tabindex\", \"data-state\", \"data-disabled\", \"data-orientation\", \"data-panel-group-id\", \"data-resize-handle-active\", \"data-resize-handle-state\", \"data-panel-resize-handle-enabled\", \"data-panel-resize-handle-id\"]);\n };\n }\n});\n\nexport { _sfc_main as _ };\n//# sourceMappingURL=SplitterResizeHandle.js.map\n","import { watchEffect } from 'vue';\nimport { a as assert } from '../utils/assert.js';\nimport { g as getResizeHandleElement, a as getResizeHandleElementsForGroup, b as getResizeHandleElementIndex } from '../utils/dom.js';\n\nfunction useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId,\n resizeHandler,\n panelGroupElement\n}) {\n watchEffect((onCleanup) => {\n const _panelGroupElement = panelGroupElement.value;\n if (disabled.value || resizeHandler.value === null || _panelGroupElement === null)\n return;\n const handleElement = getResizeHandleElement(handleId, _panelGroupElement);\n if (handleElement == null)\n return;\n const onKeyDown = (event) => {\n if (event.defaultPrevented)\n return;\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowUp\":\n case \"End\":\n case \"Home\": {\n event.preventDefault();\n resizeHandler.value?.(event);\n break;\n }\n case \"F6\": {\n event.preventDefault();\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId);\n const handles = getResizeHandleElementsForGroup(\n groupId,\n _panelGroupElement\n );\n const index = getResizeHandleElementIndex(\n groupId,\n handleId,\n _panelGroupElement\n );\n assert(index !== null);\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 onCleanup(() => {\n handleElement.removeEventListener(\"keydown\", onKeyDown);\n });\n });\n}\n\nexport { useWindowSplitterResizeHandlerBehavior as u };\n//# sourceMappingURL=useWindowSplitterBehavior.js.map\n","/**\n * @license lucide-vue-next v0.453.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 ArrowUpRight = createLucideIcon(\"ArrowUpRightIcon\", [\n [\"path\", { d: \"M7 7h10v10\", key: \"1tivn9\" }],\n [\"path\", { d: \"M7 17 17 7\", key: \"1vkiza\" }]\n]);\n\nexport { ArrowUpRight as default };\n//# sourceMappingURL=arrow-up-right.js.map\n","/**\n * @license lucide-vue-next v0.453.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 CircleAlert = createLucideIcon(\"CircleAlertIcon\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n]);\n\nexport { CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-vue-next v0.453.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 Circle = createLucideIcon(\"CircleIcon\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-vue-next v0.453.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 FolderInput = createLucideIcon(\"FolderInputIcon\", [\n [\n \"path\",\n {\n d: \"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1\",\n key: \"fm4g5t\"\n }\n ],\n [\"path\", { d: \"M2 13h10\", key: \"pgb2dq\" }],\n [\"path\", { d: \"m9 16 3-3-3-3\", key: \"6m91ic\" }]\n]);\n\nexport { FolderInput as default };\n//# sourceMappingURL=folder-input.js.map\n","/**\n * @license lucide-vue-next v0.453.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 GripVertical = createLucideIcon(\"GripVerticalIcon\", [\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]);\n\nexport { GripVertical as default };\n//# sourceMappingURL=grip-vertical.js.map\n","/**\n * @license lucide-vue-next v0.453.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 Squirrel = createLucideIcon(\"SquirrelIcon\", [\n [\"path\", { d: \"M15.236 22a3 3 0 0 0-2.2-5\", key: \"21bitc\" }],\n [\"path\", { d: \"M16 20a3 3 0 0 1 3-3h1a2 2 0 0 0 2-2v-2a4 4 0 0 0-4-4V4\", key: \"oh0fg0\" }],\n [\"path\", { d: \"M18 13h.01\", key: \"9veqaj\" }],\n [\n \"path\",\n {\n d: \"M18 6a4 4 0 0 0-4 4 7 7 0 0 0-7 7c0-5 4-5 4-10.5a4.5 4.5 0 1 0-9 0 2.5 2.5 0 0 0 5 0C7 10 3 11 3 17c0 2.8 2.2 5 5 5h10\",\n key: \"980v8a\"\n }\n ]\n]);\n\nexport { Squirrel as default };\n//# sourceMappingURL=squirrel.js.map\n","\n \n \n \n \n {{ text }}\n \n\n\n\n\n\n","\n\n\n div]:rotate-90', props.class)\">\n \n \n \n \n \n \n\n","\n\n\n \n \n \n\n","\n \n \n \n \n \n \n {{ group.fallback }}\n \n {{ group.text }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ project.name }}\n ({{ t('Components.MoveExpr.currentProject') }}) \n \n \n \n \n \n {{ t('Components.MoveExpr.noProject') }}\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n {{ t('Components.MoveExpr.running') }}\n {{ t('Components.MoveExpr.trigger') }}\n \n \n \n \n {{ t('Components.MoveExpr.title', { origin, destination }) }}\n \n \n \n \n {{ t(`Components.MoveExpr.errors.${errorType}`) }}\n \n \n {{ experiments.length }}\n {{ t('Components.MoveExpr.notice') }}\n \n \n \n \n {{ t('Components.MoveExpr.cancel') }}\n \n \n \n \n \n {{ t('Components.MoveExpr.confirm') }}\n \n \n \n \n\n\n\n"],"names":["currentCursorStyle","styleElement","resetGlobalCursorStyle","document","head","removeChild","setGlobalCursorStyle","state","constraintFlags","style","verticalMin","EXCEEDED_VERTICAL_MIN","verticalMax","EXCEEDED_VERTICAL_MAX","EXCEEDED_HORIZONTAL_MIN","EXCEEDED_HORIZONTAL_MAX","getCursorStyle","createElement","appendChild","innerHTML","isKeyDown","event","type","isMouseEvent","startsWith","isTouchEvent","getResizeEventCoordinates","x","clientX","y","clientY","touch","touches","Number","POSITIVE_INFINITY","getResizeEventCursorPosition","direction","isHorizontal","assert","expectedCondition","message","Error","props","createsStackingContext","node","getComputedStyle","position","zIndex","display","getParent","isFlexItem","opacity","transform","webkitTransform","mixBlendMode","filter","webkitFilter","isolation","test","willChange","webkitOverflowScrolling","findStackingContext","nodes","i","length","getZIndex","getAncestors","ancestors","push","parentNode","DocumentFragment","_a","host","isCoarsePointer","matchMedia","matches","getInputType","intersectingHandles","isPointerDown","ownerDocumentCounts","Map","panelConstraintFlags","registeredResizeHandlers","Set","handlePointerDown","target","recalculateIntersectingHandles","updateListeners","updateResizeHandlerStates","preventDefault","handlePointerMove","updateCursor","handlePointerUp","clear","splice","targetElement","HTMLElement","forEach","data","element","dragHandleElement","hitAreaMargins","dragHandleRect","getBoundingClientRect","bottom","left","right","top","margin","coarse","fine","contains","a","b","common_ancestor","at","pop","z_indexes","children","childNodes","furthest_ancestors","child","Math","sign","compare","currentElement","didIntersect","rectOne","rectTwo","width","height","parentElement","reportConstraintsViolation","resizeHandleId","flag","set","intersectsHorizontal","intersectsVertical","value","_","ownerDocument","body","removeEventListener","window","size","count","addEventListener","passive","action","setResizeHandlerState","isActive","includes","fuzzyCompareNumbers","actual","expected","fractionDigits","delta","parseFloat","toFixed","fuzzyNumbersEqual","resizePanel","panelConstraints","panelConstraintsArray","panelIndex","collapsedSize","collapsible","maxSize","minSize","min","compareLayouts","index","adjustLayoutByDelta","layout","prevLayout","pivotIndices","trigger","nextLayout","firstPivotIndex","secondPivotIndex","deltaApplied","prevSize","panelConstraints2","localDelta","abs","increment","maxAvailableDelta","minAbsDelta","deltaRemaining","safeSize","toPrecision","localeCompare","numeric","pivotIndex","unsafeSize","prevSize2","safeSize2","reduce","total","isBrowser","getPanelGroupElement","id","rootElement","dataset","panelGroupId","querySelector","getResizeHandleElement","scope","getResizeHandleElementIndex","groupId","getResizeHandleElementsForGroup","findIndex","handle","getAttribute","Array","from","querySelectorAll","calculateDeltaPercentage","dragHandleId","initialDragState","keyboardResizeBy","panelGroupElement","shiftKey","movement","key","handleElement","initialCursorPosition","cursorPosition","groupElement","groupRect","calculateDragOffsetPercentage","calculateAriaValues","panelsArray","currentMinSize","currentMaxSize","totalMinSize","totalMaxSize","firstIndex","panelData","constraints","valueMax","valueMin","max","valueNow","callPanelCallbacks","panelIdToLastNotifiedSizeMap","callbacks","panelId","lastNotifiedSize","onCollapse","onExpand","onResize","determinePivotIndices","initializeDefaultStorage","storageObject","localStorage","TypeError","getItem","name","setItem","error","getPanelGroupKey","autoSaveId","getPanelKey","panels","map","panel","idIsFromProps","order","JSON","stringify","sort","join","loadSerializedPanelGroupState","storage","panelGroupKey","serialized","parsed","parse","savePanelGroupState","panelSizesBeforeCollapse","sizes","panelKey","expandToSizes","Object","fromEntries","entries","useWindowSplitterPanelGroupBehavior","eagerValuesRef","panelDataArray","setLayout","watchEffect","onCleanup","_panelGroupElement","resizeHandleElements","resizeHandleElement","setAttribute","round","removeAttribute","eagerValues","panelDataArray2","handles","cleanupFunctions","handleId","idBefore","idAfter","indexOf","_b","getResizeHandlePanelIds","onKeyDown","defaultPrevented","panelData2","cleanupFunction","defaultStorage","injectPanelGroupContext","providePanelGroupContext","createContext","_sfc_main","defineComponent","__name","default","asChild","Boolean","as","emits","setup","__props","emit","__emit","debounceMap","toRefs","useId","dir","useDirection","forwardRef","panelGroupElementRef","useForwardExpose","dragState","ref","panelIdToLastNotifiedSizeMapRef","panelSizeBeforeCollapseRef","prevDeltaRef","committedValuesRef","computed","panelDataArrayChanged","val","unsafePanelSize","panelSize","panelDataHelper","findPanelDataIndex","prevPanelData","layout2","debouncedSave","callback","durationMs","timeoutId","args","clearTimeout","setTimeout","debounce","watch","unsafeLayout","loadPanelGroupState","numPanelsWithSizes","remainingSize","defaultSize","calculateUnsafeDefaultLayout","nextLayoutTotalSize","accumulated","current","validatePanelGroupLayout","areEqual","reevaluatePanelConstraints","prevConstraints","prevCollapsedSize","prevCollapsible","nextCollapsedSize","nextCollapsible","nextMaxSize","nextMinSize","prevPanelSize","registerPanel","panelA","panelB","orderA","orderB","registerResizeHandle","direction2","dragState2","groupId2","initialLayout","layoutChanged","startDragging","stopDragging","unregisterPanel","collapsePanel","expandPanel","get","baseSize","isPanelCollapsed","isPanelExpanded","getPanelSize","getPanelStyle","precision","flexGrow","flexBasis","flexShrink","overflow","pointerEvents","computePanelFlexBoxStyle","_ctx","_cache","openBlock","createBlock","unref","Primitive","normalizeStyle","flexDirection","withCtx","renderSlot","$slots","expose","__expose","panelGroupContext","panelDataRef","deep","onMounted","onUnmounted","isCollapsed","isExpanded","collapse","expand","getSize","resize","tabindex","disabled","registerResizeHandleWithParentGroup","isFocused","resizeHandler","immediate","add","delete","count2","call","focus","useWindowSplitterResizeHandlerBehavior","touchAction","userSelect","role","onBlur","$event","onFocus","ArrowUpRight","createLucideIcon","d","CircleAlert","cx","cy","r","x1","x2","y1","y2","Circle","FolderInput","GripVertical","Squirrel","t","useTranslations","text","delegatedProps","class","delegated","forwarded","useForwardPropsEmits","cuid","useProjStore","useVModel","groupsWithRole","groups","g","selected","group","username","fallback","toUpperCase","_projects","projects","project","page","pagination","hasPagination","pages","isFirstPage","isLastPage","turnPage","loading","async","list","pn","listProject","changeGroup","projStore","avatar","teams","useUserStore","router","useRouter","origin","projname","shallowRef","destination","errorType","notConfirm","confirm","moveExperiments","experiments","then","catch","e","status","goTo","single","replace"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]}
\n {{ project.name }}\n ({{ t('Components.MoveExpr.currentProject') }}) \n
\n \n {{ t(`Components.MoveExpr.errors.${errorType}`) }}\n