{"version":3,"file":"useIntersectionObserver2.mjs","sources":["../../../../../../packages/hooks/event/useIntersectionObserver.ts"],"sourcesContent":["import { ref, watchEffect } from 'vue'\nimport type { Ref } from 'vue'\n\ninterface IntersectionObserverProps {\n  target: Ref<Element | null | undefined>\n  root?: Ref<any>\n  onIntersect: IntersectionObserverCallback\n  rootMargin?: string\n  threshold?: number\n}\n\ndeclare type Nullable<T> = T | null\n\nexport function useIntersectionObserver({\n  target,\n  root,\n  onIntersect,\n  rootMargin = '0px',\n  threshold = 0.1,\n}: IntersectionObserverProps) {\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let cleanup = () => {}\n  const observer: Ref<Nullable<IntersectionObserver>> = ref(null)\n  const stopEffect = watchEffect(() => {\n    cleanup()\n\n    observer.value = new IntersectionObserver(onIntersect, {\n      root: root ? root.value : null,\n      rootMargin,\n      threshold,\n    })\n\n    const current = target.value\n\n    current && observer.value.observe(current)\n\n    cleanup = () => {\n      if (observer.value) {\n        observer.value.disconnect()\n        target.value && observer.value.unobserve(target.value)\n      }\n    }\n  })\n\n  return {\n    observer,\n    stop: () => {\n      cleanup()\n      stopEffect()\n    },\n  }\n}\n"],"names":[],"mappings":";;AACO,SAAS,uBAAuB,CAAC;AACxC,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,WAAW;AACb,EAAE,UAAU,GAAG,KAAK;AACpB,EAAE,SAAS,GAAG,GAAG;AACjB,CAAC,EAAE;AACH,EAAE,IAAI,OAAO,GAAG,MAAM;AACtB,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM;AACvC,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,QAAQ,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE;AAC3D,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;AACpC,MAAM,UAAU;AAChB,MAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,OAAO,GAAG,MAAM;AACpB,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC1B,QAAQ,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AACpC,QAAQ,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,OAAO;AACP,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,OAAO;AACT,IAAI,QAAQ;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,UAAU,EAAE,CAAC;AACnB,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}