UNPKG

vuesax-alpha

Version:
1 lines 4.6 kB
{"version":3,"file":"get-bounding-client-rect.mjs","sources":["../../../../../../../packages/hooks/use-floating/dom/utils/get-bounding-client-rect.ts"],"sourcesContent":["import {\n createCoords,\n rectToClientRect,\n} from '@vuesax-alpha/hooks/use-floating/utils'\nimport {\n getComputedStyle,\n getWindow,\n} from '@vuesax-alpha/hooks/use-floating/utils/dom'\n\nimport { getScale } from '../platform/get-scale'\nimport { isElement } from '../platform/is-element'\nimport { getVisualOffsets, shouldAddVisualOffsets } from './get-visual-offsets'\nimport { unwrapElement } from './unwrap-element'\nimport type {\n ClientRectObject,\n VirtualElement,\n} from '@vuesax-alpha/hooks/use-floating/utils'\n\nexport function getBoundingClientRect(\n element: Element | VirtualElement,\n includeScale = false,\n isFixedStrategy = false,\n offsetParent?: Element | Window\n): ClientRectObject {\n const clientRect = element.getBoundingClientRect()\n const domElement = unwrapElement(element)\n\n let scale = createCoords(1)\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent)\n }\n } else {\n scale = getScale(element)\n }\n }\n\n const visualOffsets = shouldAddVisualOffsets(\n domElement,\n isFixedStrategy,\n offsetParent\n )\n ? getVisualOffsets(domElement)\n : createCoords(0)\n\n let x = (clientRect.left + visualOffsets.x) / scale.x\n let y = (clientRect.top + visualOffsets.y) / scale.y\n let width = clientRect.width / scale.x\n let height = clientRect.height / scale.y\n\n if (domElement) {\n const win = getWindow(domElement)\n const offsetWin =\n offsetParent && isElement(offsetParent)\n ? getWindow(offsetParent)\n : offsetParent\n\n let currentIFrame = win.frameElement\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame)\n const iframeRect = currentIFrame.getBoundingClientRect()\n const css = getComputedStyle(currentIFrame)\n const left =\n iframeRect.left +\n (currentIFrame.clientLeft + Number.parseFloat(css.paddingLeft)) *\n iframeScale.x\n const top =\n iframeRect.top +\n (currentIFrame.clientTop + Number.parseFloat(css.paddingTop)) *\n iframeScale.y\n\n x *= iframeScale.x\n y *= iframeScale.y\n width *= iframeScale.x\n height *= iframeScale.y\n\n x += left\n y += top\n\n currentIFrame = getWindow(currentIFrame).frameElement\n }\n }\n\n return rectToClientRect({ width, height, x, y })\n}\n"],"names":[],"mappings":";;;;;;;AAkBO,SAAS,sBACd,OACA,EAAA,YAAA,GAAe,KACf,EAAA,eAAA,GAAkB,OAClB,YACkB,EAAA;AAClB,EAAM,MAAA,UAAA,GAAa,QAAQ,qBAAsB,EAAA,CAAA;AACjD,EAAM,MAAA,UAAA,GAAa,cAAc,OAAO,CAAA,CAAA;AAExC,EAAI,IAAA,KAAA,GAAQ,aAAa,CAAC,CAAA,CAAA;AAC1B,EAAA,IAAI,YAAc,EAAA;AAChB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAI,IAAA,SAAA,CAAU,YAAY,CAAG,EAAA;AAC3B,QAAA,KAAA,GAAQ,SAAS,YAAY,CAAA,CAAA;AAAA,OAC/B;AAAA,KACK,MAAA;AACL,MAAA,KAAA,GAAQ,SAAS,OAAO,CAAA,CAAA;AAAA,KAC1B;AAAA,GACF;AAEA,EAAA,MAAM,aAAgB,GAAA,sBAAA;AAAA,IACpB,UAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,GAEE,GAAA,gBAAA,CAAiB,UAAU,CAAA,GAC3B,aAAa,CAAC,CAAA,CAAA;AAElB,EAAA,IAAI,CAAK,GAAA,CAAA,UAAA,CAAW,IAAO,GAAA,aAAA,CAAc,KAAK,KAAM,CAAA,CAAA,CAAA;AACpD,EAAA,IAAI,CAAK,GAAA,CAAA,UAAA,CAAW,GAAM,GAAA,aAAA,CAAc,KAAK,KAAM,CAAA,CAAA,CAAA;AACnD,EAAI,IAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,GAAQ,KAAM,CAAA,CAAA,CAAA;AACrC,EAAI,IAAA,MAAA,GAAS,UAAW,CAAA,MAAA,GAAS,KAAM,CAAA,CAAA,CAAA;AAEvC,EAAA,IAAI,UAAY,EAAA;AACd,IAAM,MAAA,GAAA,GAAM,UAAU,UAAU,CAAA,CAAA;AAChC,IAAA,MAAM,YACJ,YAAgB,IAAA,SAAA,CAAU,YAAY,CAClC,GAAA,SAAA,CAAU,YAAY,CACtB,GAAA,YAAA,CAAA;AAEN,IAAA,IAAI,gBAAgB,GAAI,CAAA,YAAA,CAAA;AACxB,IAAO,OAAA,aAAA,IAAiB,YAAgB,IAAA,SAAA,KAAc,GAAK,EAAA;AACzD,MAAM,MAAA,WAAA,GAAc,SAAS,aAAa,CAAA,CAAA;AAC1C,MAAM,MAAA,UAAA,GAAa,cAAc,qBAAsB,EAAA,CAAA;AACvD,MAAM,MAAA,GAAA,GAAM,iBAAiB,aAAa,CAAA,CAAA;AAC1C,MAAM,MAAA,IAAA,GACJ,UAAW,CAAA,IAAA,GAAA,CACV,aAAc,CAAA,UAAA,GAAa,OAAO,UAAW,CAAA,GAAA,CAAI,WAAW,CAAA,IAC3D,WAAY,CAAA,CAAA,CAAA;AAChB,MAAM,MAAA,GAAA,GACJ,UAAW,CAAA,GAAA,GAAA,CACV,aAAc,CAAA,SAAA,GAAY,OAAO,UAAW,CAAA,GAAA,CAAI,UAAU,CAAA,IACzD,WAAY,CAAA,CAAA,CAAA;AAEhB,MAAA,CAAA,IAAK,WAAY,CAAA,CAAA,CAAA;AACjB,MAAA,CAAA,IAAK,WAAY,CAAA,CAAA,CAAA;AACjB,MAAA,KAAA,IAAS,WAAY,CAAA,CAAA,CAAA;AACrB,MAAA,MAAA,IAAU,WAAY,CAAA,CAAA,CAAA;AAEtB,MAAK,CAAA,IAAA,IAAA,CAAA;AACL,MAAK,CAAA,IAAA,GAAA,CAAA;AAEL,MAAgB,aAAA,GAAA,SAAA,CAAU,aAAa,CAAE,CAAA,YAAA,CAAA;AAAA,KAC3C;AAAA,GACF;AAEA,EAAA,OAAO,iBAAiB,EAAE,KAAA,EAAO,MAAQ,EAAA,CAAA,EAAG,GAAG,CAAA,CAAA;AACjD;;;;"}