{"version":3,"file":"get-arrow-position-styles.mjs","names":[],"sources":["../../../../src/utils/Floating/FloatingArrow/get-arrow-position-styles.ts"],"sourcesContent":["import type { ArrowPosition, FloatingPlacement, FloatingPosition, FloatingSide } from '../types';\n\nfunction horizontalSide(\n  placement: FloatingPlacement | 'center',\n  arrowY: number | undefined,\n  arrowOffset: number,\n  arrowPosition: ArrowPosition\n) {\n  if (placement === 'center' || arrowPosition === 'center') {\n    return { top: arrowY };\n  }\n\n  if (placement === 'end') {\n    return { bottom: arrowOffset };\n  }\n\n  if (placement === 'start') {\n    return { top: arrowOffset };\n  }\n\n  return {};\n}\n\nfunction verticalSide(\n  placement: FloatingPlacement | 'center',\n  arrowX: number | undefined,\n  arrowOffset: number,\n  arrowPosition: ArrowPosition,\n  dir: 'rtl' | 'ltr'\n) {\n  if (placement === 'center' || arrowPosition === 'center') {\n    return { left: arrowX };\n  }\n\n  if (placement === 'end') {\n    return { [dir === 'ltr' ? 'right' : 'left']: arrowOffset };\n  }\n\n  if (placement === 'start') {\n    return { [dir === 'ltr' ? 'left' : 'right']: arrowOffset };\n  }\n\n  return {};\n}\n\nconst radiusByFloatingSide: Record<\n  FloatingSide,\n  keyof Pick<\n    React.CSSProperties,\n    | 'borderBottomLeftRadius'\n    | 'borderBottomRightRadius'\n    | 'borderTopLeftRadius'\n    | 'borderTopRightRadius'\n  >\n> = {\n  bottom: 'borderTopLeftRadius',\n  left: 'borderTopRightRadius',\n  right: 'borderBottomLeftRadius',\n  top: 'borderBottomRightRadius',\n};\n\nexport function getArrowPositionStyles({\n  position,\n  arrowSize,\n  arrowOffset,\n  arrowRadius,\n  arrowPosition,\n  arrowX,\n  arrowY,\n  dir,\n}: {\n  position: FloatingPosition;\n  arrowSize: number;\n  arrowOffset: number;\n  arrowRadius: number;\n  arrowPosition: ArrowPosition;\n  arrowX: number | undefined;\n  arrowY: number | undefined;\n  dir: 'rtl' | 'ltr';\n}) {\n  const [side, placement = 'center'] = position.split('-') as [FloatingSide, FloatingPlacement];\n  const baseStyles = {\n    width: arrowSize,\n    height: arrowSize,\n    transform: 'rotate(45deg)',\n    position: 'absolute',\n    [radiusByFloatingSide[side]]: arrowRadius,\n  };\n\n  const arrowPlacement = -arrowSize / 2;\n\n  if (side === 'left') {\n    return {\n      ...baseStyles,\n      ...horizontalSide(placement, arrowY, arrowOffset, arrowPosition),\n      right: arrowPlacement,\n      borderLeftColor: 'transparent',\n      borderBottomColor: 'transparent',\n      clipPath: 'polygon(100% 0, 0 0, 100% 100%)',\n    };\n  }\n\n  if (side === 'right') {\n    return {\n      ...baseStyles,\n      ...horizontalSide(placement, arrowY, arrowOffset, arrowPosition),\n      left: arrowPlacement,\n      borderRightColor: 'transparent',\n      borderTopColor: 'transparent',\n      clipPath: 'polygon(0 100%, 0 0, 100% 100%)',\n    };\n  }\n\n  if (side === 'top') {\n    return {\n      ...baseStyles,\n      ...verticalSide(placement, arrowX, arrowOffset, arrowPosition, dir),\n      bottom: arrowPlacement,\n      borderTopColor: 'transparent',\n      borderLeftColor: 'transparent',\n      clipPath: 'polygon(0 100%, 100% 100%, 100% 0)',\n    };\n  }\n\n  if (side === 'bottom') {\n    return {\n      ...baseStyles,\n      ...verticalSide(placement, arrowX, arrowOffset, arrowPosition, dir),\n      top: arrowPlacement,\n      borderBottomColor: 'transparent',\n      borderRightColor: 'transparent',\n      clipPath: 'polygon(0 100%, 0 0, 100% 0)',\n    };\n  }\n\n  return {};\n}\n"],"mappings":";;AAEA,SAAS,eACP,WACA,QACA,aACA,eACA;CACA,IAAI,cAAc,YAAY,kBAAkB,UAC9C,OAAO,EAAE,KAAK,OAAO;CAGvB,IAAI,cAAc,OAChB,OAAO,EAAE,QAAQ,YAAY;CAG/B,IAAI,cAAc,SAChB,OAAO,EAAE,KAAK,YAAY;CAG5B,OAAO,CAAC;AACV;AAEA,SAAS,aACP,WACA,QACA,aACA,eACA,KACA;CACA,IAAI,cAAc,YAAY,kBAAkB,UAC9C,OAAO,EAAE,MAAM,OAAO;CAGxB,IAAI,cAAc,OAChB,OAAO,GAAG,QAAQ,QAAQ,UAAU,SAAS,YAAY;CAG3D,IAAI,cAAc,SAChB,OAAO,GAAG,QAAQ,QAAQ,SAAS,UAAU,YAAY;CAG3D,OAAO,CAAC;AACV;AAEA,MAAM,uBASF;CACF,QAAQ;CACR,MAAM;CACN,OAAO;CACP,KAAK;AACP;AAEA,SAAgB,uBAAuB,EACrC,UACA,WACA,aACA,aACA,eACA,QACA,QACA,OAUC;CACD,MAAM,CAAC,MAAM,YAAY,YAAY,SAAS,MAAM,GAAG;CACvD,MAAM,aAAa;EACjB,OAAO;EACP,QAAQ;EACR,WAAW;EACX,UAAU;GACT,qBAAqB,QAAQ;CAChC;CAEA,MAAM,iBAAiB,CAAC,YAAY;CAEpC,IAAI,SAAS,QACX,OAAO;EACL,GAAG;EACH,GAAG,eAAe,WAAW,QAAQ,aAAa,aAAa;EAC/D,OAAO;EACP,iBAAiB;EACjB,mBAAmB;EACnB,UAAU;CACZ;CAGF,IAAI,SAAS,SACX,OAAO;EACL,GAAG;EACH,GAAG,eAAe,WAAW,QAAQ,aAAa,aAAa;EAC/D,MAAM;EACN,kBAAkB;EAClB,gBAAgB;EAChB,UAAU;CACZ;CAGF,IAAI,SAAS,OACX,OAAO;EACL,GAAG;EACH,GAAG,aAAa,WAAW,QAAQ,aAAa,eAAe,GAAG;EAClE,QAAQ;EACR,gBAAgB;EAChB,iBAAiB;EACjB,UAAU;CACZ;CAGF,IAAI,SAAS,UACX,OAAO;EACL,GAAG;EACH,GAAG,aAAa,WAAW,QAAQ,aAAa,eAAe,GAAG;EAClE,KAAK;EACL,mBAAmB;EACnB,kBAAkB;EAClB,UAAU;CACZ;CAGF,OAAO,CAAC;AACV"}