{"ast":null,"code":"import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n  var offsetRef = useRef(0);\n  var nextFrameRef = useRef(null);\n\n  // Firefox patch\n  var wheelValueRef = useRef(null);\n  var isMouseScrollRef = useRef(false);\n\n  // Scroll status sync\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n  function onWheelY(event, deltaY) {\n    raf.cancel(nextFrameRef.current);\n    offsetRef.current += deltaY;\n    wheelValueRef.current = deltaY;\n\n    // Do nothing when scroll at the edge, Skip check when is in scroll\n    if (originScroll(deltaY)) return;\n\n    // Proxy of scroll events\n    if (!isFF) {\n      event.preventDefault();\n    }\n    nextFrameRef.current = raf(function () {\n      // Patch a multiple for Firefox to fix wheel number too small\n      // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n      var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n      onWheelDelta(offsetRef.current * patchMultiple);\n      offsetRef.current = 0;\n    });\n  }\n  function onWheelX(event, deltaX) {\n    onWheelDelta(deltaX, true);\n    if (!isFF) {\n      event.preventDefault();\n    }\n  }\n\n  // Check for which direction does wheel do. `sx` means `shift + wheel`\n  var wheelDirectionRef = useRef(null);\n  var wheelDirectionCleanRef = useRef(null);\n  function onWheel(event) {\n    if (!inVirtual) return;\n\n    // Wait for 2 frame to clean direction\n    raf.cancel(wheelDirectionCleanRef.current);\n    wheelDirectionCleanRef.current = raf(function () {\n      wheelDirectionRef.current = null;\n    }, 2);\n    var deltaX = event.deltaX,\n      deltaY = event.deltaY,\n      shiftKey = event.shiftKey;\n    var mergedDeltaX = deltaX;\n    var mergedDeltaY = deltaY;\n    if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n      mergedDeltaX = deltaY;\n      mergedDeltaY = 0;\n      wheelDirectionRef.current = 'sx';\n    }\n    var absX = Math.abs(mergedDeltaX);\n    var absY = Math.abs(mergedDeltaY);\n    if (wheelDirectionRef.current === null) {\n      wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n    }\n    if (wheelDirectionRef.current === 'y') {\n      onWheelY(event, mergedDeltaY);\n    } else {\n      onWheelX(event, mergedDeltaX);\n    }\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event) {\n    if (!inVirtual) return;\n    isMouseScrollRef.current = event.detail === wheelValueRef.current;\n  }\n  return [onWheel, onFireFoxScroll];\n}","map":{"version":3,"names":["useRef","raf","isFF","useOriginScroll","useFrameWheel","inVirtual","isScrollAtTop","isScrollAtBottom","horizontalScroll","onWheelDelta","offsetRef","nextFrameRef","wheelValueRef","isMouseScrollRef","originScroll","onWheelY","event","deltaY","cancel","current","preventDefault","patchMultiple","onWheelX","deltaX","wheelDirectionRef","wheelDirectionCleanRef","onWheel","shiftKey","mergedDeltaX","mergedDeltaY","absX","Math","abs","absY","onFireFoxScroll","detail"],"sources":["/var/www/gavt/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js"],"sourcesContent":["import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n  var offsetRef = useRef(0);\n  var nextFrameRef = useRef(null);\n\n  // Firefox patch\n  var wheelValueRef = useRef(null);\n  var isMouseScrollRef = useRef(false);\n\n  // Scroll status sync\n  var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n  function onWheelY(event, deltaY) {\n    raf.cancel(nextFrameRef.current);\n    offsetRef.current += deltaY;\n    wheelValueRef.current = deltaY;\n\n    // Do nothing when scroll at the edge, Skip check when is in scroll\n    if (originScroll(deltaY)) return;\n\n    // Proxy of scroll events\n    if (!isFF) {\n      event.preventDefault();\n    }\n    nextFrameRef.current = raf(function () {\n      // Patch a multiple for Firefox to fix wheel number too small\n      // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n      var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n      onWheelDelta(offsetRef.current * patchMultiple);\n      offsetRef.current = 0;\n    });\n  }\n  function onWheelX(event, deltaX) {\n    onWheelDelta(deltaX, true);\n    if (!isFF) {\n      event.preventDefault();\n    }\n  }\n\n  // Check for which direction does wheel do. `sx` means `shift + wheel`\n  var wheelDirectionRef = useRef(null);\n  var wheelDirectionCleanRef = useRef(null);\n  function onWheel(event) {\n    if (!inVirtual) return;\n\n    // Wait for 2 frame to clean direction\n    raf.cancel(wheelDirectionCleanRef.current);\n    wheelDirectionCleanRef.current = raf(function () {\n      wheelDirectionRef.current = null;\n    }, 2);\n    var deltaX = event.deltaX,\n      deltaY = event.deltaY,\n      shiftKey = event.shiftKey;\n    var mergedDeltaX = deltaX;\n    var mergedDeltaY = deltaY;\n    if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n      mergedDeltaX = deltaY;\n      mergedDeltaY = 0;\n      wheelDirectionRef.current = 'sx';\n    }\n    var absX = Math.abs(mergedDeltaX);\n    var absY = Math.abs(mergedDeltaY);\n    if (wheelDirectionRef.current === null) {\n      wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n    }\n    if (wheelDirectionRef.current === 'y') {\n      onWheelY(event, mergedDeltaY);\n    } else {\n      onWheelX(event, mergedDeltaX);\n    }\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event) {\n    if (!inVirtual) return;\n    isMouseScrollRef.current = event.detail === wheelValueRef.current;\n  }\n  return [onWheel, onFireFoxScroll];\n}"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}