xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 2.17 kB
Source Map (JSON)
{"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;;;;"}