UNPKG

vuestic-ui

Version:
42 lines (41 loc) 1.38 kB
import { watch, onMounted, onBeforeUnmount, unref } from "vue"; const normalizeElements = (elements) => { if (Array.isArray(elements)) { return elements.map(unref); } const unrefArray = unref(elements); return Array.isArray(unrefArray) ? unrefArray : [unrefArray]; }; const useResizeObserver = (elementsList, cb) => { let resizeObserver; const observeAll = (elements) => { elements.forEach((element) => { const unrefElement = unref(element); if (!unrefElement) { return; } if (!(unrefElement instanceof Element)) { console.error("Vuestic: Trying to observe non-HTMLElement", { target: unrefElement, array: elementsList }); throw new Error("Vuestic: Unable to observe non-HTMLElement"); } unrefElement && (resizeObserver == null ? void 0 : resizeObserver.observe(unrefElement)); }); }; watch(elementsList, (newValue) => { resizeObserver == null ? void 0 : resizeObserver.disconnect(); observeAll(normalizeElements(newValue)); }); onMounted(() => { resizeObserver = new ResizeObserver(cb); observeAll(normalizeElements(elementsList)); }); onBeforeUnmount(() => resizeObserver == null ? void 0 : resizeObserver.disconnect()); return resizeObserver; }; export { useResizeObserver as u }; //# sourceMappingURL=useResizeObserver.mjs.map