{"version":3,"file":"useResizeObserver.mjs","sources":["../../src/hooks/useResizeObserver.ts"],"sourcesContent":["import { Ref, watch, onBeforeUnmount } from 'vue';\n\nexport default function useResizeObserver(\n  container: Ref<HTMLElement>,\n  callback: (data: ResizeObserverEntry[]) => void,\n) {\n  if (typeof window === 'undefined') return;\n\n  const isSupport = window && (window as Window & typeof globalThis).ResizeObserver;\n  // unit tests do not need any warn console; too many warns influence focusing on more important log info\n  if (!isSupport) return;\n\n  let containerObserver: ResizeObserver = null;\n\n  const cleanupObserver = () => {\n    if (!containerObserver) return;\n    containerObserver.unobserve(container.value);\n    containerObserver.disconnect();\n    containerObserver = null;\n  };\n\n  const addObserver = (el: HTMLElement) => {\n    containerObserver = new ResizeObserver(callback);\n    containerObserver.observe(el);\n  };\n\n  if (container) {\n    watch(\n      container,\n      (el) => {\n        cleanupObserver();\n        el && addObserver(el);\n      },\n      { immediate: true, flush: 'post' },\n    );\n  }\n\n  onBeforeUnmount(() => {\n    cleanupObserver();\n  });\n}\n"],"names":["containerObserver","watch","cleanupObserver","el","immediate","flush","onBeforeUnmount"],"mappings":";;;;;;;;AAEA,SAAA,iBAAA,CAAA,SAAA,EAAA,QAAA,EAAA;AAIE,EAAA,IAAA,OAAA,MAAA,KAAA,WAAA,EAAA,OAAA;AAEM,EAAA,IAAA,SAAA,GAAA,MAAA,IAAA,MAAA,CAAA,cAAA,CAAA;;;AAMN,EAAA,IAAA,eAAA,GAAA,SAAA,eAAA,GAAA;;AAEoBA,IAAAA,iBAAAA,CAAAA,SAAAA,CAAAA,SAAAA,CAAAA,KAAAA,CAAAA,CAAAA;;AAEEA,IAAAA,iBAAAA,GAAAA,IAAAA,CAAAA;;AAGhB,EAAA,IAAA,WAAA,GAAA,SAAA,WAAA,CAAA,EAAA,EAAA;AACgBA,IAAAA,iBAAAA,GAAAA,IAAAA,cAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AACpBA,IAAAA,iBAAAA,CAAAA,OAAAA,CAAAA,EAAAA,CAAAA,CAAAA;;AAGF,EAAA,IAAA,SAAA,EAAA;AACEC,IAAAA,KAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,EAAAA;AAGoBC,MAAAA,eAAAA,EAAAA,CAAAA;AAChBC,MAAAA,EAAAA,IAAAA,WAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AACF,KAAA,EAAA;AACEC,MAAAA,SAAAA,EAAAA,IAAAA;AAAiBC,MAAAA,KAAAA,EAAAA,MAAAA;AAAc,KAAA,CAAA,CAAA;AAErC,GAAA;AAEAC,EAAAA,eAAAA,CAAAA,YAAAA;AACkBJ,IAAAA,eAAAA,EAAAA,CAAAA;AAClB,GAAA,CAAA,CAAA;AACF;;;;"}