{"version":3,"file":"frontpage.b9e3ceacb371e9a911da.js","mappings":"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","sources":["webpack://wp/./locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/koa/error/locales/network/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/newsletter/locales/client/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/client/config.js","webpack://wp/./modules/client/delegate.js","webpack://wp/./modules/client/getCsrfCookie.js","webpack://wp/./modules/client/notification/index.js","webpack://wp/./modules/client/recaptcha/index.js","webpack://wp/./modules/client/recaptcha/initForms.js","webpack://wp/./modules/client/recaptcha/loadScript.js","webpack://wp/./modules/client/recaptcha/recaptcha.js","webpack://wp/./modules/client/spinner.js","webpack://wp/./modules/client/xhr.js","webpack://wp/./modules/engine/i18n/t.js","webpack://wp/./modules/engine/text-utils/pluralize.js","webpack://wp/./modules/newsletter/client/index.js","webpack://wp/./modules/newsletter/client/multiSelect.js","webpack://wp/./node_modules/babelfish/index.js","webpack://wp/./node_modules/babelfish/lib/parser.js","webpack://wp/./node_modules/plurals-cldr/index.js","webpack://wp/./locales/fr.yml","webpack://wp/./modules/engine/koa/error/locales/network/fr.yml","webpack://wp/./modules/newsletter/locales/client/fr.yml","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/./modules/frontpage/client/index.js"],"sourcesContent":["var map = {\n\t\"./fr.yml\": 334\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 205;","var map = {\n\t\"./fr.yml\": 371\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 188;","var map = {\n\t\"./fr.yml\": 704\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 51;","module.exports = {\n lang: LANG,\n localCurrency: localCurrency,\n shopCurrency: shopCurrency,\n env: NODE_ENV,\n rateShopTo: rateShopTo,\n countryCode: countryCode,\n ordersMail: ordersMail,\n providers: providers,\n stripeKey: stripeKey,\n paypalClientId: paypalClientId,\n lookatCodeUrlBase: lookatCodeUrlBase\n};\n","\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","module.exports = function() {\n let csrfCookie = document.cookie.match(/XSRF-TOKEN=([\\w-]+)/);\n return csrfCookie ? csrfCookie[1] : null;\n};\n\n","/**\n * For new notification types extend Notification\n */\n\nlet delegate = require('client/delegate');\n\n/**\n * Calculates translateY positions when notifications are added/removed\n */\nclass NotificationManager {\n\n constructor(options = {}) {\n this.notifications = [];\n this.verticalSpace = options.verticalSpace || 8;\n }\n\n register(notification) {\n this.notifications.unshift(notification);\n setTimeout(() => this.recalculate(), 20);\n }\n\n unregister(notification) {\n let idx = this.notifications.indexOf(notification);\n this.notifications.splice(idx, 1);\n this.recalculate();\n }\n\n recalculate() {\n let top = this.verticalSpace;\n this.notifications.forEach(notification => {\n notification.top = top;\n top += notification.height + this.verticalSpace;\n });\n }\n\n}\n\n// if this module is included into different webpack builds,\n// ensure they share the same manager object\nexport function init(options) {\n if (!window.notificationManager) {\n window.notificationManager = new NotificationManager(options);\n }\n}\n\n\nclass Notification {\n\n constructor(html, type, timeout) {\n let elemHtml = `
\n
${html}
\n
`;\n\n document.body.insertAdjacentHTML(\"beforeEnd\", elemHtml);\n\n this.elem = document.body.lastElementChild;\n\n switch(timeout) {\n case undefined:\n this.timeout = this.TIMEOUT_DEFAULT;\n break;\n case 'slow':\n this.timeout = this.TIMEOUT_SLOW;\n break;\n case 'fast':\n this.timeout = this.TIMEOUT_FAST;\n break;\n default:\n this.timeout = timeout;\n }\n\n\n window.notificationManager.register(this);\n this.setupCloseHandler();\n this.setupCloseTimeout();\n }\n\n get TIMEOUT_DEFAULT() {\n return 3000;\n }\n\n get TIMEOUT_SLOW() {\n return 5000;\n }\n\n get TIMEOUT_FAST() {\n return 1500;\n }\n\n\n close() {\n if (!this.elem.parentNode) return; // already closed (by user click?)\n this.elem.remove();\n window.notificationManager.unregister(this);\n }\n\n setupCloseHandler() {\n this.delegate('.notification__close', 'click', () => this.close());\n }\n\n setupCloseTimeout() {\n if (this.timeout) {\n setTimeout(() => this.close(), this.timeout);\n }\n }\n\n get height() {\n return this.elem.offsetHeight;\n }\n\n set top(value) {\n this.elem.style.transform = 'translateY(' + value + 'px)';\n }\n\n}\n\ndelegate.delegateMixin(Notification.prototype);\n\n\nexport class Info extends Notification {\n\n constructor(html, timeout) {\n super(html, 'info', timeout);\n }\n\n}\n\nexport class Warning extends Notification {\n\n constructor(html, timeout) {\n super(html, 'warning', timeout);\n }\n}\n\nexport class Success extends Notification {\n\n constructor(html, timeout) {\n super(html, 'success', timeout);\n }\n\n}\n\nexport class Error extends Notification {\n\n constructor(html, timeout) {\n super(html, 'error', timeout);\n }\n\n\n get TIMEOUT_DEFAULT() {\n return 5000;\n }\n\n\n}\n\n/*\nexport class Test extends Notification {\n\n constructor(html) {\n super(html, 'error');\n }\n\n\n get TIMEOUT_DEFAULT() {\n return null;\n }\n\n\n}\n\nexports.Test = Test;\n*/\n","// @see https://stackoverflow.com/questions/48224799/test-invisible-recaptcha hot to test captcha\n\nasync function init() {\n if (!window.RECAPTCHA_ID) return;\n\n if (init.promise) return init.promise;\n\n init.promise = new Promise((resolve, reject) => {\n window.recaptchaCallback = resolve;\n let script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit`;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n\n return init.promise;\n}\n\nexports.Recaptcha = require('./recaptcha');\n\nexports.initForms = require('./initForms');","let loadScript = require('./loadScript');\nlet Recaptcha = require('./recaptcha');\n\nmodule.exports = async function() {\n let submitButtons = document.querySelectorAll('[data-recaptcha-submit]');\n if (!submitButtons.length) return;\n\n for(let button of submitButtons) {\n button.disabled = true;\n }\n\n await loadScript();\n\n for(let button of submitButtons) {\n let form = button.form;\n \n let recaptcha = new Recaptcha(form);\n \n form.onsubmit = async (event) => {\n event.preventDefault();\n await recaptcha.validateForm(form);\n \n if (form.checkValidity()) {\n form.submit();\n } else {\n form.reportValidity();\n }\n }\n\n button.disabled = false;\n }\n\n}","let promise;\n\nmodule.exports = async function loadScript() {\n if (!window.RECAPTCHA_ID) return;\n\n if (promise) return promise;\n\n promise = new Promise((resolve, reject) => {\n window.recaptchaCallback = resolve;\n let script = document.createElement('script');\n script.src = `https://www.google.com/recaptcha/api.js?onload=recaptchaCallback&render=explicit`;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n\n return promise;\n}\n\n","let loadScript = require('./loadScript');\n\nmodule.exports = class Recaptcha {\n constructor(elem) {\n this.elem = elem;\n\n this.renderPromise = new Promise((resolve, reject) => {\n this.renderPromiseResolve = resolve;\n this.renderPromiseReject = reject;\n });\n\n this.render();\n }\n\n async render() {\n if (!window.RECAPTCHA_ID) return;\n\n // console.log('RENDER');\n \n if (this.widgetId !== undefined) return; // already rendered\n\n await loadScript();\n\n let container = document.createElement('div');\n this.elem.append(container);\n this.widgetId = grecaptcha.render(container, {\n sitekey: window.RECAPTCHA_ID,\n size: 'invisible',\n callback: this.renderPromiseResolve,\n });\n\n // console.log('RENDERED', this.widgetId);\n }\n\n async execute() {\n if (!window.RECAPTCHA_ID) return '';\n await this.render();\n\n let token = grecaptcha.getResponse(this.widgetId);\n\n // console.log(\"TOKEN\", token);\n if (token) {\n // already resolved\n return token;\n }\n\n // prevent body scroll while modal captcha is open\n // document.body.classList.add('overflow-hidden');\n // this.renderPromise.then(() => document.body.classList.remove('overflow-hidden'));\n\n grecaptcha.execute(this.widgetId);\n\n // console.log('EXECUTED', this.widgetId);\n return this.renderPromise;\n }\n\n async validateForm(form) {\n if (!window.RECAPTCHA_ID) return;\n\n let token = await this.execute();\n\n // console.log(\"VALIDATE TOKEN\", token);\n let input = form.elements['g-recaptcha-response'];\n if (!input) {\n input = document.createElement('input');\n input.name = 'g-recaptcha-response';\n input.type = 'hidden';\n form.append(input);\n }\n\n input.value = token;\n }\n};\n","// Usage:\n// 1) new Spinner({ elem: elem}) -> start/stop()\n// 2) new Spinner() -> somewhere.append(spinner.elem) -> start/stop\nfunction Spinner(options) {\n options = options || {};\n this.elem = options.elem;\n\n this.size = options.size || 'medium';\n // any class to add to spinner (make spinner special here)\n this.class = options.class ? (' ' + options.class) : '';\n\n // any class to add to element (to hide it's content for instance)\n this.elemClass = options.elemClass;\n\n if (this.size != 'medium' && this.size != 'small' && this.size != 'large') {\n throw new Error(\"Unsupported size: \" + this.size);\n }\n\n if (!this.elem) {\n this.elem = document.createElement('div');\n }\n}\n\nSpinner.prototype.start = function() {\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n\n this.elem.insertAdjacentHTML('beforeend', '');\n};\n\nSpinner.prototype.stop = function() {\n let spinnerElem = this.elem.querySelector('.spinner');\n if (!spinnerElem) return; // already stopped or never started\n\n spinnerElem.remove();\n\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n};\n\nwindow.Spinner = Spinner;\n\nmodule.exports = Spinner;\n","let notification = require('client/notification');\nlet getCsrfCookie = require('client/getCsrfCookie');\n\nconst LANG = require('config').lang;\nconst t = require('engine/i18n/t');\n\nt.i18n.add('', require('../../locales/' + LANG + '.yml'));\nt.i18n.add('error.network', require('engine/koa/error/locales/network/' + LANG + '.yml'));\n\n// Wrapper about XHR\n// # Global Events\n// triggers document.loadstart/loadend on communication start/end\n// --> unless options.noGlobalEvents is set\n//\n// # Events\n// triggers fail/success on load end:\n// --> by default status=200 is ok, the others are failures\n// --> options.normalStatuses = [201,409] allow given statuses\n// --> fail event has .reason field\n// --> success event has .result field\n//\n// # JSON\n// --> send(object) calls JSON.stringify\n// --> adds Accept: json (we want json) by default, unless options.raw\n// if options.json or server returned json content type\n// --> autoparse json\n// --> fail if error\n//\n// # CSRF\n// --> requests sends header X-XSRF-TOKEN from cookie\n\nfunction xhr(options) {\n\n let request = new XMLHttpRequest();\n let method = options.method || 'GET';\n\n let body = options.body;\n let url = options.url;\n\n request.open(method, url, options.sync ? false : true);\n\n request.method = method;\n\n // token/header names same as angular $http for easier interop\n let csrfCookie = getCsrfCookie();\n if (csrfCookie && !options.skipCsrf) {\n request.setRequestHeader(\"X-XSRF-TOKEN\", csrfCookie);\n }\n\n if (options.responseType) request.responseType = options.responseType;\n\n if ({}.toString.call(body) == '[object Object]') {\n // must be OPENed to setRequestHeader\n request.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n body = JSON.stringify(body);\n }\n\n if (!options.noDocumentEvents) {\n request.addEventListener('loadstart', event => {\n request.timeStart = Date.now();\n let e = wrapEvent('xhrstart', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('loadend', event => {\n let e = wrapEvent('xhrend', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('success', event => {\n let e = wrapEvent('xhrsuccess', event);\n e.result = event.result;\n document.dispatchEvent(e);\n });\n request.addEventListener('fail', event => {\n let e = wrapEvent('xhrfail', event);\n e.reason = event.reason;\n document.dispatchEvent(e);\n });\n }\n\n if (!options.raw) { // means we want json\n request.setRequestHeader(\"Accept\", \"application/json\");\n }\n\n request.setRequestHeader('X-Requested-With', \"XMLHttpRequest\");\n\n let normalStatuses = options.normalStatuses || [200];\n\n function wrapEvent(name, e) {\n let event = new CustomEvent(name);\n event.originalEvent = e;\n return event;\n }\n\n function fail(reason, originalEvent) {\n let e = wrapEvent(\"fail\", originalEvent);\n e.reason = reason;\n request.dispatchEvent(e);\n }\n\n function success(result, originalEvent) {\n let e = wrapEvent(\"success\", originalEvent);\n e.result = result;\n request.dispatchEvent(e);\n }\n\n request.addEventListener(\"error\", e => {\n fail(t('error.network.server_connection_error'), e);\n });\n\n request.addEventListener(\"timeout\", e => {\n fail(t('error.network.server_request_timeout'), e);\n });\n\n request.addEventListener(\"abort\", e => {\n fail(t('error.network.request_aborted'), e);\n });\n\n request.addEventListener(\"load\", e => {\n if (!request.status) { // does that ever happen?\n fail(t('error.network.no_response'), e);\n return;\n }\n\n let result = !options.responseType || options.responseType === 'text' ? request.responseText : request.response;\n let contentType = request.getResponseHeader(\"Content-Type\") || '';\n if (contentType.match(/^application\\/json/) || options.json) { // autoparse json if WANT or RECEIVED json\n try {\n result = JSON.parse(result);\n } catch (e) {\n fail(t('error.network.invalid_format'), e);\n return;\n }\n }\n\n if (!normalStatuses.includes(request.status)) {\n\n // if we have a JSON response with {info:..} field, show info as error details\n let errorMessage = result.info ?\n t('error.network.server_error_info', {status: request.status, info: result.info}) : t('error.network.server_error', {status: request.status});\n\n fail(errorMessage, e);\n return;\n }\n\n success(result, e);\n });\n\n // defer to let other handlers be assigned\n setTimeout(function() {\n request.send(body);\n });\n\n return request;\n\n}\n\n\ndocument.addEventListener('xhrfail', function(event) {\n new notification.Error(event.reason);\n});\n\n\nmodule.exports = xhr;\n","'use strict';\n\nconst BabelFish = require('babelfish');\n\nconst i18n = new BabelFish('en');\n\nlet err = console.error;\n\nif (typeof IS_CLIENT === 'undefined') {\n const log = require('engine/log')();\n err = (...args) => log.error(...args);\n}\n\nfunction t(phrase) {\n\n if (!i18n.hasPhrase(LANG, phrase)) {\n err(\"No such phrase\", phrase);\n }\n\n return i18n.t(LANG, ...arguments);\n}\n\nmodule.exports = t;\n\nconst LANG = require('config').lang;\n\nif (LANG !== 'en') {\n i18n.setFallback(LANG, 'en');\n}\n\ni18n.add = (...args) => {\n args = args.map(arg => arg.__esModule ? arg.default : arg);\n return i18n.addPhrase(LANG, ...args);\n};\n\nt.i18n = i18n;\n","function getPluralType(n) {\n if ((n % 10) == 1 && (n % 100) != 11) {\n return 'one';\n }\n if ((n % 10) >= 2 && (n % 10) <= 4 && ((n % 100) < 12 || (n % 100) > 14) && n == Math.floor(n)) {\n return 'few';\n }\n if ((n % 10) === 0 || ((n % 10) >= 5 && (n % 10) <= 9) || ((n % 100) >= 11 && (n % 100) <= 14) && n == Math.floor(n)) {\n return 'many';\n }\n return 'other';\n}\n\n// pluralize(10, 'груша', 'груши', 'груш')\nfunction pluralize(count, string) {\n var type = getPluralType(count);\n var values = string.split(',');\n\n switch (type) {\n case 'one':\n return values[0];\n case 'few':\n return values[1];\n case 'many':\n return values[2];\n default:\n throw new Error(\"Unsupported count: \" + count);\n }\n\n}\n\nmodule.exports = pluralize;\n","const Spinner = require('client/spinner');\nconst xhr = require('client/xhr');\nconst notification = require('client/notification');\nconst MultiSelect = require('./multiSelect');\nconst { Recaptcha } = require('client/recaptcha');\nconst t = require('engine/i18n/t');\n\nconst LANG = require('config').lang;\n\nt.i18n.add('newsletter.client', require('../locales/client/' + LANG + '.yml'));\n\nfunction submitSubscribeForm(form, onSuccess) {\n\n if (!form.elements.email.value) {\n return;\n }\n\n const slugElem = form.elements.slug;\n let slugs = [...slugElem.querySelectorAll('option:checked')].map(option => option.value);\n if (!slugs.length) slugs = slugElem.value;\n\n let userLogged;\n if (form.elements['subscribe-email']) userLogged = true;\n\n if (!userLogged && !slugs.length) {\n new notification.Error(t(\"newsletter.client.choose_newsletter\"));\n return;\n }\n\n\n const body = {\n email: form.elements.email.value,\n slug: slugs\n // no remove/replace => action is \"add\"\n };\n\n if (form.elements['g-recaptcha-response']) {\n body['g-recaptcha-response'] = form.elements['g-recaptcha-response'].value;\n }\n\n // if the user is logged in we let him manage his subscriptions, not only add\n\n if (userLogged) body.replace = true;\n\n const request = xhr({\n method: 'POST',\n url: form.action,\n body: body\n });\n\n const submitButton = form.querySelector('[type=\"submit\"]');\n\n const spinner = new Spinner({\n elem: submitButton,\n size: 'small',\n elemClass: 'button_loading'\n });\n spinner.start();\n submitButton.disabled = true;\n\n request.addEventListener('loadend', ()=> {\n spinner.stop();\n submitButton.disabled = false;\n });\n\n request.addEventListener('success', function(event) {\n if (this.status == 200) {\n new notification.Success(event.result.message, 'slow');\n\n let gaEvent = form.elements.gaEvent && JSON.parse(form.elements.gaEvent.value);\n\n if (gaEvent) {\n // GA4\n // window.ga('send', 'event', gaEvent);\n }\n\n onSuccess && onSuccess();\n } else {\n\n new notification.Error(event.result.message);\n }\n });\n\n}\n\n\nfunction initNewsletterForm() {\n let forms = document.querySelectorAll('[data-newsletter-subscribe-form]');\n\n for(let form of forms) {\n const isLogged = form.elements.email.type === 'hidden';\n const select = form.querySelector('.multiselect');\n\n if (select) {\n const multiSelect = new MultiSelect({ elem: select});\n const formButton = form.querySelector('button[type=\"submit\"]');\n const formButtonTextEl = formButton.querySelector('span');\n\n if (form.elements.slug) form.elements.slug.addEventListener('change', () => {\n formButton.disabled = !multiSelect.getValues().length && !isLogged;\n if (!multiSelect.getValues().length && isLogged) {\n formButtonTextEl.textContent = t('site.subscribe.button_unsubscribe');\n } else {\n formButtonTextEl.textContent = t('site.subscribe.button');\n }\n });\n }\n\n let recaptcha = new Recaptcha(form);\n\n form.onsubmit = async function(event) {\n event.preventDefault();\n\n await recaptcha.validateForm(form);\n\n submitSubscribeForm(form);\n };\n }\n}\n\nexports.initNewsletterForm = initNewsletterForm;\nexports.submitSubscribeForm = submitSubscribeForm;\n","const t = require('engine/i18n/t');\nconst pluralize = require('engine/text-utils/pluralize');\n\nclass multiSelect {\n constructor(options) {\n this.elem = options.elem;\n this.select = this.elem.querySelector('select');\n this.textContainer = this.elem.querySelector('.multiselect__active-button');\n this.options = [...this.select.querySelectorAll('option')];\n this.defaultValue = this.textContainer.textContent;\n this.status = 'closed';\n this.elem.querySelector('.multiselect__container').insertAdjacentHTML('beforeend', this.createDropdown());\n this.setButtonTitle();\n this.bindHandlers();\n }\n\n createDropdown() {\n return `\n
\n
\n ${ this.options.map(option => {\n return `
\n ${option.textContent + (option.value === 'advanced' ? `${t('site.subscribe.common_updates_text')}` : ``)}\n
`;\n }).join(``)\n }\n
\n
\n `;\n }\n\n bindHandlers() {\n this.textContainer.addEventListener('click', this.toggleDropdown.bind(this));\n for (let item of this.elem.querySelectorAll('.multiselect__item')) {\n item.addEventListener('click', this.onChange.bind(this));\n }\n this.select.addEventListener('change', this.setButtonTitle.bind(this));\n }\n\n toggleDropdown(e) {\n e.stopPropagation();\n this.elem.classList.toggle('multiselect_opened');\n this.toggleStatus();\n if (this.status === 'opened') {\n this.boundCloseDropdown = this.closeDropdown.bind(this);\n document.addEventListener('click', this.boundCloseDropdown);\n }\n }\n\n toggleStatus() {\n if (this.status === 'closed') this.status = 'opened';\n else this.status = 'closed';\n }\n\n closeDropdown(e) {\n if (e.target.closest('.multiselect__dropdown-container')) return;\n this.status = 'closed';\n this.elem.classList.remove('multiselect_opened');\n document.removeEventListener('click', this.boundCloseDropdown);\n }\n\n onChange(e) {\n const item = e.target.closest('.multiselect__item');\n item.classList.toggle('multiselect__item_checked');\n\n const targetOption = this.options.filter(option => option.value === item.getAttribute('data-value')).pop();\n targetOption.selected = item.classList.contains('multiselect__item_checked');\n\n this.select.dispatchEvent(new Event('change'));\n }\n\n setButtonTitle() {\n const values = this.getValues();\n\n if (values.length === 1 && values.includes('advanced')) {\n this.textContainer.textContent = this.defaultValue;\n } else if (values.length) {\n this.textContainer.textContent = values.length + ' ' + pluralize(values.length, t('site.subscribe.newsletters'));\n } else {\n this.textContainer.textContent = t('site.subscribe.no_selected');\n }\n }\n\n getValues() {\n return this.options.filter(option => option.selected).map(option => option.value);\n }\n}\n\nmodule.exports = multiSelect;\n","/**\n * class BabelFish\n *\n * Internalization and localization library that makes i18n and l10n fun again.\n *\n * ##### Example\n *\n * ```javascript\n * var BabelFish = require('babelfish'),\n * i18n = new BabelFish();\n * ```\n *\n * or\n *\n * ```javascript\n * var babelfish = require('babelfish'),\n * i18n = babelfish();\n * ```\n **/\n\n\n'use strict';\n\n\nvar parser = require('./lib/parser');\nvar plural = require('plurals-cldr');\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isNumber(obj) { return !isNaN(obj) && isFinite(obj); }\nfunction isBoolean(obj) { return obj === true || obj === false; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\n\n/*istanbul ignore next*/\nvar isArray = Array.isArray || function _isArray(obj) {\n return _class(obj) === '[object Array]';\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// The following two utilities (forEach and extend) are modified from Underscore\n//\n// http://underscorejs.org\n//\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\n//\n// Underscore may be freely distributed under the MIT license\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar nativeForEach = Array.prototype.forEach;\n\n\n// The cornerstone, an `each` implementation, aka `forEach`.\n// Handles objects with the built-in `forEach`, arrays, and raw objects.\n// Delegates to **ECMAScript 5**'s native `forEach` if available.\n/*istanbul ignore next*/\nfunction forEach(obj, iterator, context) {\n if (obj === null) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i += 1) {\n iterator.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n }\n}\n\n\nvar formatRegExp = /%[sdj%]/g;\n\n/*istanbul ignore next*/\nfunction format(f) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') { return '%'; }\n if (i >= len) { return x; }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n return JSON.stringify(args[i++]);\n default:\n return x;\n }\n });\n return str;\n}\n\n\n// helpers\n////////////////////////////////////////////////////////////////////////////////\n\n\n// Last resort locale, that exists for sure\nvar GENERIC_LOCALE = 'en';\n\n\n// flatten(obj) -> Object\n//\n// Flattens object into one-level dictionary.\n//\n// ##### Example\n//\n// var obj = {\n// abc: { def: 'foo' },\n// hij: 'bar'\n// };\n//\n// flatten(obj);\n// // -> { 'abc.def': 'foo', 'hij': 'bar' };\n//\nfunction flatten(obj) {\n var params = {};\n\n forEach(obj || {}, function (val, key) {\n if (val && typeof val === 'object') {\n forEach(flatten(val), function (sub_val, sub_key) {\n params[key + '.' + sub_key] = sub_val;\n });\n return;\n }\n\n params[key] = val;\n });\n\n return params;\n}\n\n\nvar keySeparator = '#@$';\n\nfunction makePhraseKey(locale, phrase) {\n return locale + keySeparator + phrase;\n}\n\n\nfunction searchPhraseKey(self, locale, phrase) {\n var key = makePhraseKey(locale, phrase);\n var storage = self._storage;\n\n // direct search first\n if (storage.hasOwnProperty(key)) { return key; }\n\n // don't try follbacks for default locale\n if (locale === self._defaultLocale) { return null; }\n\n // search via fallback map cache\n var fb_cache = self._fallbacks_cache;\n if (fb_cache.hasOwnProperty(key)) { return fb_cache[key]; }\n\n // scan fallbacks & cache result\n var fb = self._fallbacks[locale] || [ self._defaultLocale ];\n var fb_key;\n\n for (var i = 0, l = fb.length; i < l; i++) {\n fb_key = makePhraseKey(fb[i], phrase);\n if (storage.hasOwnProperty(fb_key)) {\n // found - update cache and return result\n fb_cache[key] = fb_key;\n return fb_cache[key];\n }\n }\n\n // mark fb_cache entry empty for fast lookup on next request\n fb_cache[key] = null;\n return null;\n}\n\n\nfunction pluralizer(lang, val, forms) {\n var idx = plural.indexOf(lang, val);\n\n if (idx === -1) {\n return format('[pluralizer for \"%s\" locale not found]', lang);\n }\n\n if (typeof forms[idx] === 'undefined') {\n return format(\n '[plural form %d (\"%s\") not found in translation]',\n idx, plural.forms(lang)[idx]\n );\n }\n\n return forms[idx];\n}\n\n// public api (module)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * new BabelFish([defaultLocale = 'en'])\n *\n * Initiates new instance of BabelFish.\n *\n * __Note!__ you can omit `new` for convenience, direct call will return\n * new instance too.\n **/\nfunction BabelFish(defaultLocale) {\n if (!(this instanceof BabelFish)) { return new BabelFish(defaultLocale); }\n\n this._defaultLocale = defaultLocale ? String(defaultLocale) : GENERIC_LOCALE;\n\n // hash of locale => [ fallback1, fallback2, ... ] pairs\n this._fallbacks = {};\n\n // fallback cache for each phrase\n //\n // {\n // locale_key: fallback_key\n // }\n //\n // fallback_key can be null if search failed\n //\n this._fallbacks_cache = {};\n\n // storage of compiled translations\n //\n // {\n // locale + @#$ + phrase_key: {\n // locale: locale name - can be different for fallbacks\n // translation: original translation phrase or data variable/object\n // raw: true/false - does translation contain plain data or\n // string to compile\n // compiled: copiled translation fn or plain string\n // }\n // ...\n // }\n //\n this._storage = {};\n\n // cache for complex plural parts (with params)\n //\n // {\n // language: new BabelFish(language)\n // }\n //\n this._plurals_cache = {};\n}\n\n\n// public api (instance)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * BabelFish#addPhrase(locale, phrase, translation [, flattenLevel]) -> BabelFish\n * - locale (String): Locale of translation\n * - phrase (String|Null): Phrase ID, e.g. `apps.forum`\n * - translation (String|Object|Array|Number|Boolean): Translation or an object\n * with nested phrases, or a pure object.\n * - flattenLevel (Number|Boolean): Optional, 0..infinity. `Infinity` by default.\n * Define \"flatten\" deepness for loaded object. You can also use\n * `true` as `0` or `false` as `Infinity`.\n *\n *\n * ##### Flatten & using JS objects\n *\n * By default all nested properties are normalized to strings like \"foo.bar.baz\",\n * and if value is string, it will be compiled with babelfish notation.\n * If deepness is above `flattenLevel` OR value is not object and not string,\n * it will be used \"as is\". Note, only JSON stringifiable data should be used.\n *\n * In short: you can safely pass `Array`, `Number` or `Boolean`. For objects you\n * should define flatten level or disable it compleetely, to work with pure data.\n *\n * Pure objects can be useful to prepare bulk data for external libraries, like\n * calendars, time/date generators and so on.\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} %{ответ|ответа|ответов}:count в теме');\n *\n * // equals to:\n * i18n.addPhrase('ru-RU',\n * 'apps.forums',\n * { replies_count: '#{count} %{ответ|ответа|ответов}:count в теме' });\n * ```\n **/\nBabelFish.prototype.addPhrase = function _addPhrase(locale, phrase, translation, flattenLevel) {\n var self = this, fl;\n\n // Calculate flatten level. Infinity by default\n if (isBoolean(flattenLevel)) {\n fl = flattenLevel ? Infinity : 0;\n } else if (isNumber(flattenLevel)) {\n fl = Math.floor(flattenLevel);\n if (fl < 0) {\n throw new TypeError('Invalid flatten level (should be >= 0).');\n }\n } else {\n fl = Infinity;\n }\n\n if (isObject(translation) && (fl > 0)) {\n // recursive object walk, until flattenLevel allows\n forEach(translation, function (val, key) {\n self.addPhrase(locale, (phrase ? phrase + '.' : '') + key, val, fl - 1);\n });\n return this;\n }\n\n if (isString(translation)) {\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: false\n };\n } else if (isArray(translation) ||\n isNumber(translation) ||\n isBoolean(translation) ||\n (fl === 0 && isObject(translation))) {\n // Pure objects are stored without compilation\n // Limit allowed types.\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: true\n };\n } else {\n // `Regex`, `Date`, `Uint8Array` and others types will\n // fuckup `stringify()`. Don't allow here.\n // `undefined` also means wrong param in real life.\n // `null` can be allowed when examples from real life available.\n throw new TypeError('Invalid translation - [String|Object|Array|Number|Boolean] expected.');\n }\n\n self._fallbacks_cache = {};\n\n return this;\n};\n\n\n/**\n * BabelFish#setFallback(locale, fallbacks) -> BabelFish\n * - locale (String): Target locale\n * - fallbacks (Array): List of fallback locales\n *\n * Set fallbacks for given locale.\n *\n * When `locale` has no translation for the phrase, `fallbacks[0]` will be\n * tried, if translation still not found, then `fallbacks[1]` will be tried\n * and so on. If none of fallbacks have translation,\n * default locale will be tried as last resort.\n *\n * ##### Errors\n *\n * - throws `Error`, when `locale` equals default locale\n *\n * ##### Example\n *\n * ```javascript\n * i18n.setFallback('ua-UK', ['ua', 'ru']);\n * ```\n **/\nBabelFish.prototype.setFallback = function _setFallback(locale, fallbacks) {\n var def = this._defaultLocale;\n\n if (def === locale) {\n throw new Error(\"Default locale can't have fallbacks\");\n }\n\n var fb = isArray(fallbacks) ? fallbacks.slice() : [ fallbacks ];\n if (fb[fb.length - 1] !== def) { fb.push(def); }\n\n this._fallbacks[locale] = fb;\n this._fallbacks_cache = {};\n\n return this;\n};\n\n\nvar CAN_HAVE_DIRECTIVES_RE = /#\\{|\\(\\(|\\\\\\\\/;\n\n// Compiles given string into function. Used to compile phrases,\n// which contains `plurals`, `variables`, etc.\nfunction compile(self, str, locale) {\n var nodes, buf, key, strict_exec, forms_exec, plurals_cache;\n\n // Quick check to avoid parse in most cases :)\n if (!CAN_HAVE_DIRECTIVES_RE.test(str)) { return str; }\n\n nodes = parser.parse(str);\n\n if (nodes.length === 1 && nodes[0].type === 'literal') {\n return nodes[0].text;\n }\n\n // init cache instance for plural parts, if not exists yet.\n if (!self._plurals_cache[locale]) {\n self._plurals_cache[locale] = new BabelFish(locale);\n }\n plurals_cache = self._plurals_cache[locale];\n\n buf = [];\n buf.push([ 'var str = \"\", strict, strict_exec, forms, forms_exec, plrl, cache, loc, loc_plzr, anchor;' ]);\n buf.push('params = flatten(params);');\n\n forEach(nodes, function (node) {\n if (node.type === 'literal') {\n buf.push(format('str += %j;', node.text));\n return;\n }\n\n if (node.type === 'variable') {\n key = node.anchor;\n buf.push(format(\n 'str += (\"undefined\" === typeof (params[%j])) ? \"[missed variable: %s]\" : params[%j];',\n key, key, key\n ));\n return;\n }\n\n // should never happen\n /*istanbul ignore next*/\n if (node.type !== 'plural') { throw new Error('Unknown node type'); }\n\n //\n // Compile plural\n //\n\n key = node.anchor;\n // check if plural parts are plain strings or executable,\n // and add executable to \"cache\" instance of babelfish\n // plural part text will be used as translation key\n strict_exec = {};\n forEach(node.strict, function (text, k) {\n var parsed = parser.parse(text);\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n strict_exec[k] = false;\n // patch with unescaped value for direct extract\n node.strict[k] = parsed[0].text;\n return;\n }\n\n strict_exec[k] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n\n forms_exec = {};\n forEach(node.forms, function (text, idx) {\n var parsed = parser.parse(text), unescaped;\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n // patch with unescaped value for direct extract\n unescaped = parsed[0].text;\n node.forms[idx] = unescaped;\n forms_exec[unescaped] = false;\n return;\n }\n\n forms_exec[text] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n /*eslint-disable space-in-parens*/\n buf.push(format('loc = %j;', locale));\n buf.push(format('loc_plzr = %j;', locale.split(/[-_]/)[0]));\n buf.push(format('anchor = params[%j];', key));\n buf.push(format('cache = this._plurals_cache[loc];'));\n buf.push(format('strict = %j;', node.strict));\n buf.push(format('strict_exec = %j;', strict_exec));\n buf.push(format('forms = %j;', node.forms));\n buf.push(format('forms_exec = %j;', forms_exec));\n buf.push( 'if (+(anchor) != anchor) {');\n buf.push(format(' str += \"[invalid plurals amount: %s(\" + anchor + \")]\";', key));\n buf.push( '} else {');\n buf.push( ' if (strict[anchor] !== undefined) {');\n buf.push( ' plrl = strict[anchor];');\n buf.push( ' str += strict_exec[anchor] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' } else {');\n buf.push( ' plrl = pluralizer(loc_plzr, +anchor, forms);');\n buf.push( ' str += forms_exec[plrl] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' }');\n buf.push( '}');\n return;\n });\n\n buf.push('return str;');\n\n /*eslint-disable no-new-func*/\n return new Function('params', 'flatten', 'pluralizer', buf.join('\\n'));\n}\n\n\n/**\n * BabelFish#translate(locale, phrase[, params]) -> String\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - params (Object|Number|String): Params for translation. `Number` & `String`\n * will be coerced to `{ count: X, value: X }`\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} ((ответ|ответа|ответов)) в теме');\n *\n * // ...\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 1 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 1});\n * // -> '1 ответ'\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 2 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 2);\n * // -> '2 ответa'\n * ```\n **/\nBabelFish.prototype.translate = function _translate(locale, phrase, params) {\n var key = searchPhraseKey(this, locale, phrase);\n var data;\n\n if (!key) {\n return locale + ': No translation for [' + phrase + ']';\n }\n\n data = this._storage[key];\n\n // simple string or other pure object\n if (data.raw) { return data.translation; }\n\n // compile data if not done yet\n if (!data.hasOwnProperty('compiled')) {\n // We should use locale from phrase, because of possible fallback,\n // to keep plural locales in sync.\n data.compiled = compile(this, data.translation, data.locale);\n }\n\n // return simple string immediately\n if (!isFunction(data.compiled)) {\n return data.compiled;\n }\n\n //\n // Generate \"complex\" phrase\n //\n\n // Sugar: coerce numbers & strings to { count: X, value: X }\n if (isNumber(params) || isString(params)) {\n params = { count: params, value: params };\n }\n\n return data.compiled.call(this, params, flatten, pluralizer);\n};\n\n\n/**\n * BabelFish#hasPhrase(locale, phrase) -> Boolean\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Returns whenever or not there's a translation of a `phrase`.\n **/\nBabelFish.prototype.hasPhrase = function _hasPhrase(locale, phrase, noFallback) {\n return noFallback ?\n this._storage.hasOwnProperty(makePhraseKey(locale, phrase))\n :\n searchPhraseKey(this, locale, phrase) ? true : false;\n};\n\n\n/**\n * BabelFish#getLocale(locale, phrase) -> String|null\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Similar to [[BabelFish#hasPhrase]], but returns real locale of requested\n * phrase, or `null` if nothing found. Can be useful for dynamic dependencies\n * init. For example, when you fetch i10n config as single object and create\n * phrases from it's content.\n **/\nBabelFish.prototype.getLocale = function _getLocale(locale, phrase, noFallback) {\n if (noFallback) {\n return this._storage.hasOwnProperty(makePhraseKey(locale, phrase)) ? locale : null;\n }\n\n var key = searchPhraseKey(this, locale, phrase);\n\n return key ? key.split(keySeparator, 2)[0] : null;\n};\n\n\n/** alias of: BabelFish#translate\n * BabelFish#t(locale, phrase[, params]) -> String\n **/\nBabelFish.prototype.t = BabelFish.prototype.translate;\n\n\n/**\n * BabelFish#stringify(locale) -> String\n * - locale (String): Locale of translation\n *\n * Returns serialized locale data, including fallbacks.\n * It can be loaded back via `load()` method.\n **/\nBabelFish.prototype.stringify = function _stringify(locale) {\n var self = this;\n\n // Collect unique keys\n var unique = {};\n\n forEach(this._storage, function (val, key) {\n unique[key.split(keySeparator)[1]] = true;\n });\n\n // Collect phrases (with fallbacks)\n var result = {};\n\n forEach(unique, function (val, key) {\n var k = searchPhraseKey(self, locale, key);\n // if key was just a garbage from another\n // and doesn't fit into fallback chain for current locale - skip it\n if (!k) { return; }\n // create namespace if not exists\n var l = self._storage[k].locale;\n if (!result[l]) { result[l] = {}; }\n result[l][key] = self._storage[k].translation;\n });\n\n var out = {\n fallback: {},\n locales: result\n };\n\n // Get fallback rule. Cut auto-added fallback to default locale\n var fallback = (self._fallbacks[locale] || []).slice(0, -1);\n if (fallback.length) {\n out.fallback[locale] = fallback;\n }\n\n return JSON.stringify(out);\n};\n\n\n/**\n * BabelFish#load(data) -> BabelFish\n * - data (Object|String): data from `stringify()` method, as object or string.\n *\n * Batch load phrases data, prepared with `stringify()` method.\n * Useful at browser side.\n **/\nBabelFish.prototype.load = function _load(data) {\n var self = this;\n\n if (isString(data)) { data = JSON.parse(data); }\n\n forEach(data.locales, function (phrases, locale) {\n forEach(phrases, function (translation, key) {\n self.addPhrase(locale, key, translation, 0);\n });\n });\n\n forEach(data.fallback, function (rule, locale) {\n self.setFallback(locale, rule);\n });\n\n return this;\n};\n\n// export module\nmodule.exports = BabelFish;\n","module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = peg$FAILED,\n peg$c2 = \"((\",\n peg$c3 = { type: \"literal\", value: \"((\", description: \"\\\"((\\\"\" },\n peg$c4 = \"))\",\n peg$c5 = { type: \"literal\", value: \"))\", description: \"\\\"))\\\"\" },\n peg$c6 = null,\n peg$c7 = function(forms, anchor) {\n return {\n type: 'plural',\n forms: regularForms(forms),\n strict: strictForms(forms),\n anchor: anchor || 'count'\n };\n },\n peg$c8 = \"|\",\n peg$c9 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c10 = function(part, more) {\n return [part].concat(more);\n },\n peg$c11 = function(part) {\n return [part];\n },\n peg$c12 = \"=\",\n peg$c13 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c14 = /^[0-9]/,\n peg$c15 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c16 = \" \",\n peg$c17 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c18 = function(strict, form) {\n return {\n strict: strict.join(''),\n text: form.join('')\n }\n },\n peg$c19 = function() {\n return {\n text: text()\n };\n },\n peg$c20 = \"\\\\\",\n peg$c21 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c22 = /^[\\\\|)(]/,\n peg$c23 = { type: \"class\", value: \"[\\\\\\\\|)(]\", description: \"[\\\\\\\\|)(]\" },\n peg$c24 = function(char) {\n return char;\n },\n peg$c25 = void 0,\n peg$c26 = { type: \"any\", description: \"any character\" },\n peg$c27 = function() {\n return text();\n },\n peg$c28 = \":\",\n peg$c29 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c30 = function(name) {\n return name;\n },\n peg$c31 = \"#{\",\n peg$c32 = { type: \"literal\", value: \"#{\", description: \"\\\"#{\\\"\" },\n peg$c33 = \"}\",\n peg$c34 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c35 = function(anchor) {\n return {\n type: 'variable',\n anchor: anchor\n };\n },\n peg$c36 = \".\",\n peg$c37 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c38 = function() {\n return text()\n },\n peg$c39 = /^[a-zA-Z_$]/,\n peg$c40 = { type: \"class\", value: \"[a-zA-Z_$]\", description: \"[a-zA-Z_$]\" },\n peg$c41 = /^[a-zA-Z0-9_$]/,\n peg$c42 = { type: \"class\", value: \"[a-zA-Z0-9_$]\", description: \"[a-zA-Z0-9_$]\" },\n peg$c43 = function(lc) { return lc; },\n peg$c44 = function(literal_chars) {\n return {\n type: 'literal',\n text: literal_chars.join('')\n };\n },\n peg$c45 = /^[\\\\#()|]/,\n peg$c46 = { type: \"class\", value: \"[\\\\\\\\#()|]\", description: \"[\\\\\\\\#()|]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseplural() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseplural_forms();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s3 = peg$c4;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseplural_anchor();\n if (s4 === peg$FAILED) {\n s4 = peg$c6;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c7(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseplural_forms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseplural_forms();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_part() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n } else {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 32) {\n s3 = peg$c16;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c6;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseplural_char();\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseplural_char();\n }\n } else {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseplural_char();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseplural_char();\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c22.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s2 = peg$c4;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c25;\n } else {\n peg$currPos = s1;\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n }\n\n return s0;\n }\n\n function peg$parseplural_anchor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c28;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parsevariable() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c33;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifier_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c36;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseidentifier();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseidentifier();\n }\n } else {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseidentifier_part();\n }\n\n return s0;\n }\n\n function peg$parseidentifier_part() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n }\n\n return s0;\n }\n\n\n function regularForms(forms) {\n var result = [];\n for (var i=0; i= 0; }\n\n\nadd([ 'af', 'an', 'asa', 'bem', 'bez', 'bg', 'brx', 'ce', 'cgg', 'chr', 'ckb', 'dv', 'ee', 'el', 'eo', 'eu', 'fo', 'fur', 'gsw', 'ha', 'haw', 'jgo', 'jmc', 'kaj', 'kcg', 'kkj', 'kl', 'ks', 'ksb', 'ku', 'ky', 'lb', 'lg', 'mas', 'mgo', 'ml', 'mn', 'nah', 'nb', 'nd', 'nn', 'nnh', 'no', 'nr', 'ny', 'nyn', 'om', 'os', 'pap', 'ps', 'rm', 'rof', 'rwk', 'saq', 'sd', 'sdh', 'seh', 'sn', 'so', 'ss', 'ssy', 'st', 'syr', 'ta', 'te', 'teo', 'tig', 'tn', 'tr', 'ts', 'ug', 'uz', 've', 'vo', 'vun', 'wae', 'xh', 'xog' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ak', 'bho', 'guw', 'ln', 'mg', 'nso', 'pa', 'ti', 'wa' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) ? 0 : 1;\n }\n});\n\nadd([ 'am', 'doi', 'fa', 'kn', 'pcm', 'zu' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ar', 'ars' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : B(3, 10, n100) ? 3 : B(11, 99, n100) ? 4 : 5;\n }\n});\n\nadd([ 'as', 'bn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 1, 5, 7, 8, 9, 10 ], n) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'ast', 'de', 'et', 'fi', 'fy', 'gl', 'ia', 'io', 'nl', 'sw', 'ur', 'yi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n }\n});\n\nadd([ 'az' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 3, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100, i1000 = i % 1000;\n return IN([ 1, 2, 5, 7, 8 ], i10) || IN([ 20, 50, 70, 80 ], i100) ? 0 : IN([ 3, 4 ], i10) || IN([ 100, 200, 300, 400, 500, 600, 700, 800, 900 ], i1000) ? 1 : i === 0 || i10 === 6 || IN([ 40, 60, 90 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'bal' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'be' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : B(2, 4, n10) && !B(12, 14, n100) ? 1 : n10 === 0 || B(5, 9, n10) || B(11, 14, n100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 2, 3 ], n10) && !IN([ 12, 13 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'bm', 'bo', 'dz', 'hnj', 'id', 'ig', 'ii', 'ja', 'jbo', 'jv', 'jw', 'kde', 'kea', 'km', 'ko', 'lkt', 'my', 'nqo', 'osa', 'sah', 'ses', 'sg', 'su', 'th', 'to', 'tpi', 'und', 'wo', 'yo', 'yue', 'zh' ], {\n});\n\nadd([ 'br' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100, n1000000 = n % 1000000;\n return n10 === 1 && !IN([ 11, 71, 91 ], n100) ? 0 : n10 === 2 && !IN([ 12, 72, 92 ], n100) ? 1 : (B(3, 4, n10) || n10 === 9) && (!B(10, 19, n100) && !B(70, 79, n100) && !B(90, 99, n100)) ? 2 : n !== 0 && n1000000 === 0 ? 3 : 4;\n }\n});\n\nadd([ 'bs', 'hr', 'sh', 'sr' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) || B(2, 4, f10) && !B(12, 14, f100) ? 1 : 2;\n }\n});\n\nadd([ 'ca' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 3 ], n) ? 0 : n === 2 ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'ceb' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n }\n});\n\nadd([ 'cs', 'sk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : B(2, 4, i) && v === 0 ? 1 : v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'cy' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n === 3 ? 3 : n === 6 ? 4 : 5;\n },\n o: [ 0, 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 0, 7, 8, 9 ], n) ? 0 : n === 1 ? 1 : n === 2 ? 2 : IN([ 3, 4 ], n) ? 3 : IN([ 5, 6 ], n) ? 4 : 5;\n }\n});\n\nadd([ 'da' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n return n === 1 || t !== 0 && IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'dsb', 'hsb' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i100 = i % 100, f100 = f % 100;\n return v === 0 && i100 === 1 || f100 === 1 ? 0 : v === 0 && i100 === 2 || f100 === 2 ? 1 : v === 0 && B(3, 4, i100) || B(3, 4, f100) ? 2 : 3;\n }\n});\n\nadd([ 'en' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : n10 === 2 && n100 !== 12 ? 1 : n10 === 3 && n100 !== 13 ? 2 : 3;\n }\n});\n\nadd([ 'es' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return n === 1 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ff', 'kab' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'fil', 'tl' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'fr' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return IN([ 0, 1 ], i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ga' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : B(3, 6, n) ? 2 : B(7, 10, n) ? 3 : 4;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'gd' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : (B(3, 10, n) || B(13, 19, n)) ? 2 : 3;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : IN([ 3, 13 ], n) ? 2 : 3;\n }\n});\n\nadd([ 'gu', 'hi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'gv' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 ? 0 : v === 0 && i10 === 2 ? 1 : v === 0 && IN([ 0, 20, 40, 60, 80 ], i100) ? 2 : v !== 0 ? 3 : 4;\n }\n});\n\nadd([ 'he' ], {\n c: [ 1, 2, 4, 5 ],\n cFn: function (n, i, v) {\n var n10 = n % 10;\n return i === 1 && v === 0 ? 0 : i === 2 && v === 0 ? 1 : v === 0 && !B(0, 10, n) && n10 === 0 ? 2 : 3;\n }\n});\n\nadd([ 'hu' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return IN([ 1, 5 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'hy' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'is' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n var i10 = i % 10, i100 = i % 100;\n return t === 0 && i10 === 1 && i100 !== 11 || t !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'it' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'iu', 'naq', 'sat', 'se', 'sma', 'smi', 'smj', 'smn', 'sms' ], {\n c: [ 1, 2, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : 2;\n }\n});\n\nadd([ 'ka' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n, i) {\n var i100 = i % 100;\n return i === 1 ? 0 : i === 0 || (B(2, 20, i100) || i100 === 40 || i100 === 60 || i100 === 80) ? 1 : 2;\n }\n});\n\nadd([ 'kk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return n10 === 6 || n10 === 9 || n10 === 0 && n !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'ksh' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : 2;\n }\n});\n\nadd([ 'kw' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100, n1000 = n % 1000, n100000 = n % 100000, n1000000 = n % 1000000;\n return n === 0 ? 0 : n === 1 ? 1 : IN([ 2, 22, 42, 62, 82 ], n100) || n1000 === 0 && (B(1000, 20000, n100000) || n100000 === 40000 || n100000 === 60000 || n100000 === 80000) || n !== 0 && n1000000 === 100000 ? 2 : IN([ 3, 23, 43, 63, 83 ], n100) ? 3 : n !== 1 && IN([ 1, 21, 41, 61, 81 ], n100) ? 4 : 5;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n100 = n % 100;\n return B(1, 4, n) || (B(1, 4, n100) || B(21, 24, n100) || B(41, 44, n100) || B(61, 64, n100) || B(81, 84, n100)) ? 0 : n === 5 || n100 === 5 ? 1 : 2;\n }\n});\n\nadd([ 'lag' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i) {\n return n === 0 ? 0 : IN([ 0, 1 ], i) && n !== 0 ? 1 : 2;\n }\n});\n\nadd([ 'lij' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return (n === 11 || n === 8 || B(80, 89, n) || B(800, 899, n)) ? 0 : 1;\n }\n});\n\nadd([ 'lo', 'ms', 'vi' ], {\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'lt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && !B(11, 19, n100) ? 0 : B(2, 9, n10) && !B(11, 19, n100) ? 1 : f !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'lv', 'prg' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100, f100 = f % 100, f10 = f % 10;\n return n10 === 0 || B(11, 19, n100) || v === 2 && B(11, 19, f100) ? 0 : n10 === 1 && n100 !== 11 || v === 2 && f10 === 1 && f100 !== 11 || v !== 2 && f10 === 1 ? 1 : 2;\n }\n});\n\nadd([ 'mk' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : 1;\n },\n o: [ 1, 2, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100;\n return i10 === 1 && i100 !== 11 ? 0 : i10 === 2 && i100 !== 12 ? 1 : IN([ 7, 8 ], i10) && !IN([ 17, 18 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'mo', 'ro' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v) {\n var n100 = n % 100;\n return i === 1 && v === 0 ? 0 : v !== 0 || n === 0 || B(2, 19, n100) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'mr' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'mt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 1 ? 0 : n === 0 || B(2, 10, n100) ? 1 : B(11, 19, n100) ? 2 : 3;\n }\n});\n\nadd([ 'ne' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return B(1, 4, n) ? 0 : 1;\n }\n});\n\nadd([ 'or' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return (n === 1 || n === 5 || B(7, 9, n)) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'pl' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return i === 1 && v === 0 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i !== 1 && B(0, 1, i10) || v === 0 && B(5, 9, i10) || v === 0 && B(12, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return B(0, 1, i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'pt-pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ru' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'sc', 'scn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'shi' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : B(2, 10, n) ? 1 : 2;\n }\n});\n\nadd([ 'si' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n return IN([ 0, 1 ], n) || i === 0 && f === 1 ? 0 : 1;\n }\n});\n\nadd([ 'sl' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v) {\n var i100 = i % 100;\n return v === 0 && i100 === 1 ? 0 : v === 0 && i100 === 2 ? 1 : v === 0 && B(3, 4, i100) || v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'sq' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n === 1 ? 0 : n10 === 4 && n100 !== 14 ? 1 : 2;\n }\n});\n\nadd([ 'sv' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 1, 2 ], n10) && !IN([ 11, 12 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'tk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return IN([ 6, 9 ], n10) || n === 10 ? 0 : 1;\n }\n});\n\nadd([ 'tzm' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) || B(11, 99, n) ? 0 : 1;\n }\n});\n\nadd([ 'uk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 3 && n100 !== 13 ? 0 : 1;\n }\n});\n\n////////////////////////////////////////////////////////////////////////////////\n","export default {site:{privacy_policy:'politique de confidentialité',terms:'conditions d\\'utilisation',banner_bottom:'Développez vos compétences avec cours vidéo sur JavaScript et Frameworks.',action_required:'Action requise',gdpr_dialog:{title:'Ce site web utilise des cookies',text:'Nous utilisons des technologies de navigation telles que les cookies et le stockage local pour stocker vos préférences. Vous devez accepter notre Politique de confidentialité et nos Conditions d\\'utilisation pour accéder de nos services.',accept:'Accepter',cancel:'Annuler'},theme:{light:'Light theme',dark:'Dark theme',change:'Change theme'},toolbar:{lang_switcher:{cta_text:'

Nous souhaitons rendre ce projet open source disponible pour les gens du monde entier.

Aidez-nous à traduire le contenu de ce tutoriel dans votre langue!

\\n',footer_text:'quantité de contenu est traduit dans la langue correspondante',old_version:'L\\'ancienne version est publiée, nécessite un rétroportage.'},logo:{normal:{svg:'sitetoolbar__logo_en.svg',width:200},'normal-white':{svg:'sitetoolbar__logo_en-white.svg'},small:{svg:'sitetoolbar__logo_small_en.svg',width:70},'small-white':{svg:'sitetoolbar__logo_small_en-white.svg'}},sections:null,buy_ebook_extra:'Acheter',buy_ebook:'EPUB/PDF',search_placeholder:'Rechercher sur Javascript.info',search_button:'Recherche',public_profile:'Profil public',account:'Compte',notifications:'Notifications',admin:'Admin',logout:'Déconnexion'},sorry_old_browser:'Désolé, Internet Explorer n\\'est pas pris en charge, veuillez utiliser un navigateur plus récent.',contact_us:'nous contacter',about_the_project:'à propos du projet',ilya_kantor:'Ilya Kantor',comments:'Commentaires',loading:'Chargement...',search:'Recherche',share:'Partager',read_before_commenting:'lire ceci avant de commenter…',last_updated_at:'Dernière mise à jour le #{date}',meta:{description:'Tutoriel JavaScript moderne : explications simples mais détaillées avec des exemples et des exercices, y compris : les closures, le document et les événements, la programmation orientée objet et plus encore.'},'tablet-menu':{choose_section:'Choisissez la section',search_placeholder:'Rechercher dans le tutoriel',search_button:'Recherche'},comment:{help:['Si vous avez des améliorations à suggérer, merci de soumettre une issue GitHub ou une pull request au lieu de commenter.','Si vous ne comprenez pas quelque chose dans l\\'article, merci de préciser.','Pour insérer quelques bouts de code, utilisez la balise <code>, pour plusieurs lignes – enveloppez-les avec la balise <pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepen…)']},edit_on_github:'Editer sur GitHub',error:'erreur',close:'fermer',hide_forever:'cacher en permanence',hidden_forever:'Cette information n\\'apparaîtra plus.',subscribe:{title:'Surveiller les mises à jour de javascript.info',text:'Nous n\\'envoyons pas de publicités, uniquement des informations pertinentes. Vous choisissez ce que vous souhaitez recevoir :',agreement:'En vous inscrivant aux newsletters, vous acceptez les conditions d\\'utilisation.',button:'S\\'abonner',button_unsubscribe:'Se désabonner de tout',common_updates:'Mises à jour courantes',common_updates_text:'nouveaux cours, master classes, publications d\\'articles et de screencast',your_email:'votre@email.ici',newsletters:'newsletter,newsletters,newsletters',no_selected:'Rien de sélectionné'},form:{value_must_not_be_empty:'La valeur ne doit pas être vide.',value_is_too_long:'La valeur est trop longue.',value_is_too_short:'La valeur est trop courte.',invalid_email:'Email invalide.',invalid_value:'Valeur invalide.',invalid_autocomplete:'Veuillez choisir dans la liste',invalid_date:'Date incorrecte, format : jj.mm.aaaa',invalid_range:'Cette date n\\'est pas valide ici.',save:'Sauvegarder',upload_file:'Uploader un fichier',cancel:'Annuler',server_error:'Erreur de requête, code d\\'état'}}};","export default {server_connection_error:'Erreur de connexion au serveur.',server_request_timeout:'La requête au serveur a expirée.',request_aborted:'La requête a été abandonnée.',no_response:'Aucune réponse du serveur.',server_error:'Erreur du serveur (code #{status}), réessayez plus tard.',invalid_format:'Format de réponse non valide.'};","export default {choose_newsletter:'Choisissez newsletters dans la liste.',email_please:'Votre email?'};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const newsletter = require('newsletter/client');\n\nfunction init() {\n newsletter.initNewsletterForm();\n\n initTabs();\n}\n\nfunction initTabs() {\n\n document.addEventListener('click', (e) => {\n if (e.target.closest('.frontpage-content')) {\n let button = e.target.closest('.tabs__menu-button');\n if (!button) return;\n\n e.preventDefault();\n\n let i, tablinks;\n\n tablinks = document.getElementsByClassName('tabs__menu-button');\n\n /*\n for (i = 0; i < tablinks.length; i++) {\n tablinks[i].classList.remove('active');\n }\n\n button.classList.add('active');*/\n\n document.querySelector(button.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n }\n });\n\n function changeTabState(sections, tabs, tabsHeight) {\n let index = sections.length;\n\n while(--index && window.scrollY + tabsHeight < sections[index].offsetTop) {}\n\n tabs.forEach((tab) => tab.classList.remove('active'));\n tabs[index].classList.add('active');\n }\n\n document.addEventListener('DOMContentLoaded', () => {\n const sections = document.querySelectorAll(\".tabs__content\");\n const stickyTabs = document.querySelector('.tabs__menu');\n const stickyTabsEls = stickyTabs.querySelectorAll('.tabs__menu-button');\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries[0].target.classList.toggle(\"sticky\", !entries[0].isIntersecting);\n }, {rootMargin: `-${stickyTabs.offsetHeight + 1}px`, threshold: 0});\n\n observer.observe(stickyTabs);\n\n changeTabState(sections, stickyTabsEls, stickyTabs.offsetHeight);\n window.addEventListener('scroll', () => changeTabState(sections, stickyTabsEls, stickyTabs.offsetHeight));\n\n // window.addEventListener('scroll', () => {\n // let current = \"tab-1\";\n // console.log('current', current)\n\n // sections.forEach((section) => {\n // const sectionTop = section.offsetTop;\n // console.log('sectionTop', sectionTop)\n // console.log('window.scrollTop', window.pageYOffset | document.body.scrollTop)\n // if (window.pageYOffset | document.body.scrollTop >= sectionTop - 60) {\n // current = section.getAttribute('id');\n // console.log('change current', current)\n // }\n // });\n\n // stickyTabs.querySelectorAll('.tabs__menu-button').forEach((tab) => {\n // tab.classList.remove('active');\n // if (tab.classList.contains(current)) {\n // tab.classList.add('active');\n // }\n // });\n // });\n });\n}\n\ninit();\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","lang","LANG","localCurrency","shopCurrency","env","NODE_ENV","rateShopTo","countryCode","ordersMail","providers","stripeKey","paypalClientId","lookatCodeUrlBase","delegate","topElement","selector","eventName","handler","context","addEventListener","event","found","currentNode","target","matches","currentTarget","parentElement","findDelegateTarget","delegateTarget","call","this","delegateMixin","obj","elem","csrfCookie","document","cookie","match","require","NotificationManager","constructor","options","notifications","verticalSpace","register","notification","unshift","setTimeout","recalculate","unregister","idx","indexOf","splice","top","forEach","height","init","window","notificationManager","Notification","html","type","timeout","elemHtml","body","insertAdjacentHTML","lastElementChild","undefined","TIMEOUT_DEFAULT","TIMEOUT_SLOW","TIMEOUT_FAST","setupCloseHandler","setupCloseTimeout","close","parentNode","remove","offsetHeight","value","style","transform","prototype","Info","super","Warning","Success","Recaptcha","initForms","loadScript","async","submitButtons","querySelectorAll","length","button","disabled","form","recaptcha","onsubmit","preventDefault","validateForm","checkValidity","submit","reportValidity","promise","RECAPTCHA_ID","Promise","reject","recaptchaCallback","script","createElement","src","onerror","head","appendChild","renderPromise","renderPromiseResolve","renderPromiseReject","render","widgetId","container","append","grecaptcha","sitekey","size","callback","execute","token","getResponse","input","elements","name","Spinner","class","elemClass","start","classList","toggle","stop","spinnerElem","querySelector","getCsrfCookie","t","i18n","add","reason","request","XMLHttpRequest","method","url","open","sync","skipCsrf","setRequestHeader","responseType","toString","JSON","stringify","noDocumentEvents","timeStart","Date","now","wrapEvent","dispatchEvent","result","raw","normalStatuses","CustomEvent","originalEvent","fail","status","response","responseText","getResponseHeader","json","parse","includes","success","info","send","err","console","error","phrase","hasPhrase","arguments","setFallback","args","arg","__esModule","default","addPhrase","count","string","n","Math","floor","values","split","xhr","MultiSelect","submitSubscribeForm","onSuccess","email","slugElem","slug","userLogged","slugs","option","replace","action","submitButton","spinner","message","gaEvent","initNewsletterForm","forms","isLogged","select","multiSelect","formButton","formButtonTextEl","getValues","textContent","pluralize","textContainer","defaultValue","createDropdown","setButtonTitle","bindHandlers","selected","join","toggleDropdown","bind","item","onChange","stopPropagation","toggleStatus","boundCloseDropdown","closeDropdown","closest","removeEventListener","filter","getAttribute","pop","contains","Event","parser","plural","_class","isString","isNumber","isNaN","isFinite","isBoolean","isObject","isArray","Array","nativeForEach","iterator","i","l","key","hasOwnProperty","formatRegExp","format","f","len","String","x","Number","flatten","params","val","sub_val","sub_key","keySeparator","makePhraseKey","locale","searchPhraseKey","self","storage","_storage","_defaultLocale","fb_cache","_fallbacks_cache","fb_key","fb","_fallbacks","pluralizer","BabelFish","defaultLocale","_plurals_cache","translation","flattenLevel","fl","Infinity","TypeError","fallbacks","def","slice","push","CAN_HAVE_DIRECTIVES_RE","translate","data","compiled","str","nodes","buf","strict_exec","forms_exec","plurals_cache","test","text","node","anchor","strict","k","parsed","unescaped","Function","compile","noFallback","getLocale","unique","out","fallback","locales","load","phrases","rule","SyntaxError","expected","offset","line","column","child","parent","ctor","peg$subclass","peg$result","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$startRuleFunction","peg$c1","peg$c2","peg$c3","description","peg$c4","peg$c5","peg$c6","peg$c7","regularForms","strictForms","peg$c8","peg$c9","peg$c10","part","more","concat","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","char","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","lc","peg$c44","literal_chars","peg$c45","peg$c46","peg$currPos","peg$reportedPos","peg$cachedPos","peg$cachedPosDetails","seenCR","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","substring","peg$computePosDetails","pos","details","startPos","endPos","p","ch","charAt","advance","peg$fail","peg$buildException","posDetails","sort","a","b","cleanupExpected","expectedDescs","s","hex","charCodeAt","toUpperCase","stringEscape","buildMessage","s0","s1","peg$parseliteral","peg$parseplural","peg$parsevariable","s2","s3","s4","substr","peg$parseplural_forms","peg$parseidentifier","peg$parseplural_anchor","peg$parseplural_part","s5","peg$parseplural_char","peg$parseidentifier_part","peg$parseliteral_char","normalize","loc","toLowerCase","c_re","cFn","sval","spl","pow","v","w","o_indexOf","oFn","c","ordinal","FORMS","unpack","B","y","IN","set","n100","i10","i100","i1000","n10","n1000000","f10","f100","i1000000","n1000","n100000","site","privacy_policy","terms","banner_bottom","action_required","gdpr_dialog","title","accept","cancel","theme","light","dark","change","toolbar","lang_switcher","cta_text","footer_text","old_version","logo","normal","svg","width","small","sections","buy_ebook_extra","buy_ebook","search_placeholder","search_button","public_profile","account","admin","logout","sorry_old_browser","contact_us","about_the_project","ilya_kantor","comments","loading","search","share","read_before_commenting","last_updated_at","meta","choose_section","comment","help","edit_on_github","hide_forever","hidden_forever","subscribe","agreement","button_unsubscribe","common_updates","common_updates_text","your_email","newsletters","no_selected","value_must_not_be_empty","value_is_too_long","value_is_too_short","invalid_email","invalid_value","invalid_autocomplete","invalid_date","invalid_range","save","upload_file","server_error","server_connection_error","server_request_timeout","request_aborted","no_response","invalid_format","choose_newsletter","email_please","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","d","definition","defineProperty","enumerable","get","prop","r","Symbol","toStringTag","changeTabState","tabs","tabsHeight","index","scrollY","offsetTop","tab","tablinks","getElementsByClassName","scrollIntoView","behavior","stickyTabs","stickyTabsEls","IntersectionObserver","entries","isIntersecting","rootMargin","threshold","observe","initTabs"],"sourceRoot":""}