{"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;;;;"}