syncroScroll.js 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. function syncronizeElementsScrolling(elements, direction = "vh") {
  4. let activeScroller = null;
  5. const bSyncroV = direction.indexOf("v") > -1;
  6. const bSyncroH = direction.indexOf("h") > -1;
  7. const setActive = function (e) {
  8. activeScroller = e.target;
  9. };
  10. const applyListener = function (element) {
  11. element.addEventListener("mouseenter", setActive);
  12. element.addEventListener("mousedown", () => {
  13. elements.forEach((e) => e.removeEventListener("mouseenter", setActive));
  14. window.addEventListener("mouseup", () => elements.forEach((e) => e.addEventListener("mouseenter", setActive)));
  15. });
  16. element.addEventListener("scroll", function (e) {
  17. if (e.target !== activeScroller)
  18. return;
  19. elements.forEach(function (element) {
  20. if (activeScroller === element || activeScroller === null)
  21. return;
  22. if (bSyncroV)
  23. element.scrollTop = activeScroller.scrollTop;
  24. if (bSyncroH)
  25. element.scrollLeft = activeScroller.scrollLeft;
  26. });
  27. });
  28. };
  29. elements.forEach(applyListener);
  30. }
  31. exports.default = syncronizeElementsScrolling;
  32. //# sourceMappingURL=syncroScroll.js.map