@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 3.23 kB
Source Map (JSON)
{"version":3,"file":"convert-offset-parent-relative-rect-to-viewport-relative-rect.mjs","sources":["../../../../../../../packages/hooks/use-floating/dom/platform/convert-offset-parent-relative-rect-to-viewport-relative-rect.ts"],"sourcesContent":["import { createCoords } from '@vuesax-alpha/hooks/use-floating/utils'\nimport {\n getDocumentElement,\n getNodeName,\n getNodeScroll,\n isHTMLElement,\n isOverflowElement,\n} from '@vuesax-alpha/hooks/use-floating/utils/dom'\n\nimport { getBoundingClientRect } from '../utils/get-bounding-client-rect'\nimport { getScale } from './get-scale'\nimport type { Rect, Strategy } from '@vuesax-alpha/hooks/use-floating/utils'\n\nexport function convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy,\n}: {\n rect: Rect\n offsetParent: Element | Window\n strategy: Strategy\n}): Rect {\n const isOffsetParentAnElement = isHTMLElement(offsetParent)\n const documentElement = getDocumentElement(offsetParent)\n\n if (offsetParent === documentElement) {\n return rect\n }\n\n let scroll = { scrollLeft: 0, scrollTop: 0 }\n let scale = createCoords(1)\n const offsets = createCoords(0)\n\n if (\n isOffsetParentAnElement ||\n (!isOffsetParentAnElement && strategy !== 'fixed')\n ) {\n if (\n getNodeName(offsetParent) !== 'body' ||\n isOverflowElement(documentElement)\n ) {\n scroll = getNodeScroll(offsetParent)\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent)\n scale = getScale(offsetParent)\n offsets.x = offsetRect.x + offsetParent.clientLeft\n offsets.y = offsetRect.y + offsetParent.clientTop\n }\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y,\n }\n}\n"],"names":[],"mappings":";;;;;AAaO,SAAS,qDAAsD,CAAA;AAAA,EACpE,IAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AACF,CAIS,EAAA;AACP,EAAM,MAAA,uBAAA,GAA0B,cAAc,YAAY,CAAA,CAAA;AAC1D,EAAM,MAAA,eAAA,GAAkB,mBAAmB,YAAY,CAAA,CAAA;AAEvD,EAAA,IAAI,iBAAiB,eAAiB,EAAA;AACpC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,MAAS,GAAA,EAAE,UAAY,EAAA,CAAA,EAAG,WAAW,CAAE,EAAA,CAAA;AAC3C,EAAI,IAAA,KAAA,GAAQ,aAAa,CAAC,CAAA,CAAA;AAC1B,EAAM,MAAA,OAAA,GAAU,aAAa,CAAC,CAAA,CAAA;AAE9B,EAAA,IACE,uBACC,IAAA,CAAC,uBAA2B,IAAA,QAAA,KAAa,OAC1C,EAAA;AACA,IAAA,IACE,YAAY,YAAY,CAAA,KAAM,MAC9B,IAAA,iBAAA,CAAkB,eAAe,CACjC,EAAA;AACA,MAAA,MAAA,GAAS,cAAc,YAAY,CAAA,CAAA;AAAA,KACrC;AAEA,IAAI,IAAA,aAAA,CAAc,YAAY,CAAG,EAAA;AAC/B,MAAM,MAAA,UAAA,GAAa,sBAAsB,YAAY,CAAA,CAAA;AACrD,MAAA,KAAA,GAAQ,SAAS,YAAY,CAAA,CAAA;AAC7B,MAAQ,OAAA,CAAA,CAAA,GAAI,UAAW,CAAA,CAAA,GAAI,YAAa,CAAA,UAAA,CAAA;AACxC,MAAQ,OAAA,CAAA,CAAA,GAAI,UAAW,CAAA,CAAA,GAAI,YAAa,CAAA,SAAA,CAAA;AAAA,KAC1C;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,IAAK,CAAA,KAAA,GAAQ,KAAM,CAAA,CAAA;AAAA,IAC1B,MAAA,EAAQ,IAAK,CAAA,MAAA,GAAS,KAAM,CAAA,CAAA;AAAA,IAC5B,CAAA,EAAG,KAAK,CAAI,GAAA,KAAA,CAAM,IAAI,MAAO,CAAA,UAAA,GAAa,KAAM,CAAA,CAAA,GAAI,OAAQ,CAAA,CAAA;AAAA,IAC5D,CAAA,EAAG,KAAK,CAAI,GAAA,KAAA,CAAM,IAAI,MAAO,CAAA,SAAA,GAAY,KAAM,CAAA,CAAA,GAAI,OAAQ,CAAA,CAAA;AAAA,GAC7D,CAAA;AACF;;;;"}