{"version":3,"file":"init.a5360f57e1da3a042527.js","mappings":"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","sources":["webpack://wp/./modules/client/delegate.js","webpack://wp/./modules/client/init/acceptGdpr.js","webpack://wp/./modules/client/init/fontTest.js","webpack://wp/./modules/client/init/initLocalStorage.js","webpack://wp/./modules/client/init/initTheme.js","webpack://wp/./modules/client/init/light2dark.js","webpack://wp/./modules/client/init/modal.js","webpack://wp/./modules/client/init/showTopNotification.js","webpack://wp/./modules/client/init/sponsorBar.js","webpack://wp/./modules/client/init/unready.js","webpack://wp/./modules/client/videoPlayerModal/index.js","webpack://wp/./modules/client/videoPlayerModal/videoPlayerModal.js","webpack://wp/webpack/bootstrap","webpack://wp/./modules/client/init/index.js"],"sourcesContent":["\nfunction findDelegateTarget(event, selector) {\n let currentNode = event.target;\n while (currentNode) {\n if (currentNode.matches(selector)) {\n return currentNode;\n }\n\n if (currentNode == event.currentTarget) {\n break;\n }\n currentNode = currentNode.parentElement;\n }\n return null;\n}\n\n// delegate(table, 'th', click, handler)\n// table\n// thead\n// th ^*\n// code <--\nfunction delegate(topElement, selector, eventName, handler, context) {\n /* jshint -W040 */\n topElement.addEventListener(eventName, function(event) {\n let found = findDelegateTarget(event, selector);\n\n // .currentTarget is read only, I can not overwrite it to the \"found\" element\n // Object.create wrapper would break event.preventDefault()\n // so, keep in mind:\n // --> event.currentTarget is always the top-level (delegating) element!\n // use \"this\" to get the found target\n\n event.delegateTarget = found; // use instead of \"this\" in object methods\n\n if (found) {\n // if in context of object, use object as this,\n handler.call(context || this, event);\n }\n });\n}\n\ndelegate.delegateMixin = function(obj) {\n obj.delegate = function(selector, eventName, handler) {\n delegate(this.elem, selector, eventName, handler, this);\n };\n};\n\nmodule.exports = delegate;\n\n","let Modal = require('./modal');\n\n// only use this gdpr stuff for en as of now\nmodule.exports = function(callback) {\n\n function callbackOnce(res) {\n if (callbackOnce.triggered) {\n return;\n }\n callbackOnce.triggered = true;\n callback(res);\n }\n\n if (localStorage.gdprAccepted) {\n return callbackOnce(true);\n }\n\n let modal = new Modal();\n\n modal.setContent(`
\n

${__('site.gdpr_dialog.title')}

\n
\n

${__('site.gdpr_dialog.text')}

\n \n \n \n \n
\n
\n `);\n\n\n function accept() {\n localStorage.gdprAccepted = 1;\n modal.remove();\n callbackOnce(true);\n }\n\n function cancel() {\n modal.remove();\n callbackOnce(false);\n }\n\n\n modal.elem.querySelector('form').addEventListener('submit', event => {\n event.preventDefault();\n accept();\n });\n\n\n modal.elem.querySelector('form').elements.cancel.addEventListener('click', event => {\n event.preventDefault();\n cancel();\n });\n\n modal.elem.addEventListener('modal-remove', function () {\n // unless user did not accept this, false is triggered\n setTimeout(() => callbackOnce(false), 10);\n });\n\n};\n","\n// ========== FONT TEST ====================\n/*\nИзбегаем FOUT - простой способ проверки загрузки иконик шрифта.\n 1) Делаем в iconic шрифте один символ с кодом 21 (вместо «!»)\n В iconmoon\n http://ilyakantor.ru/screen/2014-09-06_0152.png\n http://ilyakantor.ru/screen/2014-09-06_0153.png\n\n Этот шрифт в обычном шрифте (serif) узкий по ширине, а в iconic - нормальный.\n 2) Далее при загрузке создаём ! и даём ему fontFamily сначала serif и замеряем ширину, а потом FontIcons, serif.\n Отлавливаем момент, когда ширина изменится. Это значит шрифт загружен.\n Можно убрать класс .no-icons и показать иконки.\n */\nmodule.exports = function fontTest() {\n let elem = document.createElement('span');\n document.body.appendChild(elem);\n elem.className = 'font-test';\n elem.style.fontFamily = 'serif';\n let initialWidth = elem.offsetWidth;\n\n elem.style.fontFamily = '';\n\n function checkFontLoaded() {\n if (initialWidth != elem.offsetWidth) {\n document.body.classList.remove('no-icons');\n } else {\n setTimeout(checkFontLoaded, 100);\n }\n }\n\n checkFontLoaded();\n};\n","\ntry {\n window.localStorage._test = 1;\n delete window.localStorage._test;\n} catch (e) {\n // localStorage disabled or forbidden\n try {\n window.localStorage = {};\n // so that operations on it won't fail\n } catch (e) {\n /* can happen TypeError: Attempted to assign to readonly property. */\n }\n}\n","// Also see layout.js\nconst light2dark = require('./light2dark');\n\nconst dark2light = Object.fromEntries(\n Object.entries(light2dark).map(([ key, val ]) => [ val, key ])\n);\n\nconst prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\nfunction initTheme() {\n\n document.documentElement.dataset.theme = localStorage.getItem('theme') ||\n (prefersDarkScheme ? 'dark' : 'light');\n\n if (document.documentElement.dataset.theme == 'dark') {\n // hide themed images until they're processed by onload handler\n document.head.insertAdjacentHTML('afterBegin', '');\n }\n\n document.addEventListener('load', ({target}) => {\n if (target.tagName != 'OBJECT' || target.type != 'image/svg+xml') return;\n if (!target.hasAttribute('data-use-theme')) return;\n\n if (document.documentElement.dataset.theme == 'dark') {\n themeSvg(target, 'light', 'dark');\n }\n }, true);\n\n}\n\nif (document.documentElement.dataset.themeEnabled) {\n initTheme();\n}\n\nfunction themeSvg(object, oldTheme, newTheme) {\n // console.log(object.data, oldTheme, newTheme);\n let colorMapping = newTheme == 'dark' ? light2dark : dark2light;\n\n let svgDocument = object.getSVGDocument();\n\n if (!svgDocument) {\n // object is not loaded yet\n // happens if it's inside a collapsed
,\n // skip for now\n // will be loaded later (and themed on onload)\n return;\n }\n\n let replaceAttrs = ['fill', 'stroke', 'stop-color' /* for gradient */];\n\n for(let attr of replaceAttrs) {\n for(let elem of svgDocument.querySelectorAll(`[${attr}]`)) {\n let oldColor = normalizeColor(elem.getAttribute(attr));\n if (oldColor == 'none') continue;\n let newColor = colorMapping[oldColor];\n if (newColor) {\n elem.setAttribute(attr, newColor);\n } else {\n console.error(`No theme color mapping for attr ${attr}, value ${elem.getAttribute(attr)}`);\n }\n }\n }\n\n for(let elem of svgDocument.querySelectorAll('[style]')) {\n for(let attr of replaceAttrs) {\n if (elem.style[attr]) {\n let oldColor = normalizeColor(elem.style[attr]);\n if (oldColor == 'none') continue;\n let newColor = colorMapping[oldColor];\n if (newColor) {\n elem.style[attr] = colorMapping[newColor];\n } else {\n console.error(`No theme color mapping for attr ${attr}, value ${elem.style[attr]}`);\n }\n\n }\n }\n }\n\n object.style.visibility = 'visible';\n}\n\nfunction normalizeColor(color) {\n if (color[0] == '#' && color.length == 4) {\n let letters = color.slice(1).split('');\n color = '#' + letters[0] + letters[0] +letters[1] +letters[1] + letters[2] + letters[2];\n }\n return color.toLowerCase();\n}\n\nwindow.themeSvg = themeSvg;","module.exports = {\n \"#c9dcea\": \"#293c40\", // blue-12\n \"#1c85b5\": \"#6bafbc\", // blue-30\n \"#166388\": \"#7fd3e4\", // blue-46\n \"#eef6f1\": \"#1b2b22\", // green-10\n \"#91c2a3\": \"#315841\", // green-16\n \"#478964\": \"#498e67\", // green-30\n \"#37664b\": \"#74b28d\", // green-46\n \"#f6f3f1\": \"#272727\", // grey-10\n \"#181717\": \"#ffffff\", // grey-120\n \"#d1cfcd\": \"#3f3f3e\", // grey-13\n \"#7e7c7b\": \"#82807f\", // grey-30\n \"#5e5c5c\": \"#a6a4a3\", // grey-46\n \"#767d89\": \"#7a818d\", // grime-30\n \"#c06334\": \"#7a7f9c\", // orange-30\n \"#fef1f0\": \"#441b1b\", // red-10\n \"#efa39f\": \"#8f2e32\", // red-16\n \"#d35155\": \"#d55759\", // red-30\n \"#a7333a\": \"#e88b88\", // red-46\n \"#ffffff\": \"#232529\", // white\n \"#fbf2ec\": \"#252732\", // yellow-10\n \"#dbaf88\": \"#4b4e65\", // yellow-16\n \"#af6e24\": \"#7a7f9c\", // yellow-30\n \"#643b0c\": \"#c4c6d4\", // yellow-66\n // sometimes there's extra #000 in SVGS, no idea where it comes from\n // e.g. \n // not sure this mapping matters, leaving it to avoid errors\n // #fffffe is same as #fff, just different to backmapping\n \"#000000\": \"#fffffe\"\n};","\nmodule.exports = class Modal {\n constructor(options = {}) {\n this.options = options;\n this.render();\n this.setHasClose(options.hasClose === undefined ? true : options.hasClose);\n\n this.onClick = this.onClick.bind(this);\n this.onDocumentKeyDown = this.onDocumentKeyDown.bind(this);\n\n this.elem.addEventListener('click', this.onClick);\n\n document.addEventListener(\"keydown\", this.onDocumentKeyDown);\n }\n\n setHasClose(newHasClose) {\n this._hasClose = newHasClose;\n if (this._hasClose) {\n this.elem.classList.add('modal__has-close');\n } else {\n this.elem.classList.remove('modal__has-close');\n }\n }\n\n render() {\n document.body.insertAdjacentHTML('beforeEnd',\n '
'\n );\n document.body.classList.add('paranja-open');\n this.elem = document.body.lastChild;\n this.contentElem = this.elem.querySelector('.modal__content');\n }\n\n onClick(event) {\n if (event.target.classList.contains('modal__close')) {\n this.remove();\n event.preventDefault();\n }\n }\n\n\n onDocumentKeyDown(event) {\n if (event.keyCode === 27) {\n event.preventDefault();\n this.remove();\n }\n }\n\n showOverlay() {\n this.contentElem.classList.add('modal-overlay_light');\n }\n\n hideOverlay() {\n this.contentElem.classList.remove('modal-overlay_light');\n }\n\n setContent(htmlOrNode) {\n if (typeof htmlOrNode === 'string') {\n this.contentElem.innerHTML = htmlOrNode;\n } else {\n this.contentElem.innerHTML = '';\n this.contentElem.appendChild(htmlOrNode);\n }\n // use data-modal-autofocus where only modal should autofocus,\n // a field with data-modal-autofocus will not get focus, unless shown in modal\n let autofocus = this.contentElem.querySelector('[data-modal-autofocus],[autofocus]');\n if (autofocus) autofocus.focus();\n }\n\n remove() {\n document.body.classList.remove('paranja-open');\n document.body.removeChild(this.elem);\n document.removeEventListener(\"keydown\", this.onDocumentKeyDown);\n this.elem.dispatchEvent(new CustomEvent(\"modal-remove\"));\n }\n};\n","module.exports = function () {\n let notification = document.querySelector('.notification_top');\n\n let id = notification.id;\n\n if (!id) {\n throw new Error('Top notification must have an id');\n }\n\n let topNotificationsHidden;\n try {\n topNotificationsHidden = JSON.parse(localStorage.topNotificationsHidden);\n } catch(e) {\n topNotificationsHidden = [];\n }\n\n // topNotificationHidden has the id of the hidden notification (current or previous one)\n if (topNotificationsHidden.includes(id)) {\n return;\n }\n\n notification.querySelector('button').onclick = () => {\n topNotificationsHidden.push(id);\n localStorage.topNotificationsHidden = JSON.stringify(topNotificationsHidden);\n\n notification.style.display = 'none';\n window.dispatchEvent(new CustomEvent('resize-internal'));\n };\n\n notification.style.display = '';\n};\n","\n\nwindow.initSponsorBar = function() {\n let sponsorBar = document.getElementById('sponsorBar');\n\n if (!document.querySelector('.page').classList.contains('page_sidebar_on')) {\n return; // sidebar hidden\n }\n\n if (document.domain.includes('local') || document.domain.match(/^[0-9.]+$/)) {\n return; // localhost || 0.0.0.0\n }\n\n let display = true;\n let node = sponsorBar;\n while(node = node.parentElement) {\n if (getComputedStyle(node).display == 'none') {\n display = false;\n break;\n }\n }\n // false if not displayed (mobile?)\n if (display == false) {\n return;\n }\n\n // show ad\n let sponsorBarTitle = document.getElementById('sponsorBarTitle');\n let sponsorBarContent = document.getElementById('sponsorBarContent');\n\n let script = document.createElement('script');\n script.src = \"https://cdn.carbonads.com/carbon.js?serve=CE7D42QJ&placement=javascriptinfo\";\n script.id = '_carbonads_js';\n\n sponsorBarContent.append(script);\n\n let observer = new MutationObserver(mutationRecords => {\n for(let record of mutationRecords) {\n if (record.type !== 'childList') {\n return;\n }\n let children = [...sponsorBarContent.children].filter(child => child.tagName != 'SCRIPT');\n if (children.length && children[0].children.length) {\n // skip