/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([["vendors-node_modules_jupyterlab_translation_lib_index_js"],{

/***/ "../node_modules/@jupyterlab/translation/lib/base.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/base.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"nullTranslator\": () => (/* binding */ nullTranslator)\n/* harmony export */ });\n/* harmony import */ var _gettext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gettext */ \"../node_modules/@jupyterlab/translation/lib/gettext.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * A translator that loads a dummy language bundle that returns the same input\n * strings.\n */\nclass NullTranslator {\n    constructor(bundle) {\n        this._languageBundle = bundle;\n    }\n    load(domain) {\n        return this._languageBundle;\n    }\n    locale() {\n        return 'en';\n    }\n}\n/**\n * A language bundle that returns the same input strings.\n */\nclass NullLanguageBundle {\n    __(msgid, ...args) {\n        return this.gettext(msgid, ...args);\n    }\n    _n(msgid, msgid_plural, n, ...args) {\n        return this.ngettext(msgid, msgid_plural, n, ...args);\n    }\n    _p(msgctxt, msgid, ...args) {\n        return this.pgettext(msgctxt, msgid, ...args);\n    }\n    _np(msgctxt, msgid, msgid_plural, n, ...args) {\n        return this.npgettext(msgctxt, msgid, msgid_plural, n, ...args);\n    }\n    gettext(msgid, ...args) {\n        return _gettext__WEBPACK_IMPORTED_MODULE_0__.Gettext.strfmt(msgid, ...args);\n    }\n    ngettext(msgid, msgid_plural, n, ...args) {\n        return _gettext__WEBPACK_IMPORTED_MODULE_0__.Gettext.strfmt(n == 1 ? msgid : msgid_plural, ...[n].concat(args));\n    }\n    pgettext(msgctxt, msgid, ...args) {\n        return _gettext__WEBPACK_IMPORTED_MODULE_0__.Gettext.strfmt(msgid, ...args);\n    }\n    npgettext(msgctxt, msgid, msgid_plural, n, ...args) {\n        return this.ngettext(msgid, msgid_plural, n, ...args);\n    }\n    dcnpgettext(domain, msgctxt, msgid, msgid_plural, n, ...args) {\n        return this.ngettext(msgid, msgid_plural, n, ...args);\n    }\n}\n/**\n * The application null translator instance that just returns the same text.\n * Also provides interpolation.\n */\nconst nullTranslator = new NullTranslator(new NullLanguageBundle());\n//# sourceMappingURL=base.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/base.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/gettext.js":
/*!**************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/gettext.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Gettext\": () => (/* binding */ Gettext)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"../node_modules/@jupyterlab/translation/lib/utils.js\");\n/* ----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|\n| Base gettext.js implementation.\n| Copyright (c) Guillaume Potier.\n| Distributed under the terms of the Modified MIT License.\n| See: https://github.com/guillaumepotier/gettext.js\n|\n| Type definitions.\n| Copyright (c) Julien Crouzet and Florian Schwingenschlögl.\n| Distributed under the terms of the Modified MIT License.\n| See: https://github.com/DefinitelyTyped/DefinitelyTyped\n|----------------------------------------------------------------------------*/\n\n/**\n * Gettext class providing localization methods.\n */\nclass Gettext {\n    constructor(options) {\n        options = options || {};\n        // default values that could be overridden in Gettext() constructor\n        this._defaults = {\n            domain: 'messages',\n            locale: document.documentElement.getAttribute('lang') || 'en',\n            pluralFunc: function (n) {\n                return { nplurals: 2, plural: n != 1 ? 1 : 0 };\n            },\n            contextDelimiter: String.fromCharCode(4),\n            stringsPrefix: ''\n        };\n        // Ensure the correct separator is used\n        this._locale = (options.locale || this._defaults.locale).replace('_', '-');\n        this._domain = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.normalizeDomain)(options.domain || this._defaults.domain);\n        this._contextDelimiter =\n            options.contextDelimiter || this._defaults.contextDelimiter;\n        this._stringsPrefix = options.stringsPrefix || this._defaults.stringsPrefix;\n        this._pluralFuncs = {};\n        this._dictionary = {};\n        this._pluralForms = {};\n        if (options.messages) {\n            this._dictionary[this._domain] = {};\n            this._dictionary[this._domain][this._locale] = options.messages;\n        }\n        if (options.pluralForms) {\n            this._pluralForms[this._locale] = options.pluralForms;\n        }\n    }\n    /**\n     * Set current context delimiter.\n     *\n     * @param delimiter - The delimiter to set.\n     */\n    setContextDelimiter(delimiter) {\n        this._contextDelimiter = delimiter;\n    }\n    /**\n     * Get current context delimiter.\n     *\n     * @return The current delimiter.\n     */\n    getContextDelimiter() {\n        return this._contextDelimiter;\n    }\n    /**\n     * Set current locale.\n     *\n     * @param locale - The locale to set.\n     */\n    setLocale(locale) {\n        this._locale = locale.replace('_', '-');\n    }\n    /**\n     * Get current locale.\n     *\n     * @return The current locale.\n     */\n    getLocale() {\n        return this._locale;\n    }\n    /**\n     * Set current domain.\n     *\n     * @param domain - The domain to set.\n     */\n    setDomain(domain) {\n        this._domain = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.normalizeDomain)(domain);\n    }\n    /**\n     * Get current domain.\n     *\n     * @return The current domain string.\n     */\n    getDomain() {\n        return this._domain;\n    }\n    /**\n     * Set current strings prefix.\n     *\n     * @param prefix - The string prefix to set.\n     */\n    setStringsPrefix(prefix) {\n        this._stringsPrefix = prefix;\n    }\n    /**\n     * Get current strings prefix.\n     *\n     * @return The strings prefix.\n     */\n    getStringsPrefix() {\n        return this._stringsPrefix;\n    }\n    /**\n     * `sprintf` equivalent, takes a string and some arguments to make a\n     * computed string.\n     *\n     * @param fmt - The string to interpolate.\n     * @param args - The variables to use in interpolation.\n     *\n     * ### Examples\n     * strfmt(\"%1 dogs are in %2\", 7, \"the kitchen\"); => \"7 dogs are in the kitchen\"\n     * strfmt(\"I like %1, bananas and %1\", \"apples\"); => \"I like apples, bananas and apples\"\n     */\n    static strfmt(fmt, ...args) {\n        return (fmt\n            // put space after double % to prevent placeholder replacement of such matches\n            .replace(/%%/g, '%% ')\n            // replace placeholders\n            .replace(/%(\\d+)/g, function (str, p1) {\n            return args[p1 - 1];\n        })\n            // replace double % and space with single %\n            .replace(/%% /g, '%'));\n    }\n    /**\n     * Load json translations strings (In Jed 2.x format).\n     *\n     * @param jsonData - The translation strings plus metadata.\n     * @param domain - The translation domain, e.g. \"jupyterlab\".\n     */\n    loadJSON(jsonData, domain) {\n        if (!jsonData[''] ||\n            !jsonData['']['language'] ||\n            !jsonData['']['pluralForms']) {\n            throw new Error(`Wrong jsonData, it must have an empty key (\"\") with \"language\" and \"pluralForms\" information: ${jsonData}`);\n        }\n        domain = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.normalizeDomain)(domain);\n        let headers = jsonData[''];\n        let jsonDataCopy = JSON.parse(JSON.stringify(jsonData));\n        delete jsonDataCopy[''];\n        this.setMessages(domain || this._defaults.domain, headers['language'], jsonDataCopy, headers['pluralForms']);\n    }\n    /**\n     * Shorthand for gettext.\n     *\n     * @param msgid - The singular string to translate.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     *\n     * ### Notes\n     * This is not a private method (starts with an underscore) it is just\n     * a shorter and standard way to call these methods.\n     */\n    __(msgid, ...args) {\n        return this.gettext(msgid, ...args);\n    }\n    /**\n     * Shorthand for ngettext.\n     *\n     * @param msgid - The singular string to translate.\n     * @param msgid_plural - The plural string to translate.\n     * @param n - The number for pluralization.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     *\n     * ### Notes\n     * This is not a private method (starts with an underscore) it is just\n     * a shorter and standard way to call these methods.\n     */\n    _n(msgid, msgid_plural, n, ...args) {\n        return this.ngettext(msgid, msgid_plural, n, ...args);\n    }\n    /**\n     * Shorthand for pgettext.\n     *\n     * @param msgctxt - The message context.\n     * @param msgid - The singular string to translate.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     *\n     * ### Notes\n     * This is not a private method (starts with an underscore) it is just\n     * a shorter and standard way to call these methods.\n     */\n    _p(msgctxt, msgid, ...args) {\n        return this.pgettext(msgctxt, msgid, ...args);\n    }\n    /**\n     * Shorthand for npgettext.\n     *\n     * @param msgctxt - The message context.\n     * @param msgid - The singular string to translate.\n     * @param msgid_plural - The plural string to translate.\n     * @param n - The number for pluralization.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     *\n     * ### Notes\n     * This is not a private method (starts with an underscore) it is just\n     * a shorter and standard way to call these methods.\n     */\n    _np(msgctxt, msgid, msgid_plural, n, ...args) {\n        return this.npgettext(msgctxt, msgid, msgid_plural, n, ...args);\n    }\n    /**\n     * Translate a singular string with extra interpolation values.\n     *\n     * @param msgid - The singular string to translate.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     */\n    gettext(msgid, ...args) {\n        return this.dcnpgettext('', '', msgid, '', 0, ...args);\n    }\n    /**\n     * Translate a plural string with extra interpolation values.\n     *\n     * @param msgid - The singular string to translate.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     */\n    ngettext(msgid, msgid_plural, n, ...args) {\n        return this.dcnpgettext('', '', msgid, msgid_plural, n, ...args);\n    }\n    /**\n     * Translate a contextualized singular string with extra interpolation values.\n     *\n     * @param msgctxt - The message context.\n     * @param msgid - The singular string to translate.\n     * @param args - Any additional values to use with interpolation.\n     *\n     * @return A translated string if found, or the original string.\n     *\n     * ### Notes\n     * This is not a private method (starts with an underscore) it is just\n     * a shorter and standard way to call these methods.\n     */\n    pgettext(msgctxt, msgid, ...args) {\n        return this.dcnpgettext('', msgctxt, msgid, '', 0, ...args);\n    }\n    /**\n     * Translate a contextualized plural string with extra interpolation values.\n     *\n     * @param msgctxt - The message context.\n     * @param msgid - The singular string to translate.\n     * @param msgid_plural - The plural string to translate.\n     * @param n - The number for pluralization.\n     * @param args - Any additional values to use with interpolation\n     *\n     * @return A translated string if found, or the original string.\n     */\n    npgettext(msgctxt, msgid, msgid_plural, n, ...args) {\n        return this.dcnpgettext('', msgctxt, msgid, msgid_plural, n, ...args);\n    }\n    /**\n     * Translate a singular string with extra interpolation values.\n     *\n     * @param domain - The translations domain.\n     * @param msgctxt - The message context.\n     * @param msgid - The singular string to translate.\n     * @param msgid_plural - The plural string to translate.\n     * @param n - The number for pluralization.\n     * @param args - Any additional values to use with interpolation\n     *\n     * @return A translated string if found, or the original string.\n     */\n    dcnpgettext(domain, msgctxt, msgid, msgid_plural, n, ...args) {\n        domain = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.normalizeDomain)(domain) || this._domain;\n        let translation;\n        let key = msgctxt\n            ? msgctxt + this._contextDelimiter + msgid\n            : msgid;\n        let options = { pluralForm: false };\n        let exist = false;\n        let locale = this._locale;\n        let locales = this.expandLocale(this._locale);\n        for (let i in locales) {\n            locale = locales[i];\n            exist =\n                this._dictionary[domain] &&\n                    this._dictionary[domain][locale] &&\n                    this._dictionary[domain][locale][key];\n            // check condition are valid (.length)\n            // because it's not possible to define both a singular and a plural form of the same msgid,\n            // we need to check that the stored form is the same as the expected one.\n            // if not, we'll just ignore the translation and consider it as not translated.\n            if (msgid_plural) {\n                exist = exist && this._dictionary[domain][locale][key].length > 1;\n            }\n            else {\n                exist = exist && this._dictionary[domain][locale][key].length == 1;\n            }\n            if (exist) {\n                // This ensures that a variation is used.\n                options.locale = locale;\n                break;\n            }\n        }\n        if (!exist) {\n            translation = [msgid];\n            options.pluralFunc = this._defaults.pluralFunc;\n        }\n        else {\n            translation = this._dictionary[domain][locale][key];\n        }\n        // Singular form\n        if (!msgid_plural) {\n            return this.t(translation, n, options, ...args);\n        }\n        // Plural one\n        options.pluralForm = true;\n        let value = exist ? translation : [msgid, msgid_plural];\n        return this.t(value, n, options, ...args);\n    }\n    /**\n     * Split a locale into parent locales. \"es-CO\" -> [\"es-CO\", \"es\"]\n     *\n     * @param locale - The locale string.\n     *\n     * @return An array of locales.\n     */\n    expandLocale(locale) {\n        let locales = [locale];\n        let i = locale.lastIndexOf('-');\n        while (i > 0) {\n            locale = locale.slice(0, i);\n            locales.push(locale);\n            i = locale.lastIndexOf('-');\n        }\n        return locales;\n    }\n    /**\n     * Split a locale into parent locales. \"es-CO\" -> [\"es-CO\", \"es\"]\n     *\n     * @param pluralForm - Plural form string..\n     * @return An function to compute plural forms.\n     */\n    getPluralFunc(pluralForm) {\n        // Plural form string regexp\n        // taken from https://github.com/Orange-OpenSource/gettext.js/blob/master/lib.gettext.js\n        // plural forms list available here http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html\n        let pf_re = new RegExp('^\\\\s*nplurals\\\\s*=\\\\s*[0-9]+\\\\s*;\\\\s*plural\\\\s*=\\\\s*(?:\\\\s|[-\\\\?\\\\|&=!<>+*/%:;n0-9_()])+');\n        if (!pf_re.test(pluralForm))\n            throw new Error(Gettext.strfmt('The plural form \"%1\" is not valid', pluralForm));\n        // Careful here, this is a hidden eval() equivalent..\n        // Risk should be reasonable though since we test the pluralForm through regex before\n        // taken from https://github.com/Orange-OpenSource/gettext.js/blob/master/lib.gettext.js\n        // TODO: should test if https://github.com/soney/jsep present and use it if so\n        return new Function('n', 'let plural, nplurals; ' +\n            pluralForm +\n            ' return { nplurals: nplurals, plural: (plural === true ? 1 : (plural ? plural : 0)) };');\n    }\n    /**\n     * Remove the context delimiter from string.\n     *\n     * @param str - Translation string.\n     * @return A translation string without context.\n     */\n    removeContext(str) {\n        // if there is context, remove it\n        if (str.indexOf(this._contextDelimiter) !== -1) {\n            let parts = str.split(this._contextDelimiter);\n            return parts[1];\n        }\n        return str;\n    }\n    /**\n     * Proper translation function that handle plurals and directives.\n     *\n     * @param messages - List of translation strings.\n     * @param n - The number for pluralization.\n     * @param options - Translation options.\n     * @param args - Any variables to interpolate.\n     *\n     * @return A translation string without context.\n     *\n     * ### Notes\n     * Contains juicy parts of https://github.com/Orange-OpenSource/gettext.js/blob/master/lib.gettext.js\n     */\n    t(messages, n, options, ...args) {\n        // Singular is very easy, just pass dictionary message through strfmt\n        if (!options.pluralForm)\n            return (this._stringsPrefix +\n                Gettext.strfmt(this.removeContext(messages[0]), ...args));\n        let plural;\n        // if a plural func is given, use that one\n        if (options.pluralFunc) {\n            plural = options.pluralFunc(n);\n            // if plural form never interpreted before, do it now and store it\n        }\n        else if (!this._pluralFuncs[options.locale || '']) {\n            this._pluralFuncs[options.locale || ''] = this.getPluralFunc(this._pluralForms[options.locale || '']);\n            plural = this._pluralFuncs[options.locale || ''](n);\n            // we have the plural function, compute the plural result\n        }\n        else {\n            plural = this._pluralFuncs[options.locale || ''](n);\n        }\n        // If there is a problem with plurals, fallback to singular one\n        if ('undefined' === typeof !plural.plural ||\n            plural.plural > plural.nplurals ||\n            messages.length <= plural.plural)\n            plural.plural = 0;\n        return (this._stringsPrefix +\n            Gettext.strfmt(this.removeContext(messages[plural.plural]), ...[n].concat(args)));\n    }\n    /**\n     * Set messages after loading them.\n     *\n     * @param domain - The translation domain.\n     * @param locale - The translation locale.\n     * @param messages - List of translation strings.\n     * @param pluralForms - Plural form string.\n     *\n     * ### Notes\n     * Contains juicy parts of https://github.com/Orange-OpenSource/gettext.js/blob/master/lib.gettext.js\n     */\n    setMessages(domain, locale, messages, pluralForms) {\n        domain = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.normalizeDomain)(domain);\n        if (pluralForms)\n            this._pluralForms[locale] = pluralForms;\n        if (!this._dictionary[domain])\n            this._dictionary[domain] = {};\n        this._dictionary[domain][locale] = messages;\n    }\n}\n\n//# sourceMappingURL=gettext.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/gettext.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/index.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/index.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"nullTranslator\": () => (/* reexport safe */ _base__WEBPACK_IMPORTED_MODULE_0__.nullTranslator),\n/* harmony export */   \"Gettext\": () => (/* reexport safe */ _gettext__WEBPACK_IMPORTED_MODULE_1__.Gettext),\n/* harmony export */   \"TranslationManager\": () => (/* reexport safe */ _manager__WEBPACK_IMPORTED_MODULE_2__.TranslationManager),\n/* harmony export */   \"requestTranslationsAPI\": () => (/* reexport safe */ _server__WEBPACK_IMPORTED_MODULE_3__.requestTranslationsAPI),\n/* harmony export */   \"ITranslator\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_4__.ITranslator),\n/* harmony export */   \"ITranslatorConnector\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_4__.ITranslatorConnector),\n/* harmony export */   \"TranslatorConnector\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_4__.TranslatorConnector)\n/* harmony export */ });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"../node_modules/@jupyterlab/translation/lib/base.js\");\n/* harmony import */ var _gettext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gettext */ \"../node_modules/@jupyterlab/translation/lib/gettext.js\");\n/* harmony import */ var _manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./manager */ \"../node_modules/@jupyterlab/translation/lib/manager.js\");\n/* harmony import */ var _server__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./server */ \"../node_modules/@jupyterlab/translation/lib/server.js\");\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/translation/lib/tokens.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module translation\n */\n// Note: keep in alphabetical order...\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/manager.js":
/*!**************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/manager.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TranslationManager\": () => (/* binding */ TranslationManager)\n/* harmony export */ });\n/* harmony import */ var _gettext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gettext */ \"../node_modules/@jupyterlab/translation/lib/gettext.js\");\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/translation/lib/tokens.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"../node_modules/@jupyterlab/translation/lib/utils.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * Translation Manager\n */\nclass TranslationManager {\n    constructor(translationsUrl = '', stringsPrefix) {\n        this._domainData = {};\n        this._translationBundles = {};\n        this._connector = new _tokens__WEBPACK_IMPORTED_MODULE_1__.TranslatorConnector(translationsUrl);\n        this._stringsPrefix = stringsPrefix || '';\n        this._englishBundle = new _gettext__WEBPACK_IMPORTED_MODULE_0__.Gettext({ stringsPrefix: this._stringsPrefix });\n    }\n    /**\n     * Fetch the localization data from the server.\n     *\n     * @param locale The language locale to use for translations.\n     */\n    async fetch(locale) {\n        var _a, _b;\n        this._currentLocale = locale;\n        this._languageData = await this._connector.fetch({ language: locale });\n        this._domainData = ((_a = this._languageData) === null || _a === void 0 ? void 0 : _a.data) || {};\n        const message = (_b = this._languageData) === null || _b === void 0 ? void 0 : _b.message;\n        if (message && locale !== 'en') {\n            console.warn(message);\n        }\n    }\n    /**\n     * Load translation bundles for a given domain.\n     *\n     * @param domain The translation domain to use for translations.\n     */\n    load(domain) {\n        if (this._domainData) {\n            if (this._currentLocale == 'en') {\n                return this._englishBundle;\n            }\n            else {\n                domain = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.normalizeDomain)(domain);\n                if (!(domain in this._translationBundles)) {\n                    let translationBundle = new _gettext__WEBPACK_IMPORTED_MODULE_0__.Gettext({\n                        domain: domain,\n                        locale: this._currentLocale,\n                        stringsPrefix: this._stringsPrefix\n                    });\n                    if (domain in this._domainData) {\n                        let metadata = this._domainData[domain][''];\n                        if ('plural_forms' in metadata) {\n                            metadata.pluralForms = metadata.plural_forms;\n                            delete metadata.plural_forms;\n                            this._domainData[domain][''] = metadata;\n                        }\n                        translationBundle.loadJSON(this._domainData[domain], domain);\n                    }\n                    this._translationBundles[domain] = translationBundle;\n                }\n                return this._translationBundles[domain];\n            }\n        }\n        else {\n            return this._englishBundle;\n        }\n    }\n}\n//# sourceMappingURL=manager.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/manager.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/server.js":
/*!*************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/server.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"requestTranslationsAPI\": () => (/* binding */ requestTranslationsAPI)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/services */ \"webpack/sharing/consume/default/@jupyterlab/services/@jupyterlab/services\");\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n/**\n * Call the API extension\n *\n * @param locale API REST end point for the extension\n * @param init Initial values for the request\n * @returns The response body interpreted as JSON\n */\nasync function requestTranslationsAPI(translationsUrl = '', locale = '', init = {}) {\n    // Make request to Jupyter API\n    const settings = _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeSettings();\n    translationsUrl = translationsUrl || `${settings.appUrl}/api/translations/`;\n    const requestUrl = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(settings.baseUrl, translationsUrl, locale);\n    let response;\n    try {\n        response = await _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeRequest(requestUrl, init, settings);\n    }\n    catch (error) {\n        throw new _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.NetworkError(error);\n    }\n    let data = await response.text();\n    if (data.length > 0) {\n        try {\n            data = JSON.parse(data);\n        }\n        catch (error) {\n            console.error('Not a JSON response body.', response);\n        }\n    }\n    if (!response.ok) {\n        throw new _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.ResponseError(response, data.message || data);\n    }\n    return data;\n}\n//# sourceMappingURL=server.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/server.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/tokens.js":
/*!*************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/tokens.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ITranslatorConnector\": () => (/* binding */ ITranslatorConnector),\n/* harmony export */   \"TranslatorConnector\": () => (/* binding */ TranslatorConnector),\n/* harmony export */   \"ITranslator\": () => (/* binding */ ITranslator)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/statedb */ \"webpack/sharing/consume/default/@jupyterlab/statedb/@jupyterlab/statedb\");\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _server__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./server */ \"../node_modules/@jupyterlab/translation/lib/server.js\");\n/* ----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\nconst ITranslatorConnector = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.Token('@jupyterlab/translation:ITranslatorConnector');\nclass TranslatorConnector extends _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_0__.DataConnector {\n    constructor(translationsUrl = '') {\n        super();\n        this._translationsUrl = translationsUrl;\n    }\n    async fetch(opts) {\n        return (0,_server__WEBPACK_IMPORTED_MODULE_2__.requestTranslationsAPI)(this._translationsUrl, opts.language);\n    }\n}\nconst ITranslator = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.Token('@jupyterlab/translation:ITranslator');\n//# sourceMappingURL=tokens.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/tokens.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/translation/lib/utils.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/translation/lib/utils.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"normalizeDomain\": () => (/* binding */ normalizeDomain)\n/* harmony export */ });\n/**\n * Normalize domain\n *\n * @param domain Domain to normalize\n * @returns Normalized domain\n */\nfunction normalizeDomain(domain) {\n    return domain.replace('-', '_');\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/translation/lib/utils.js?");

/***/ })

}]);