{"version":3,"file":"/js/components/carousel.js","mappings":"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","sources":["webpack://bitc/./src/js/components/carousel.js"],"sourcesContent":["/**\n * Handles the carousel functionality.\n */\n\nif ( document.readyState === 'loading' ) {\n\t// The DOM has not yet been loaded.\n\tdocument.addEventListener( 'DOMContentLoaded', initialiseCarousel );\n} else {\n\t// The DOM has already been loaded.\n\tinitialiseCarousel();\n}\n\n/**\n * Iterates through all the carousel found on the current page and instantiates them.\n */\nfunction initialiseCarousel() {\n\tconst items = document.querySelectorAll( '.js-glide-carousel' );\n\n\t// No point if no carousels.\n\tif ( ! items.length ) {\n\t\treturn;\n\t}\n\n\tfor ( let i = 0, len = items.length; i < len; i++ ) {\n\t\tcarouselHandler( items[ i ] );\n\t}\n}\n\n/**\n * Initialise the glide carousel on page load.\n *\n * @param {object} currentItem DOM element for the current carousel.\n */\nfunction carouselHandler( currentItem ) {\n\tconst settings = getCarouselConfig( currentItem.dataset.carousel_config );\n\tconst slides = currentItem.querySelectorAll( `.${settings.classes.slide}` );\n\tconst counter = currentItem.querySelector( `.${settings.classes.counter}` );\n\n\t// Initialise carousel.\n\tlet glide = new Glide( currentItem, settings.config ).mount();\n\n\t// Update counter after glide is updated.\n\tglide.on( 'move.after', () => updateCarouselCounter( counter, glide.index, slides.length ) );\n\n\t// Destroy carousel on desktop.\n\tlet carouselWasDestroyed = false;\n\n\tif ( ! carouselWasDestroyed && window.innerWidth >= 992 ) {\n\t\tglide.destroy();\n\t\tcarouselWasDestroyed = true;\n\t}\n\n\twindow.addEventListener( 'resize', () => {\n\t\tif ( window.innerWidth >= 992 ) {\n\t\t\tif ( ! carouselWasDestroyed ) {\n\t\t\t\tglide.destroy();\n\t\t\t\tcarouselWasDestroyed = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif ( carouselWasDestroyed ) {\n\t\t\t\tglide = new Glide( currentItem, settings.config ).mount();\n\t\t\t\tcarouselWasDestroyed = false;\n\n\t\t\t\t// Update counter after glide is updated.\n\t\t\t\tglide.on( 'move.after', () => updateCarouselCounter( counter, glide.index, slides.length ) );\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Updates the carousel counter when the user change slide.\n *\n * @param {object} counter DOM element to update.\n * @param {int} current Index of the active slide.\n * @param {int} total Total count for the current carousel.\n */\nfunction updateCarouselCounter( counter, current, total ) {\n\t// Index starts from 0 so make sure we increment by 1.\n\tcounter.innerText = `${current + 1} / ${total}`;\n}\n\n/**\n * Gets the carousel config based on the passed type\n *\n * @param {string} type Id of the carousel to retrieve the config for\n * @return {object} Glide configuration object\n */\nfunction getCarouselConfig( type ) {\n\tconst sharedConfig = {\n\t\tclasses: {\n\t\t\tslide: 'js-glide-carousel__slide',\n\t\t\tcounter: 'js-glide-carousel__counter',\n\t\t},\n\t\tconfig: {\n\t\t\ttype: 'slider',\n\t\t\tstartAt: 0,\n\t\t\trewind: true,\n\t\t},\n\t};\n\n\tswitch ( type ) {\n\t\tcase \"discover-more-block\":\n\t\t\treturn {\n\t\t\t\t...sharedConfig,\n\t\t\t\tconfig: {\n\t\t\t\t\t...sharedConfig.config,\n\t\t\t\t\tperView: 3,\n\t\t\t\t\tgap: 0,\n\t\t\t\t\tbreakpoints: {\n\t\t\t\t\t\t992: {\n\t\t\t\t\t\t\tperView: 2,\n\t\t\t\t\t\t\tgap: 20,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t768: {\n\t\t\t\t\t\t\tperView: 1,\n\t\t\t\t\t\t\tgap: 20,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase \"featured-content-block\":\n\t\t\treturn {\n\t\t\t\t...sharedConfig,\n\t\t\t\tconfig: {\n\t\t\t\t\t...sharedConfig.config,\n\t\t\t\t\tperView: 2,\n\t\t\t\t\tgap: 10,\n\t\t\t\t\tbreakpoints: {\n\t\t\t\t\t\t768: {\n\t\t\t\t\t\t\tperView: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tbreak;\n\n\t\tcase \"gallery-block\":\n\t\t\treturn {\n\t\t\t\t...sharedConfig,\n\t\t\t\tclasses: {\n\t\t\t\t\t...sharedConfig.classes,\n\t\t\t\t\tslide: 'blocks-gallery-item',\n\t\t\t\t},\n\t\t\t\tconfig: {\n\t\t\t\t\t...sharedConfig.config,\n\t\t\t\t\tperView: 2,\n\t\t\t\t\tgap: 10,\n\t\t\t\t\tbreakpoints: {\n\t\t\t\t\t\t768: {\n\t\t\t\t\t\t\tperView: 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn {};\n\t}\n};\n"],"names":["document","readyState","addEventListener","initialiseCarousel","items","querySelectorAll","length","i","len","carouselHandler","currentItem","settings","getCarouselConfig","dataset","carousel_config","slides","concat","classes","slide","counter","querySelector","glide","Glide","config","mount","on","updateCarouselCounter","index","carouselWasDestroyed","window","innerWidth","destroy","current","total","innerText","type","sharedConfig","startAt","rewind","_objectSpread","perView","gap","breakpoints"],"sourceRoot":""}