{"version":3,"sources":["webpack:///./js/components/init-testimonial-carousel.ts","webpack:///./node_modules/when-dom-ready/dist/index.es2015.js"],"names":["initialiseTabbedQuote","element","autoplayIntervalRef","autoplayInterval","parseFloat","dataset","interval","items","Array","from","querySelectorAll","quoteElements","enableAutoplay","classList","contains","window","setInterval","activeItem","querySelector","nextItem","nextElementSibling","id","item","length","setVisibleItem","setVisibleQuote","add","disableAutoplay","clearInterval","remove","targetItem","find","getItem","forEach","targetQuote","quote","getQuote","trigger","addEventListener","event","preventDefault","target","HTMLElement","IntersectionObserver","entries","entry","intersectionRatio","rootMargin","threshold","observe","whenDomReady","then","document","loadedStates","cb","doc","Promise","resolve","done","setTimeout","indexOf","readyState","resume","val"],"mappings":"2FAAA,mBAKA,SAASA,EAAsBC,GAC3B,IAIIC,EAJEC,EAAmBC,WAAWH,EAAQI,QAAQC,UAAY,IAC1DC,EAAQC,MAAMC,KAAKR,EAAQS,iBAAiB,gBAC5CC,EAAgBH,MAAMC,KAAKR,EAAQS,iBAAiB,iBAkB1D,SAASE,IACDX,EAAQY,UAAUC,SAAS,oBAG/BZ,EAAsBa,OAAOC,aAAY,WAAM,MACrCC,EAmBHhB,EAAQiB,cAAc,yBAlBrBC,EAAWF,aAAH,EAAGA,EAAYG,mBACtBD,IACDA,EAAWZ,EAAM,IAErB,IAAMc,EAAE,UAAGF,SAAH,aAAG,EAAUd,QAAQiB,KACxBD,GAAOA,EAAGE,SAGfC,EAAeH,GACfI,EAAgBJ,MACjBlB,GACHF,EAAQY,UAAUa,IAAI,mBAE1B,SAASC,IACLZ,OAAOa,cAAc1B,GACrBD,EAAQY,UAAUgB,OAAO,kBAW7B,SAASL,EAAeH,GACpB,IAAMS,EAPV,SAAiBT,GACb,OAAOd,EAAMwB,MAAK,SAAAT,GAAI,OAAIA,EAAKjB,QAAQiB,OAASD,KAM7BW,CAAQX,GACtBS,IAGLvB,EAAM0B,SAAQ,SAAAX,GAAI,OAAIA,EAAKT,UAAUgB,OAAO,gBAC5CC,EAAWjB,UAAUa,IAAI,cAE7B,SAASD,EAAgBJ,GACrB,IAAMa,EAZV,SAAkBb,GACd,OAAOV,EAAcoB,MAAK,SAAAT,GAAI,OAAIA,EAAKjB,QAAQ8B,QAAUd,KAWrCe,CAASf,GACxBa,IAGLvB,EAAcsB,SAAQ,SAAAX,GAAI,OAAIA,EAAKT,UAAUgB,OAAO,gBACpDK,EAAYrB,UAAUa,IAAI,cA/DblB,MAAMC,KAAKR,EAAQS,iBAAiB,kBAG5CuB,SAAQ,SAAAI,GACbA,EAAQC,iBAAiB,SAAS,SAAAC,GAE9B,GADAA,EAAMC,iBACFD,EAAME,kBAAkBC,YAAa,CACrC,IAAMrB,EAAKkB,EAAME,OAAOpC,QAAQoC,OAChC,IAAKpB,IAAOA,EAAGE,OACX,OAEJI,IACAH,EAAeH,GACfI,EAAgBJ,UAwDX,IAAIsB,sBAAqB,SAAAC,GACtCA,EAAQX,SAAQ,SAAAY,GACRA,EAAMC,kBAAoB,EAC1BlC,IAGAe,SAVG,CACXoB,WAAY,YACZC,UAAW,CAAC,EAAG,MAYVC,QAAQhD,GAErBiD,cAAeC,MAzFf,WACqB3C,MAAMC,KAAK2C,SAAS1C,iBAAiB,6BAC7CuB,QAAQjC,O,gCCArB,IAAIqD,EAAe,CAAC,cAAe,YAG/BH,EAAe,SAAsBI,EAAIC,GAC5C,OAAO,IAAIC,SAAQ,SAAUC,GAExBH,GAAoB,mBAAPA,IAChBC,EAAMD,EACNA,EAAK,MAINC,EAAMA,GAAOxC,OAAOqC,SAGpB,IAAIM,EAAO,WACV,OAAOD,OAAcH,GAAMK,WAAWL,OAKO,IAA1CD,EAAaO,QAAQL,EAAIM,YAC5BH,IAEAH,EAAIjB,iBAAiB,mBAAoBoB,OAM5CR,EAAaY,OAAS,SAAUP,GAC/B,OAAO,SAAUQ,GAChB,OAAOb,EAAaK,GAAKJ,MAAK,WAC7B,OAAOY,OAKK","file":"25-5525a2ccad806318aa7f.js","sourcesContent":["import whenDomReady from 'when-dom-ready';\r\nfunction initialise() {\r\n const elements = Array.from(document.querySelectorAll('.js-testimonial-carousel'));\r\n elements.forEach(initialiseTabbedQuote);\r\n}\r\nfunction initialiseTabbedQuote(element) {\r\n const autoplayInterval = parseFloat(element.dataset.interval || '');\r\n const items = Array.from(element.querySelectorAll('[data-item]'));\r\n const quoteElements = Array.from(element.querySelectorAll('[data-quote]'));\r\n const triggers = Array.from(element.querySelectorAll('[data-target]'));\r\n let autoplayIntervalRef;\r\n // enableAutoplay();\r\n triggers.forEach(trigger => {\r\n trigger.addEventListener('click', event => {\r\n event.preventDefault();\r\n if (event.target instanceof HTMLElement) {\r\n const id = event.target.dataset.target;\r\n if (!id || !id.length) {\r\n return;\r\n }\r\n disableAutoplay();\r\n setVisibleItem(id);\r\n setVisibleQuote(id);\r\n }\r\n });\r\n });\r\n function enableAutoplay() {\r\n if (element.classList.contains('is-autoplaying')) {\r\n return;\r\n }\r\n autoplayIntervalRef = window.setInterval(() => {\r\n const activeItem = getActiveItem();\r\n let nextItem = activeItem?.nextElementSibling;\r\n if (!nextItem) {\r\n nextItem = items[0];\r\n }\r\n const id = nextItem?.dataset.item;\r\n if (!id || !id.length) {\r\n return;\r\n }\r\n setVisibleItem(id);\r\n setVisibleQuote(id);\r\n }, autoplayInterval);\r\n element.classList.add('is-autoplaying');\r\n }\r\n function disableAutoplay() {\r\n window.clearInterval(autoplayIntervalRef);\r\n element.classList.remove('is-autoplaying');\r\n }\r\n function getActiveItem() {\r\n return element.querySelector('.is-active[data-item]');\r\n }\r\n function getItem(id) {\r\n return items.find(item => item.dataset.item === id);\r\n }\r\n function getQuote(id) {\r\n return quoteElements.find(item => item.dataset.quote === id);\r\n }\r\n function setVisibleItem(id) {\r\n const targetItem = getItem(id);\r\n if (!targetItem) {\r\n return;\r\n }\r\n items.forEach(item => item.classList.remove('is-active'));\r\n targetItem.classList.add('is-active');\r\n }\r\n function setVisibleQuote(id) {\r\n const targetQuote = getQuote(id);\r\n if (!targetQuote) {\r\n return;\r\n }\r\n quoteElements.forEach(item => item.classList.remove('is-active'));\r\n targetQuote.classList.add('is-active');\r\n }\r\n const config = {\r\n rootMargin: '-30px 0px',\r\n threshold: [0, 0.6],\r\n };\r\n const observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n if (entry.intersectionRatio > 0) {\r\n enableAutoplay();\r\n }\r\n else {\r\n disableAutoplay();\r\n }\r\n });\r\n }, config);\r\n observer.observe(element);\r\n}\r\nwhenDomReady().then(initialise);\r\n","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\nexport default whenDomReady;\n//# sourceMappingURL=index.es2015.js.map\n"],"sourceRoot":""}