UNPKG

tav-ui

Version:
1 lines 2.33 kB
{"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;;;;"}