vuesax-alpha
Version:
A Component Library for Vue 3
1 lines • 4.14 kB
Source Map (JSON)
{"version":3,"file":"offset.mjs","sources":["../../../../../../../packages/hooks/use-floating/core/middleware/offset.ts"],"sourcesContent":["import { evaluate, getAlignment, getSide, getSideAxis } from '../../utils'\nimport type { Coords } from '../../utils'\nimport type { Derivable, Middleware, MiddlewareState } from '../types'\n\ntype OffsetValue =\n | number\n | Partial<{\n /**\n * @default 0\n */\n mainAxis: number\n /**\n * @default 0\n */\n crossAxis: number\n /**\n * @default null\n */\n alignmentAxis: number | null\n }>\n\nexport type OffsetOptions = OffsetValue | Derivable<OffsetValue>\n\nexport async function convertValueToCoords(\n state: MiddlewareState,\n options: OffsetOptions\n): Promise<Coords> {\n const { placement, platform, elements } = state\n const rtl = await platform.isRTL?.(elements.floating)\n\n const side = getSide(placement)\n const alignment = getAlignment(placement)\n const isVertical = getSideAxis(placement) === 'y'\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1\n const crossAxisMulti = rtl && isVertical ? -1 : 1\n const rawValue = evaluate(options, state)\n\n let { mainAxis, crossAxis, alignmentAxis } =\n typeof rawValue === 'number'\n ? { mainAxis: rawValue, crossAxis: 0, alignmentAxis: null }\n : { mainAxis: 0, crossAxis: 0, alignmentAxis: null, ...rawValue }\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis\n }\n\n return isVertical\n ? { x: crossAxis * crossAxisMulti, y: mainAxis * mainAxisMulti }\n : { x: mainAxis * mainAxisMulti, y: crossAxis * crossAxisMulti }\n}\n\nexport const offset = (options: OffsetOptions = 0): Middleware => ({\n name: 'offset',\n options,\n async fn(state) {\n const { x, y, placement, middlewareData } = state\n const diffCoords = await convertValueToCoords(state, options)\n\n if (\n placement === middlewareData.offset?.placement &&\n middlewareData.arrow?.alignmentOffset\n ) {\n return {}\n }\n\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement,\n },\n }\n },\n})\n"],"names":[],"mappings":";;AAuBsB,eAAA,oBAAA,CACpB,OACA,OACiB,EAAA;AA1BnB,EAAA,IAAA,EAAA,CAAA;AA2BE,EAAA,MAAM,EAAE,SAAA,EAAW,QAAU,EAAA,QAAA,EAAa,GAAA,KAAA,CAAA;AAC1C,EAAA,MAAM,GAAM,GAAA,OAAA,CAAM,EAAS,GAAA,QAAA,CAAA,KAAA,KAAT,kCAAiB,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAE5C,EAAM,MAAA,IAAA,GAAO,QAAQ,SAAS,CAAA,CAAA;AAC9B,EAAM,MAAA,SAAA,GAAY,aAAa,SAAS,CAAA,CAAA;AACxC,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,SAAS,CAAM,KAAA,GAAA,CAAA;AAC9C,EAAM,MAAA,aAAA,GAAgB,CAAC,MAAQ,EAAA,KAAK,EAAE,QAAS,CAAA,IAAI,IAAI,CAAK,CAAA,GAAA,CAAA,CAAA;AAC5D,EAAM,MAAA,cAAA,GAAiB,GAAO,IAAA,UAAA,GAAa,CAAK,CAAA,GAAA,CAAA,CAAA;AAChD,EAAM,MAAA,QAAA,GAAW,QAAS,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAExC,EAAI,IAAA,EAAE,QAAU,EAAA,SAAA,EAAW,aAAc,EAAA,GACvC,OAAO,QAAa,KAAA,QAAA,GAChB,EAAE,QAAA,EAAU,QAAU,EAAA,SAAA,EAAW,GAAG,aAAe,EAAA,IAAA,EACnD,GAAA,EAAE,QAAU,EAAA,CAAA,EAAG,WAAW,CAAG,EAAA,aAAA,EAAe,IAAM,EAAA,GAAG,QAAS,EAAA,CAAA;AAEpE,EAAI,IAAA,SAAA,IAAa,OAAO,aAAA,KAAkB,QAAU,EAAA;AAClD,IAAY,SAAA,GAAA,SAAA,KAAc,KAAQ,GAAA,aAAA,GAAgB,CAAK,CAAA,GAAA,aAAA,CAAA;AAAA,GACzD;AAEA,EAAA,OAAO,UACH,GAAA,EAAE,CAAG,EAAA,SAAA,GAAY,gBAAgB,CAAG,EAAA,QAAA,GAAW,aAAc,EAAA,GAC7D,EAAE,CAAG,EAAA,QAAA,GAAW,aAAe,EAAA,CAAA,EAAG,YAAY,cAAe,EAAA,CAAA;AACnE,CAAA;AAEa,MAAA,MAAA,GAAS,CAAC,OAAA,GAAyB,CAAmB,MAAA;AAAA,EACjE,IAAM,EAAA,QAAA;AAAA,EACN,OAAA;AAAA,EACA,MAAM,GAAG,KAAO,EAAA;AAtDlB,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAuDI,IAAA,MAAM,EAAE,CAAA,EAAG,CAAG,EAAA,SAAA,EAAW,gBAAmB,GAAA,KAAA,CAAA;AAC5C,IAAA,MAAM,UAAa,GAAA,MAAM,oBAAqB,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAE5D,IACE,IAAA,SAAA,MAAA,CAAc,oBAAe,MAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAuB,gBACrC,EAAe,GAAA,cAAA,CAAA,KAAA,KAAf,mBAAsB,eACtB,CAAA,EAAA;AACA,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAEA,IAAO,OAAA;AAAA,MACL,CAAA,EAAG,IAAI,UAAW,CAAA,CAAA;AAAA,MAClB,CAAA,EAAG,IAAI,UAAW,CAAA,CAAA;AAAA,MAClB,IAAM,EAAA;AAAA,QACJ,GAAG,UAAA;AAAA,QACH,SAAA;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAA;;;;"}