{"version":3,"file":"get-css-demenssions.mjs","sources":["../../../../../../../packages/hooks/use-floating/dom/utils/get-css-demenssions.ts"],"sourcesContent":["import { round } from '@vuesax-alpha/hooks/use-floating/utils'\nimport { isHTMLElement } from '@vuesax-alpha/hooks/use-floating/utils/dom'\nimport type { Dimensions } from '@vuesax-alpha/hooks/use-floating/utils'\n\nexport function getCssDimensions(\n  element: Element\n): Dimensions & { $: boolean } {\n  const css = getComputedStyle(element)\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = Number.parseFloat(css.width) || 0\n  let height = Number.parseFloat(css.height) || 0\n  const hasOffset = isHTMLElement(element)\n  const offsetWidth = hasOffset ? element.offsetWidth : width\n  const offsetHeight = hasOffset ? element.offsetHeight : height\n  const shouldFallback =\n    round(width) !== offsetWidth || round(height) !== offsetHeight\n\n  if (shouldFallback) {\n    width = offsetWidth\n    height = offsetHeight\n  }\n\n  return {\n    width,\n    height,\n    $: shouldFallback,\n  }\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,iBACd,OAC6B,EAAA;AAC7B,EAAM,MAAA,GAAA,GAAM,iBAAiB,OAAO,CAAA,CAAA;AAGpC,EAAA,IAAI,KAAQ,GAAA,MAAA,CAAO,UAAW,CAAA,GAAA,CAAI,KAAK,CAAK,IAAA,CAAA,CAAA;AAC5C,EAAA,IAAI,MAAS,GAAA,MAAA,CAAO,UAAW,CAAA,GAAA,CAAI,MAAM,CAAK,IAAA,CAAA,CAAA;AAC9C,EAAM,MAAA,SAAA,GAAY,cAAc,OAAO,CAAA,CAAA;AACvC,EAAM,MAAA,WAAA,GAAc,SAAY,GAAA,OAAA,CAAQ,WAAc,GAAA,KAAA,CAAA;AACtD,EAAM,MAAA,YAAA,GAAe,SAAY,GAAA,OAAA,CAAQ,YAAe,GAAA,MAAA,CAAA;AACxD,EAAA,MAAM,iBACJ,KAAM,CAAA,KAAK,MAAM,WAAe,IAAA,KAAA,CAAM,MAAM,CAAM,KAAA,YAAA,CAAA;AAEpD,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAQ,KAAA,GAAA,WAAA,CAAA;AACR,IAAS,MAAA,GAAA,YAAA,CAAA;AAAA,GACX;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAG,EAAA,cAAA;AAAA,GACL,CAAA;AACF;;;;"}