{"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;;;;"}