UNPKG

os-scroll-chain

Version:

OverlayScrollbars Extension to prevent scroll chaining

9 lines (7 loc) 2.27 kB
/** * os-scroll-chain v2.0.2 * (c) 2022 Hamed Ehtesham * Released under the MIT License. */ !function(){"use strict";OverlayScrollbars.extension("scroll-chain",function(e,o,c){e=e||{};var s=this,r=s.getElements(),a=o(r.viewport),v=e.vertical||!0,u=e.horizontal||!0;function f(e){for(var o=!1,t=e.target;!o;){if(!t)return;if(t.className&&t.className.startsWith("os-viewport")&&(o=!0,t!==r.viewport))return;t=t.parentNode}return 1}function t(e){if(f(e))if(e.shiftKey||!1){if(u){e=window.event||e;var o=Math.min(1,Math.max(-1,-e.wheelDelta||e.deltaY||e.detail)),t=a.scrollLeft()+.5;if(0<o&&t>=s.scroll().max.x||o<0&&t<=1)return c.prvD(e),!1}}else if(v){e=window.event||e;o=Math.min(1,Math.max(-1,-e.wheelDelta||e.deltaY||e.detail)),t=a.scrollTop()+.5;if(0<o&&t>=s.scroll().max.y||o<0&&t<=1)return c.prvD(e),!1}}function i(e){h=e.touches[0].clientX,m=e.touches[0].clientY,w=!(d=!0)}var h=void 0,m=void 0,d=void 0,w=void 0;function n(e){if(f(e)){if(w)return c.prvD(e),!1;var o,t,r,i,n,l;d&&m&&h&&(o=e.touches[0].clientY,t=e.touches[0].clientX,r=t=h-t,i=o=m-o,r=Math.abs(r),i=Math.abs(i),n=l=!0,0<r-i?2<=r/i&&(n=!1):2<=i/r&&(l=!1),r=(i={ySignificant:n,xSignificant:l}).xSignificant,v&&i.ySignificant&&(n=a.scrollTop()+.5,0<o&&n>=s.scroll().max.y||o<0&&n<=1)&&(d&&(w=!0),c.prvD(e)),u&&r&&(l=a.scrollLeft()+.5,0<t&&l>=s.scroll().max.x||t<0&&l<=1)&&(d&&(w=!0),c.prvD(e)),d=!1)}}function l(e){var o=document.createElement({select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"}[e]||"div"),t=(e="on"+e)in o;return t||(o.setAttribute(e,"return;"),t="function"==typeof o[e]),o=null,t}return{added:function(e){v=void 0!==(e=e||{}).vertical?!!e.vertical:v,u=void 0!==e.horizontal?!!e.horizontal:u,l("wheel")?a.on("wheel",t):a.on("mousewheel DOMMouseScroll",t),a.on("touchstart",i),a.on("touchmove",n),v&&u?a.css("overscroll-behavior","none"):(v&&a.css("overscroll-behavior-y","none"),u&&a.css("overscroll-behavior-x","none"))},removed:function(){l("wheel")?a.off("wheel",t):a.off("mousewheel DOMMouseScroll",t),a.off("touchstart",i),a.off("touchmove",n),v&&u?a.css("overscroll-behavior","unset"):(v&&a.css("overscroll-behavior-y","unset"),u&&a.css("overscroll-behavior-x","unset"))}}})}(); //# sourceMappingURL=os-scroll-chain.min.js.map