{"version":3,"file":"useIntersectionObserver.mjs","sources":["../../../../src/composables/useIntersectionObserver.ts"],"sourcesContent":["import { ref, unref, computed, watch, onBeforeUnmount, type Ref } from 'vue'\nimport { unwrapEl } from '../utils/unwrapEl'\n\ntype MaybeRef<T> = T | Ref<T>\n\nexport const useIntersectionObserver = <T extends HTMLElement | undefined>(\n  cb: (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void,\n  options: Ref<IntersectionObserverInit> = ref({}),\n  target: Ref<MaybeRef<T>[] | T> = ref([]),\n  enabled = true,\n) => {\n  const observer = ref<IntersectionObserver>()\n\n  const disconnectObserver = () => {\n    observer.value?.disconnect()\n  }\n\n  const observeTarget = (target: MaybeRef<T>) => {\n    const disclosedTarget = unwrapEl(unref(target))\n    disclosedTarget && observer.value?.observe(disclosedTarget)\n  }\n\n  const observeAll = (targets: MaybeRef<T>[]) => {\n    targets.forEach(observeTarget)\n  }\n\n  const initObserver = () => {\n    observer.value = new IntersectionObserver(cb, options.value)\n  }\n\n  const isIntersectionDisabled = computed(() => !enabled || !(typeof window !== 'undefined' && 'IntersectionObserver' in window))\n\n  watch([target, options], ([newTarget]) => {\n    if (isIntersectionDisabled.value) { return }\n\n    disconnectObserver()\n\n    if (!newTarget) { return }\n\n    initObserver()\n\n    Array.isArray(newTarget) ? observeAll(newTarget) : observeTarget(newTarget)\n  }, { immediate: true })\n\n  onBeforeUnmount(disconnectObserver)\n\n  return { isIntersectionDisabled }\n}\n"],"names":["target"],"mappings":";;AAKO,MAAM,0BAA0B,CACrC,IACA,UAAyC,IAAI,CAAE,CAAA,GAC/C,SAAiC,IAAI,CAAA,CAAE,GACvC,UAAU,SACP;AACH,QAAM,WAAW;AAEjB,QAAM,qBAAqB,MAAM;;AAC/B,mBAAS,UAAT,mBAAgB;AAAA,EAAW;AAGvB,QAAA,gBAAgB,CAACA,YAAwB;;AAC7C,UAAM,kBAAkB,SAAS,MAAMA,OAAM,CAAC;AAC3B,yBAAA,cAAS,UAAT,mBAAgB,QAAQ;AAAA,EAAe;AAGtD,QAAA,aAAa,CAAC,YAA2B;AAC7C,YAAQ,QAAQ,aAAa;AAAA,EAAA;AAG/B,QAAM,eAAe,MAAM;AACzB,aAAS,QAAQ,IAAI,qBAAqB,IAAI,QAAQ,KAAK;AAAA,EAAA;AAGvD,QAAA,yBAAyB,SAAS,MAAM,CAAC,WAAW,EAAE,OAAO,WAAW,eAAe,0BAA0B,OAAO;AAE9H,QAAM,CAAC,QAAQ,OAAO,GAAG,CAAC,CAAC,SAAS,MAAM;AACxC,QAAI,uBAAuB,OAAO;AAAE;AAAA,IAAO;AAExB;AAEnB,QAAI,CAAC,WAAW;AAAE;AAAA,IAAO;AAEZ;AAEb,UAAM,QAAQ,SAAS,IAAI,WAAW,SAAS,IAAI,cAAc,SAAS;AAAA,EAAA,GACzE,EAAE,WAAW,KAAA,CAAM;AAEtB,kBAAgB,kBAAkB;AAElC,SAAO,EAAE,uBAAuB;AAClC;"}