{"version":3,"file":"useFrameWheel.cjs","sources":["../../../../../../../packages/vue-components/vc-virtual-list/src/hooks/useFrameWheel.ts"],"sourcesContent":["import type { Ref } from 'vue';\nimport { raf } from '@antdv/utils';\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\n\ninterface FireFoxDOMMouseScrollEvent {\n  detail: number;\n  preventDefault: Function;\n}\n\nexport default function useFrameWheel(\n  inVirtual: Ref<boolean>,\n  isScrollAtTop: Ref<boolean>,\n  isScrollAtBottom: Ref<boolean>,\n  onWheelDelta: (offset: number) => void,\n): [(e: WheelEvent) => void, (e: FireFoxDOMMouseScrollEvent) => void] {\n  let offsetRef = 0;\n  let nextFrame: number = null;\n\n  // Firefox patch\n  let wheelValue = null;\n  let isMouseScroll = false;\n\n  // Scroll status sync\n  const originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n\n  function onWheel(event: { preventDefault?: any; deltaY?: any }) {\n    if (!inVirtual.value) return;\n\n    raf.cancel(nextFrame!);\n\n    const { deltaY } = event;\n    offsetRef += deltaY;\n    wheelValue = 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    nextFrame = raf(() => {\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      const patchMultiple = isMouseScroll ? 10 : 1;\n      onWheelDelta(offsetRef * patchMultiple);\n      offsetRef = 0;\n    });\n  }\n\n  // A patch for firefox\n  function onFireFoxScroll(event: { detail: any }) {\n    if (!inVirtual.value) return;\n\n    isMouseScroll = event.detail === wheelValue;\n  }\n\n  return [onWheel, onFireFoxScroll];\n}\n"],"names":["useOriginScroll","raf","isFF"],"mappings":";;;;;;;;;AAUA,SAAwB,aACtB,CAAA,SAAA,EACA,aACA,EAAA,gBAAA,EACA,YACoE,EAAA;AACpE,EAAA,IAAI,SAAY,GAAA,CAAA,CAAA;AAChB,EAAA,IAAI,SAAoB,GAAA,IAAA,CAAA;AAGxB,EAAA,IAAI,UAAa,GAAA,IAAA,CAAA;AACjB,EAAA,IAAI,aAAgB,GAAA,KAAA,CAAA;AAGpB,EAAM,MAAA,YAAA,GAAeA,uBAAgB,CAAA,aAAA,EAAe,gBAAgB,CAAA,CAAA;AAEpE,EAAA,SAAS,QAAQ,KAA+C,EAAA;AAC9D,IAAA,IAAI,CAAC,SAAU,CAAA,KAAA;AAAO,MAAA,OAAA;AAEtB,IAAAC,OAAA,CAAI,OAAO,SAAU,CAAA,CAAA;AAErB,IAAM,MAAA,EAAE,QAAW,GAAA,KAAA,CAAA;AACnB,IAAa,SAAA,IAAA,MAAA,CAAA;AACb,IAAa,UAAA,GAAA,MAAA,CAAA;AAGb,IAAA,IAAI,aAAa,MAAM,CAAA;AAAG,MAAA,OAAA;AAG1B,IAAA,IAAI,CAACC,iBAAA;AACH,MAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAEvB,IAAA,SAAA,GAAYD,QAAI,MAAM;AAGpB,MAAM,MAAA,aAAA,GAAgB,gBAAgB,EAAK,GAAA,CAAA,CAAA;AAC3C,MAAA,YAAA,CAAa,YAAY,aAAa,CAAA,CAAA;AACtC,MAAY,SAAA,GAAA,CAAA,CAAA;AAAA,KACb,CAAA,CAAA;AAAA,GACH;AAGA,EAAA,SAAS,gBAAgB,KAAwB,EAAA;AAC/C,IAAA,IAAI,CAAC,SAAU,CAAA,KAAA;AAAO,MAAA,OAAA;AAEtB,IAAA,aAAA,GAAgB,MAAM,MAAW,KAAA,UAAA,CAAA;AAAA,GACnC;AAEA,EAAO,OAAA,CAAC,SAAS,eAAe,CAAA,CAAA;AAClC;;;;"}