{"version":3,"file":"resize-observer.mjs","sources":["../../../../packages/shared/resize-observer.tsx"],"sourcesContent":["import { defineComponent, onBeforeUnmount, watch } from 'vue'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport { useFirstElement } from '../hooks/use-first-element'\n\nexport default defineComponent({\n  name: 'ResizeObserver',\n  emits: ['resize'],\n  setup(props, { emit, slots }) {\n    const { children, firstElement } = useFirstElement()\n\n    let resizeObserver: ResizeObserver | null\n\n    const createResizeObserver = (target: HTMLElement) => {\n      resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n        const entry = entries[0]\n        emit('resize', entry)\n      })\n      resizeObserver.observe(target)\n    }\n\n    const destroyResizeObserver = () => {\n      if (resizeObserver) {\n        resizeObserver.disconnect()\n        resizeObserver = null\n      }\n    }\n\n    watch(firstElement, (element) => {\n      if (resizeObserver) destroyResizeObserver()\n      if (element) {\n        createResizeObserver(element)\n      }\n    })\n\n    onBeforeUnmount(() => {\n      if (resizeObserver) destroyResizeObserver()\n    })\n\n    return () => {\n      children.value = slots.default?.()\n      return children.value\n    }\n  }\n})\n"],"names":["name","emits","setup","props","emit","slots","children","firstElement","useFirstElement","resizeObserver","createResizeObserver","target","ResizeObserver","entries","entry","observe","destroyResizeObserver","disconnect","watch","element","onBeforeUnmount","value","default"],"mappings":";;;;AAIA,qCAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,gBAAA;AAAA,EACNC,KAAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,EAChBC,MAAMC,KAAO,EAAA;AAAA,IAAEC,IAAAA;AAAAA,IAAMC,KAAAA;AAAAA,GAAS,EAAA;AAC5B,IAAM,MAAA;AAAA,MAAEC,QAAAA;AAAAA,MAAUC,YAAAA;AAAAA,QAAiBC,eAAgB,EAAA,CAAA;AAEnD,IAAIC,IAAAA,cAAAA,CAAAA;AAEJ,IAAA,MAAMC,uBAAwBC,CAAwB,MAAA,KAAA;AACpDF,MAAiB,cAAA,GAAA,IAAIG,iBAAgBC,CAAmC,OAAA,KAAA;AACtE,QAAMC,MAAAA,KAAAA,GAAQD,QAAQ,CAAC,CAAA,CAAA;AACvBT,QAAAA,IAAAA,CAAK,UAAUU,KAAK,CAAA,CAAA;AAAA,OACrB,CAAA,CAAA;AACDL,MAAAA,cAAAA,CAAeM,QAAQJ,MAAM,CAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,MAAMK,wBAAwBA,MAAM;AAClC,MAAA,IAAIP,cAAgB,EAAA;AAClBA,QAAAA,cAAAA,CAAeQ,UAAW,EAAA,CAAA;AAC1BR,QAAiB,cAAA,GAAA,IAAA,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAEAS,IAAAA,KAAAA,CAAMX,cAAeY,CAAY,OAAA,KAAA;AAC/B,MAAIV,IAAAA,cAAAA;AAAgBO,QAAsB,qBAAA,EAAA,CAAA;AAC1C,MAAA,IAAIG,OAAS,EAAA;AACXT,QAAAA,oBAAAA,CAAqBS,OAAO,CAAA,CAAA;AAAA,OAC9B;AAAA,KACD,CAAA,CAAA;AAEDC,IAAAA,eAAAA,CAAgB,MAAM;AACpB,MAAIX,IAAAA,cAAAA;AAAgBO,QAAsB,qBAAA,EAAA,CAAA;AAAA,KAC3C,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AAtCjB,MAAA,IAAA,EAAA,CAAA;AAuCMV,MAASe,QAAAA,CAAAA,KAAAA,GAAAA,CAAQhB,WAAMiB,OAANjB,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AACjB,MAAA,OAAOC,QAASe,CAAAA,KAAAA,CAAAA;AAAAA,KAClB,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}