vuesax-alpha
Version:
A Component Library for Vue 3
1 lines • 1.95 kB
Source Map (JSON)
{"version":3,"file":"get-scale.mjs","sources":["../../../../../../../packages/hooks/use-floating/dom/platform/get-scale.ts"],"sourcesContent":["import { createCoords, round } from '@vuesax-alpha/hooks/use-floating/utils'\nimport { isHTMLElement } from '@vuesax-alpha/hooks/use-floating/utils/dom'\nimport { unwrapElement } from '../utils/unwrap-element'\nimport { getCssDimensions } from '../utils/get-css-demenssions'\nimport type { Coords } from '@vuesax-alpha/hooks/use-floating/utils'\nimport type { VirtualElement } from '../types'\n\nexport function getScale(element: Element | VirtualElement): Coords {\n const domElement = unwrapElement(element)\n\n if (!isHTMLElement(domElement)) {\n return createCoords(1)\n }\n\n const rect = domElement.getBoundingClientRect()\n const { width, height, $ } = getCssDimensions(domElement)\n let x = ($ ? round(rect.width) : rect.width) / width\n let y = ($ ? round(rect.height) : rect.height) / height\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1\n }\n\n return {\n x,\n y,\n }\n}\n"],"names":[],"mappings":";;;;;AAOO,SAAS,SAAS,OAA2C,EAAA;AAClE,EAAM,MAAA,UAAA,GAAa,cAAc,OAAO,CAAA,CAAA;AAExC,EAAI,IAAA,CAAC,aAAc,CAAA,UAAU,CAAG,EAAA;AAC9B,IAAA,OAAO,aAAa,CAAC,CAAA,CAAA;AAAA,GACvB;AAEA,EAAM,MAAA,IAAA,GAAO,WAAW,qBAAsB,EAAA,CAAA;AAC9C,EAAA,MAAM,EAAE,KAAO,EAAA,MAAA,EAAQ,CAAE,EAAA,GAAI,iBAAiB,UAAU,CAAA,CAAA;AACxD,EAAA,IAAI,KAAK,CAAI,GAAA,KAAA,CAAM,KAAK,KAAK,CAAA,GAAI,KAAK,KAAS,IAAA,KAAA,CAAA;AAC/C,EAAA,IAAI,KAAK,CAAI,GAAA,KAAA,CAAM,KAAK,MAAM,CAAA,GAAI,KAAK,MAAU,IAAA,MAAA,CAAA;AAIjD,EAAA,IAAI,CAAC,CAAK,IAAA,CAAC,MAAO,CAAA,QAAA,CAAS,CAAC,CAAG,EAAA;AAC7B,IAAI,CAAA,GAAA,CAAA,CAAA;AAAA,GACN;AAEA,EAAA,IAAI,CAAC,CAAK,IAAA,CAAC,MAAO,CAAA,QAAA,CAAS,CAAC,CAAG,EAAA;AAC7B,IAAI,CAAA,GAAA,CAAA,CAAA;AAAA,GACN;AAEA,EAAO,OAAA;AAAA,IACL,CAAA;AAAA,IACA,CAAA;AAAA,GACF,CAAA;AACF;;;;"}