UNPKG

@frsource/tiny-carousel-core

Version:

Core module for @frsource/tiny-carousel, based on CSS scroll snap feature 🚀

3 lines (2 loc) • 2.66 kB
var t=require("@frsource/tiny-carousel-utils");function i(t,i){for(var s=0;s<i.length;s++){var h=i[s];h.enumerable=h.enumerable||!1,h.configurable=!0,"value"in h&&(h.writable=!0),Object.defineProperty(t,h.key,h)}}var s={active:0,className:"frs-tc",classNameOverflow:"frs-tc--o",itemClassName:"frs-tc-item",hideScrollClassName:"frs-hide-scroll",overflow:!0,items:[]};exports.TinyCarousel=/*#__PURE__*/function(){function h(t,i){void 0===i&&(i={}),this.carouselElement=void 0,this.config=void 0,this.t=void 0,this.i=void 0,this.h=void 0,this.carouselElement=t,this.config=Object.assign({},s,i),this.i=this.resetActive.bind(this),this.h=this.handleOverflow.bind(this)}h.updateDefaultConfig=function(t){Object.assign(s,t)};var r,n,e,o=h.prototype;return o.handleOverflow=function(){this.config.overflow&&this.config.items.length&&(-1!==this.active&&this.active!==this.config.items.length||this.goTo(this.active))},o.use=function(t){return t.install.apply(t,[this].concat([].slice.call(arguments,1))),this},o.init=function(){var i=this;return t.on(this.carouselElement,"scroll",this.i,{passive:!0}),this.h=t.addScrollEndListener(this.carouselElement,this.h),this.config.items.length||(this.config.items=this.findPossibleItems()),this.carouselElement.classList.add(this.config.className),this.carouselElement.classList.add(this.config.hideScrollClassName),this.config.overflow&&this.carouselElement.classList.add(this.config.classNameOverflow),this.config.items.forEach(function(t){var s=t.classList,h=t.dataset;s.contains(i.config.itemClassName)||(h.tcACls="",s.add(i.config.itemClassName))}),this.goTo(this.config.active),this},o.destroy=function(){return t.off(this.carouselElement,"scroll",this.i),t.off(this.carouselElement,"scroll",this.h),this},o.goTo=function(t){var i=this.config.items.length;if(i){if(this.config.overflow){for(;t<0;)t+=i;for(;t>=i;)t-=i}else t<0?t=0:t>=i&&(t=i-1);this.carouselElement.scrollLeft=this.config.items[t].offsetLeft}return this},o.next=function(){return this.goTo(this.active+1)},o.prev=function(){return this.goTo(this.active-1)},o.resetActive=function(){this.t=void 0},o.findPossibleItems=function(){var t=Array.from(this.carouselElement.children),i=this.config.itemClassName,s=t.filter(function(t){return!("tcACls"in t.dataset)&&t.classList.contains(i)});return s.length?s:t},r=h,e=[{key:"defaultConfig",get:function(){return Object.assign({},s)}}],(n=[{key:"active",get:function(){return void 0!==this.t||(this.t=t.findXSnapIndex(this.carouselElement,this.config.items,this.config.overflow)),this.t}}])&&i(r.prototype,n),e&&i(r,e),Object.defineProperty(r,"prototype",{writable:!1}),h}(); //# sourceMappingURL=index.js.map