useOriginScroll.js 1019 B

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _default = (isScrollAtTop, isScrollAtBottom) => {
  7. // Do lock for a wheel when scrolling
  8. let lock = false;
  9. let lockTimeout = null;
  10. function lockScroll() {
  11. clearTimeout(lockTimeout);
  12. lock = true;
  13. lockTimeout = setTimeout(() => {
  14. lock = false;
  15. }, 50);
  16. }
  17. return function (deltaY) {
  18. let smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  19. const originScroll =
  20. // Pass origin wheel when on the top
  21. deltaY < 0 && isScrollAtTop.value ||
  22. // Pass origin wheel when on the bottom
  23. deltaY > 0 && isScrollAtBottom.value;
  24. if (smoothOffset && originScroll) {
  25. // No need lock anymore when it's smooth offset from touchMove interval
  26. clearTimeout(lockTimeout);
  27. lock = false;
  28. } else if (!originScroll || lock) {
  29. lockScroll();
  30. }
  31. return !lock && originScroll;
  32. };
  33. };
  34. exports.default = _default;