{"version":3,"file":"use-resize-observer.mjs","sources":["../../../../packages/hooks/use-resize-observer.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport { isFunction } from '../utils/is'\n\nexport const useResizeObserver = ({\n  elementRef,\n  onResize\n}: {\n  elementRef: Ref<HTMLElement | undefined>\n  onResize: (args: ResizeObserverEntry) => void\n}) => {\n  let resizeObserver: ResizeObserver | null\n\n  const createResizeObserver = () => {\n    if (!elementRef.value) return\n    resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n      const entry: ResizeObserverEntry = entries[0]\n\n      isFunction(onResize) && onResize(entry)\n    })\n    resizeObserver.observe(elementRef.value)\n  }\n\n  const destroyResizeObserver = () => {\n    if (resizeObserver) {\n      resizeObserver.disconnect()\n      resizeObserver = null\n    }\n  }\n\n  return {\n    createResizeObserver,\n    destroyResizeObserver\n  }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,oBAAoB,CAAC;AAAA,EAChC,UAAA;AAAA,EACA,QAAA;AACF,CAGM,KAAA;AACJ,EAAI,IAAA,cAAA,CAAA;AAEJ,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,IAAI,CAAC,UAAW,CAAA,KAAA;AAAO,MAAA,OAAA;AACvB,IAAiB,cAAA,GAAA,IAAI,cAAe,CAAA,CAAC,OAAmC,KAAA;AACtE,MAAM,MAAA,KAAA,GAA6B,QAAQ,CAAC,CAAA,CAAA;AAE5C,MAAW,UAAA,CAAA,QAAQ,CAAK,IAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,KACvC,CAAA,CAAA;AACD,IAAe,cAAA,CAAA,OAAA,CAAQ,WAAW,KAAK,CAAA,CAAA;AAAA,GACzC,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,IAAI,cAAgB,EAAA;AAClB,MAAA,cAAA,CAAe,UAAW,EAAA,CAAA;AAC1B,MAAiB,cAAA,GAAA,IAAA,CAAA;AAAA,KACnB;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,oBAAA;AAAA,IACA,qBAAA;AAAA,GACF,CAAA;AACF;;;;"}