{"version":3,"sources":["novicell.dynamic-image.js","lazy-images.js"],"names":["debounce","func","wait","immediate","timeout","context","this","args","arguments","callNow","clearTimeout","setTimeout","apply","elementInViewport","element","expandMargin","extraMargin","currentWindowHeight","window","innerHeight","rect","getBoundingClientRect","top","height","Math","min","novicell","dynamicImage","nextQuerySign","url","indexOf","queryUrl","queryObjStr","queryObj","JSON","parse","Object","keys","forEach","key","getUrl","el","baseUrl","getAttribute","parentHeight","parentNode","offsetHeight","parentWidth","innerWidth","offsetWidth","width","lazySizesConfig","expand","lazyload","image","src","query","target","classList","contains","setBg","style","backgroundImage","hasAttribute","srcset","split","newSrcset","trim","bp","newSrc","push","setAttribute","join","loadImagesInView","lazyImages","document","body","querySelectorAll","i","length","lazyImage","addEventListener"],"mappings":"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","file":"lazy.min.js","sourcesContent":["'use strict';\n\n/**\n* @name Novicell Dynamic Image\n* @author Jonas Havmøller & Danni Larsen\n*/\n\n\nvar novicell = novicell || {};\n\nnovicell.dynamicImage = novicell.dynamicImage || function () {\n\n function getUrl(el) {\n var baseUrl = el.getAttribute('data-src');\n var parentHeight = el.parentNode.innerHeight || el.parentNode.offsetHeight;\n var parentWidth = el.parentNode.innerWidth || el.parentNode.offsetWidth;\n\n var pixelInterval = 50;\n parentWidth = parentWidth !== null ? parentWidth + pixelInterval - (parentWidth % pixelInterval) : null; // round to the nearest 50\n parentHeight = parentHeight !== null ? parentHeight + pixelInterval - (parentHeight % pixelInterval) : null; // round to the nearest 50\n\n var parentAspectRatio = parentHeight / parentWidth;\n\n var width = parentWidth;\n var height = width * parentAspectRatio;\n\n baseUrl += width ? nextQuerySign(baseUrl) + \"width=\" + width : \"\";\n baseUrl += height !== null ? nextQuerySign(baseUrl) + \"height=\" + height : \"\";\n\n var queryObjStr = el.getAttribute('data-query-obj');\n baseUrl = queryUrl(baseUrl, queryObjStr);\n\n return baseUrl;\n }\n\n function nextQuerySign(url) {\n return url.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n }\n\n function queryUrl(url, queryObjStr) {\n if (queryObjStr) {\n var queryObj = JSON.parse(queryObjStr);\n\n Object.keys(queryObj).forEach(function (key) {\n url += queryObj[key] !== null ? nextQuerySign(url) + key + \"=\" + queryObj[key] : \"\";\n });\n }\n return url;\n }\n\n return {\n queryUrl: queryUrl,\n getUrl: getUrl\n };\n}();\n","'use strict';\n\nvar novicell = novicell || {};\n// Lazysizes config\nwindow.lazySizesConfig = window.lazySizesConfig || {};\nwindow.lazySizesConfig.expand = 1000;\n\nnovicell.lazyload = novicell.lazyload || function (image) {\n\n if(image.src) {\n return;\n }\n\n var target = image;\n var setMeasuredUrl = target.classList.contains('lazyload-measure');\n var url, src, query;\n\n if (setMeasuredUrl) {\n var setBg = target.classList.contains('lazyload-bg');\n url = novicell.dynamicImage.getUrl(target);\n\n if (setBg) {\n target.parentNode.style.backgroundImage = 'url(' + url + ')';\n } else {\n target.src = url;\n }\n\n } else if (target.hasAttribute('data-srcset') && target.hasAttribute('data-query-obj')) {\n var srcset = target.getAttribute('data-srcset').split(\",\");\n var newSrcset = [];\n query = target.getAttribute('data-query-obj');\n src = target.getAttribute('data-src');\n\n srcset.forEach(function (src) {\n src = src.trim();\n src = src.split(' ');\n\n var url = src[0];\n var bp = src[1];\n var newSrc = novicell.dynamicImage.queryUrl(url, query);\n // set new srcset\n newSrcset.push(newSrc + ' ' + bp);\n });\n\n target.setAttribute('srcset', newSrcset.join(', '));\n target.setAttribute('src', novicell.dynamicImage.queryUrl(src, query));\n } else if (target.hasAttribute('data-src')) {\n query = target.getAttribute('data-query-obj');\n src = target.getAttribute('data-src');\n url = novicell.dynamicImage.queryUrl(src, query);\n\n target.setAttribute('src', url);\n }\n};\n\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\nfunction elementInViewport(element, expandMargin) {\n var extraMargin = expandMargin || 200;\n var currentWindowHeight = window.innerHeight;\n var rect = element.getBoundingClientRect();\n var span = rect.top + rect.height + extraMargin;\n\n return (span >= Math.min(0, extraMargin) && rect.top <= currentWindowHeight + extraMargin);\n}\n\n/*\nvar lastRefreshWidth = 0;\nvar refreshWidth = 50;\nvar checkImages = debounce(function () {\n if (window.innerWidth > lastRefreshWidth + refreshWidth || window.innerWidth < lastRefreshWidth - refreshWidth) {\n var loadedElements = document.body.querySelectorAll('.lazyloaded');\n loadedElements.forEach(function (el) {\n el.classList.remove('lazyloaded');\n el.classList.add('lazyload');\n });\n lastRefreshWidth = window.innerWidth;\n }\n}, 100, false);\n*/\n\n//window.addEventListener('resize', checkImages);\n\n\nnovicell.loadImagesInView = debounce(function(){\n\n novicell.lazyImages = document.body.querySelectorAll('.lazyload');\n\n for (var i = 0; i < novicell.lazyImages.length; i++) {\n var lazyImage = novicell.lazyImages[i];\n if(elementInViewport(lazyImage) && !lazyImage.classList.contains(\"lazyloaded\")) {\n novicell.lazyload(lazyImage);\n }\n }\n}, 50, false);\n\nnovicell.loadImagesInView();\nwindow.addEventListener('load', function() {\n window.addEventListener('scroll', novicell.loadImagesInView, false);\n window.addEventListener('resize', novicell.loadImagesInView, false);\n});\n\n\n"]}