{"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":""}