{"version":3,"file":"style.cjs","sources":["../../src/Splitter/utils/style.ts"],"sourcesContent":["import type { CSSProperties } from 'vue'\nimport type { PanelData } from '../SplitterPanel.vue'\nimport type { DragState } from './types'\nimport {\n EXCEEDED_HORIZONTAL_MAX,\n EXCEEDED_HORIZONTAL_MIN,\n EXCEEDED_VERTICAL_MAX,\n EXCEEDED_VERTICAL_MIN,\n} from './registry'\n\ntype CursorState = 'horizontal' | 'intersection' | 'vertical'\n\nlet currentCursorStyle: string | null = null\nlet styleElement: HTMLStyleElement | null = null\n\nexport function getCursorStyle(\n state: CursorState,\n constraintFlags: number,\n): string {\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\n if (horizontalMin) {\n if (verticalMin)\n return 'se-resize'\n else if (verticalMax)\n return 'ne-resize'\n else\n return 'e-resize'\n }\n else if (horizontalMax) {\n if (verticalMin)\n return 'sw-resize'\n else if (verticalMax)\n return 'nw-resize'\n else\n return 'w-resize'\n }\n else if (verticalMin) {\n return 's-resize'\n }\n else if (verticalMax) {\n return 'n-resize'\n }\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}\n\nexport function resetGlobalCursorStyle() {\n if (styleElement !== null) {\n document.head.removeChild(styleElement)\n\n currentCursorStyle = null\n styleElement = null\n }\n}\n\nexport function setGlobalCursorStyle(\n state: CursorState,\n constraintFlags: number,\n) {\n const style = getCursorStyle(state, constraintFlags)\n\n if (currentCursorStyle === style)\n return\n\n currentCursorStyle = style\n\n if (styleElement === null) {\n styleElement = document.createElement('style')\n\n document.head.appendChild(styleElement)\n }\n\n styleElement.innerHTML = `*{cursor: ${style}!important;}`\n}\n\n// the % of the group's overall space this panel should occupy.\nexport function computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData,\n panelIndex,\n precision = 3,\n}: {\n defaultSize: number | undefined\n layout: number[]\n dragState: DragState | null\n panelData: PanelData[]\n panelIndex: number\n precision?: number\n}): CSSProperties {\n const size = layout[panelIndex]\n\n let flexGrow\n if (size == null) {\n // Initial render (before panels have registered themselves)\n // In order to support server rendering, fall back to default size if provided\n flexGrow\n = defaultSize !== undefined ? defaultSize.toPrecision(precision) : '1'\n }\n else if (panelData.length === 1) {\n // Special case: Single panel group should always fill full width/height\n flexGrow = '1'\n }\n else {\n flexGrow = size.toPrecision(precision)\n }\n\n return {\n flexBasis: 0,\n flexGrow,\n flexShrink: 1,\n\n // Without this, Panel sizes may be unintentionally overridden by their content\n overflow: 'hidden',\n\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"],"names":["EXCEEDED_HORIZONTAL_MIN","EXCEEDED_HORIZONTAL_MAX","EXCEEDED_VERTICAL_MIN","EXCEEDED_VERTICAL_MAX"],"mappings":"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"}