blob: 743317aea79afe70f6b6c53f68b96e80c4debff4 [file] [log] [blame]
{"version":3,"file":null,"sources":["../src/scripts/blocks/quotes.js","../src/scripts/main.js"],"sourcesContent":["// This file initializes a fade slider.\nconst impure = {\n removeClassFromAll: (container, elementSelector, classToRemove) => {\n const elements = container.querySelectorAll(elementSelector);\n\n // Element lists are only array-like, so we have to force mapping here.\n [].map.call(elements, element => element.classList.remove(classToRemove));\n },\n\n setClassBySelector: (container, elementSelector, classToAdd) => {\n const element = container.querySelector(elementSelector);\n element.classList.add(classToAdd);\n },\n\n setNextActive: (container, slideClass, slideActive, linkClass, linkActive) => {\n let nextSlide = container.querySelector(`.${slideActive}`).nextElementSibling;\n if (!nextSlide || !nextSlide.classList || !nextSlide.classList.contains(slideClass)) {\n nextSlide = container.querySelector(`.${slideClass}`);\n }\n\n impure.removeClassFromAll(container, `.${slideClass}`, slideActive);\n impure.removeClassFromAll(container, `.${linkClass}`, linkActive);\n\n nextSlide.classList.add(slideActive);\n impure.setClassBySelector(container, `a[href=\"#${nextSlide.id}\"]`, linkActive);\n },\n\n startInterval: (container, slideClass, slideActive, linkClass, linkActive, interval) => {\n return setInterval(\n impure.setNextActive.bind(\n null,\n container,\n slideClass,\n slideActive,\n linkClass,\n linkActive,\n interval\n ),\n interval\n );\n },\n};\n\nexport default function initialize({\n containerClass = 'js--fade-slider',\n slideClass = 'js--fade-slider__slide',\n slideActiveClass = 'js--fade-slider__slide--active',\n linkClass = 'js--fade-slider__nav-link',\n linkActiveClass = 'js--fade-slider__nav--active',\n timeoutInterval = 3000,\n} = {}) {\n const container = document.querySelector(`.${containerClass}`);\n\n if (!container) {\n return;\n }\n\n // Alias these functions and bind the container for brevity.\n const setClass = impure.setClassBySelector.bind(null, container);\n const removeClassFromAll = impure.removeClassFromAll.bind(null, container);\n\n const startLoop = impure.startInterval.bind(\n null,\n container,\n slideClass,\n slideActiveClass,\n linkClass,\n linkActiveClass,\n timeoutInterval\n );\n\n let looper = startLoop();\n\n // Find the first slide and nav item and activates them.\n setClass(`.${slideClass}`, slideActiveClass);\n setClass(`.${linkClass}`, linkActiveClass);\n\n // Add a click handler for the nav.\n container.addEventListener('click', event => {\n if (event.target.classList.contains(linkClass)) {\n const targetSlideId = event.target.href.split('#')[1];\n\n if (targetSlideId) {\n event.preventDefault();\n\n // Reset the active classes on slides and nav links.\n removeClassFromAll(`.${slideClass}`, slideActiveClass);\n removeClassFromAll(`.${linkClass}`, linkActiveClass);\n\n // Add active classes to the selected slide and nav link.\n setClass(`#${targetSlideId}`, slideActiveClass);\n setClass(`a[href=\"#${targetSlideId}\"]`, linkActiveClass);\n\n // Restart the interval.\n clearInterval(looper);\n looper = startLoop();\n }\n }\n });\n}\n","import fadeSliderInit from './blocks/quotes';\n\n// To start, remove the `no-js` class to enable JS-only styles.\ndocument.body.classList.remove('no-js');\n\nfadeSliderInit({\n containerClass: 'quotes--js-fader',\n slideClass: 'quotes__quote--js-fader',\n slideActiveClass: 'quotes__quote--active',\n linkClass: 'quotes__nav-link',\n linkActiveClass: 'quotes__nav-link--active',\n timeoutInterval: 8000,\n});\n"],"names":["initialize","containerClass","slideClass","slideActiveClass","linkClass","linkActiveClass","timeoutInterval","container","document","querySelector","setClass","impure","setClassBySelector","bind","removeClassFromAll","startLoop","startInterval","looper","addEventListener","event","target","classList","contains","targetSlideId","href","split","preventDefault","elementSelector","classToRemove","elements","querySelectorAll","map","call","element","remove","classToAdd","add","slideActive","linkActive","nextSlide","nextElementSibling","id","interval","setInterval","setNextActive","body","fadeSliderInit"],"mappings":"wBA2CA,SAAwBA,yEACtBC,eAAAA,aAAiB,wBACjBC,WAAAA,aAAa,+BACbC,iBAAAA,aAAmB,uCACnBC,UAAAA,aAAY,kCACZC,gBAAAA,aAAkB,qCAClBC,gBAAAA,aAAkB,MAEZC,EAAYC,SAASC,kBAAkBR,MAExCM,MAKCG,GAAWC,EAAOC,mBAAmBC,KAAK,KAAMN,GAChDO,EAAqBH,EAAOG,mBAAmBD,KAAK,KAAMN,GAE1DQ,EAAYJ,EAAOK,cAAcH,KACrC,KACAN,EACAL,EACAC,EACAC,EACAC,EACAC,GAGEW,EAASF,UAGAb,EAAcC,SACdC,EAAaC,KAGhBa,iBAAiB,QAAS,eAC9BC,EAAMC,OAAOC,UAAUC,SAASlB,GAAY,IACxCmB,GAAgBJ,EAAMC,OAAOI,KAAKC,MAAM,KAAK,EAE/CF,OACIG,uBAGiBxB,EAAcC,SACdC,EAAaC,SAGvBkB,EAAiBpB,iBACToB,OAAmBlB,iBAG1BY,KACLF,SA9FjB,GAAMJ,uBACgB,SAACJ,EAAWoB,EAAiBC,MACzCC,GAAWtB,EAAUuB,iBAAiBH,MAGzCI,IAAIC,KAAKH,EAAU,kBAAWI,GAAQZ,UAAUa,OAAON,yBAGxC,SAACrB,EAAWoB,EAAiBQ,MACzCF,GAAU1B,EAAUE,cAAckB,KAChCN,UAAUe,IAAID,kBAGT,SAAC5B,EAAWL,EAAYmC,EAAajC,EAAWkC,MACzDC,GAAYhC,EAAUE,kBAAkB4B,GAAeG,kBACtDD,IAAcA,EAAUlB,WAAckB,EAAUlB,UAAUC,SAASpB,OAC1DK,EAAUE,kBAAkBP,MAGnCY,mBAAmBP,MAAeL,EAAcmC,KAChDvB,mBAAmBP,MAAeH,EAAakC,KAE5CjB,UAAUe,IAAIC,KACjBzB,mBAAmBL,cAAuBgC,EAAUE,QAAQH,kBAGtD,SAAC/B,EAAWL,EAAYmC,EAAajC,EAAWkC,EAAYI,SAClEC,aACLhC,EAAOiC,cAAc/B,KACnB,KACAN,EACAL,EACAmC,EACAjC,EACAkC,EACAI,GAEFA,ICnCNlC,UAASqC,KAAKxB,UAAUa,OAAO,SAE/BY,kBACkB,8BACJ,2CACM,kCACP,mCACM,2CACA"}