useOriginScroll.js 897 B

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