{"version":3,"file":"use-wheel.mjs","sources":["../../../../../../packages/components/virtual-list/src/hooks/use-wheel.ts"],"sourcesContent":["// @ts-nocheck\nimport { cAF, isFirefox, rAF } from '@element-ultra/utils'\nimport { HORIZONTAL, VERTICAL } from '../defaults'\n\nimport type { ComputedRef } from 'vue'\nimport type { LayoutDirection } from '../types'\n\nconst LayoutKeys = {\n  [HORIZONTAL]: 'deltaX',\n  [VERTICAL]: 'deltaY',\n}\n\ninterface ListWheelState {\n  atStartEdge: ComputedRef<boolean> // exclusive to reachEnd\n  atEndEdge: ComputedRef<boolean>\n  layout: ComputedRef<LayoutDirection>\n}\n\ntype ListWheelHandler = (offset: number) => void\n\nconst useWheel = (\n  { atEndEdge, atStartEdge, layout }: ListWheelState,\n  onWheelDelta: ListWheelHandler\n) => {\n  let frameHandle: number\n  let offset = 0\n\n  // let scrollLock = false\n  // let lockHandle = null\n\n  // const lockScroll = () => {\n  //   clearTimeout(lockHandle)\n  //   scrollLock = true\n  //   lockHandle = setTimeout(() => scrollLock = false, 50)\n  // }\n\n  const hasReachedEdge = (offset: number) => {\n    const edgeReached =\n      (offset < 0 && atStartEdge.value) || (offset > 0 && atEndEdge.value)\n\n    return edgeReached\n  }\n\n  const onWheel = (e: WheelEvent) => {\n    cAF(frameHandle)\n\n    const newOffset = e[LayoutKeys[layout.value]]\n\n    if (hasReachedEdge(offset) && hasReachedEdge(offset + newOffset)) return\n\n    offset += newOffset\n\n    if (!isFirefox()) {\n      e.preventDefault()\n    }\n\n    frameHandle = rAF(() => {\n      onWheelDelta(offset)\n      offset = 0\n    })\n  }\n\n  return {\n    hasReachedEdge,\n    onWheel,\n  }\n}\n\nexport default useWheel\n"],"names":["offset"],"mappings":";;;;;AAOA,MAAM,UAAa,GAAA;AAAA,EACjB,CAAC,UAAU,GAAG,QAAA;AAAA,EACd,CAAC,QAAQ,GAAG,QAAA;AACd,CAAA,CAAA;AAUA,MAAM,WAAW,CACf,EAAE,WAAW,WAAa,EAAA,MAAA,IAC1B,YACG,KAAA;AACH,EAAI,IAAA,WAAA,CAAA;AACJ,EAAA,IAAI,MAAS,GAAA,CAAA,CAAA;AAWb,EAAM,MAAA,cAAA,GAAiB,CAACA,OAAmB,KAAA;AACzC,IAAA,MAAM,cACHA,OAAS,GAAA,CAAA,IAAK,YAAY,KAAWA,IAAAA,OAAAA,GAAS,KAAK,SAAU,CAAA,KAAA,CAAA;AAEhE,IAAO,OAAA,WAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,OAAA,GAAU,CAAC,CAAkB,KAAA;AACjC,IAAA,GAAA,CAAI,WAAW,CAAA,CAAA;AAEf,IAAA,MAAM,SAAY,GAAA,CAAA,CAAE,UAAW,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAE5C,IAAA,IAAI,cAAe,CAAA,MAAM,CAAK,IAAA,cAAA,CAAe,SAAS,SAAS,CAAA;AAAG,MAAA,OAAA;AAElE,IAAU,MAAA,IAAA,SAAA,CAAA;AAEV,IAAI,IAAA,CAAC,WAAa,EAAA;AAChB,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,KACnB;AAEA,IAAA,WAAA,GAAc,IAAI,MAAM;AACtB,MAAA,YAAA,CAAa,MAAM,CAAA,CAAA;AACnB,MAAS,MAAA,GAAA,CAAA,CAAA;AAAA,KACV,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF;;;;"}