{"version":3,"file":"style.cjs","sources":["../../src/Splitter/utils/style.ts"],"sourcesContent":["import type { PanelData } from '../SplitterPanel.vue'\nimport type { DragState } from './types'\nimport type { CSSProperties } from 'vue'\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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"}