{"version":3,"file":"js/flat_2016/lazy-a9322bf89a681d453a83.js","mappings":"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","sources":["webpack:///./app/javascript/packs/flat_2016/lazy.js","webpack:///./app/javascript/libs/Utils/isMobile.ts","webpack:///./node_modules/layzr.js/dist/layzr.module.js"],"sourcesContent":["import Layzr from 'layzr.js';\nimport isMobile from \"libs/Utils/isMobile\";\n\nlet instance;\n\nwindow.layzrThreshold ??= isMobile.mobile() ? 50 : 100;\n\ninstance = Layzr({\n threshold: window.layzrThreshold\n});\n\nupdate();\n\nfunction update() {\n instance.update().check().handlers(true);\n}\n\ndocument.addEventListener(\"lazy_images:update\", update);\n","/**\n * Small helper for detecting device type\n * @type {{mobile, smallMobile, tablet, tabletLandscape, tabletPortrait, desktop}}\n * @return {Boolean}\n *\n * @example\n * if (ismobile.mobile()) {\n * doSomethingOnMobileOnly();\n * }\n */\n\nexport default (function() {\n const mobile = \"(max-width: 767px)\";\n const smallMobile = \"(max-width: 320px)\";\n\n const tablet = \"(min-width: 768px) and (max-width: 1024px)\";\n const tabletLandscape = \"(min-width: 768px) and (max-width: 1024px) and (orientation: landscape)\";\n const tabletPortrait = \"(min-width: 768px) and (max-width: 1024px) and (orientation: portrait)\";\n\n const desktop = \"(min-width: 1025px)\";\n\n return {\n mobile: (): boolean => {\n return window.matchMedia(mobile).matches;\n },\n smallMobile: (): boolean => {\n return window.matchMedia(smallMobile).matches;\n },\n tablet: (): boolean => {\n return window.matchMedia(tablet).matches;\n },\n tabletLandscape: (): boolean => {\n return window.matchMedia(tabletLandscape).matches;\n },\n tabletPortrait: (): boolean => {\n return window.matchMedia(tabletPortrait).matches;\n },\n desktop: (): boolean => {\n return window.matchMedia(desktop).matches;\n }\n };\n})();\n","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar knot = function knot() {\n var extended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var events = Object.create(null);\n\n function on(name, handler) {\n events[name] = events[name] || [];\n events[name].push(handler);\n return this;\n }\n\n function once(name, handler) {\n handler._once = true;\n on(name, handler);\n return this;\n }\n\n function off(name) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n handler ? events[name].splice(events[name].indexOf(handler), 1) : delete events[name];\n\n return this;\n }\n\n function emit(name) {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // cache the events, to avoid consequences of mutation\n var cache = events[name] && events[name].slice();\n\n // only fire handlers if they exist\n cache && cache.forEach(function (handler) {\n // remove handlers added with 'once'\n handler._once && off(name, handler);\n\n // set 'this' context, pass args to handlers\n handler.apply(_this, args);\n });\n\n return this;\n }\n\n return _extends({}, extended, {\n\n on: on,\n once: once,\n off: off,\n emit: emit\n });\n};\n\nvar layzr = (function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n // private\n\n var prevLoc = getLoc();\n var ticking = void 0;\n\n var nodes = void 0;\n var windowHeight = void 0;\n\n // options\n\n var settings = {\n normal: options.normal || 'data-normal',\n retina: options.retina || 'data-retina',\n srcset: options.srcset || 'data-srcset',\n threshold: options.threshold || 0\n };\n\n // feature detection\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/srcset.js\n\n var srcset = document.body.classList.contains('srcset') || 'srcset' in document.createElement('img');\n\n // device pixel ratio\n // not supported in IE10 - https://msdn.microsoft.com/en-us/library/dn265030(v=vs.85).aspx\n\n var dpr = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI;\n\n // instance\n\n var instance = knot({\n handlers: handlers,\n check: check,\n update: update\n });\n\n return instance;\n\n // location helper\n\n function getLoc() {\n return window.scrollY || window.pageYOffset;\n }\n\n // debounce helpers\n\n function requestScroll() {\n prevLoc = getLoc();\n requestFrame();\n }\n\n function requestFrame() {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n return check();\n });\n ticking = true;\n }\n }\n\n // offset helper\n\n function getOffset(node) {\n return node.getBoundingClientRect().top + prevLoc;\n }\n\n // in viewport helper\n\n function inViewport(node) {\n var viewTop = prevLoc;\n var viewBot = viewTop + windowHeight;\n\n var nodeTop = getOffset(node);\n var nodeBot = nodeTop + node.offsetHeight;\n\n var offset = settings.threshold / 100 * windowHeight;\n\n return nodeBot >= viewTop - offset && nodeTop <= viewBot + offset;\n }\n\n // source helper\n\n function setSource(node) {\n instance.emit('src:before', node);\n\n // prefer srcset, fallback to pixel density\n if (srcset && node.hasAttribute(settings.srcset)) {\n node.setAttribute('srcset', node.getAttribute(settings.srcset));\n } else {\n var retina = dpr > 1 && node.getAttribute(settings.retina);\n node.setAttribute('src', retina || node.getAttribute(settings.normal));\n }\n\n instance.emit('src:after', node);[settings.normal, settings.retina, settings.srcset].forEach(function (attr) {\n return node.removeAttribute(attr);\n });\n\n update();\n }\n\n // API\n\n function handlers(flag) {\n var action = flag ? 'addEventListener' : 'removeEventListener';['scroll', 'resize'].forEach(function (event) {\n return window[action](event, requestScroll);\n });\n return this;\n }\n\n function check() {\n windowHeight = window.innerHeight;\n\n nodes.forEach(function (node) {\n return inViewport(node) && setSource(node);\n });\n\n ticking = false;\n return this;\n }\n\n function update() {\n nodes = Array.prototype.slice.call(document.querySelectorAll('[' + settings.normal + ']'));\n return this;\n }\n});\n\nexport default layzr;\n"],"names":["instance","update","check","handlers","window","layzrThreshold","mobile","threshold","document","addEventListener","matchMedia","matches","smallMobile","tablet","tabletLandscape","tabletPortrait","desktop","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","options","undefined","prevLoc","getLoc","ticking","nodes","windowHeight","settings","normal","retina","srcset","body","classList","contains","createElement","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","extended","events","create","on","name","handler","push","this","off","splice","indexOf","once","_once","emit","_this","_len","args","Array","_key","cache","slice","forEach","apply","knot","flag","action","event","requestScroll","scrollY","pageYOffset","requestAnimationFrame","inViewport","node","viewTop","viewBot","nodeTop","getBoundingClientRect","top","getOffset","nodeBot","offsetHeight","offset","innerHeight","hasAttribute","setAttribute","getAttribute","attr","removeAttribute","setSource","querySelectorAll"],"sourceRoot":""}