{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/utils/debounce.js","webpack:///./src/components/header/index.js","webpack:///./src/components/header-search/index.js","webpack:///./src/components/subscribe/index.js","webpack:///./src/utils/validate.js","webpack:///./src/common/index.js","webpack:///./node_modules/focus-visible/dist/focus-visible.js","webpack:///./node_modules/lazysizes/plugins/parent-fit/ls.parent-fit.js","webpack:///./src/components/anim-logo/index.js","webpack:///./src/pages/home.js","webpack:///./src/components/button/index.js","webpack:///./src/components/footer/index.js","webpack:///./src/components/logo/index.js","webpack:///./src/utils/request.js","webpack:///./node_modules/lazysizes/lazysizes.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","debounce","func","delay","timeout","args","context","this","clearTimeout","setTimeout","apply","Header","elem","document","querySelector","navToggleButton","handleToggleNavListener","handleToggleNav","addEventListener","event","preventDefault","classList","toggle","HeaderSearch","node","formElem","queryElem","resultsElem","resultsIndex","resultsItems","isInnerClick","handleSubmitFormListener","handleQueryFocusListener","handleQueryFocus","handleQueryInputListener","handleQueryInput","handleKeyDownListener","handleKeyDown","handleInsideClickListener","handleInsideClick","handleOutsideClickListener","handleOutsideClick","data","status","hits","length","slice","map","hit","item","createElement","innerHTML","id","title","fragment","resetResults","console","error","showResults","sendRequest","clearResults","e","window","keyCode","selectPreviousItem","selectNextItem","hideResults","query","keys","k","encodeURIComponent","join","fetch","action","then","response","json","result","handleRequestSuccess","firstChild","focus","focusItem","forEach","appendChild","add","remove","Subscribe","selectors","form","input","captcha","elements","handleSubmit","querySelectorAll","formId","showResult","getAttribute","test","String","toLowerCase","dataJson","JSON","stringify","request","method","headers","body","errorData","handleRequestError","message","isSuccess","resultElement","applyFocusVisiblePolyfill","scope","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","text","search","url","tel","email","password","number","date","month","week","time","datetime","isValidFocusTarget","el","nodeName","addFocusVisibleClass","contains","setAttribute","onPointerDown","addInitialPointerMoveListeners","onInitialPointerMove","target","removeEventListener","metaKey","altKey","ctrlKey","activeElement","visibilityState","type","tagName","readOnly","isContentEditable","hasAttribute","removeAttribute","nodeType","Node","DOCUMENT_FRAGMENT_NODE","host","DOCUMENT_NODE","documentElement","CustomEvent","createEvent","initCustomEvent","dispatchEvent","factory","globalInstall","lazySizes","regDescriptors","regCssFit","regCssObject","regPicture","cfg","parentFit","getParent","element","parentSel","parent","parentNode","previousElementSibling","closest","jQuery","getFit","tmpMatch","parentObj","css","getComputedStyle","content","fontFamily","obj","fit","_lazysizesParentFit","match","_lazysizesParentContainer","objectFit","getImageRatio","srcset","media","ratio","width","height","srcsetAttr","_lsMedia","customMedia","matchMedia","matches","parseFloat","calculateSize","displayRatio","imageRatio","retWidth","fitObj","fitElem","clientWidth","clientHeight","defaultPrevented","detail","instance","AnimLogo","orig","overlay","originCoords","x","y","currentCoords","dimensions","handleMouseLeaveListener","handleMouseLeave","handleMouseMoveListener","handleMouseMove","handleResizeListener","handleResize","offsetLeft","Math","floor","offsetTop","updateCounter","style","transform","update","offsetWidth","offsetHeight","resetOriginCoords","clientX","clientY","toFixed","updateCoords","updateTransformStyle","handleScroll","scrollY","scrollTop","init","getElementById","html","parseJSON","Promise","resolve","ok","options","reject","Error","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","sizesAttr","minSize","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","noSupport","docElem","Date","supportPicture","HTMLPictureElement","requestAnimationFrame","requestIdleCallback","loadEvents","regClassCache","Array","hasClass","ele","cls","RegExp","addClass","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","evt","triggerEvent","noBubbles","noCancelable","initEvent","updatePolyfill","full","polyfill","picturefill","pf","src","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","firstFns","secondFns","fns","run","runFns","running","waiting","shift","rafBatch","queue","arguments","push","hidden","_lsFlush","rAFIt","simple","that","timestamp","later","last","now","loader","regImg","regIframe","supportScroll","navigator","userAgent","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isBodyHidden","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","isPicture","firesLoad","resetPreloadingTimer","getElementsByTagName","contentWindow","location","changeIframeSrc","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW"],"mappings":"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","file":"home.b9fa4473df6257876de4.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 255);\n","/* eslint-disable import/prefer-default-export */\nexport const debounce = (func, delay = 10) => {\n let timeout = null;\n // eslint-disable-next-line func-names\n return function (...args) {\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(context, args), delay);\n };\n};\n","import './header.css';\n\nexport default class Header {\n constructor() {\n this.elem = document.querySelector('.js-header');\n this.navToggleButton = this.elem.querySelector('.js-header-nav-toggle');\n\n this.handleToggleNavListener = this.handleToggleNav.bind(this);\n }\n\n bind() {\n this.navToggleButton.addEventListener('click', this.handleToggleNavListener);\n }\n\n handleToggleNav(event) {\n event.preventDefault();\n this.elem.classList.toggle('is-nav-opened');\n // document.body.classList.toggle('no-scroll');\n\n // if (this.documentation && this.documentation.classList.contains('is-menu-opened')) {\n // this.documentation.classList.remove('is-menu-opened');\n // document.body.classList.add('no-scroll');\n // }\n }\n\n init() {\n this.bind();\n }\n}\n","import { debounce } from '../../utils/debounce';\n\nimport './header-search.css';\n\nconst preventDefault = (event) => {\n event.preventDefault();\n\n return false;\n};\n\nexport default class HeaderSearch {\n constructor(node) {\n this.elem = node;\n this.formElem = this.elem.querySelector('.js-header-search-form');\n this.queryElem = this.elem.querySelector('.js-header-search-query');\n this.resultsElem = this.elem.querySelector('.js-header-search-results');\n\n this.resultsIndex = -1;\n this.resultsItems = [];\n\n this.isInnerClick = false;\n\n this.handleSubmitFormListener = preventDefault;\n this.handleQueryFocusListener = this.handleQueryFocus.bind(this);\n this.handleQueryInputListener = this.handleQueryInput.bind(this);\n this.handleKeyDownListener = this.handleKeyDown.bind(this);\n this.handleInsideClickListener = this.handleInsideClick.bind(this);\n this.handleOutsideClickListener = this.handleOutsideClick.bind(this);\n }\n\n bind() {\n this.formElem.addEventListener('submit', this.handleSubmitFormListener);\n this.queryElem.addEventListener('focus', debounce(this.handleQueryFocusListener, 50));\n this.queryElem.addEventListener('input', debounce(this.handleQueryInputListener, 50));\n this.elem.addEventListener('keydown', this.handleKeyDownListener);\n this.elem.addEventListener('click', this.handleInsideClickListener);\n document.addEventListener('click', this.handleOutsideClickListener);\n }\n\n handleRequestSuccess(data) {\n if (data.status !== 200) {\n console.error('Fetch error');\n return;\n }\n\n this.resultsItems = [];\n\n if (data.hits) {\n if (data.hits.length) {\n this.resultsItems = data.hits.slice(0, 5).map((hit) => {\n const item = document.createElement('li');\n item.innerHTML = `${hit.title}${hit.fragment}`;\n return item;\n });\n } else {\n const item = document.createElement('li');\n item.innerHTML = 'No results. Please, specify your query.';\n this.resultsItems = [item];\n }\n }\n\n this.resetResults();\n }\n\n handleQueryFocus() {\n const hasResults = this.resultsItems.length;\n\n if (hasResults) {\n this.showResults();\n }\n }\n\n handleQueryInput() {\n if (!this.queryElem.value) {\n this.clearResults();\n return;\n }\n\n const data = {};\n data[this.queryElem.name] = this.queryElem.value;\n this.sendRequest(data);\n }\n\n handleKeyDown(e) {\n const event = e || window.event;\n\n if (event.keyCode === 38) {\n event.preventDefault();\n this.selectPreviousItem();\n } else if (e.keyCode === 40) {\n event.preventDefault();\n this.selectNextItem();\n }\n }\n\n handleInsideClick() {\n this.isInnerClick = true;\n }\n\n handleOutsideClick() {\n if (!this.isInnerClick) {\n this.hideResults();\n }\n this.isInnerClick = false;\n }\n\n sendRequest(data) {\n const query = Object.keys(data)\n .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`)\n .join('&');\n fetch(`${this.formElem.action}?${query}`)\n .then((response) => response.json())\n .then((result) => { this.handleRequestSuccess(result); });\n }\n\n focusItem() {\n this.resultsItems[this.resultsIndex].firstChild.focus();\n }\n\n selectPreviousItem() {\n this.resultsIndex -= 1;\n if (this.resultsIndex === -2) { // input was selected\n this.resultsIndex = this.resultsItems.length - 1; // select the last\n }\n if (this.resultsIndex === -1) {\n this.queryElem.focus();\n return;\n }\n this.focusItem();\n }\n\n selectNextItem() {\n this.resultsIndex += 1;\n if (this.resultsIndex === this.resultsItems.length) { // last was selected\n this.resultsIndex = -1;\n this.queryElem.focus();\n return;\n }\n this.focusItem();\n }\n\n clearResults() {\n this.resultsIndex = -1;\n this.resultsItems = [];\n this.resetResults();\n }\n\n resetResults() {\n this.resultsElem.innerHTML = '';\n const hasResults = this.resultsItems.length;\n\n if (hasResults) {\n this.resultsItems.forEach((item) => {\n this.resultsElem.appendChild(item);\n });\n this.showResults();\n return;\n }\n\n this.hideResults();\n }\n\n showResults() {\n this.resultsElem.classList.add('is-opened');\n }\n\n hideResults() {\n this.resultsElem.classList.remove('is-opened');\n }\n\n init() {\n this.bind();\n }\n}\n","import { validateEmail } from '../../utils/validate';\nimport request from '../../utils/request';\n\nexport default class Subscribe {\n constructor() {\n this.selectors = {\n form: '.js-subscribe',\n input: '.js-subscribe-input',\n result: '.js-subscribe-result',\n captcha: '.js-captcha',\n };\n\n this.elements = {};\n\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n bind() {\n document.querySelectorAll(this.selectors.form).forEach((form) => {\n this.elements[form.id] = {\n form,\n input: form.querySelector(this.selectors.input),\n captcha: form.querySelector(this.selectors.captcha),\n result: form.querySelector(this.selectors.result),\n };\n\n form.addEventListener('submit', (event) => {\n this.handleSubmit(event, form.id);\n });\n });\n }\n\n handleRequestSuccess(data, formId) {\n if (data.status !== 200) {\n this.showResult(this.elements[formId].form.getAttribute('data-error'), formId, false);\n return;\n }\n\n this.elements[formId].input.value = '';\n this.elements[formId].captcha.value = '';\n this.showResult(this.elements[formId].form.getAttribute('data-success'), formId, true);\n }\n\n handleSubmit(event, formId) {\n event.preventDefault();\n\n const { name, value } = this.elements[formId].input;\n if (!value || !validateEmail(value)) {\n this.showResult(this.elements[formId].input.getAttribute('data-error'), formId, false);\n return false;\n }\n\n const data = {\n [name]: value,\n captcha: this.elements[formId].captcha.value,\n };\n this.sendRequest(data, formId);\n\n return false;\n }\n\n sendRequest(data, formId) {\n const dataJson = JSON.stringify(data);\n\n request(this.elements[formId].form.action, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: dataJson,\n }).then((response) => {\n this.handleRequestSuccess(response, formId);\n }).catch((errorData) => {\n this.handleRequestError(errorData, formId);\n });\n }\n\n showResult(message, formId, isSuccess) {\n const resultElement = this.elements[formId].result;\n resultElement.classList.remove('success', 'error');\n\n resultElement.innerHTML = message;\n resultElement.classList.add(isSuccess ? 'success' : 'error');\n }\n\n init() {\n this.bind();\n }\n}\n","/* eslint-disable import/prefer-default-export */\nfunction validateEmail(val) {\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/; // eslint-disable-line no-useless-escape\n return re.test(String(val).toLowerCase());\n}\n\nfunction removeSpacesFromInputs(inputs) {\n inputs.forEach((input) => {\n const { value } = input;\n // eslint-disable-next-line no-param-reassign\n input.value = value.trim();\n });\n}\n\nexport {\n validateEmail,\n removeSpacesFromInputs,\n};\n\n","import 'normalize.css';\nimport 'focus-visible';\nimport 'lazysizes';\nimport 'lazysizes/plugins/parent-fit/ls.parent-fit';\n\nimport './global.css';\nimport '../components/error.css';\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName == 'INPUT' && inputTypesWhitelist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName == 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState == 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tif(!window.addEventListener){return;}\n\n\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\tvar regCssFit = /parent-fit[\"']*\\s*:\\s*[\"']*(contain|cover|width)/;\n\tvar regCssObject = /parent-container[\"']*\\s*:\\s*[\"']*(.+?)(?=(\\s|$|,|'|\"|;))/;\n\tvar regPicture = /^picture$/i;\n\tvar cfg = lazySizes.cfg;\n\n\tvar getCSS = function (elem){\n\t\treturn (getComputedStyle(elem, null) || {});\n\t};\n\n\tvar parentFit = {\n\n\t\tgetParent: function(element, parentSel){\n\t\t\tvar parent = element;\n\t\t\tvar parentNode = element.parentNode;\n\n\t\t\tif((!parentSel || parentSel == 'prev') && parentNode && regPicture.test(parentNode.nodeName || '')){\n\t\t\t\tparentNode = parentNode.parentNode;\n\t\t\t}\n\n\t\t\tif(parentSel != 'self'){\n\t\t\t\tif(parentSel == 'prev'){\n\t\t\t\t\tparent = element.previousElementSibling;\n\t\t\t\t} else if(parentSel && (parentNode.closest || window.jQuery)){\n\t\t\t\t\tparent = (parentNode.closest ?\n\t\t\t\t\t\t\tparentNode.closest(parentSel) :\n\t\t\t\t\t\t\tjQuery(parentNode).closest(parentSel)[0]) ||\n\t\t\t\t\t\tparentNode\n\t\t\t\t\t;\n\t\t\t\t} else {\n\t\t\t\t\tparent = parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn parent;\n\t\t},\n\n\t\tgetFit: function(element){\n\t\t\tvar tmpMatch, parentObj;\n\t\t\tvar css = getCSS(element);\n\t\t\tvar content = css.content || css.fontFamily;\n\t\t\tvar obj = {\n\t\t\t\tfit: element._lazysizesParentFit || element.getAttribute('data-parent-fit')\n\t\t\t};\n\n\t\t\tif(!obj.fit && content && (tmpMatch = content.match(regCssFit))){\n\t\t\t\tobj.fit = tmpMatch[1];\n\t\t\t}\n\n\t\t\tif(obj.fit){\n\t\t\t\tparentObj = element._lazysizesParentContainer || element.getAttribute('data-parent-container');\n\n\t\t\t\tif(!parentObj && content && (tmpMatch = content.match(regCssObject))){\n\t\t\t\t\tparentObj = tmpMatch[1];\n\t\t\t\t}\n\n\t\t\t\tobj.parent = parentFit.getParent(element, parentObj);\n\n\n\t\t\t} else {\n\t\t\t\tobj.fit = css.objectFit;\n\t\t\t}\n\n\t\t\treturn obj;\n\t\t},\n\n\t\tgetImageRatio: function(element){\n\t\t\tvar i, srcset, media, ratio, match, width, height;\n\t\t\tvar parent = element.parentNode;\n\t\t\tvar elements = parent && regPicture.test(parent.nodeName || '') ?\n\t\t\t\t\tparent.querySelectorAll('source, img') :\n\t\t\t\t\t[element]\n\t\t\t\t;\n\n\t\t\tfor(i = 0; i < elements.length; i++){\n\t\t\t\telement = elements[i];\n\t\t\t\tsrcset = element.getAttribute(cfg.srcsetAttr) || element.getAttribute('srcset') || element.getAttribute('data-pfsrcset') || element.getAttribute('data-risrcset') || '';\n\t\t\t\tmedia = element._lsMedia || element.getAttribute('media');\n\t\t\t\tmedia = cfg.customMedia[element.getAttribute('data-media') || media] || media;\n\n\t\t\t\tif(srcset && (!media || (window.matchMedia && matchMedia(media) || {}).matches )){\n\t\t\t\t\tratio = parseFloat(element.getAttribute('data-aspectratio'));\n\n\t\t\t\t\tif (!ratio) {\n\t\t\t\t\t\tmatch = srcset.match(regDescriptors);\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tif(match[2] == 'w'){\n\t\t\t\t\t\t\t\twidth = match[1];\n\t\t\t\t\t\t\t\theight = match[3];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twidth = match[3];\n\t\t\t\t\t\t\t\theight = match[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twidth = element.getAttribute('width');\n\t\t\t\t\t\t\theight = element.getAttribute('height');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tratio = width / height;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ratio;\n\t\t},\n\n\t\tcalculateSize: function(element, width){\n\t\t\tvar displayRatio, height, imageRatio, retWidth;\n\t\t\tvar fitObj = this.getFit(element);\n\t\t\tvar fit = fitObj.fit;\n\t\t\tvar fitElem = fitObj.parent;\n\n\t\t\tif(fit != 'width' && ((fit != 'contain' && fit != 'cover') || !(imageRatio = this.getImageRatio(element)))){\n\t\t\t\treturn width;\n\t\t\t}\n\n\t\t\tif(fitElem){\n\t\t\t\twidth = fitElem.clientWidth;\n\t\t\t} else {\n\t\t\t\tfitElem = element;\n\t\t\t}\n\n\t\t\tretWidth = width;\n\n\t\t\tif(fit == 'width'){\n\t\t\t\tretWidth = width;\n\t\t\t} else {\n\t\t\t\theight = fitElem.clientHeight;\n\n\t\t\t\tif((displayRatio = width / height) && ((fit == 'cover' && displayRatio < imageRatio) || (fit == 'contain' && displayRatio > imageRatio))){\n\t\t\t\t\tretWidth = width * (imageRatio / displayRatio);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn retWidth;\n\t\t}\n\t};\n\n\tlazySizes.parentFit = parentFit;\n\n\tdocument.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || e.detail.instance != lazySizes){return;}\n\n\t\tvar element = e.target;\n\t\te.detail.width = parentFit.calculateSize(element, e.detail.width);\n\t});\n}));\n","import { debounce } from '../../utils/debounce';\n\nimport './anim-logo.css';\n\nexport default class AnimLogo {\n constructor() {\n this.elem = document.querySelector('.js-anim-logo');\n if (!this.elem) return;\n\n this.orig = this.elem.querySelector('.js-anim-logo__orig');\n this.overlay = this.elem.querySelector('.js-anim-logo__overlay');\n\n this.originCoords = { x: 0, y: 0 };\n this.currentCoords = { x: 0, y: 0 };\n\n this.dimensions = { width: 0, height: 0 };\n\n this.handleMouseLeaveListener = this.handleMouseLeave.bind(this);\n this.handleMouseMoveListener = this.handleMouseMove.bind(this);\n this.handleResizeListener = this.handleResize.bind(this);\n }\n\n bind() {\n this.overlay.addEventListener('mouseenter', this.handleMouseMoveListener);\n this.overlay.addEventListener('mouseleave', debounce(this.handleMouseLeaveListener));\n this.overlay.addEventListener('mousemove', debounce(this.handleMouseMoveListener));\n window.addEventListener('resize', this.handleResizeListener);\n }\n\n unbind() {\n this.elem.removeEventListener('mouseenter', this.handleMouseMoveListener);\n this.elem.removeEventListener('mouseleave', this.handleMouseLeaveListener);\n this.elem.removeEventListener('mousemove', this.handleMouseMoveListener);\n window.removeEventListener('resize', this.handleResizeListener);\n }\n\n resetOriginCoords() {\n this.originCoords.x = this.elem.offsetLeft + Math.floor(this.dimensions.width / 2);\n this.originCoords.y = this.elem.offsetTop + Math.floor(this.dimensions.width / 2);\n }\n\n isTimeToUpdate() {\n // eslint-disable-next-line no-plusplus\n return this.updateCounter++ % 10 === 0;\n }\n\n handleMouseLeave() {\n this.orig.style.transform = '';\n }\n\n handleMouseMove(event) {\n this.update(event);\n }\n\n handleResize() {\n /* TODO: do not start animation if logo is not visible */\n this.dimensions.width = this.elem.offsetWidth;\n this.dimensions.height = this.elem.offsetHeight;\n this.resetOriginCoords();\n }\n\n updateCoords(event) {\n const e = event || window.event;\n this.currentCoords.x = e.clientX - this.originCoords.x;\n this.currentCoords.y = (e.clientY - this.originCoords.y) * -1;\n }\n\n updateTransformStyle() {\n const x = (this.currentCoords.x / this.dimensions.width / 2).toFixed(2);\n const y = (this.currentCoords.y / this.dimensions.height / 2).toFixed(2);\n\n this.orig.style.transform = `rotateX(${y}deg) rotateY(${x}deg)`;\n }\n\n update(event) {\n this.updateCoords(event);\n this.updateTransformStyle();\n }\n\n init() {\n if (!this.elem || !this.orig || !this.overlay) return;\n\n this.handleResize();\n this.bind();\n }\n}\n","import '../common';\n\nimport '../components/advantage.css';\nimport '../components/blockquote';\nimport '../components/button';\nimport '../components/client.css';\nimport '../components/columnized.css';\nimport '../components/feature';\nimport '../components/footer';\nimport '../components/heading.css';\nimport '../components/logo';\nimport '../components/post.css';\nimport '../components/section.css';\nimport '../components/show-more';\nimport '../components/tile';\nimport '../components/error.css';\nimport '../components/contributors.css';\nimport '../components/icons.css';\n\nimport AnimLogo from '../components/anim-logo';\nimport Header from '../components/header';\nimport HeaderSearch from '../components/header-search';\nimport Subscribe from '../components/subscribe';\nimport request from '../utils/request';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const getScrollY = () => window.scrollY || document.documentElement.scrollTop;\n\n const handleScroll = () => {\n document.documentElement.classList.toggle('has-scrolled', getScrollY());\n };\n\n /**\n * Scroll\n */\n handleScroll();\n window.addEventListener('scroll', () => handleScroll());\n\n /**\n * Header\n */\n const header = new Header();\n header.init();\n\n /**\n * Search\n */\n document.querySelectorAll('.js-header-search').forEach((node) => {\n const search = new HeaderSearch(node);\n search.init();\n });\n\n /**\n * Subscribe\n */\n const subscribe = new Subscribe();\n subscribe.init();\n\n const animLogo = new AnimLogo();\n animLogo.init();\n\n request('/contributors', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n document.getElementById('contributors-block').innerHTML = response.html\n });\n});\n\nwindow.addEventListener('load', () => {\n document.documentElement.classList.add('is-app-ready');\n});\n","import './button.css';\n","import './footer.css';\nimport './footer-subscribe.css';\n","import './logo.css';\n","function parseJSON(response) {\n return new Promise((resolve) => response.json()\n .then((json) => resolve({\n status: response.status,\n ok: response.ok,\n json,\n })));\n}\n\nexport default function request(url, options) {\n return new Promise((resolve, reject) => {\n fetch(url, options)\n .then(parseJSON)\n .then((response) => {\n if (response.ok) {\n return resolve(response.json);\n }\n return reject(response.json);\n })\n .catch((error) => reject(new Error(error.message)));\n });\n}\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes, lazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\tcfg: lazySizesCfg,\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n"],"sourceRoot":""}