@frsource/tiny-carousel-plugin-scroll-snap-fallback
Version:
Add CSS Scroll Snap fallback polyfill to your @frsource/tiny-carousel 🧩
3 lines (2 loc) • 895 B
JavaScript
import{on as t,off as e}from"@frsource/tiny-carousel-utils";const l={install:(l,o={})=>{if(o.force||!("undefined"!=typeof CSS&&null!=CSS.supports&&CSS.supports("scroll-snap-align","start")||"undefined"!=typeof InstallTrigger)){const{timeoutedOnScroll:r}=((e,l)=>{let o,r;void 0===l.scrollTimeout&&(l.scrollTimeout=45);let s=2;const n=t=>{--s||(r=r||t.target.scrollLeft,clearTimeout(o),o=setTimeout(i.bind(e,r),l.scrollTimeout,t))};function i(t,l){r=void 0;const o=e.carouselElement.scrollLeft,n=[...e.config.items],i=t>o?-1:0;let c,u,f=0;do{c=n.shift(),u=c.offsetWidth,f+=u}while(n.length&&f+u<o);s=2,l.target.scrollLeft=f+i*u}return t(e.carouselElement,"scroll",n,{passive:!0}),{onScroll:i,timeoutedOnScroll:n}})(l,o),s=l.destroy;l.destroy=function(...t){return e(l.carouselElement,"scroll",r),s.apply(this,t)}}}};export{l as pluginScrollSnapFallback};
//# sourceMappingURL=index.modern.js.map