{"version":3,"file":"get-arrow-position-styles.cjs","sources":["../../../../src/components/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"],"names":[],"mappings":";;AAEA,SAAS,cACP,CAAA,SAAA,EACA,MACA,EAAA,WAAA,EACA,aACA,EAAA;AACA,EAAI,IAAA,SAAA,KAAc,QAAY,IAAA,aAAA,KAAkB,QAAU,EAAA;AACxD,IAAO,OAAA,EAAE,KAAK,MAAO,EAAA;AAAA;AAGvB,EAAA,IAAI,cAAc,KAAO,EAAA;AACvB,IAAO,OAAA,EAAE,QAAQ,WAAY,EAAA;AAAA;AAG/B,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAO,OAAA,EAAE,KAAK,WAAY,EAAA;AAAA;AAG5B,EAAA,OAAO,EAAC;AACV;AAEA,SAAS,YACP,CAAA,SAAA,EACA,MACA,EAAA,WAAA,EACA,eACA,GACA,EAAA;AACA,EAAI,IAAA,SAAA,KAAc,QAAY,IAAA,aAAA,KAAkB,QAAU,EAAA;AACxD,IAAO,OAAA,EAAE,MAAM,MAAO,EAAA;AAAA;AAGxB,EAAA,IAAI,cAAc,KAAO,EAAA;AACvB,IAAA,OAAO,EAAE,CAAC,GAAA,KAAQ,QAAQ,OAAU,GAAA,MAAM,GAAG,WAAY,EAAA;AAAA;AAG3D,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAA,OAAO,EAAE,CAAC,GAAA,KAAQ,QAAQ,MAAS,GAAA,OAAO,GAAG,WAAY,EAAA;AAAA;AAG3D,EAAA,OAAO,EAAC;AACV;AAEA,MAAM,oBASF,GAAA;AAAA,EACF,MAAQ,EAAA,qBAAA;AAAA,EACR,IAAM,EAAA,sBAAA;AAAA,EACN,KAAO,EAAA,wBAAA;AAAA,EACP,GAAK,EAAA;AACP,CAAA;AAEO,SAAS,sBAAuB,CAAA;AAAA,EACrC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CASG,EAAA;AACD,EAAA,MAAM,CAAC,IAAM,EAAA,SAAA,GAAY,QAAQ,CAAI,GAAA,QAAA,CAAS,MAAM,GAAG,CAAA;AACvD,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,KAAO,EAAA,SAAA;AAAA,IACP,MAAQ,EAAA,SAAA;AAAA,IACR,SAAW,EAAA,eAAA;AAAA,IACX,QAAU,EAAA,UAAA;AAAA,IACV,CAAC,oBAAA,CAAqB,IAAI,CAAC,GAAG;AAAA,GAChC;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,SAAY,GAAA,CAAA;AAEpC,EAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,IAAO,OAAA;AAAA,MACL,GAAG,UAAA;AAAA,MACH,GAAG,cAAA,CAAe,SAAW,EAAA,MAAA,EAAQ,aAAa,aAAa,CAAA;AAAA,MAC/D,KAAO,EAAA,cAAA;AAAA,MACP,eAAiB,EAAA,aAAA;AAAA,MACjB,iBAAmB,EAAA,aAAA;AAAA,MACnB,QAAU,EAAA;AAAA,KACZ;AAAA;AAGF,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAO,OAAA;AAAA,MACL,GAAG,UAAA;AAAA,MACH,GAAG,cAAA,CAAe,SAAW,EAAA,MAAA,EAAQ,aAAa,aAAa,CAAA;AAAA,MAC/D,IAAM,EAAA,cAAA;AAAA,MACN,gBAAkB,EAAA,aAAA;AAAA,MAClB,cAAgB,EAAA,aAAA;AAAA,MAChB,QAAU,EAAA;AAAA,KACZ;AAAA;AAGF,EAAA,IAAI,SAAS,KAAO,EAAA;AAClB,IAAO,OAAA;AAAA,MACL,GAAG,UAAA;AAAA,MACH,GAAG,YAAa,CAAA,SAAA,EAAW,MAAQ,EAAA,WAAA,EAAa,eAAe,GAAG,CAAA;AAAA,MAClE,MAAQ,EAAA,cAAA;AAAA,MACR,cAAgB,EAAA,aAAA;AAAA,MAChB,eAAiB,EAAA,aAAA;AAAA,MACjB,QAAU,EAAA;AAAA,KACZ;AAAA;AAGF,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAO,OAAA;AAAA,MACL,GAAG,UAAA;AAAA,MACH,GAAG,YAAa,CAAA,SAAA,EAAW,MAAQ,EAAA,WAAA,EAAa,eAAe,GAAG,CAAA;AAAA,MAClE,GAAK,EAAA,cAAA;AAAA,MACL,iBAAmB,EAAA,aAAA;AAAA,MACnB,gBAAkB,EAAA,aAAA;AAAA,MAClB,QAAU,EAAA;AAAA,KACZ;AAAA;AAGF,EAAA,OAAO,EAAC;AACV;;;;"}