{"version":3,"file":"placement.mjs","names":[],"sources":["../../src/utils/placement.ts"],"sourcesContent":["import type { Placement as FloatingUIPlacement } from '@floating-ui/react';\n\n/**\n * Base UI uses a small set of string literal unions for alignment and side.\n * We re-declare them here to avoid importing internal/non-exported Base UI paths.\n */\nexport type Side = 'top' | 'bottom' | 'left' | 'right' | 'inline-end' | 'inline-start';\nexport type Align = 'start' | 'center' | 'end';\n\nexport type PlacementConfig = {\n  align: Align;\n  side: Side;\n};\n\n/**\n * All supported placement values\n * - Unified placement names for Tooltip, Popover, and DropdownMenu\n * - Ant Design style: topLeft, topCenter, topRight, etc.\n * - Additional aliases: top (same as topCenter), bottom (same as bottomCenter)\n */\nexport type Placement =\n  | 'top'\n  | 'topLeft'\n  | 'topCenter'\n  | 'topRight'\n  | 'bottom'\n  | 'bottomLeft'\n  | 'bottomCenter'\n  | 'bottomRight'\n  | 'left'\n  | 'leftTop'\n  | 'leftBottom'\n  | 'right'\n  | 'rightTop'\n  | 'rightBottom';\n\nconst top: PlacementConfig = { align: 'center', side: 'top' };\nconst topLeft: PlacementConfig = { align: 'start', side: 'top' };\nconst topRight: PlacementConfig = { align: 'end', side: 'top' };\nconst bottom: PlacementConfig = { align: 'center', side: 'bottom' };\nconst bottomLeft: PlacementConfig = { align: 'start', side: 'bottom' };\nconst bottomRight: PlacementConfig = { align: 'end', side: 'bottom' };\nconst left: PlacementConfig = { align: 'center', side: 'left' };\nconst leftTop: PlacementConfig = { align: 'start', side: 'left' };\nconst leftBottom: PlacementConfig = { align: 'end', side: 'left' };\nconst right: PlacementConfig = { align: 'center', side: 'right' };\nconst rightTop: PlacementConfig = { align: 'start', side: 'right' };\nconst rightBottom: PlacementConfig = { align: 'end', side: 'right' };\n\n/**\n * Map of placement values to Base UI placement config\n * Used by Popover and DropdownMenu components\n */\nexport const placementMap: Record<Placement, PlacementConfig> = {\n  bottom,\n  bottomCenter: bottom,\n  bottomLeft,\n  bottomRight,\n  left,\n  leftBottom,\n  leftTop,\n  right,\n  rightBottom,\n  rightTop,\n  top,\n  topCenter: top,\n  topLeft,\n  topRight,\n};\n\n/**\n * Convert unified Placement to Floating UI placement format\n * Used by Tooltip component which uses @floating-ui/react\n *\n * @param placement - Unified placement value\n * @returns Floating UI placement (e.g., 'top-start', 'bottom-end')\n */\nexport const toFloatingUIPlacement = (placement?: Placement): FloatingUIPlacement => {\n  if (!placement) return 'top';\n\n  switch (placement) {\n    case 'topLeft': {\n      return 'top-start';\n    }\n    case 'top':\n    case 'topCenter': {\n      return 'top';\n    }\n    case 'topRight': {\n      return 'top-end';\n    }\n    case 'bottomLeft': {\n      return 'bottom-start';\n    }\n    case 'bottom':\n    case 'bottomCenter': {\n      return 'bottom';\n    }\n    case 'bottomRight': {\n      return 'bottom-end';\n    }\n    case 'leftTop': {\n      return 'left-start';\n    }\n    case 'left': {\n      return 'left';\n    }\n    case 'leftBottom': {\n      return 'left-end';\n    }\n    case 'rightTop': {\n      return 'right-start';\n    }\n    case 'right': {\n      return 'right';\n    }\n    case 'rightBottom': {\n      return 'right-end';\n    }\n    default: {\n      return 'top';\n    }\n  }\n};\n"],"mappings":";AAoCA,MAAM,MAAuB;CAAE,OAAO;CAAU,MAAM;CAAO;AAC7D,MAAM,UAA2B;CAAE,OAAO;CAAS,MAAM;CAAO;AAChE,MAAM,WAA4B;CAAE,OAAO;CAAO,MAAM;CAAO;AAC/D,MAAM,SAA0B;CAAE,OAAO;CAAU,MAAM;CAAU;;;;;AAcnE,MAAa,eAAmD;CAC9D;CACA,cAAc;CACd,YAhBkC;EAAE,OAAO;EAAS,MAAM;EAAU;CAiBpE,aAhBmC;EAAE,OAAO;EAAO,MAAM;EAAU;CAiBnE,MAhB4B;EAAE,OAAO;EAAU,MAAM;EAAQ;CAiB7D,YAfkC;EAAE,OAAO;EAAO,MAAM;EAAQ;CAgBhE,SAjB+B;EAAE,OAAO;EAAS,MAAM;EAAQ;CAkB/D,OAhB6B;EAAE,OAAO;EAAU,MAAM;EAAS;CAiB/D,aAfmC;EAAE,OAAO;EAAO,MAAM;EAAS;CAgBlE,UAjBgC;EAAE,OAAO;EAAS,MAAM;EAAS;CAkBjE;CACA,WAAW;CACX;CACA;CACD;;;;;;;;AASD,MAAa,yBAAyB,cAA+C;AACnF,KAAI,CAAC,UAAW,QAAO;AAEvB,SAAQ,WAAR;EACE,KAAK,UACH,QAAO;EAET,KAAK;EACL,KAAK,YACH,QAAO;EAET,KAAK,WACH,QAAO;EAET,KAAK,aACH,QAAO;EAET,KAAK;EACL,KAAK,eACH,QAAO;EAET,KAAK,cACH,QAAO;EAET,KAAK,UACH,QAAO;EAET,KAAK,OACH,QAAO;EAET,KAAK,aACH,QAAO;EAET,KAAK,WACH,QAAO;EAET,KAAK,QACH,QAAO;EAET,KAAK,cACH,QAAO;EAET,QACE,QAAO"}