{"version":3,"file":"utils.js","sources":["../../src/Popper/utils.ts"],"sourcesContent":["import type { Middleware, Placement } from '@floating-ui/vue'\n\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const\n\nexport type Side = (typeof SIDE_OPTIONS)[number]\nexport type Align = (typeof ALIGN_OPTIONS)[number]\n\nexport function isNotNull(value: T | null): value is T {\n return value !== null\n}\n\nexport function transformOrigin(options: {\n arrowWidth: number\n arrowHeight: number\n}): Middleware {\n return {\n name: 'transformOrigin',\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data\n\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0\n const isArrowHidden = cannotCenterArrow\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight\n\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement)\n const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[\n placedAlign\n ]\n\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2\n\n let x = ''\n let y = ''\n\n if (placedSide === 'bottom') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`\n y = `${-arrowHeight}px`\n }\n else if (placedSide === 'top') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`\n y = `${rects.floating.height + arrowHeight}px`\n }\n else if (placedSide === 'right') {\n x = `${-arrowHeight}px`\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`\n }\n else if (placedSide === 'left') {\n x = `${rects.floating.width + arrowHeight}px`\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`\n }\n return { data: { x, y } }\n },\n }\n}\n\nexport function getSideAndAlignFromPlacement(placement: Placement) {\n const [side, align = 'center'] = placement.split('-')\n return [side as Side, align as Align] as const\n}\n"],"names":[],"mappings":"AAQO,SAAS,UAAa,KAA6B,EAAA;AACxD,EAAA,OAAO,KAAU,KAAA,IAAA;AACnB;AAEO,SAAS,gBAAgB,OAGjB,EAAA;AACb,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,iBAAA;AAAA,IACN,OAAA;AAAA,IACA,GAAG,IAAM,EAAA;AACP,MAAA,MAAM,EAAE,SAAA,EAAW,KAAO,EAAA,cAAA,EAAmB,GAAA,IAAA;AAE7C,MAAM,MAAA,iBAAA,GAAoB,cAAe,CAAA,KAAA,EAAO,YAAiB,KAAA,CAAA;AACjE,MAAA,MAAM,aAAgB,GAAA,iBAAA;AACtB,MAAM,MAAA,UAAA,GAAa,aAAgB,GAAA,CAAA,GAAI,OAAQ,CAAA,UAAA;AAC/C,MAAM,MAAA,WAAA,GAAc,aAAgB,GAAA,CAAA,GAAI,OAAQ,CAAA,WAAA;AAEhD,MAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,6BAA6B,SAAS,CAAA;AACxE,MAAM,MAAA,YAAA,GAAe,EAAE,KAAO,EAAA,IAAA,EAAM,QAAQ,KAAO,EAAA,GAAA,EAAK,MAAO,EAAA,CAC7D,WACF,CAAA;AAEA,MAAA,MAAM,YAAgB,GAAA,CAAA,cAAA,CAAe,KAAO,EAAA,CAAA,IAAK,KAAK,UAAa,GAAA,CAAA;AACnE,MAAA,MAAM,YAAgB,GAAA,CAAA,cAAA,CAAe,KAAO,EAAA,CAAA,IAAK,KAAK,WAAc,GAAA,CAAA;AAEpE,MAAA,IAAI,CAAI,GAAA,EAAA;AACR,MAAA,IAAI,CAAI,GAAA,EAAA;AAER,MAAA,IAAI,eAAe,QAAU,EAAA;AAC3B,QAAI,CAAA,GAAA,aAAA,GAAgB,YAAe,GAAA,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA;AAClD,QAAI,CAAA,GAAA,CAAA,EAAG,CAAC,WAAW,CAAA,EAAA,CAAA;AAAA,OACrB,MAAA,IACS,eAAe,KAAO,EAAA;AAC7B,QAAI,CAAA,GAAA,aAAA,GAAgB,YAAe,GAAA,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA;AAClD,QAAA,CAAA,GAAI,CAAG,EAAA,KAAA,CAAM,QAAS,CAAA,MAAA,GAAS,WAAW,CAAA,EAAA,CAAA;AAAA,OAC5C,MAAA,IACS,eAAe,OAAS,EAAA;AAC/B,QAAI,CAAA,GAAA,CAAA,EAAG,CAAC,WAAW,CAAA,EAAA,CAAA;AACnB,QAAI,CAAA,GAAA,aAAA,GAAgB,YAAe,GAAA,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA;AAAA,OACpD,MAAA,IACS,eAAe,MAAQ,EAAA;AAC9B,QAAA,CAAA,GAAI,CAAG,EAAA,KAAA,CAAM,QAAS,CAAA,KAAA,GAAQ,WAAW,CAAA,EAAA,CAAA;AACzC,QAAI,CAAA,GAAA,aAAA,GAAgB,YAAe,GAAA,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA;AAAA;AAEpD,MAAA,OAAO,EAAE,IAAA,EAAM,EAAE,CAAA,EAAG,GAAI,EAAA;AAAA;AAC1B,GACF;AACF;AAEO,SAAS,6BAA6B,SAAsB,EAAA;AACjE,EAAA,MAAM,CAAC,IAAM,EAAA,KAAA,GAAQ,QAAQ,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA;AACpD,EAAO,OAAA,CAAC,MAAc,KAAc,CAAA;AACtC;;;;"}