09d34dc327b940dbe582772eda168677e90979b0444c2d38d2b45ed6acf74e66624454051398e54a98efa88720f45e5e1e0c3489ee3151c60bccaad2534670 1.1 KB

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