{"version":3,"sources":["../../../../dev/j/v3/components/cmp-academy-carousel.js"],"names":["$","avm","require","slideCounter","slider","updateCounter","info","totalSlides","items","Math","ceil","slideCount","activeSlide","displayIndex","slideCounterEl","innerHTML","getInfo","name","container","classList","sliderEl","document","querySelector","events","on","createSlider","className","window","tns","controlsContainer","preventScrollOnTouch","controlsPosition","navPosition","loop","slideBy","responsive","576","992","1366","onInit","attr","each","classesList","this","split","secondClassName","preloadCarouselImages","querySelectorAll","forEach","img","src","getAttribute","Image","innerWidth","addEventListener"],"mappings":"CAQA,WACC,YACA,IACCA,GAAIC,IAAIC,QAAQ,QAMhBC,EAAe,SAASC,GAMvB,QAASC,GAAcC,GAGtB,GAAIC,GAAcD,EAAKE,MAAQ,EAAIC,KAAKC,KAAKJ,EAAKK,WAAaL,EAAKE,OAASF,EAAKK,WACjFC,EAAcN,EAAKE,MAAQ,EAAIC,KAAKC,KAAKJ,EAAKO,aAAeP,EAAKE,OAASF,EAAKO,YAEjFC,GAAeC,UAAYH,EAAc,IAAML,EAXhD,GAAID,GAAOF,EAAOY,UACjBC,EAAOX,EAAKY,UAAUC,UAAU,GAChCC,EAAWC,SAASC,cAAc,cAAgBL,EAAO,KACzDH,EAAiBM,EAASE,cAAc,kBAYzCjB,GAAcC,GAGdF,EAAOmB,OAAOC,GAAG,kBAAmBnB,GAGpCD,EAAOmB,OAAOC,GAAG,mBAAoBnB,IAItCoB,EAAe,SAASC,GACvBC,OAAOD,GAAaE,KACnBV,UAAa,IAAIQ,EACjBG,kBAAqB,IAAIH,EAAU,YACnCI,qBAAwB,QACxBC,iBAAoB,SACpBC,YAAe,SACfC,MAAQ,EACRC,QAAW,OACXC,YACCC,KACC5B,MAAS,GAEV6B,KACC7B,MAAS,GAEV8B,MACC9B,MAAS,IAGX+B,OAAQ,WACPvC,EAAE,IAAI0B,EAAU,aAAac,KAAK,YAAa,GAC/CxC,EAAE,IAAI0B,EAAU,oCAAoCc,KAAK,WAAY,GACrExC,EAAE,sBAAsBwC,KAAK,YAAa,GAC1CxC,EAAE,wBAAwBwC,KAAK,WAAY,MAM7Cb,OAAOD,GAAWH,OAAOC,GAAG,eAAgB,WAC3CxB,EAAE,IAAI0B,EAAU,oDAAoDc,KAAK,WAAY,KAItFrC,EAAawB,OAAOD,IAhER1B,GAAE,4BAoELyC,KAAK,WACf,GACCC,GAAc1C,EAAE2C,MAAMH,KAAK,SAASI,MAAM,OAC1CC,EAAkBH,EAAY,EAE/BjB,GAAaoB,QAKf,WACC,YAIC,SAASC,KACczB,SAAS0B,iBAAiB,gBAElCC,QAAQ,SAAUC,GAC/B,KAAMC,GAAMD,EAAIE,aAAa,MACzBD,MACW,GAAIE,QACZF,IAAMA,KATZvB,OAAO0B,WAAa,KAevB1B,OAAO2B,iBAAiB,OAAQR","file":"cmp-academy-carousel.js","sourcesContent":["/**\n * Automatic tns (tiny-slider) settings generation for all cmp-articles component. Setting is for all articles carousel the same, just the name of classes and object name differs between each tns instances.\n *\n * @version 3\n * @author Cenek Hybler \n * @requires cash\n */\n\n(function() {\n\t'use strict';\n\tvar\n\t\t$ = avm.require('cash'),\n\n\t\t//all carousel sliders\n\t\t$carousels = $('.carousel .article-items'),\n\n\t\t// Display current slide number / total number of slides (example: 1/6)\n\t\tslideCounter = function(slider) {\n\t\t\tvar info = slider.getInfo(),\n\t\t\t\tname = info.container.classList[1],\n\t\t\t\tsliderEl = document.querySelector('[data-name=' + name + ']'),\n\t\t\t\tslideCounterEl = sliderEl.querySelector('.tns-liveregion');\n\n\t\t\tfunction updateCounter(info) {\n\t\t\t\t// calculate total slides and active slide\n\t\t\t\t// info.items is a number of items visible in viewport\n\t\t\t\tvar totalSlides = info.items > 1 ? Math.ceil(info.slideCount / info.items) : info.slideCount,\n\t\t\t\t\tactiveSlide = info.items > 1 ? Math.ceil(info.displayIndex / info.items) : info.displayIndex;\n\n\t\t\t\tslideCounterEl.innerHTML = activeSlide + '/' + totalSlides;\n\t\t\t}\n\n\t\t\t// Set initial counter value\n\t\t\tupdateCounter(info);\n\n\t\t\t// Update the counter on slide change\n\t\t\tslider.events.on('transitionStart', updateCounter);\n\n\t\t\t// Update the counter on screen resize (new breakpoint)\n\t\t\tslider.events.on('newBreakpointEnd', updateCounter);\n\t\t},\n\n\t\t// tiny slider configuration for given class name\n\t\tcreateSlider = function(className){\n\t\t\twindow[className] = tns({\n\t\t\t\t\"container\": \".\"+className,\n\t\t\t\t\"controlsContainer\": \".\"+className+\"-controls\",\n\t\t\t\t\"preventScrollOnTouch\": \"force\",\n\t\t\t\t\"controlsPosition\": \"bottom\",\n\t\t\t\t\"navPosition\": \"bottom\",\n\t\t\t\t\"loop\": false,\n\t\t\t\t\"slideBy\": \"page\",\n\t\t\t\t\"responsive\": {\n\t\t\t\t\t\"576\": {\n\t\t\t\t\t\t\"items\": 2\n\t\t\t\t\t},\n\t\t\t\t\t\"992\": {\n\t\t\t\t\t\t\"items\": 3\n\t\t\t\t\t},\n\t\t\t\t\t\"1366\": {\n\t\t\t\t\t\t\"items\": 4\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonInit: function(){\n\t\t\t\t\t$('.'+className+'-controls').attr('tabindex', -1);\n\t\t\t\t\t$('.'+className+'-controls [data-controls=\"next\"]').attr('tabindex', 0);\n\t\t\t\t\t$('.carousel .tns-nav').attr('tabindex', -1);\n\t\t\t\t\t$('.carousel [data-nav]').attr('tabindex', 0);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// bind function to event and make sure that prev button is no longer unaccessible\n\t\t\t// overrides the onInit function and disabled buttons settings\n\t\t\twindow[className].events.on('indexChanged', function() {\n\t\t\t\t$('.'+className+'-controls [data-controls=\"prev\"]:not([disabled])').attr('tabindex', 0);\n\t\t\t});\n\n\t\t\t// create Slide counter bellow the slider\n\t\t\tslideCounter(window[className]);\n\t\t};\n\n\t// detect all sliders and assign each a slider configuration by its class name. This expects that if there is more article carousels on the page, they have unique class (dafault class name is overriden by snippet parameter)\n\t$carousels.each(function() {\n\t\tvar\n\t\t\tclassesList = $(this).attr('class').split(/\\s+/),\n\t\t\tsecondClassName = classesList[1];\n\n\t\tcreateSlider(secondClassName);\n\t});\n})();\n\n// Preload carousel images on mobile view, see GLOWEB-7598\n(function () {\n\t'use strict';\n\n\tif (window.innerWidth < 768) {\n\t\t// Function to preload carousel images with the class \"article-img\"\n\t\tfunction preloadCarouselImages() {\n\t\t\tconst articleImages = document.querySelectorAll('.article-img');\n\n\t\t\tarticleImages.forEach(function (img) {\n\t\t\t\tconst src = img.getAttribute('src');\n\t\t\t\tif (src) {\n\t\t\t\t\tconst image = new Image();\n\t\t\t\t\timage.src = src;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Run the preloadCarouselImages function when the page loads\n\t\twindow.addEventListener('load', preloadCarouselImages);\n\t}\n})();\n"]}