{"version":3,"sources":["../static/js/lazyLoading.js","common/LazyLoading/index.js"],"names":["webpackJsonp","270","module","exports","__webpack_require__","$","LazyLoad","spec","_this","this","breakpoints","imgs","vids","bgs","getResponsiveUrl","arr","el","length","last","containerWidth","clientWidth","imgSizes","map","imgUrl","params","split","Number","setImg","img","urls","getAttribute","setAttribute","setBg","bg","attr","on","_","remove","loadImgs","els","f","filter","call","isInView","isUnset","forEach","loadVids","window","lazyVideoObserver","IntersectionObserver","entries","observer","video","isIntersecting","source","target","children","videoSource","tagName","src","dataset","load","classList","unobserve","lazyVideo","observe","vid","rect","getBoundingClientRect","top","innerHeight","bottom","staticHandler","undefined","resizeHandler","init","document","querySelectorAll","concat","addEventListener","onload"],"mappings":"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","file":"static/js/lazyLoading.js","sourcesContent":["webpackJsonp([2],{\n\n/***/ 270:\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $=__webpack_require__(1);// function :: [DOM] -> [DOM] -> [Number] -> Effect\nvar LazyLoad=function(spec){var _this=this;var breakpoints=spec.breakpoints;var imgs=[];var vids=[];var bgs=[];// getResponsiveUrl :: String => a : [a] -> a\nvar getResponsiveUrl=function getResponsiveUrl(arr,el){if(arr.length===1){return arr[0];}var last=function last(arr){return arr[arr.length-1];};var containerWidth=el.clientWidth;var imgSizes=arr.map(function(imgUrl){var params=last(imgUrl.split('?')).split('&');return Number(last(last(params).split('=')));});switch(true){case!(imgSizes[0]<=containerWidth):return arr[0];case!(imgSizes[1]<=containerWidth):return arr[1];case!(imgSizes[2]<=containerWidth):return arr[2];default:return arr[3];}};// setImg :: DOM -> IO DOM\nvar setImg=function setImg(img){var urls=img.getAttribute('data-src').split('*,*');img.setAttribute('src',getResponsiveUrl(urls,img));img.setAttribute('data-set','true');};// setBg :: DOM -> IO DOM\nvar setBg=function setBg(bg){var urls=bg.getAttribute('data-bg').split('*,*');$('<img/>').attr('src',getResponsiveUrl(urls,bg)).on('load',function(_){$(_this).remove();bg.setAttribute('style','background-image: url(\"'+getResponsiveUrl(urls,bg)+'\")');bg.setAttribute('data-set','true');});};// loadImgs :: [DOM] -> (DOM -> IO DOM) -> IO DOM\nvar loadImgs=function loadImgs(els,f){els=[].filter.call(els,isInView);els=[].filter.call(els,isUnset);[].forEach.call(els,f);};var loadVids=function loadVids(els){if(\"IntersectionObserver\"in window){var lazyVideoObserver=new IntersectionObserver(function(entries,observer){[].forEach.call(entries,function(video){if(video.isIntersecting){for(var source in video.target.children){var videoSource=video.target.children[source];if(typeof videoSource.tagName===\"string\"&&videoSource.tagName===\"SOURCE\"){videoSource.src=videoSource.dataset.src;}}video.target.load();video.target.classList.remove(\"lazy\");lazyVideoObserver.unobserve(video.target);}});});[].forEach.call(els,function(lazyVideo){return lazyVideoObserver.observe(lazyVideo);});}else{els=[].filter.call(els,isInView);els=[].filter.call(els,isUnset);[].forEach.call(els,function(vid){for(var source in vid.children){var videoSource=vid.children[source];if(typeof videoSource.tagName===\"string\"&&videoSource.tagName===\"SOURCE\"){videoSource.src=videoSource.dataset.src;}vid.load();}});}};// isSet :: DOM -> Bool\nvar isUnset=function isUnset(el){return!(el.getAttribute('data-set')==='true');};// isInView :: DOM -> Bool\nvar isInView=function isInView(el){var rect=el.getBoundingClientRect();return rect.top<=window.innerHeight&&rect.bottom>=0;};var staticHandler=function staticHandler(_){if(imgs!==undefined){loadImgs(imgs,setImg);}if(bgs!==undefined){loadImgs(bgs,setBg);}if(vids!==undefined){loadVids(vids);}};var resizeHandler=function resizeHandler(_){var els=void 0;if(imgs!==undefined){els=[].filter.call(imgs,isInView);[].forEach.call(els,setImg);}if(bgs!==undefined){els=[].filter.call(bgs,isInView);[].forEach.call(bgs,setBg);}};var init=function init(_){imgs=document.querySelectorAll('img[data-src]');vids=document.querySelectorAll('video.lazy');bgs=document.querySelectorAll('*[data-bg]');};var concat=function concat(_){init();staticHandler();};if(breakpoints!==undefined){window.addEventListener('resize',resizeHandler);}return{init:init,staticHandler:staticHandler,resizeHandler:resizeHandler,concat:concat};}({breakpoints:[750,1024,1400,1600]});window.onload=function(_){LazyLoad.init();LazyLoad.staticHandler();window.addEventListener(\"scroll\",function(){LazyLoad.staticHandler();},false);};window.LazyLoad=LazyLoad;\n\n/***/ })\n\n},[270]);\n\n\n// WEBPACK FOOTER //\n// static/js/lazyLoading.js","var $ = require('jquery');\r\n\r\n// function :: [DOM] -> [DOM] -> [Number] -> Effect\r\nconst LazyLoad = (function(spec){\r\n\tlet { breakpoints } = spec;\r\n\r\n\tlet imgs = [];\r\n\tlet vids = [];\r\n\tlet bgs = [];\r\n\r\n\t// getResponsiveUrl :: String => a : [a] -> a\r\n\tconst getResponsiveUrl = (arr, el) => {\r\n\t\tif (arr.length === 1) {\r\n\t\t\treturn arr[0];\r\n\t\t}\r\n\r\n\t\tconst last = arr => arr[arr.length - 1];\r\n\r\n\t\tlet containerWidth = el.clientWidth;\r\n\t\tconst imgSizes = arr.map(imgUrl => {\r\n\t\t\tconst params = last(imgUrl.split('?')).split('&');\r\n\t\t\treturn Number(last(last(params).split('=')));\r\n\t\t});\r\n\r\n\t\tswitch(true) {\r\n\t\t\tcase !(imgSizes[0] <= containerWidth):\r\n\t\t\t\treturn arr[0];\r\n\t\t\tcase !(imgSizes[1] <= containerWidth):\r\n\t\t\t\treturn arr[1];\r\n\t\t\tcase !(imgSizes[2] <= containerWidth):\r\n\t\t\t\treturn arr[2];\r\n\t\t\tdefault:\r\n\t\t\t\treturn arr[3];\r\n\t\t}\r\n\t};\r\n\r\n\t// setImg :: DOM -> IO DOM\r\n\tconst setImg = img => {\r\n\t\tconst urls = img.getAttribute('data-src').split('*,*');\r\n\r\n\t\timg.setAttribute('src', getResponsiveUrl(urls, img));\r\n\t\timg.setAttribute('data-set', 'true');\r\n\t};\r\n\t// setBg :: DOM -> IO DOM\r\n\tconst setBg = bg => {\r\n\t\tconst urls = bg.getAttribute('data-bg').split('*,*');\r\n\r\n\t\t$('<img/>').attr('src', getResponsiveUrl(urls, bg)).on('load', _ => {\r\n\t\t\t$(this).remove();\r\n\t\t\tbg.setAttribute('style', 'background-image: url(\"' + getResponsiveUrl(urls, bg) + '\")')\r\n\t\t\tbg.setAttribute('data-set', 'true');\r\n\t\t})\r\n\t};\r\n\r\n\t// loadImgs :: [DOM] -> (DOM -> IO DOM) -> IO DOM\r\n\tconst loadImgs = (els, f) => {\r\n\t\tels = [].filter.call(els, isInView);\r\n\t\tels = [].filter.call(els, isUnset);\r\n\r\n\t\t[].forEach.call(els, f);\r\n\t}\r\n\r\n\tconst loadVids = (els) => {\r\n\t\tif (\"IntersectionObserver\" in window) {\r\n\t\t\tconst lazyVideoObserver = new IntersectionObserver((entries, observer) => {\r\n\t\t\t\t[].forEach.call(entries, video => {\r\n\t\t\t\t\tif (video.isIntersecting) {\r\n\t\t\t\t\t\tfor (let source in video.target.children) {\r\n\t\t\t\t\t\t\tlet videoSource = video.target.children[source];\r\n\t\t\t\t\t\t\tif (typeof videoSource.tagName === \"string\" && videoSource.tagName === \"SOURCE\") {\r\n\t\t\t\t\t\t\t\tvideoSource.src = videoSource.dataset.src;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvideo.target.load();\r\n\t\t\t\t\t\tvideo.target.classList.remove(\"lazy\");\r\n\t\t\t\t\t\tlazyVideoObserver.unobserve(video.target);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t[].forEach.call(els, lazyVideo => lazyVideoObserver.observe(lazyVideo));\r\n\t\t} else {\r\n\t\t\tels = [].filter.call(els, isInView);\r\n\t\t\tels = [].filter.call(els, isUnset);\r\n\r\n\t\t\t[].forEach.call(els, vid => {\r\n\t\t\t\tfor (let source in vid.children) {\r\n\t\t\t\t\tlet videoSource = vid.children[source];\r\n\t\t\t\t\tif (typeof videoSource.tagName === \"string\" && videoSource.tagName === \"SOURCE\") {\r\n\t\t\t\t\t\tvideoSource.src = videoSource.dataset.src;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvid.load();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// isSet :: DOM -> Bool\r\n\tconst isUnset = el => {\r\n\t\treturn !(el.getAttribute('data-set') === 'true');\r\n\t};\r\n\t// isInView :: DOM -> Bool\r\n\tconst isInView = el => {\r\n\t\tconst rect = el.getBoundingClientRect();\r\n\r\n\t\treturn rect.top <= window.innerHeight &&\r\n\t\t\trect.bottom >= 0;\r\n\t};\r\n\r\n\tconst staticHandler = _ => {\r\n\t\tif (imgs !== undefined) {\r\n\t\t\tloadImgs(imgs, setImg);\r\n\t\t}\r\n\t\tif (bgs !== undefined) {\r\n\t\t\tloadImgs(bgs, setBg);\r\n\t\t}\r\n\t\tif (vids !== undefined) {\r\n\t\t\tloadVids(vids)\r\n\t\t}\r\n\t};\r\n\tconst resizeHandler = _ => {\r\n\t\tlet els;\r\n\t\tif (imgs !== undefined) {\r\n\t\t\tels = [].filter.call(imgs, isInView);\r\n\t\t\t[].forEach.call(els, setImg);\r\n\t\t}\r\n\t\tif (bgs !== undefined) {\r\n\t\t\tels = [].filter.call(bgs, isInView);\r\n\t\t\t[].forEach.call(bgs, setBg);\r\n\t\t}\r\n\t}\r\n\r\n\tconst init = _ => {\r\n\t\timgs = document.querySelectorAll('img[data-src]');\r\n\t\tvids = document.querySelectorAll('video.lazy');\r\n\t\tbgs = document.querySelectorAll('*[data-bg]');\r\n\t};\r\n\r\n\tconst concat = _ => {\r\n\t\tinit();\r\n\t\tstaticHandler();\r\n\t}\r\n\r\n\tif (breakpoints !== undefined) {\r\n\t\twindow.addEventListener('resize', resizeHandler);\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit,\r\n\t\tstaticHandler,\r\n\t\tresizeHandler,\r\n\t\tconcat\r\n\t}\r\n\r\n})({\r\n\tbreakpoints: [ 750, 1024, 1400, 1600 ]\r\n});\r\n\r\nwindow.onload = _ => {\r\n\tLazyLoad.init();\r\n\tLazyLoad.staticHandler();\r\n\twindow.addEventListener(\"scroll\", function () {\r\n\t\tLazyLoad.staticHandler();\r\n\t}, false);\r\n}\r\n\r\nwindow.LazyLoad = LazyLoad;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/LazyLoading/index.js"],"sourceRoot":""}