{"version":3,"sources":["block-slider.min.js","block-slider.js"],"names":["BlockSlider","collection","_ref","testTiming","timing","console","warn","lgStart","cache","slider","wrap","undefined","items","duration","sliderName","id","className","msg2","querySelector","wrapClass","Error","itemsClass","slice","call","children","e","message","calcTransiton","setAttribute","sliders","push","slidePosition","itemsPerSlide","itemWidth","wrapWidth","sliderWidth","slide","forEach","s","str","style","webkitTransform","msTransform","transform","hasReachedEnd","calcAndSetWidths","removeInlineWidths","opacity","removeProperty","item","i","arr","setWidths","width","length","offsetWidth","calcItemWidth","calcItemsPerSlide","Math","round","setTimeout","safariFixDelay","_ref$sInterval","sInterval","_ref$sTransition","sTransition","_ref$wrapClass","_ref$itemsClass","test","window","HTMLElement","resizeTimer","addEventListener","clearTimeout","setInterval","requestAnimationFrame","jQuery","$","fn","opts","this"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,YAAA,SAASA,aAAYC,EAAYC,GAY7B,QAASC,GAAWC,GAChB,MAAsB,gBAAXA,IACPC,QAAQC,KAAQC,EAAO,qBAAqBH,EAAM,wBAC3C,IAEJ,EAsBX,QAASI,GAAMC,GACX,GAAIC,GAAIC,OACJC,EAAKD,OACLE,EAAQF,OACRG,EAAaL,EAAOM,GAAK,IAAMN,EAAOM,GAAK,IAAMN,EAAOO,UACxDC,EAAO,gDACX,KAEI,GADAP,EAAOD,EAAOS,cAAcC,IACvBT,EACD,KAAM,IAAIU,OAASb,EAAO,IAAIY,EAAS,IAAIF,EAAI,IAAIH,EAAU,KAI7D,IADAF,EAAQF,EAAKQ,cAAcG,IACtBT,EACD,KAAM,IAAIQ,OAASb,EAAO,IAAIc,EAAU,IAAIJ,EAAI,IAAIE,EAAS,KAG7DP,MAAWU,MAAMC,KAAKX,EAAMY,SAAU,GAIlD,MAAMC,GAEF,MADApB,SAAQC,KAAKmB,EAAEC,UACR,EAEXb,EAAWc,IACXlB,EAAOmB,aAAa,QAAS,gCAC7BlB,EAAKkB,aAAa,QAAO,yCAA2Cf,EAAQ,2BAA2BA,EAAQ,MAC/GgB,EAAQC,MACJrB,OAAAA,EACAC,KAAAA,EACAE,MAAAA,EACAmB,cAAe,EACfC,cAAe,EACfC,UAAW,EACXC,UAAW,EACXC,YAAa,IAWrB,QAASC,KACLP,EAAQQ,QAAQ,SAAAC,GACZ,GAAM5B,GAAO4B,EAAE5B,KACX6B,EAAG,eAAkBD,EAAEP,cAAa,WACxCrB,GAAK8B,MAAMC,gBAAkBF,EAC7B7B,EAAK8B,MAAME,YAAcH,EACzB7B,EAAK8B,MAAMG,UAAYJ,EACvBD,EAAEP,eAAiBO,EAAEL,UACjBW,EAAcN,KACdA,EAAEP,cAAgB,KAK9B,QAASc,KACL,QAASC,GAAmBR,GAExBA,EAAE7B,OAAO+B,MAAMO,QAAU,EAEzBT,EAAE5B,KAAK8B,MAAMQ,eAAe,SAC5BV,EAAE1B,MAAMyB,QAAQ,SAACY,EAAMC,EAAGC,GACtBF,EAAKT,MAAMQ,eAAe,WAQlC,QAASI,GAAUd,GAGfA,EAAE1B,MAAMyB,QAAQ,SAACY,GACbA,EAAKT,MAAMa,MAAQf,EAAEL,UAAY,OAGrCK,EAAEJ,UAAYI,EAAEL,UAAYK,EAAE1B,MAAM0C,OACpChB,EAAE5B,KAAK8B,MAAMa,MAAQf,EAAEJ,UAAY,KACnCI,EAAEH,YAAcG,EAAE7B,OAAO8C,YAb7B,GAAMC,GAAgB,SAAAlB,GAMlB,MANuBA,GAAE1B,MAAM,GAAG2C,aAEhCE,EAAoB,SAAAnB,GAQtB,MAR2BoB,MAAKC,MAAMrB,EAAEH,YAAcG,EAAEL,WAc5DJ,GAAQQ,QAAQ,SAAAC,GACZQ,EAAmBR,GAEnBsB,WAAW,WAEPtB,EAAEL,UAAYuB,EAAclB,GAC5Bc,EAAUd,GACVA,EAAEN,cAAgByB,EAAkBnB,GACpCA,EAAEP,cAAgB,EAClB6B,WAAW,WAEPtB,EAAE7B,OAAO+B,MAAMO,QAAU,EACzBX,KACDyB,IACJA,KAzIX,GAAIC,GAJyB5D,EAC7B6D,UAAAA,EAASpD,SAAAmD,EAAG,IAAIA,EAKZE,EANyB9D,EAE7B+D,YAAAA,EAAWtD,SAAAqD,EAAG,IAAGA,EAMbE,EARyBhE,EAG7BiB,UAAAA,EAASR,SAAAuD,EAAG,yBAAwBA,EAOhCC,EAVyBjE,EAI7BmB,WAAAA,EAAUV,SAAAwD,EAAG,0BAAyBA,EAGhCN,EAAiB,eAAeO,KAAKC,OAAOC,aAAe,IAAM,EACnEzC,KACAtB,EAAU,iBACVgE,EAAW5D,MASTR,GAAW4D,KACbA,EAAY,KAEV5D,EAAW8D,KACbA,EAAc,IAGlB,KAEI,IAAKhE,IAAeA,EAAWqD,SAAWrD,EAAWiB,cACjD,KAAM,IAAIE,OAASb,EAAO,0CAGlC,MAAMkB,GAEF,WADApB,SAAQC,KAAKmB,EAAEC,SAInB,GAAMC,GAAgB,WAKlB,MALwBsC,GAAc,IAyCtChE,GAAWqD,UACRjB,QAAQd,KAAKtB,EAAYO,GAE5BA,EAAMP,EAGV,IAAM2C,GAAgB,SAAAN,GAIlB,QAJyBA,EAAEP,cAAgB,GAAKO,EAAEJ,UAAYI,EAAEH,YA6DpEU,KAEAwB,OAAOG,iBAAiB,SAAU,WAE9BC,aAAaF,GACbA,EAAcX,WAAWf,EAAkB,OAG/C6B,YAAY,WACJC,sBACAA,sBAAsB,WAClBvC,EAAMP,KAGVO,EAAMP,IAEXkC,GAIHM,OAAOO,SACP,SAAEC,GACEA,EAAEC,GAAG9E,YAAc,SAAS+E,GAExB,MADA/E,aAAYgF,KAAMD,GACXC,OAEZX,OAAOO","file":"block-slider.min.js","sourcesContent":[null,"function BlockSlider(collection, {\n sInterval = 2000,\n sTransition = 400,\n wrapClass = '.js-block-slider__wrap',\n itemsClass = '.js-block-slider__items'\n}) {\n 'use strict';\n const safariFixDelay = /constructor/i.test(window.HTMLElement) ? 500 : 0,\n sliders = [],\n lgStart = 'Block Slider: ';\n let resizeTimer;\n\n function testTiming(timing) {\n if (typeof timing !== 'number') {\n console.warn(`${lgStart}Supplied timing: '${timing}' is not an integer`);\n return false;\n }\n return true;\n }\n if (! testTiming(sInterval)) {\n sInterval = 2000;\n }\n if (! testTiming(sTransition)) {\n sTransition = 400;\n }\n \n try {\n // can collection be found ?\n if (!collection || !collection.length && !collection.querySelector) {\n throw new Error(`${lgStart}Supplied slider(s) could not be found.`);\n }\n }\n catch(e) {\n console.warn(e.message);\n return;\n }\n\n const calcTransiton = () => sTransition / 1000;\n\n function cache(slider) {\n let wrap,\n items,\n duration,\n sliderName = slider.id ? '#' + slider.id : '.' + slider.className,\n msg2 = ' could not be found as a direct descendant of ';\n try {\n wrap = slider.querySelector(wrapClass);\n if (!wrap) {\n throw new Error(`${lgStart}'${wrapClass}'${msg2}'${sliderName}.'`);\n } \n else {\n items = wrap.querySelector(itemsClass);\n if (!items) {\n throw new Error(`${lgStart}'${itemsClass}'${msg2}'${wrapClass}.'`);\n } \n else {\n items = [].slice.call(items.children, 0); \n }\n }\n } \n catch(e) {\n console.warn(e.message);\n return false;\n }\n duration = calcTransiton();\n slider.setAttribute('style', 'overflow: hidden; opacity: 0');\n wrap.setAttribute('style', `-webkit-transition: -webkit-transform ${duration}s;transition: transform ${duration}s;`);\n sliders.push({\n slider,\n wrap,\n items,\n slidePosition: 0,\n itemsPerSlide: 0,\n itemWidth: 0,\n wrapWidth: 0,\n sliderWidth: 0\n });\n }\n if (collection.length) {\n [].forEach.call(collection, cache);\n } else {\n cache(collection);\n }\n\n const hasReachedEnd = s => -(s.slidePosition + 1) > s.wrapWidth - s.sliderWidth;\n\n function slide() {\n sliders.forEach(s => {\n const wrap = s.wrap,\n str = `translate3d(${s.slidePosition}px, 0, 0)`;\n wrap.style.webkitTransform = str;\n wrap.style.msTransform = str;\n wrap.style.transform = str;\n s.slidePosition -= s.itemWidth;\n if (hasReachedEnd(s)) {\n s.slidePosition = 0;\n }\n });\n }\n\n function calcAndSetWidths() {\n function removeInlineWidths(s) {\n // Temporarily hide the slider\n s.slider.style.opacity = 0;\n // Remove widths for wrap and all items.\n s.wrap.style.removeProperty('width');\n s.items.forEach((item, i, arr) => {\n item.style.removeProperty('width');\n });\n }\n\n const calcItemWidth = s => s.items[0].offsetWidth;\n\n const calcItemsPerSlide = s => Math.round(s.sliderWidth / s.itemWidth);\n\n function setWidths(s) {\n // loop through all items and set their width in pixels\n // to the calculated width.\n s.items.forEach((item) => {\n item.style.width = s.itemWidth + 'px';\n });\n // Set wrap width equal to total width of items.\n s.wrapWidth = s.itemWidth * s.items.length;\n s.wrap.style.width = s.wrapWidth + 'px';\n s.sliderWidth = s.slider.offsetWidth;\n }\n\n sliders.forEach(s => {\n removeInlineWidths(s);\n // create a slight delay for Safari being rubbishly slow at layout calcs.\n setTimeout(() => {\n // get the default CSS item width in pixels.\n s.itemWidth = calcItemWidth(s);\n setWidths(s);\n s.itemsPerSlide = calcItemsPerSlide(s);\n s.slidePosition = 0;\n setTimeout(() => {\n // fade slider back in.\n s.slider.style.opacity = 1;\n slide();\n }, safariFixDelay);\n }, safariFixDelay);\n });\n }\n\n calcAndSetWidths();\n\n window.addEventListener('resize', () => {\n // call setWidths once the screen has finished resizing.\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(calcAndSetWidths, 250);\n });\n\n setInterval(() => {\n if (requestAnimationFrame) {\n requestAnimationFrame(() => {\n slide(sliders);\n }); \n } else {\n slide(sliders); \n }\n }, sInterval);\n}\n\n// if jQuery is present, create a plugin.\nif (window.jQuery) {\n (($) => {\n $.fn.BlockSlider = function(opts) {\n BlockSlider(this, opts);\n return this;\n };\n })(window.jQuery);\n}\n"],"sourceRoot":"/source/"}