0a5512fef94b94a450b513e97c53642cad5cac9363f41c67e2769e7e7767624175505e55c748c44cfa0844e298488617c175f60f7186370e594ede9114543d 991 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { HORIZONTAL, VERTICAL } from '../defaults.mjs';
  2. import { cAF, rAF } from '../../../../utils/raf.mjs';
  3. import { isFirefox } from '../../../../utils/browser.mjs';
  4. const LayoutKeys = {
  5. [HORIZONTAL]: "deltaX",
  6. [VERTICAL]: "deltaY"
  7. };
  8. const useWheel = ({ atEndEdge, atStartEdge, layout }, onWheelDelta) => {
  9. let frameHandle;
  10. let offset = 0;
  11. const hasReachedEdge = (offset2) => {
  12. const edgeReached = offset2 < 0 && atStartEdge.value || offset2 > 0 && atEndEdge.value;
  13. return edgeReached;
  14. };
  15. const onWheel = (e) => {
  16. cAF(frameHandle);
  17. const newOffset = e[LayoutKeys[layout.value]];
  18. if (hasReachedEdge(offset) && hasReachedEdge(offset + newOffset))
  19. return;
  20. offset += newOffset;
  21. if (!isFirefox()) {
  22. e.preventDefault();
  23. }
  24. frameHandle = rAF(() => {
  25. onWheelDelta(offset);
  26. offset = 0;
  27. });
  28. };
  29. return {
  30. hasReachedEdge,
  31. onWheel
  32. };
  33. };
  34. export { useWheel as default };
  35. //# sourceMappingURL=use-wheel.mjs.map