UNPKG

@frsource/tiny-carousel-core

Version:

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

3 lines (2 loc) • 2.9 kB
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("@frsource/tiny-carousel-utils")):"function"==typeof define&&define.amd?define(["exports","@frsource/tiny-carousel-utils"],i):i((t||self).tinyCarouselCore={},t.tinyCarouselUtils)}(this,function(t,i){function s(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 h={active:0,className:"frs-tc",classNameOverflow:"frs-tc--o",itemClassName:"frs-tc-item",hideScrollClassName:"frs-hide-scroll",overflow:!0,items:[]},e=/*#__PURE__*/function(){function t(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({},h,i),this.i=this.resetActive.bind(this),this.h=this.handleOverflow.bind(this)}t.updateDefaultConfig=function(t){Object.assign(h,t)};var e,n,r,o=t.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 t=this;return i.on(this.carouselElement,"scroll",this.i,{passive:!0}),this.h=i.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(i){var s=i.classList,h=i.dataset;s.contains(t.config.itemClassName)||(h.tcACls="",s.add(t.config.itemClassName))}),this.goTo(this.config.active),this},o.destroy=function(){return i.off(this.carouselElement,"scroll",this.i),i.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},e=t,r=[{key:"defaultConfig",get:function(){return Object.assign({},h)}}],(n=[{key:"active",get:function(){return void 0!==this.t||(this.t=i.findXSnapIndex(this.carouselElement,this.config.items,this.config.overflow)),this.t}}])&&s(e.prototype,n),r&&s(e,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();t.TinyCarousel=e}); //# sourceMappingURL=index.umd.js.map