{"version":3,"file":"useMobileTouchMove.cjs","sources":["../../../../../../../packages/vue-components/vc-virtual-list/src/hooks/useMobileTouchMove.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport { onBeforeUnmount, onMounted, watch } from 'vue';\n\nconst SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(\n  inVirtual: Ref<boolean>,\n  listRef: Ref<HTMLDivElement | undefined>,\n  callback: (offsetY: number, smoothOffset?: boolean) => boolean,\n) {\n  let touched = false;\n  let touchY = 0;\n\n  let element: HTMLElement | null = null;\n\n  // Smooth scroll\n  let interval: any = null;\n\n  const cleanUpEvents = () => {\n    if (element) {\n      element.removeEventListener('touchmove', onTouchMove);\n      element.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  const onTouchMove = (e: TouchEvent) => {\n    if (touched) {\n      const currentY = Math.ceil(e.touches[0].pageY);\n      let offsetY = touchY - currentY;\n      touchY = currentY;\n\n      if (callback(offsetY))\n        e.preventDefault();\n\n      // Smooth interval\n      clearInterval(interval);\n      interval = setInterval(() => {\n        offsetY *= SMOOTH_PTG;\n\n        if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1)\n          clearInterval(interval);\n      }, 16);\n    }\n  };\n\n  const onTouchEnd = () => {\n    touched = false;\n\n    cleanUpEvents();\n  };\n\n  const onTouchStart = (e: TouchEvent) => {\n    cleanUpEvents();\n\n    if (e.touches.length === 1 && !touched) {\n      touched = true;\n      touchY = Math.ceil(e.touches[0].pageY);\n\n      element = e.target as HTMLElement;\n      element!.addEventListener('touchmove', onTouchMove, { passive: false });\n      element!.addEventListener('touchend', onTouchEnd);\n    }\n  };\n  const noop = () => {};\n\n  onMounted(() => {\n    document.addEventListener('touchmove', noop, { passive: false });\n    watch(\n      inVirtual,\n      (val) => {\n        listRef.value.removeEventListener('touchstart', onTouchStart);\n        cleanUpEvents();\n        clearInterval(interval);\n        if (val)\n          listRef.value.addEventListener('touchstart', onTouchStart, { passive: false });\n      },\n      { immediate: true },\n    );\n  });\n  onBeforeUnmount(() => {\n    document.removeEventListener('touchmove', noop);\n  });\n}\n"],"names":["onMounted","watch","onBeforeUnmount"],"mappings":"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"}