type scrollingDirection = "v" | "h" | "vh" | "hv" ; export default function syncronizeElementsScrolling(elements:Array, direction:scrollingDirection = "vh"):void{ let activeScroller:HTMLElement | null = null; const bSyncroV = direction.indexOf("v") > -1 ; const bSyncroH = direction.indexOf("h") > -1 ; const applyListener = function(element:HTMLBaseElement) { element.addEventListener("mouseenter", function(e:MouseEvent) { activeScroller = e.target as HTMLElement; }); element.addEventListener("scroll", function(e:Event) { if (e.target !== activeScroller) return; elements.forEach(function(element) { if (activeScroller === element || activeScroller === null) return; if (bSyncroV) element.scrollTop = activeScroller.scrollTop; if (bSyncroH) element.scrollLeft = activeScroller.scrollLeft; }); }); } elements.forEach(applyListener) }