d8ab83f48fb85e0a4f6cc5fb645683e1.json 6.76 KB
{"ast":null,"code":"import * as React from 'react';\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n  var touchedRef = useRef(false);\n  var touchYRef = useRef(0);\n  var elementRef = useRef(null); // Smooth scroll\n\n  var intervalRef = useRef(null);\n  var cleanUpEvents;\n\n  var onTouchMove = function onTouchMove(e) {\n    if (touchedRef.current) {\n      var currentY = Math.ceil(e.touches[0].pageY);\n      var offsetY = touchYRef.current - currentY;\n      touchYRef.current = currentY;\n\n      if (callback(offsetY)) {\n        e.preventDefault();\n      } // Smooth interval\n\n\n      clearInterval(intervalRef.current);\n      intervalRef.current = setInterval(function () {\n        offsetY *= SMOOTH_PTG;\n\n        if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n          clearInterval(intervalRef.current);\n        }\n      }, 16);\n    }\n  };\n\n  var onTouchEnd = function onTouchEnd() {\n    touchedRef.current = false;\n    cleanUpEvents();\n  };\n\n  var onTouchStart = function onTouchStart(e) {\n    cleanUpEvents();\n\n    if (e.touches.length === 1 && !touchedRef.current) {\n      touchedRef.current = true;\n      touchYRef.current = Math.ceil(e.touches[0].pageY);\n      elementRef.current = e.target;\n      elementRef.current.addEventListener('touchmove', onTouchMove);\n      elementRef.current.addEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  cleanUpEvents = function cleanUpEvents() {\n    if (elementRef.current) {\n      elementRef.current.removeEventListener('touchmove', onTouchMove);\n      elementRef.current.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  React.useLayoutEffect(function () {\n    if (inVirtual) {\n      listRef.current.addEventListener('touchstart', onTouchStart);\n    }\n\n    return function () {\n      listRef.current.removeEventListener('touchstart', onTouchStart);\n      cleanUpEvents();\n      clearInterval(intervalRef.current);\n    };\n  }, [inVirtual]);\n}","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js"],"names":["React","useRef","SMOOTH_PTG","useMobileTouchMove","inVirtual","listRef","callback","touchedRef","touchYRef","elementRef","intervalRef","cleanUpEvents","onTouchMove","e","current","currentY","Math","ceil","touches","pageY","offsetY","preventDefault","clearInterval","setInterval","abs","onTouchEnd","onTouchStart","length","target","addEventListener","removeEventListener","useLayoutEffect"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n  var touchedRef = useRef(false);\n  var touchYRef = useRef(0);\n  var elementRef = useRef(null); // Smooth scroll\n\n  var intervalRef = useRef(null);\n  var cleanUpEvents;\n\n  var onTouchMove = function onTouchMove(e) {\n    if (touchedRef.current) {\n      var currentY = Math.ceil(e.touches[0].pageY);\n      var offsetY = touchYRef.current - currentY;\n      touchYRef.current = currentY;\n\n      if (callback(offsetY)) {\n        e.preventDefault();\n      } // Smooth interval\n\n\n      clearInterval(intervalRef.current);\n      intervalRef.current = setInterval(function () {\n        offsetY *= SMOOTH_PTG;\n\n        if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n          clearInterval(intervalRef.current);\n        }\n      }, 16);\n    }\n  };\n\n  var onTouchEnd = function onTouchEnd() {\n    touchedRef.current = false;\n    cleanUpEvents();\n  };\n\n  var onTouchStart = function onTouchStart(e) {\n    cleanUpEvents();\n\n    if (e.touches.length === 1 && !touchedRef.current) {\n      touchedRef.current = true;\n      touchYRef.current = Math.ceil(e.touches[0].pageY);\n      elementRef.current = e.target;\n      elementRef.current.addEventListener('touchmove', onTouchMove);\n      elementRef.current.addEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  cleanUpEvents = function cleanUpEvents() {\n    if (elementRef.current) {\n      elementRef.current.removeEventListener('touchmove', onTouchMove);\n      elementRef.current.removeEventListener('touchend', onTouchEnd);\n    }\n  };\n\n  React.useLayoutEffect(function () {\n    if (inVirtual) {\n      listRef.current.addEventListener('touchstart', onTouchStart);\n    }\n\n    return function () {\n      listRef.current.removeEventListener('touchstart', onTouchStart);\n      cleanUpEvents();\n      clearInterval(intervalRef.current);\n    };\n  }, [inVirtual]);\n}"]},"metadata":{},"sourceType":"module"}