tav-ui
Version:
1 lines • 3.36 kB
Source Map (JSON)
{"version":3,"file":"useScroll2.mjs","sources":["../../../../../../packages/hooks/event/useScroll.ts"],"sourcesContent":["import { onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useThrottleFn } from '@vueuse/core'\nimport { isObject, isWindow } from '@tav-ui/utils/is'\nimport type { Ref } from 'vue'\n\nexport function useScroll(\n refEl: Ref<Element | Window | null>,\n options?: {\n wait?: number\n leading?: boolean\n trailing?: boolean\n }\n) {\n const refX = ref(0)\n const refY = ref(0)\n let handler = () => {\n if (isWindow(refEl.value)) {\n refX.value = refEl.value.scrollX\n refY.value = refEl.value.scrollY\n } else if (refEl.value) {\n refX.value = (refEl.value as Element).scrollLeft\n refY.value = (refEl.value as Element).scrollTop\n }\n }\n\n if (isObject(options)) {\n let wait = 0\n if (options.wait && options.wait > 0) {\n wait = options.wait\n Reflect.deleteProperty(options, 'wait')\n }\n\n handler = useThrottleFn(handler, wait)\n }\n\n let stopWatch: () => void\n onMounted(() => {\n stopWatch = watch(\n refEl,\n (el, prevEl, onCleanup) => {\n if (el) el.addEventListener('scroll', handler)\n else if (prevEl) prevEl.removeEventListener('scroll', handler)\n\n onCleanup(() => {\n refX.value = refY.value = 0\n el && el.removeEventListener('scroll', handler)\n })\n },\n { immediate: true }\n )\n })\n\n onUnmounted(() => {\n refEl.value && refEl.value.removeEventListener('scroll', handler)\n })\n\n function stop() {\n stopWatch && stopWatch()\n }\n\n return { refX, refY, stop }\n}\n"],"names":[],"mappings":";;;;AAGO,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1C,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,OAAO,GAAG,MAAM;AACtB,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC/B,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACvC,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACvC,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;AAC1C,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;AACzC,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAK;AACxD,MAAM,IAAI,EAAE;AACZ,QAAQ,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/C,WAAW,IAAI,MAAM;AACrB,QAAQ,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtD,MAAM,SAAS,CAAC,MAAM;AACtB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACpC,QAAQ,EAAE,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxD,OAAO,CAAC,CAAC;AACT,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5B,GAAG,CAAC,CAAC;AACL,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtE,GAAG,CAAC,CAAC;AACL,EAAE,SAAS,IAAI,GAAG;AAClB,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC9B;;;;"}