{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/use-height/index.ts"],"sourcesContent":["import { nextTick, onMounted, ref, watch } from 'vue'\nimport { windowHeight, windowWidth } from '@xzx-design/utils'\nimport { onPopupReopen, useRect } from '../'\n\nimport type { Ref } from 'vue'\n\nexport const useHeight = (\n  element: Element | Ref<Element | undefined>,\n  withSafeArea?: boolean\n) => {\n  const height = ref<number>()\n\n  const setHeight = () => {\n    height.value = useRect(element).height\n  }\n\n  onMounted(() => {\n    nextTick(setHeight)\n\n    if (withSafeArea) {\n      for (let i = 1; i <= 3; i++) {\n        setTimeout(setHeight, 100 * i)\n      }\n    }\n  })\n\n  // The result of useHeight might be 0 when the popup is hidden,\n  // so we need to reset the height when the popup is reopened.\n  // IntersectionObserver is a better solution, but it is not supported by legacy browsers.\n  // https://github.com/vant-ui/vant/issues/10628\n  onPopupReopen(() => nextTick(setHeight))\n\n  // The height of the element may change when the window is resized\n  // https://github.com/youzan/vant/issues/11325\n  watch([windowWidth, windowHeight], setHeight)\n\n  return height\n}\n"],"names":[],"mappings":";;;;;;;AAMa,MAAA,SAAA,GAAY,CACvB,OAAA,EACA,YACG,KAAA;AACH,EAAA,MAAM,SAAS,GAAY,EAAA,CAAA;AAE3B,EAAA,MAAM,YAAY,MAAM;AACtB,IAAO,MAAA,CAAA,KAAA,GAAQ,OAAQ,CAAA,OAAO,CAAE,CAAA,MAAA,CAAA;AAAA,GAClC,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,SAAS,CAAA,CAAA;AAElB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAK,IAAA,CAAA,EAAG,CAAK,EAAA,EAAA;AAC3B,QAAW,UAAA,CAAA,SAAA,EAAW,MAAM,CAAC,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAMD,EAAc,aAAA,CAAA,MAAM,QAAS,CAAA,SAAS,CAAC,CAAA,CAAA;AAIvC,EAAA,KAAA,CAAM,CAAC,WAAA,EAAa,YAAY,CAAA,EAAG,SAAS,CAAA,CAAA;AAE5C,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}