UNPKG

@vuesax-alpha/nightly

Version:
1 lines 3.16 kB
{"version":3,"file":"get-rect-relative-to-offset-parent.mjs","sources":["../../../../../../../packages/hooks/use-floating/dom/utils/get-rect-relative-to-offset-parent.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'\nimport { getBoundingClientRect } from './get-bounding-client-rect'\nimport { getWindowScrollBarX } from './get-window-scrollbar-x'\nimport type {\n Rect,\n Strategy,\n VirtualElement,\n} from '@vuesax-alpha/hooks/use-floating/utils'\n\nexport function getRectRelativeToOffsetParent(\n element: Element | VirtualElement,\n offsetParent: Element | Window,\n strategy: Strategy\n): Rect {\n const isOffsetParentAnElement = isHTMLElement(offsetParent)\n const documentElement = getDocumentElement(offsetParent)\n const isFixed = strategy === 'fixed'\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent)\n\n let scroll = { scrollLeft: 0, scrollTop: 0 }\n const offsets = createCoords(0)\n\n if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {\n if (\n getNodeName(offsetParent) !== 'body' ||\n isOverflowElement(documentElement)\n ) {\n scroll = getNodeScroll(offsetParent)\n }\n\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(\n offsetParent,\n true,\n isFixed,\n offsetParent\n )\n offsets.x = offsetRect.x + offsetParent.clientLeft\n offsets.y = offsetRect.y + offsetParent.clientTop\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement)\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height,\n }\n}\n"],"names":[],"mappings":";;;;;AAgBgB,SAAA,6BAAA,CACd,OACA,EAAA,YAAA,EACA,QACM,EAAA;AACN,EAAM,MAAA,uBAAA,GAA0B,cAAc,YAAY,CAAA,CAAA;AAC1D,EAAM,MAAA,eAAA,GAAkB,mBAAmB,YAAY,CAAA,CAAA;AACvD,EAAA,MAAM,UAAU,QAAa,KAAA,OAAA,CAAA;AAC7B,EAAA,MAAM,IAAO,GAAA,qBAAA,CAAsB,OAAS,EAAA,IAAA,EAAM,SAAS,YAAY,CAAA,CAAA;AAEvE,EAAA,IAAI,MAAS,GAAA,EAAE,UAAY,EAAA,CAAA,EAAG,WAAW,CAAE,EAAA,CAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,aAAa,CAAC,CAAA,CAAA;AAE9B,EAAA,IAAI,uBAA4B,IAAA,CAAC,uBAA2B,IAAA,CAAC,OAAU,EAAA;AACrE,IAAA,IACE,YAAY,YAAY,CAAA,KAAM,MAC9B,IAAA,iBAAA,CAAkB,eAAe,CACjC,EAAA;AACA,MAAA,MAAA,GAAS,cAAc,YAAY,CAAA,CAAA;AAAA,KACrC;AAEA,IAAA,IAAI,uBAAyB,EAAA;AAC3B,MAAA,MAAM,UAAa,GAAA,qBAAA;AAAA,QACjB,YAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,OACF,CAAA;AACA,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,eAC/B,eAAiB,EAAA;AAC1B,MAAQ,OAAA,CAAA,CAAA,GAAI,oBAAoB,eAAe,CAAA,CAAA;AAAA,KACjD;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,CAAG,EAAA,IAAA,CAAK,IAAO,GAAA,MAAA,CAAO,aAAa,OAAQ,CAAA,CAAA;AAAA,IAC3C,CAAG,EAAA,IAAA,CAAK,GAAM,GAAA,MAAA,CAAO,YAAY,OAAQ,CAAA,CAAA;AAAA,IACzC,OAAO,IAAK,CAAA,KAAA;AAAA,IACZ,QAAQ,IAAK,CAAA,MAAA;AAAA,GACf,CAAA;AACF;;;;"}