{"version":3,"file":"useResizeObserver.mjs","sources":["../../../../src/composables/useResizeObserver.ts"],"sourcesContent":["import { onBeforeUnmount, onMounted, ref, Ref, unref, watch } from 'vue'\n\ntype MaybeRef<T> = T | Ref<T>\ntype MaybeArray<T> = T | T[]\n\nconst normalizeElements = <T>(elements: MaybeRef<T>[] | Ref<MaybeArray<T>>) => {\n  if (Array.isArray(elements)) {\n    return elements.map(unref)\n  }\n\n  const unrefArray = unref(elements)\n\n  return Array.isArray(unrefArray) ? unrefArray : [unrefArray]\n}\n\nexport const useResizeObserver = <T extends HTMLElement | undefined>(elementsList: MaybeRef<T>[] | Ref<MaybeArray<T>>, cb: ResizeObserverCallback) => {\n  let resizeObserver: ResizeObserver | undefined\n\n  const observeAll = (elements: MaybeRef<T>[]) => {\n    elements.forEach((element: MaybeRef<T>) => {\n      const unrefElement = unref(element)\n\n      if (!unrefElement) {\n        return\n      }\n\n      if (!(unrefElement instanceof Element)) {\n        console.error('Vuestic: Trying to observe non-HTMLElement', {\n          target: unrefElement,\n          array: elementsList,\n        })\n        throw new Error('Vuestic: Unable to observe non-HTMLElement')\n      }\n\n      unrefElement && resizeObserver?.observe(unrefElement)\n    })\n  }\n\n  watch(elementsList, (newValue) => {\n    resizeObserver?.disconnect()\n\n    observeAll(normalizeElements(newValue))\n  })\n\n  onMounted(() => {\n    resizeObserver = new ResizeObserver(cb)\n    observeAll(normalizeElements(elementsList))\n  })\n\n  onBeforeUnmount(() => resizeObserver?.disconnect())\n\n  return resizeObserver\n}\n"],"names":[],"mappings":";AAKA,MAAM,oBAAoB,CAAI,aAAiD;AACzE,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAA,SAAS,IAAI,KAAK;AAAA,EAC3B;AAEM,QAAA,aAAa,MAAM,QAAQ;AAEjC,SAAO,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAC7D;AAEa,MAAA,oBAAoB,CAAoC,cAAkD,OAA+B;AAChJ,MAAA;AAEE,QAAA,aAAa,CAAC,aAA4B;AACrC,aAAA,QAAQ,CAAC,YAAyB;AACnC,YAAA,eAAe,MAAM,OAAO;AAElC,UAAI,CAAC,cAAc;AACjB;AAAA,MACF;AAEI,UAAA,EAAE,wBAAwB,UAAU;AACtC,gBAAQ,MAAM,8CAA8C;AAAA,UAC1D,QAAQ;AAAA,UACR,OAAO;AAAA,QAAA,CACR;AACK,cAAA,IAAI,MAAM,4CAA4C;AAAA,MAC9D;AAEgB,uBAAA,iDAAgB,QAAQ;AAAA,IAAY,CACrD;AAAA,EAAA;AAGG,QAAA,cAAc,CAAC,aAAa;AAChC,qDAAgB;AAEL,eAAA,kBAAkB,QAAQ,CAAC;AAAA,EAAA,CACvC;AAED,YAAU,MAAM;AACG,qBAAA,IAAI,eAAe,EAAE;AAC3B,eAAA,kBAAkB,YAAY,CAAC;AAAA,EAAA,CAC3C;AAEe,kBAAA,MAAM,iDAAgB,YAAY;AAE3C,SAAA;AACT;"}