"use strict";
/*
 * 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_apputils-extension_lib_index_js"],{

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/announcements.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/announcements.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   announcements: () => (/* binding */ announcements)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/services */ \"webpack/sharing/consume/default/@jupyterlab/services/@jupyterlab/services\");\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/settingregistry */ \"webpack/sharing/consume/default/@jupyterlab/settingregistry/@jupyterlab/settingregistry\");\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_4__);\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n\n\n\n\nconst COMMAND_HELP_OPEN = 'help:open';\nconst NEWS_API_URL = '/lab/api/news';\nconst UPDATE_API_URL = '/lab/api/update';\nconst PRIVACY_URL = 'https://jupyterlab.readthedocs.io/en/latest/privacy_policies.html';\n/**\n * Call the announcement API\n *\n * @param endpoint Endpoint to request\n * @param init Initial values for the request\n * @returns The response body interpreted as JSON\n */\nasync function requestAPI(endpoint, init = {}) {\n    // Make request to Jupyter API\n    const settings = _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__.ServerConnection.makeSettings();\n    const requestUrl = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.URLExt.join(settings.baseUrl, endpoint);\n    let response;\n    try {\n        response = await _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__.ServerConnection.makeRequest(requestUrl, init, settings);\n    }\n    catch (error) {\n        throw new _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__.ServerConnection.NetworkError(error);\n    }\n    const data = await response.json();\n    if (!response.ok) {\n        throw new _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__.ServerConnection.ResponseError(response, data.message);\n    }\n    return data;\n}\nconst announcements = {\n    id: '@jupyterlab/apputils-extension:announcements',\n    description: 'Add the announcement feature. It will fetch news on the internet and check for application updates.',\n    autoStart: true,\n    optional: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__.ISettingRegistry, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_4__.ITranslator],\n    activate: (app, settingRegistry, translator) => {\n        var _a;\n        const CONFIG_SECTION_NAME = announcements.id.replace(/[^\\w]/g, '');\n        void Promise.all([\n            app.restored,\n            (_a = settingRegistry === null || settingRegistry === void 0 ? void 0 : settingRegistry.load('@jupyterlab/apputils-extension:notification')) !== null && _a !== void 0 ? _a : Promise.resolve(null),\n            // Use config instead of state to store independently of the workspace\n            // if a news has been displayed or not.\n            _jupyterlab_services__WEBPACK_IMPORTED_MODULE_2__.ConfigSection.create({\n                name: CONFIG_SECTION_NAME\n            })\n        ]).then(async ([_, settings, config]) => {\n            const trans = (translator !== null && translator !== void 0 ? translator : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_4__.nullTranslator).load('jupyterlab');\n            // Store dismiss state\n            _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.changed.connect((manager, change) => {\n                var _a;\n                if (change.type !== 'removed') {\n                    return;\n                }\n                const { id, tags } = ((_a = change\n                    .notification.options.data) !== null && _a !== void 0 ? _a : {});\n                if ((tags !== null && tags !== void 0 ? tags : []).some(tag => ['news', 'update'].includes(tag)) && id) {\n                    const update = {};\n                    update[id] = { seen: true, dismissed: true };\n                    config.update(update).catch(reason => {\n                        console.error(`Failed to update the announcements config:\\n${reason}`);\n                    });\n                }\n            });\n            const mustFetchNews = settings === null || settings === void 0 ? void 0 : settings.get('fetchNews').composite;\n            if (mustFetchNews === 'none') {\n                const notificationId = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.emit(trans.__('Would you like to get notified about official Jupyter news?'), 'default', {\n                    autoClose: false,\n                    actions: [\n                        {\n                            label: trans.__('Open privacy policy'),\n                            caption: PRIVACY_URL,\n                            callback: event => {\n                                event.preventDefault();\n                                if (app.commands.hasCommand(COMMAND_HELP_OPEN)) {\n                                    void app.commands.execute(COMMAND_HELP_OPEN, {\n                                        text: trans.__('Privacy policies'),\n                                        url: PRIVACY_URL\n                                    });\n                                }\n                                else {\n                                    window.open(PRIVACY_URL, '_blank', 'noreferrer');\n                                }\n                            },\n                            displayType: 'link'\n                        },\n                        {\n                            label: trans.__('Yes'),\n                            callback: () => {\n                                _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.dismiss(notificationId);\n                                config\n                                    .update({})\n                                    .then(() => fetchNews())\n                                    .catch(reason => {\n                                    console.error(`Failed to get the news:\\n${reason}`);\n                                });\n                                settings === null || settings === void 0 ? void 0 : settings.set('fetchNews', 'true').catch((reason) => {\n                                    console.error(`Failed to save setting 'fetchNews':\\n${reason}`);\n                                });\n                            }\n                        },\n                        {\n                            label: trans.__('No'),\n                            callback: () => {\n                                _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.dismiss(notificationId);\n                                settings === null || settings === void 0 ? void 0 : settings.set('fetchNews', 'false').catch((reason) => {\n                                    console.error(`Failed to save setting 'fetchNews':\\n${reason}`);\n                                });\n                            }\n                        }\n                    ]\n                });\n            }\n            else {\n                await fetchNews();\n            }\n            async function fetchNews() {\n                var _a, _b, _c, _d;\n                if (((_a = settings === null || settings === void 0 ? void 0 : settings.get('fetchNews').composite) !== null && _a !== void 0 ? _a : 'false') === 'true') {\n                    try {\n                        const response = await requestAPI(NEWS_API_URL);\n                        for (const { link, message, type, options } of response.news) {\n                            // @ts-expect-error data has no index\n                            const id = options.data['id'];\n                            // Filter those notifications\n                            const state = (_b = config.data[id]) !== null && _b !== void 0 ? _b : {\n                                seen: false,\n                                dismissed: false\n                            };\n                            if (!state.dismissed) {\n                                options.actions = [\n                                    {\n                                        label: trans.__('Hide'),\n                                        caption: trans.__('Never show this notification again.'),\n                                        callback: () => {\n                                            const update = {};\n                                            update[id] = { seen: true, dismissed: true };\n                                            config.update(update).catch(reason => {\n                                                console.error(`Failed to update the announcements config:\\n${reason}`);\n                                            });\n                                        }\n                                    }\n                                ];\n                                if ((link === null || link === void 0 ? void 0 : link.length) === 2) {\n                                    options.actions.push({\n                                        label: link[0],\n                                        caption: link[1],\n                                        callback: () => {\n                                            window.open(link[1], '_blank', 'noreferrer');\n                                        },\n                                        displayType: 'link'\n                                    });\n                                }\n                                if (!state.seen) {\n                                    options.autoClose = 5000;\n                                    const update = {};\n                                    update[id] = { seen: true };\n                                    config.update(update).catch(reason => {\n                                        console.error(`Failed to update the announcements config:\\n${reason}`);\n                                    });\n                                }\n                                _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.emit(message, type, options);\n                            }\n                        }\n                    }\n                    catch (reason) {\n                        console.log('Failed to get the announcements.', reason);\n                    }\n                }\n                if ((_c = settings === null || settings === void 0 ? void 0 : settings.get('checkForUpdates').composite) !== null && _c !== void 0 ? _c : true) {\n                    const response = await requestAPI(UPDATE_API_URL);\n                    if (response.notification) {\n                        const { link, message, type, options } = response.notification;\n                        // @ts-expect-error data has no index\n                        const id = options.data['id'];\n                        const state = (_d = config.data[id]) !== null && _d !== void 0 ? _d : {\n                            seen: false,\n                            dismissed: false\n                        };\n                        if (!state.dismissed) {\n                            let notificationId;\n                            options.actions = [\n                                {\n                                    label: trans.__('Do not check for updates'),\n                                    caption: trans.__('If pressed, you will not be prompted if a new JupyterLab version is found.'),\n                                    callback: () => {\n                                        settings === null || settings === void 0 ? void 0 : settings.set('checkForUpdates', false).then(() => {\n                                            _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.dismiss(notificationId);\n                                        }).catch((reason) => {\n                                            console.error('Failed to set the `checkForUpdates` setting.', reason);\n                                        });\n                                    }\n                                }\n                            ];\n                            if ((link === null || link === void 0 ? void 0 : link.length) === 2) {\n                                options.actions.push({\n                                    label: link[0],\n                                    caption: link[1],\n                                    callback: () => {\n                                        window.open(link[1], '_blank', 'noreferrer');\n                                    },\n                                    displayType: 'link'\n                                });\n                            }\n                            if (!state.seen) {\n                                options.autoClose = 5000;\n                                const update = {};\n                                update[id] = { seen: true };\n                                config.update(update).catch(reason => {\n                                    console.error(`Failed to update the announcements config:\\n${reason}`);\n                                });\n                            }\n                            notificationId = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.emit(message, type, options);\n                        }\n                    }\n                }\n            }\n        });\n    }\n};\n//# sourceMappingURL=announcements.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/announcements.js?");

/***/ }),

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

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */   toggleHeader: () => (/* binding */ toggleHeader)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/application */ \"webpack/sharing/consume/default/@jupyterlab/application/@jupyterlab/application\");\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/settingregistry */ \"webpack/sharing/consume/default/@jupyterlab/settingregistry/@jupyterlab/settingregistry\");\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/statedb */ \"webpack/sharing/consume/default/@jupyterlab/statedb/@jupyterlab/statedb\");\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @lumino/disposable */ \"webpack/sharing/consume/default/@lumino/disposable/@lumino/disposable\");\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_lumino_disposable__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _lumino_polling__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @lumino/polling */ \"webpack/sharing/consume/default/@lumino/polling/@lumino/polling\");\n/* harmony import */ var _lumino_polling__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_lumino_polling__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _announcements__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./announcements */ \"../node_modules/@jupyterlab/apputils-extension/lib/announcements.js\");\n/* harmony import */ var _notificationplugin__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./notificationplugin */ \"../node_modules/@jupyterlab/apputils-extension/lib/notificationplugin.js\");\n/* harmony import */ var _palette__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./palette */ \"../node_modules/@jupyterlab/apputils-extension/lib/palette.js\");\n/* harmony import */ var _settingsplugin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./settingsplugin */ \"../node_modules/@jupyterlab/apputils-extension/lib/settingsplugin.js\");\n/* harmony import */ var _statusbarplugin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./statusbarplugin */ \"../node_modules/@jupyterlab/apputils-extension/lib/statusbarplugin.js\");\n/* harmony import */ var _themesplugins__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./themesplugins */ \"../node_modules/@jupyterlab/apputils-extension/lib/themesplugins.js\");\n/* harmony import */ var _toolbarregistryplugin__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./toolbarregistryplugin */ \"../node_modules/@jupyterlab/apputils-extension/lib/toolbarregistryplugin.js\");\n/* harmony import */ var _workspacesplugin__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./workspacesplugin */ \"../node_modules/@jupyterlab/apputils-extension/lib/workspacesplugin.js\");\n/* harmony import */ var _shortcuts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./shortcuts */ \"../node_modules/@jupyterlab/apputils-extension/lib/shortcuts.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module apputils-extension\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The interval in milliseconds before recover options appear during splash.\n */\nconst SPLASH_RECOVER_TIMEOUT = 12000;\n/**\n * The command IDs used by the apputils plugin.\n */\nvar CommandIDs;\n(function (CommandIDs) {\n    CommandIDs.loadState = 'apputils:load-statedb';\n    CommandIDs.print = 'apputils:print';\n    CommandIDs.reset = 'apputils:reset';\n    CommandIDs.resetOnLoad = 'apputils:reset-on-load';\n    CommandIDs.runFirstEnabled = 'apputils:run-first-enabled';\n    CommandIDs.runAllEnabled = 'apputils:run-all-enabled';\n    CommandIDs.toggleHeader = 'apputils:toggle-header';\n    CommandIDs.displayShortcuts = 'apputils:display-shortcuts';\n})(CommandIDs || (CommandIDs = {}));\n/**\n * The default command palette extension.\n */\nconst palette = {\n    id: '@jupyterlab/apputils-extension:palette',\n    description: 'Provides the command palette.',\n    autoStart: true,\n    requires: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette,\n    optional: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__.ISettingRegistry],\n    activate: (app, translator, settingRegistry) => {\n        return _palette__WEBPACK_IMPORTED_MODULE_10__.Palette.activate(app, translator, settingRegistry);\n    }\n};\n/**\n * The default command palette's restoration extension.\n *\n * #### Notes\n * The command palette's restoration logic is handled separately from the\n * command palette provider extension because the layout restorer dependency\n * causes the command palette to be unavailable to other extensions earlier\n * in the application load cycle.\n */\nconst paletteRestorer = {\n    id: '@jupyterlab/apputils-extension:palette-restorer',\n    description: 'Restores the command palette.',\n    autoStart: true,\n    requires: [_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.ILayoutRestorer, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    activate: (app, restorer, translator) => {\n        _palette__WEBPACK_IMPORTED_MODULE_10__.Palette.restore(app, restorer, translator);\n    }\n};\n/**\n * The default window name resolver provider.\n */\nconst resolver = {\n    id: '@jupyterlab/apputils-extension:resolver',\n    description: 'Provides the window name resolver.',\n    autoStart: true,\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.IWindowResolver,\n    requires: [_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.JupyterFrontEnd.IPaths, _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.IRouter],\n    activate: async (app, paths, router) => {\n        const { hash, search } = router.current;\n        const query = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.queryStringToObject(search || '');\n        const solver = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.WindowResolver();\n        const workspace = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.getOption('workspace');\n        const treePath = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.getOption('treePath');\n        const mode = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.getOption('mode') === 'multiple-document' ? 'lab' : 'doc';\n        // This is used as a key in local storage to refer to workspaces, either the name\n        // of the workspace or the string PageConfig.defaultWorkspace. Both lab and doc modes share the same workspace.\n        const candidate = workspace ? workspace : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.defaultWorkspace;\n        const rest = treePath ? _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.join('tree', treePath) : '';\n        try {\n            await solver.resolve(candidate);\n            return solver;\n        }\n        catch (error) {\n            // Window resolution has failed so the URL must change. Return a promise\n            // that never resolves to prevent the application from loading plugins\n            // that rely on `IWindowResolver`.\n            return new Promise(() => {\n                const { base } = paths.urls;\n                const pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n                const random = pool[Math.floor(Math.random() * pool.length)];\n                let path = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.join(base, mode, 'workspaces', `auto-${random}`);\n                path = rest ? _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.join(path, _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.encodeParts(rest)) : path;\n                // Reset the workspace on load.\n                query['reset'] = '';\n                const url = path + _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.objectToQueryString(query) + (hash || '');\n                router.navigate(url, { hard: true });\n            });\n        }\n    }\n};\n/**\n * The default splash screen provider.\n */\nconst splash = {\n    id: '@jupyterlab/apputils-extension:splash',\n    description: 'Provides the splash screen.',\n    autoStart: true,\n    requires: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ISplashScreen,\n    activate: (app, translator) => {\n        const trans = translator.load('jupyterlab');\n        const { commands, restored } = app;\n        // Create splash element and populate it.\n        const splash = document.createElement('div');\n        const galaxy = document.createElement('div');\n        const logo = document.createElement('div');\n        splash.id = 'jupyterlab-splash';\n        galaxy.id = 'galaxy';\n        logo.id = 'main-logo';\n        _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_6__.jupyterFaviconIcon.element({\n            container: logo,\n            stylesheet: 'splash'\n        });\n        galaxy.appendChild(logo);\n        ['1', '2', '3'].forEach(id => {\n            const moon = document.createElement('div');\n            const planet = document.createElement('div');\n            moon.id = `moon${id}`;\n            moon.className = 'moon orbit';\n            planet.id = `planet${id}`;\n            planet.className = 'planet';\n            moon.appendChild(planet);\n            galaxy.appendChild(moon);\n        });\n        splash.appendChild(galaxy);\n        // Create debounced recovery dialog function.\n        let dialog;\n        const recovery = new _lumino_polling__WEBPACK_IMPORTED_MODULE_9__.Throttler(async () => {\n            if (dialog) {\n                return;\n            }\n            dialog = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog({\n                title: trans.__('Loading…'),\n                body: trans.__(`The loading screen is taking a long time.\nWould you like to clear the workspace or keep waiting?`),\n                buttons: [\n                    _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.cancelButton({ label: trans.__('Keep Waiting') }),\n                    _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.warnButton({ label: trans.__('Clear Workspace') })\n                ]\n            });\n            try {\n                const result = await dialog.launch();\n                dialog.dispose();\n                dialog = null;\n                if (result.button.accept && commands.hasCommand(CommandIDs.reset)) {\n                    return commands.execute(CommandIDs.reset);\n                }\n                // Re-invoke the recovery timer in the next frame.\n                requestAnimationFrame(() => {\n                    // Because recovery can be stopped, handle invocation rejection.\n                    void recovery.invoke().catch(_ => undefined);\n                });\n            }\n            catch (error) {\n                /* no-op */\n            }\n        }, { limit: SPLASH_RECOVER_TIMEOUT, edge: 'trailing' });\n        // Return ISplashScreen.\n        let splashCount = 0;\n        return {\n            show: (light = true) => {\n                splash.classList.remove('splash-fade');\n                splash.classList.toggle('light', light);\n                splash.classList.toggle('dark', !light);\n                splashCount++;\n                document.body.appendChild(splash);\n                // Because recovery can be stopped, handle invocation rejection.\n                void recovery.invoke().catch(_ => undefined);\n                return new _lumino_disposable__WEBPACK_IMPORTED_MODULE_8__.DisposableDelegate(async () => {\n                    await restored;\n                    if (--splashCount === 0) {\n                        void recovery.stop();\n                        if (dialog) {\n                            dialog.dispose();\n                            dialog = null;\n                        }\n                        splash.classList.add('splash-fade');\n                        window.setTimeout(() => {\n                            document.body.removeChild(splash);\n                        }, 200);\n                    }\n                });\n            }\n        };\n    }\n};\nconst print = {\n    id: '@jupyterlab/apputils-extension:print',\n    description: 'Add the print capability',\n    autoStart: true,\n    requires: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    activate: (app, translator) => {\n        var _a;\n        const trans = translator.load('jupyterlab');\n        app.commands.addCommand(CommandIDs.print, {\n            label: trans.__('Print…'),\n            isEnabled: () => {\n                const widget = app.shell.currentWidget;\n                return _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Printing.getPrintFunction(widget) !== null;\n            },\n            execute: async () => {\n                const widget = app.shell.currentWidget;\n                const printFunction = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Printing.getPrintFunction(widget);\n                if (printFunction) {\n                    await printFunction();\n                }\n            }\n        });\n        (_a = app.shell.currentChanged) === null || _a === void 0 ? void 0 : _a.connect(() => {\n            app.commands.notifyCommandChanged(CommandIDs.print);\n        });\n    }\n};\nconst toggleHeader = {\n    id: '@jupyterlab/apputils-extension:toggle-header',\n    description: 'Adds a command to display the main area widget content header.',\n    autoStart: true,\n    requires: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette],\n    activate: (app, translator, palette) => {\n        var _a;\n        const trans = translator.load('jupyterlab');\n        const category = trans.__('Main Area');\n        app.commands.addCommand(CommandIDs.toggleHeader, {\n            label: trans.__('Show Header Above Content'),\n            isEnabled: () => app.shell.currentWidget instanceof _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget &&\n                !app.shell.currentWidget.contentHeader.isDisposed &&\n                app.shell.currentWidget.contentHeader.widgets.length > 0,\n            isToggled: () => {\n                const widget = app.shell.currentWidget;\n                return widget instanceof _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget\n                    ? !widget.contentHeader.isHidden\n                    : false;\n            },\n            execute: async () => {\n                const widget = app.shell.currentWidget;\n                if (widget instanceof _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget) {\n                    widget.contentHeader.setHidden(!widget.contentHeader.isHidden);\n                }\n            }\n        });\n        (_a = app.shell.currentChanged) === null || _a === void 0 ? void 0 : _a.connect(() => {\n            app.commands.notifyCommandChanged(CommandIDs.toggleHeader);\n        });\n        if (palette) {\n            palette.addItem({ command: CommandIDs.toggleHeader, category });\n        }\n    }\n};\n/**\n * Update the browser title based on the workspace and the current\n * active item.\n */\nasync function updateTabTitle(workspace, db, name) {\n    var _a, _b;\n    const data = await db.toJSON();\n    let current = (_b = (_a = data['layout-restorer:data']) === null || _a === void 0 ? void 0 : _a.main) === null || _b === void 0 ? void 0 : _b.current;\n    if (current === undefined) {\n        document.title = `${_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.getOption('appName') || 'JupyterLab'}${workspace.startsWith('auto-') ? ` (${workspace})` : ``}`;\n    }\n    else {\n        // File name from current path\n        let currentFile = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PathExt.basename(decodeURIComponent(window.location.href));\n        // Truncate to first 12 characters of current document name + ... if length > 15\n        currentFile =\n            currentFile.length > 15\n                ? currentFile.slice(0, 12).concat(`…`)\n                : currentFile;\n        // Number of restorable items that are either notebooks or editors\n        const count = Object.keys(data).filter(item => item.startsWith('notebook') || item.startsWith('editor')).length;\n        if (workspace.startsWith('auto-')) {\n            document.title = `${currentFile} (${workspace}${count > 1 ? ` : ${count}` : ``}) - ${name}`;\n        }\n        else {\n            document.title = `${currentFile}${count > 1 ? ` (${count})` : ``} - ${name}`;\n        }\n    }\n}\n/**\n * The default state database for storing application state.\n *\n * #### Notes\n * If this extension is loaded with a window resolver, it will automatically add\n * state management commands, URL support for `clone` and `reset`, and workspace\n * auto-saving. Otherwise, it will return a simple in-memory state database.\n */\nconst state = {\n    id: '@jupyterlab/apputils-extension:state',\n    description: 'Provides the application state. It is stored per workspaces.',\n    autoStart: true,\n    provides: _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4__.IStateDB,\n    requires: [_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.JupyterFrontEnd.IPaths, _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.IRouter, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.IWindowResolver],\n    activate: (app, paths, router, translator, resolver) => {\n        const trans = translator.load('jupyterlab');\n        if (resolver === null) {\n            return new _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4__.StateDB();\n        }\n        let resolved = false;\n        const { commands, name, serviceManager } = app;\n        const { workspaces } = serviceManager;\n        const workspace = resolver.name;\n        const transform = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_7__.PromiseDelegate();\n        const db = new _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_4__.StateDB({ transform: transform.promise });\n        const save = new _lumino_polling__WEBPACK_IMPORTED_MODULE_9__.Debouncer(async () => {\n            const id = workspace;\n            const metadata = { id };\n            const data = await db.toJSON();\n            await workspaces.save(id, { data, metadata });\n        });\n        // Any time the local state database changes, save the workspace.\n        db.changed.connect(() => void save.invoke(), db);\n        db.changed.connect(() => updateTabTitle(workspace, db, name));\n        commands.addCommand(CommandIDs.loadState, {\n            label: trans.__('Load state for the current workspace.'),\n            execute: async (args) => {\n                // Since the command can be executed an arbitrary number of times, make\n                // sure it is safe to call multiple times.\n                if (resolved) {\n                    return;\n                }\n                const { hash, path, search } = args;\n                const query = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.queryStringToObject(search || '');\n                const clone = typeof query['clone'] === 'string'\n                    ? query['clone'] === ''\n                        ? _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.defaultWorkspace\n                        : query['clone']\n                    : null;\n                const source = clone || workspace || null;\n                if (source === null) {\n                    console.error(`${CommandIDs.loadState} cannot load null workspace.`);\n                    return;\n                }\n                try {\n                    const saved = await workspaces.fetch(source);\n                    // If this command is called after a reset, the state database\n                    // will already be resolved.\n                    if (!resolved) {\n                        resolved = true;\n                        transform.resolve({ type: 'overwrite', contents: saved.data });\n                    }\n                }\n                catch ({ message }) {\n                    console.warn(`Fetching workspace \"${workspace}\" failed.`, message);\n                    // If the workspace does not exist, cancel the data transformation\n                    // and save a workspace with the current user state data.\n                    if (!resolved) {\n                        resolved = true;\n                        transform.resolve({ type: 'cancel', contents: null });\n                    }\n                }\n                if (source === clone) {\n                    // Maintain the query string parameters but remove `clone`.\n                    delete query['clone'];\n                    const url = path + _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.objectToQueryString(query) + hash;\n                    const cloned = save.invoke().then(() => router.stop);\n                    // After the state has been cloned, navigate to the URL.\n                    void cloned.then(() => {\n                        router.navigate(url);\n                    });\n                    return cloned;\n                }\n                // After the state database has finished loading, save it.\n                await save.invoke();\n            }\n        });\n        commands.addCommand(CommandIDs.reset, {\n            label: trans.__('Reset Application State'),\n            execute: async ({ reload }) => {\n                await db.clear();\n                await save.invoke();\n                if (reload) {\n                    router.reload();\n                }\n            }\n        });\n        commands.addCommand(CommandIDs.resetOnLoad, {\n            label: trans.__('Reset state when loading for the workspace.'),\n            execute: (args) => {\n                const { hash, path, search } = args;\n                const query = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.queryStringToObject(search || '');\n                const reset = 'reset' in query;\n                const clone = 'clone' in query;\n                if (!reset) {\n                    return;\n                }\n                // If the state database has already been resolved, resetting is\n                // impossible without reloading.\n                if (resolved) {\n                    return router.reload();\n                }\n                // Empty the state database.\n                resolved = true;\n                transform.resolve({ type: 'clear', contents: null });\n                // Maintain the query string parameters but remove `reset`.\n                delete query['reset'];\n                const url = path + _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.objectToQueryString(query) + hash;\n                const cleared = db.clear().then(() => save.invoke());\n                // After the state has been reset, navigate to the URL.\n                if (clone) {\n                    void cleared.then(() => {\n                        router.navigate(url, { hard: true });\n                    });\n                }\n                else {\n                    void cleared.then(() => {\n                        router.navigate(url);\n                    });\n                }\n                return cleared;\n            }\n        });\n        router.register({\n            command: CommandIDs.loadState,\n            pattern: /.?/,\n            rank: 30 // High priority: 30:100.\n        });\n        router.register({\n            command: CommandIDs.resetOnLoad,\n            pattern: /(\\?reset|\\&reset)($|&)/,\n            rank: 20 // High priority: 20:100.\n        });\n        return db;\n    }\n};\n/**\n * The default session context dialogs extension.\n */\nconst sessionDialogs = {\n    id: '@jupyterlab/apputils-extension:sessionDialogs',\n    description: 'Provides the session context dialogs.',\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ISessionContextDialogs,\n    optional: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    autoStart: true,\n    activate: async (app, translator) => {\n        return new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.SessionContextDialogs({\n            translator: translator !== null && translator !== void 0 ? translator : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.nullTranslator\n        });\n    }\n};\n/**\n * Utility commands\n */\nconst utilityCommands = {\n    id: '@jupyterlab/apputils-extension:utilityCommands',\n    description: 'Adds meta commands to run set of other commands.',\n    requires: [_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette],\n    autoStart: true,\n    activate: (app, translator, palette) => {\n        const trans = translator.load('jupyterlab');\n        const { commands } = app;\n        commands.addCommand(CommandIDs.runFirstEnabled, {\n            label: trans.__('Run First Enabled Command'),\n            execute: args => {\n                const commands = args.commands;\n                const commandArgs = args.args;\n                const argList = Array.isArray(args);\n                for (let i = 0; i < commands.length; i++) {\n                    const cmd = commands[i];\n                    const arg = argList ? commandArgs[i] : commandArgs;\n                    if (app.commands.isEnabled(cmd, arg)) {\n                        return app.commands.execute(cmd, arg);\n                    }\n                }\n            }\n        });\n        // Add a command for taking lists of commands and command arguments\n        // and running all the enabled commands.\n        commands.addCommand(CommandIDs.runAllEnabled, {\n            label: trans.__('Run All Enabled Commands Passed as Args'),\n            execute: async (args) => {\n                var _a, _b;\n                const commands = (_a = args.commands) !== null && _a !== void 0 ? _a : [];\n                const commandArgs = args.args;\n                const argList = Array.isArray(args);\n                const errorIfNotEnabled = (_b = args.errorIfNotEnabled) !== null && _b !== void 0 ? _b : false;\n                for (let i = 0; i < commands.length; i++) {\n                    const cmd = commands[i];\n                    const arg = argList ? commandArgs[i] : commandArgs;\n                    if (app.commands.isEnabled(cmd, arg)) {\n                        await app.commands.execute(cmd, arg);\n                    }\n                    else {\n                        if (errorIfNotEnabled) {\n                            console.error(`${cmd} is not enabled.`);\n                        }\n                    }\n                }\n            },\n            isEnabled: args => {\n                var _a;\n                const commands = (_a = args.commands) !== null && _a !== void 0 ? _a : [];\n                const commandArgs = args.args;\n                const argList = Array.isArray(args);\n                return commands.some((cmd, idx) => app.commands.isEnabled(cmd, argList ? commandArgs[idx] : commandArgs));\n            }\n        });\n        commands.addCommand(CommandIDs.displayShortcuts, {\n            label: trans.__('Show Keyboard Shortcuts…'),\n            caption: trans.__('Show relevant keyboard shortcuts for the current active widget'),\n            execute: args => {\n                var _a;\n                const currentWidget = app.shell.currentWidget;\n                const included = currentWidget === null || currentWidget === void 0 ? void 0 : currentWidget.node.contains(document.activeElement);\n                if (!included && currentWidget instanceof _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.MainAreaWidget) {\n                    const currentNode = (_a = currentWidget.content.node) !== null && _a !== void 0 ? _a : currentWidget === null || currentWidget === void 0 ? void 0 : currentWidget.node;\n                    currentNode === null || currentNode === void 0 ? void 0 : currentNode.focus();\n                }\n                const options = { commands, trans };\n                return (0,_shortcuts__WEBPACK_IMPORTED_MODULE_11__.displayShortcuts)(options);\n            }\n        });\n        if (palette) {\n            const category = trans.__('Help');\n            palette.addItem({ command: CommandIDs.displayShortcuts, category });\n        }\n    }\n};\n/**\n * The default HTML sanitizer.\n */\nconst sanitizer = {\n    id: '@jupyterlab/apputils-extension:sanitizer',\n    description: 'Provides the HTML sanitizer.',\n    autoStart: true,\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ISanitizer,\n    requires: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_3__.ISettingRegistry],\n    activate: (app, settings) => {\n        const sanitizer = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Sanitizer();\n        const loadSetting = (setting) => {\n            const allowedSchemes = setting.get('allowedSchemes')\n                .composite;\n            const autolink = setting.get('autolink').composite;\n            if (allowedSchemes) {\n                sanitizer.setAllowedSchemes(allowedSchemes);\n            }\n            sanitizer.setAutolink(autolink);\n        };\n        // Wait for the application to be restored and\n        // for the settings for this plugin to be loaded\n        settings\n            .load('@jupyterlab/apputils-extension:sanitizer')\n            .then(setting => {\n            // Read the settings\n            loadSetting(setting);\n            // Listen for your plugin setting changes using Signal\n            setting.changed.connect(loadSetting);\n        })\n            .catch(reason => {\n            console.error(`Failed to load sanitizer settings:`, reason);\n        });\n        return sanitizer;\n    }\n};\n/**\n * Export the plugins as default.\n */\nconst plugins = [\n    _announcements__WEBPACK_IMPORTED_MODULE_12__.announcements,\n    _statusbarplugin__WEBPACK_IMPORTED_MODULE_13__.kernelStatus,\n    _notificationplugin__WEBPACK_IMPORTED_MODULE_14__.notificationPlugin,\n    palette,\n    paletteRestorer,\n    print,\n    resolver,\n    _statusbarplugin__WEBPACK_IMPORTED_MODULE_13__.runningSessionsStatus,\n    sanitizer,\n    _settingsplugin__WEBPACK_IMPORTED_MODULE_15__.settingsPlugin,\n    state,\n    splash,\n    sessionDialogs,\n    _themesplugins__WEBPACK_IMPORTED_MODULE_16__.themesPlugin,\n    _themesplugins__WEBPACK_IMPORTED_MODULE_16__.themesPaletteMenuPlugin,\n    toggleHeader,\n    _toolbarregistryplugin__WEBPACK_IMPORTED_MODULE_17__.toolbarRegistry,\n    utilityCommands,\n    _workspacesplugin__WEBPACK_IMPORTED_MODULE_18__.workspacesPlugin\n];\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (plugins);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/notificationplugin.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/notificationplugin.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   notificationPlugin: () => (/* binding */ notificationPlugin)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/settingregistry */ \"webpack/sharing/consume/default/@jupyterlab/settingregistry/@jupyterlab/settingregistry\");\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/statusbar */ \"webpack/sharing/consume/default/@jupyterlab/statusbar/@jupyterlab/statusbar\");\n/* harmony import */ var _jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-dom/client */ \"../node_modules/react-dom/client.js\");\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n\n\n\n\n\n\n\n\n/**\n * Toast close button class\n */\nconst TOAST_CLOSE_BUTTON_CLASS = 'jp-Notification-Toast-Close';\n/**\n * Toast close button class right margin required due to custom hover effect\n */\nconst TOAST_CLOSE_BUTTON_MARGIN_CLASS = 'jp-Notification-Toast-Close-Margin';\n/**\n * Maximal number of characters displayed in a notification.\n */\nconst MAX_MESSAGE_LENGTH = 140;\nvar CommandIDs;\n(function (CommandIDs) {\n    /**\n     * Dismiss a notification\n     */\n    CommandIDs.dismiss = 'apputils:dismiss-notification';\n    /**\n     * Display all notifications\n     */\n    CommandIDs.display = 'apputils:display-notifications';\n    /**\n     * Create a notification\n     */\n    CommandIDs.notify = 'apputils:notify';\n    /**\n     * Update a notification\n     */\n    CommandIDs.update = 'apputils:update-notification';\n})(CommandIDs || (CommandIDs = {}));\n/**\n * Half spacing between subitems in a status item.\n */\nconst HALF_SPACING = 4;\n/**\n * Notification center view\n */\nfunction NotificationCenter(props) {\n    const { manager, onClose, trans } = props;\n    // Markdown parsed notifications\n    const [notifications, setNotifications] = react__WEBPACK_IMPORTED_MODULE_7__.useState([]);\n    // Load asynchronously react-toastify icons\n    const [icons, setIcons] = react__WEBPACK_IMPORTED_MODULE_7__.useState(null);\n    react__WEBPACK_IMPORTED_MODULE_7__.useEffect(() => {\n        async function onChanged() {\n            setNotifications(await Promise.all(manager.notifications.map(async (n) => {\n                return Object.freeze({\n                    ...n\n                });\n            })));\n        }\n        if (notifications.length !== manager.count) {\n            void onChanged();\n        }\n        manager.changed.connect(onChanged);\n        return () => {\n            manager.changed.disconnect(onChanged);\n        };\n    }, [manager]);\n    react__WEBPACK_IMPORTED_MODULE_7__.useEffect(() => {\n        Private.getIcons()\n            .then(toastifyIcons => {\n            setIcons(toastifyIcons);\n        })\n            .catch(r => {\n            console.error(`Failed to get react-toastify icons:\\n${r}`);\n        });\n    }, []);\n    return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.UseSignal, { signal: manager.changed }, () => (react__WEBPACK_IMPORTED_MODULE_7__.createElement(react__WEBPACK_IMPORTED_MODULE_7__.Fragment, null,\n        react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"h2\", { className: \"jp-Notification-Header jp-Toolbar\" },\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", { className: \"jp-Toolbar-item\" }, manager.count > 0\n                ? trans._n('%1 notification', '%1 notifications', manager.count)\n                : trans.__('No notifications')),\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"span\", { className: \"jp-Toolbar-item jp-Toolbar-spacer\" }),\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButtonComponent, { actualOnClick: true, onClick: () => {\n                    manager.dismiss();\n                }, icon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.deleteIcon, tooltip: trans.__('Dismiss all notifications'), enabled: manager.count > 0 }),\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.ToolbarButtonComponent, { actualOnClick: true, onClick: onClose, icon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.closeIcon, tooltip: trans.__('Hide notifications') })),\n        react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"ol\", { className: \"jp-Notification-List\" }, notifications.map(notification => {\n            var _a;\n            const { id, message, type, options } = notification;\n            const toastType = type === 'in-progress' ? 'default' : type;\n            const closeNotification = () => {\n                manager.dismiss(id);\n            };\n            const icon = type === 'default'\n                ? null\n                : type === 'in-progress'\n                    ? (_a = icons === null || icons === void 0 ? void 0 : icons.spinner) !== null && _a !== void 0 ? _a : null\n                    : icons && icons[type];\n            return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"li\", { className: \"jp-Notification-List-Item\", key: notification.id, onClick: event => {\n                    // Stop propagation to avoid closing the popup on click\n                    event.stopPropagation();\n                } },\n                react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: `Toastify__toast Toastify__toast-theme--light Toastify__toast--${toastType} jp-Notification-Toast-${toastType}` },\n                    react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: \"Toastify__toast-body\" },\n                        icon && (react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: \"Toastify__toast-icon\" }, icon({ theme: 'light', type: toastType }))),\n                        react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", null, Private.createContent(message, closeNotification, options.actions))),\n                    react__WEBPACK_IMPORTED_MODULE_7__.createElement(Private.CloseButton, { close: closeNotification, closeIcon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.deleteIcon.react, title: trans.__('Dismiss notification'), closeIconMargin: true }))));\n        }))))));\n}\n/**\n * Status widget model\n */\nclass NotificationStatusModel extends _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.VDomModel {\n    constructor(manager) {\n        super();\n        this.manager = manager;\n        this._highlight = false;\n        this._listOpened = false;\n        this._doNotDisturbMode = false;\n        this._count = manager.count;\n        this.manager.changed.connect(this.onNotificationChanged, this);\n    }\n    /**\n     * Number of notifications.\n     */\n    get count() {\n        return this._count;\n    }\n    /**\n     * Whether to silence all notifications or not.\n     */\n    get doNotDisturbMode() {\n        return this._doNotDisturbMode;\n    }\n    set doNotDisturbMode(v) {\n        this._doNotDisturbMode = v;\n    }\n    /**\n     * Whether to highlight the status widget or not.\n     */\n    get highlight() {\n        return this._highlight;\n    }\n    /**\n     * Whether the popup is opened or not.\n     */\n    get listOpened() {\n        return this._listOpened;\n    }\n    set listOpened(v) {\n        this._listOpened = v;\n        if (this._listOpened || this._highlight) {\n            this._highlight = false;\n        }\n        this.stateChanged.emit();\n    }\n    onNotificationChanged(_, change) {\n        // Set private attribute to trigger only once the signal emission\n        this._count = this.manager.count;\n        const { autoClose } = change.notification.options;\n        const noToast = this.doNotDisturbMode ||\n            (typeof autoClose === 'number' && autoClose <= 0);\n        // Highlight if\n        //   the list is not opened (the style change if list is opened due to clickedItem style in statusbar.)\n        //   the change type is not removed\n        //   the notification will be hidden\n        if (!this._listOpened && change.type !== 'removed' && noToast) {\n            this._highlight = true;\n        }\n        this.stateChanged.emit();\n    }\n}\n/**\n * Status view\n */\nfunction NotificationStatus(props) {\n    return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.GroupItem, { spacing: HALF_SPACING, onClick: () => {\n            props.onClick();\n        }, title: props.count > 0\n            ? props.trans._n('%1 notification', '%1 notifications', props.count)\n            : props.trans.__('No notifications') },\n        react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.TextItem, { className: \"jp-Notification-Status-Text\", source: `${props.count}` }),\n        react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.bellIcon.react, { top: '2px', stylesheet: 'statusBar' })));\n}\n/**\n * Add notification center and toast\n */\nconst notificationPlugin = {\n    id: '@jupyterlab/apputils-extension:notification',\n    description: 'Add the notification center and its status indicator.',\n    autoStart: true,\n    optional: [_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.IStatusBar, _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__.ISettingRegistry, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.ITranslator],\n    activate: (app, statusBar, settingRegistry, translator) => {\n        Private.translator = translator !== null && translator !== void 0 ? translator : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.nullTranslator;\n        const trans = Private.translator.load('jupyterlab');\n        const model = new NotificationStatusModel(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager);\n        model.doNotDisturbMode = false;\n        if (settingRegistry) {\n            void Promise.all([\n                settingRegistry.load(notificationPlugin.id),\n                app.restored\n            ]).then(([plugin]) => {\n                const updateSettings = () => {\n                    model.doNotDisturbMode = plugin.get('doNotDisturbMode')\n                        .composite;\n                };\n                updateSettings();\n                plugin.changed.connect(updateSettings);\n            });\n        }\n        app.commands.addCommand(CommandIDs.notify, {\n            label: trans.__('Emit a notification'),\n            caption: trans.__('Notification is described by {message: string, type?: string, options?: {autoClose?: number | false, actions: {label: string, commandId: string, args?: ReadOnlyJSONObject, caption?: string, className?: string}[], data?: ReadOnlyJSONValue}}.'),\n            execute: args => {\n                var _a;\n                const { message, type } = args;\n                const options = (_a = args.options) !== null && _a !== void 0 ? _a : {};\n                return _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.notify(message, type !== null && type !== void 0 ? type : 'default', {\n                    ...options,\n                    actions: options.actions\n                        ? options.actions.map((action) => {\n                            return {\n                                ...action,\n                                callback: () => {\n                                    app.commands\n                                        .execute(action.commandId, action.args)\n                                        .catch(r => {\n                                        console.error(`Failed to executed '${action.commandId}':\\n${r}`);\n                                    });\n                                }\n                            };\n                        })\n                        : null\n                });\n            }\n        });\n        app.commands.addCommand(CommandIDs.update, {\n            label: trans.__('Update a notification'),\n            caption: trans.__('Notification is described by {id: string, message: string, type?: string, options?: {autoClose?: number | false, actions: {label: string, commandId: string, args?: ReadOnlyJSONObject, caption?: string, className?: string}[], data?: ReadOnlyJSONValue}}.'),\n            execute: args => {\n                const { id, message, type, ...options } = args;\n                return _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.update({\n                    id,\n                    message,\n                    type: type !== null && type !== void 0 ? type : 'default',\n                    ...options,\n                    actions: options.actions\n                        ? options.actions.map((action) => {\n                            return {\n                                ...action,\n                                callback: () => {\n                                    app.commands\n                                        .execute(action.commandId, action.args)\n                                        .catch(r => {\n                                        console.error(`Failed to executed '${action.commandId}':\\n${r}`);\n                                    });\n                                }\n                            };\n                        })\n                        : null\n                });\n            }\n        });\n        app.commands.addCommand(CommandIDs.dismiss, {\n            label: trans.__('Dismiss a notification'),\n            execute: args => {\n                const { id } = args;\n                _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.dismiss(id);\n            }\n        });\n        let popup = null;\n        model.listOpened = false;\n        const notificationList = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ReactWidget.create(react__WEBPACK_IMPORTED_MODULE_7__.createElement(NotificationCenter, { manager: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager, onClose: () => {\n                popup === null || popup === void 0 ? void 0 : popup.dispose();\n            }, trans: trans }));\n        notificationList.addClass('jp-Notification-Center');\n        async function onNotification(manager, change) {\n            var _a;\n            if (model.doNotDisturbMode || (popup !== null && !popup.isDisposed)) {\n                return;\n            }\n            const { message, type, options, id } = change.notification;\n            if (typeof options.autoClose === 'number' && options.autoClose <= 0) {\n                // If the notification is silent, bail early.\n                return;\n            }\n            switch (change.type) {\n                case 'added':\n                    await Private.createToast(id, message, type, options);\n                    break;\n                case 'updated':\n                    {\n                        const toast = await Private.toast();\n                        const actions = options.actions;\n                        const autoClose = (_a = options.autoClose) !== null && _a !== void 0 ? _a : (actions && actions.length > 0 ? false : null);\n                        if (toast.isActive(id)) {\n                            // Update existing toast\n                            const closeToast = () => {\n                                // Dismiss the displayed toast\n                                toast.dismiss(id);\n                                // Dismiss the notification from the queue\n                                manager.dismiss(id);\n                            };\n                            toast.update(id, {\n                                type: type === 'in-progress' ? null : type,\n                                isLoading: type === 'in-progress',\n                                autoClose: autoClose,\n                                render: Private.createContent(message, closeToast, options.actions)\n                            });\n                        }\n                        else {\n                            // Needs to recreate a closed toast\n                            await Private.createToast(id, message, type, options);\n                        }\n                    }\n                    break;\n                case 'removed':\n                    await Private.toast().then(t => {\n                        t.dismiss(id);\n                    });\n                    break;\n            }\n        }\n        _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.changed.connect(onNotification);\n        const displayNotifications = () => {\n            if (popup) {\n                popup.dispose();\n                popup = null;\n            }\n            else {\n                popup = (0,_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.showPopup)({\n                    body: notificationList,\n                    anchor: notificationStatus,\n                    align: 'right',\n                    hasDynamicSize: true,\n                    startHidden: true\n                });\n                // Dismiss all toasts when opening the notification center\n                Private.toast()\n                    .then(t => {\n                    t.dismiss();\n                })\n                    .catch(r => {\n                    console.error(`Failed to dismiss all toasts:\\n${r}`);\n                })\n                    .finally(() => {\n                    popup === null || popup === void 0 ? void 0 : popup.launch();\n                    // Focus on the pop-up\n                    notificationList.node.focus();\n                    popup === null || popup === void 0 ? void 0 : popup.disposed.connect(() => {\n                        model.listOpened = false;\n                        popup = null;\n                    });\n                });\n            }\n            model.listOpened = popup !== null;\n        };\n        app.commands.addCommand(CommandIDs.display, {\n            label: trans.__('Show Notifications'),\n            execute: displayNotifications\n        });\n        const notificationStatus = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ReactWidget.create(react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.UseSignal, { signal: model.stateChanged }, () => {\n            if (model.highlight || (popup && !popup.isDisposed)) {\n                notificationStatus.addClass('jp-mod-selected');\n            }\n            else {\n                notificationStatus.removeClass('jp-mod-selected');\n            }\n            return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(NotificationStatus, { count: model.count, highlight: model.highlight, trans: trans, onClick: displayNotifications }));\n        }));\n        notificationStatus.addClass('jp-Notification-Status');\n        if (statusBar) {\n            statusBar.registerStatusItem(notificationPlugin.id, {\n                item: notificationStatus,\n                align: 'right',\n                rank: -1\n            });\n        }\n        else {\n            // if the status bar is not available, position the notification\n            // status in the bottom right corner of the page\n            notificationStatus.node.style.position = 'fixed';\n            notificationStatus.node.style.bottom = '0';\n            // 10px is the default padding for the status bar\n            notificationStatus.node.style.right = '10px';\n            _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget.attach(notificationStatus, document.body);\n            notificationStatus.show();\n        }\n    }\n};\nvar Private;\n(function (Private) {\n    /**\n     * Translator object for private namespace\n     */\n    Private.translator = _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.nullTranslator;\n    /**\n     * Pointer to asynchronously loaded react-toastify\n     */\n    let toastify = null;\n    function CloseButton(props) {\n        var _a;\n        return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"button\", { className: `jp-Button jp-mod-minimal ${TOAST_CLOSE_BUTTON_CLASS}${props.closeIconMargin ? ` ${TOAST_CLOSE_BUTTON_MARGIN_CLASS}` : ''}`, title: (_a = props.title) !== null && _a !== void 0 ? _a : '', onClick: props.close },\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(props.closeIcon, { className: \"jp-icon-hover\", tag: \"span\" })));\n    }\n    Private.CloseButton = CloseButton;\n    function ToastifyCloseButton(props) {\n        const trans = Private.translator.load('jupyterlab');\n        return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(CloseButton, { close: props.closeToast, closeIcon: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.closeIcon.react, title: trans.__('Hide notification') }));\n    }\n    let waitForToastify = null;\n    /**\n     * Asynchronously load the toast container\n     *\n     * @returns The toast object\n     */\n    async function toast() {\n        if (waitForToastify === null) {\n            waitForToastify = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_5__.PromiseDelegate();\n        }\n        else {\n            await waitForToastify.promise;\n        }\n        if (toastify === null) {\n            toastify = await __webpack_require__.e(/*! import() */ \"webpack_sharing_consume_default_react-toastify_react-toastify\").then(__webpack_require__.t.bind(__webpack_require__, /*! react-toastify */ \"webpack/sharing/consume/default/react-toastify/react-toastify\", 23));\n            const container = document.body.appendChild(document.createElement('div'));\n            container.id = 'react-toastify-container';\n            const root = (0,react_dom_client__WEBPACK_IMPORTED_MODULE_8__.createRoot)(container);\n            root.render(react__WEBPACK_IMPORTED_MODULE_7__.createElement(toastify.ToastContainer, { draggable: false, closeOnClick: false, hideProgressBar: true, newestOnTop: true, pauseOnFocusLoss: true, pauseOnHover: true, position: \"bottom-right\", className: \"jp-toastContainer\", transition: toastify.Slide, closeButton: ToastifyCloseButton }));\n            waitForToastify.resolve();\n        }\n        return toastify.toast;\n    }\n    Private.toast = toast;\n    /**\n     * react-toastify icons loader\n     */\n    async function getIcons() {\n        if (toastify === null) {\n            await toast();\n        }\n        return toastify.Icons;\n    }\n    Private.getIcons = getIcons;\n    const displayType2Class = {\n        accent: 'jp-mod-accept',\n        link: 'jp-mod-link',\n        warn: 'jp-mod-warn',\n        default: ''\n    };\n    /**\n     * Create a button with customized callback in a toast\n     */\n    function ToastButton({ action, closeToast }) {\n        var _a, _b;\n        const clickHandler = (event) => {\n            action.callback(event);\n            if (!event.defaultPrevented) {\n                closeToast();\n            }\n        };\n        const classes = [\n            'jp-toast-button',\n            displayType2Class[(_a = action.displayType) !== null && _a !== void 0 ? _a : 'default']\n        ].join(' ');\n        return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_4__.Button, { title: (_b = action.caption) !== null && _b !== void 0 ? _b : action.label, className: classes, onClick: clickHandler, small: true }, action.label));\n    }\n    /**\n     * Helper function to construct the notification content\n     *\n     * @param message Message to print in the notification\n     * @param closeHandler Function closing the notification\n     * @param actions Toast actions\n     */\n    function createContent(message, closeHandler, actions) {\n        var _a;\n        const shortenMessage = message.length > MAX_MESSAGE_LENGTH\n            ? message.slice(0, MAX_MESSAGE_LENGTH) + '…'\n            : message;\n        return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(react__WEBPACK_IMPORTED_MODULE_7__.Fragment, null,\n            react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: \"jp-toast-message\" }, shortenMessage.split('\\n').map((part, index) => (react__WEBPACK_IMPORTED_MODULE_7__.createElement(react__WEBPACK_IMPORTED_MODULE_7__.Fragment, { key: `part-${index}` },\n                index > 0 ? react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"br\", null) : null,\n                part)))),\n            ((_a = actions === null || actions === void 0 ? void 0 : actions.length) !== null && _a !== void 0 ? _a : 0) > 0 && (react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: \"jp-toast-buttonBar\" },\n                react__WEBPACK_IMPORTED_MODULE_7__.createElement(\"div\", { className: \"jp-toast-spacer\" }),\n                actions.map((action, idx) => {\n                    return (react__WEBPACK_IMPORTED_MODULE_7__.createElement(ToastButton, { key: 'button-' + idx, action: action, closeToast: closeHandler }));\n                })))));\n    }\n    Private.createContent = createContent;\n    /**\n     * Create a toast notification\n     *\n     * @param toastId Toast unique id\n     * @param message Toast message\n     * @param type Toast type\n     * @param options Toast options\n     * @returns Toast id\n     */\n    async function createToast(toastId, message, type, options = {}) {\n        const { actions, autoClose, data } = options;\n        const t = await toast();\n        const toastOptions = {\n            autoClose: autoClose !== null && autoClose !== void 0 ? autoClose : (actions && actions.length > 0 ? false : undefined),\n            data: data,\n            className: `jp-Notification-Toast-${type}`,\n            toastId,\n            type: type === 'in-progress' ? null : type,\n            isLoading: type === 'in-progress'\n        };\n        return t(({ closeToast }) => createContent(message, () => {\n            if (closeToast)\n                closeToast();\n            _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Notification.manager.dismiss(toastId);\n        }, actions), toastOptions);\n    }\n    Private.createToast = createToast;\n})(Private || (Private = {}));\n//# sourceMappingURL=notificationplugin.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/notificationplugin.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/palette.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/palette.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   Palette: () => (/* binding */ Palette)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/commands */ \"webpack/sharing/consume/default/@lumino/commands/@lumino/commands\");\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_commands__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/disposable */ \"webpack/sharing/consume/default/@lumino/disposable/@lumino/disposable\");\n/* harmony import */ var _lumino_disposable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_disposable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_6__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n/**\n * The command IDs used by the apputils extension.\n */\nvar CommandIDs;\n(function (CommandIDs) {\n    CommandIDs.activate = 'apputils:activate-command-palette';\n})(CommandIDs || (CommandIDs = {}));\nconst PALETTE_PLUGIN_ID = '@jupyterlab/apputils-extension:palette';\n/**\n * A thin wrapper around the `CommandPalette` class to conform with the\n * JupyterLab interface for the application-wide command palette.\n */\nclass Palette {\n    /**\n     * Create a palette instance.\n     */\n    constructor(palette, translator) {\n        this.translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n        const trans = this.translator.load('jupyterlab');\n        this._palette = palette;\n        this._palette.title.label = '';\n        this._palette.title.caption = trans.__('Command Palette');\n    }\n    /**\n     * The placeholder text of the command palette's search input.\n     */\n    set placeholder(placeholder) {\n        this._palette.inputNode.placeholder = placeholder;\n    }\n    get placeholder() {\n        return this._palette.inputNode.placeholder;\n    }\n    /**\n     * Activate the command palette for user input.\n     */\n    activate() {\n        this._palette.activate();\n    }\n    /**\n     * Add a command item to the command palette.\n     *\n     * @param options - The options for creating the command item.\n     *\n     * @returns A disposable that will remove the item from the palette.\n     */\n    addItem(options) {\n        const item = this._palette.addItem(options);\n        return new _lumino_disposable__WEBPACK_IMPORTED_MODULE_5__.DisposableDelegate(() => {\n            this._palette.removeItem(item);\n        });\n    }\n}\n/**\n * A namespace for `Palette` statics.\n */\n(function (Palette) {\n    /**\n     * Activate the command palette.\n     */\n    function activate(app, translator, settingRegistry) {\n        const { commands, shell } = app;\n        const trans = translator.load('jupyterlab');\n        const palette = Private.createPalette(app, translator);\n        const modalPalette = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ModalCommandPalette({ commandPalette: palette });\n        let modal = false;\n        palette.node.setAttribute('role', 'region');\n        palette.node.setAttribute('aria-label', trans.__('Command Palette Section'));\n        shell.add(palette, 'left', { rank: 300, type: 'Command Palette' });\n        if (settingRegistry) {\n            const loadSettings = settingRegistry.load(PALETTE_PLUGIN_ID);\n            const updateSettings = (settings) => {\n                const newModal = settings.get('modal').composite;\n                if (modal && !newModal) {\n                    palette.parent = null;\n                    modalPalette.detach();\n                    shell.add(palette, 'left', { rank: 300, type: 'Command Palette' });\n                }\n                else if (!modal && newModal) {\n                    palette.parent = null;\n                    modalPalette.palette = palette;\n                    palette.show();\n                    modalPalette.attach();\n                }\n                modal = newModal;\n            };\n            Promise.all([loadSettings, app.restored])\n                .then(([settings]) => {\n                updateSettings(settings);\n                settings.changed.connect(settings => {\n                    updateSettings(settings);\n                });\n            })\n                .catch((reason) => {\n                console.error(reason.message);\n            });\n        }\n        // Show the current palette shortcut in its title.\n        const updatePaletteTitle = () => {\n            const binding = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_3__.find)(app.commands.keyBindings, b => b.command === CommandIDs.activate);\n            if (binding) {\n                const ks = binding.keys.map(_lumino_commands__WEBPACK_IMPORTED_MODULE_4__.CommandRegistry.formatKeystroke).join(', ');\n                palette.title.caption = trans.__('Commands (%1)', ks);\n            }\n            else {\n                palette.title.caption = trans.__('Commands');\n            }\n        };\n        updatePaletteTitle();\n        app.commands.keyBindingChanged.connect(() => {\n            updatePaletteTitle();\n        });\n        commands.addCommand(CommandIDs.activate, {\n            execute: () => {\n                if (modal) {\n                    modalPalette.activate();\n                }\n                else {\n                    shell.activateById(palette.id);\n                }\n            },\n            label: trans.__('Activate Command Palette')\n        });\n        palette.inputNode.placeholder = trans.__('SEARCH');\n        return new Palette(palette, translator);\n    }\n    Palette.activate = activate;\n    /**\n     * Restore the command palette.\n     */\n    function restore(app, restorer, translator) {\n        const palette = Private.createPalette(app, translator);\n        // Let the application restorer track the command palette for restoration of\n        // application state (e.g. setting the command palette as the current side bar\n        // widget).\n        restorer.add(palette, 'command-palette');\n    }\n    Palette.restore = restore;\n})(Palette || (Palette = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * The private command palette instance.\n     */\n    let palette;\n    /**\n     * Create the application-wide command palette.\n     */\n    function createPalette(app, translator) {\n        if (!palette) {\n            // use a renderer tweaked to use inline svg icons\n            palette = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.CommandPalette({\n                commands: app.commands,\n                renderer: _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__.CommandPaletteSvg.defaultRenderer\n            });\n            palette.id = 'command-palette';\n            palette.title.icon = _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__.paletteIcon;\n            const trans = translator.load('jupyterlab');\n            palette.title.label = trans.__('Commands');\n        }\n        return palette;\n    }\n    Private.createPalette = createPalette;\n})(Private || (Private = {}));\n//# sourceMappingURL=palette.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/palette.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/settingconnector.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/settingconnector.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   SettingConnector: () => (/* binding */ SettingConnector)\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_statedb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/statedb */ \"webpack/sharing/consume/default/@jupyterlab/statedb/@jupyterlab/statedb\");\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_polling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/polling */ \"webpack/sharing/consume/default/@lumino/polling/@lumino/polling\");\n/* harmony import */ var _lumino_polling__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_polling__WEBPACK_IMPORTED_MODULE_2__);\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n\n\n/**\n * A data connector for fetching settings.\n *\n * #### Notes\n * This connector adds a query parameter to the base services setting manager.\n */\nclass SettingConnector extends _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_1__.DataConnector {\n    constructor(connector) {\n        super();\n        this._throttlers = Object.create(null);\n        this._connector = connector;\n    }\n    /**\n     * Fetch settings for a plugin.\n     * @param id - The plugin ID\n     *\n     * #### Notes\n     * The REST API requests are throttled at one request per plugin per 100ms.\n     */\n    fetch(id) {\n        const throttlers = this._throttlers;\n        if (!(id in throttlers)) {\n            throttlers[id] = new _lumino_polling__WEBPACK_IMPORTED_MODULE_2__.Throttler(() => this._connector.fetch(id), 100);\n        }\n        return throttlers[id].invoke();\n    }\n    async list(query = 'all') {\n        const { isDisabled } = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PageConfig.Extension;\n        const { ids, values } = await this._connector.list(query === 'ids' ? 'ids' : undefined);\n        if (query === 'all') {\n            return { ids, values };\n        }\n        if (query === 'ids') {\n            return { ids };\n        }\n        return {\n            ids: ids.filter(id => !isDisabled(id)),\n            values: values.filter(({ id }) => !isDisabled(id))\n        };\n    }\n    async save(id, raw) {\n        await this._connector.save(id, raw);\n    }\n}\n//# sourceMappingURL=settingconnector.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/settingconnector.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/settingsplugin.js":
/*!****************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/settingsplugin.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   settingsPlugin: () => (/* binding */ settingsPlugin)\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_settingregistry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/settingregistry */ \"webpack/sharing/consume/default/@jupyterlab/settingregistry/@jupyterlab/settingregistry\");\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _settingconnector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingconnector */ \"../node_modules/@jupyterlab/apputils-extension/lib/settingconnector.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n/**\n * The default setting registry provider.\n */\nconst settingsPlugin = {\n    id: '@jupyterlab/apputils-extension:settings',\n    description: 'Provides the setting registry.',\n    activate: async (app) => {\n        const { isDisabled } = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PageConfig.Extension;\n        const connector = new _settingconnector__WEBPACK_IMPORTED_MODULE_2__.SettingConnector(app.serviceManager.settings);\n        // On startup, check if a plugin is available in the application.\n        // This helps avoid loading plugin files from other lab-based applications\n        // that have placed their schemas next to the JupyterLab schemas. Different lab-based\n        // applications might not have the same set of plugins loaded on the page.\n        // As an example this helps prevent having new toolbar items added by another application\n        // appear in JupyterLab as a side-effect when they are defined via the settings system.\n        const registry = new _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__.SettingRegistry({\n            connector,\n            plugins: (await connector.list('active')).values.filter(value => app.hasPlugin(value.id))\n        });\n        // If there are plugins that have schemas that are not in the setting\n        // registry after the application has restored, try to load them manually\n        // because otherwise, its settings will never become available in the\n        // setting registry.\n        void app.restored.then(async () => {\n            const plugins = await connector.list('ids');\n            plugins.ids.forEach(async (id) => {\n                if (!app.hasPlugin(id) || isDisabled(id) || id in registry.plugins) {\n                    return;\n                }\n                try {\n                    await registry.load(id);\n                }\n                catch (error) {\n                    console.warn(`Settings failed to load for (${id})`, error);\n                    if (!app.isPluginActivated(id)) {\n                        console.warn(`If 'jupyter.lab.transform=true' in the plugin schema, this ` +\n                            `may happen if {autoStart: false} in (${id}) or if it is ` +\n                            `one of the deferredExtensions in page config.`);\n                    }\n                }\n            });\n        });\n        return registry;\n    },\n    autoStart: true,\n    provides: _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_1__.ISettingRegistry\n};\n//# sourceMappingURL=settingsplugin.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/settingsplugin.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/shortcuts.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/shortcuts.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   displayShortcuts: () => (/* binding */ displayShortcuts)\n/* harmony export */ });\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/commands */ \"webpack/sharing/consume/default/@lumino/commands/@lumino/commands\");\n/* harmony import */ var _lumino_commands__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_commands__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/domutils */ \"webpack/sharing/consume/default/@lumino/domutils/@lumino/domutils\");\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_domutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_3__);\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n\n\n\n/**\n * The class name for each row of ContextShortcutTable\n */\nconst SHORTCUT_TABLE_ROW_CLASS = 'jp-ContextualShortcut-TableRow';\n/**\n * The class name for the last row of ContextShortcutTable\n */\nconst SHORTCUT_TABLE_LAST_ROW_CLASS = 'jp-ContextualShortcut-TableLastRow';\n/**\n * The class name for each item of ContextShortcutTable\n */\nconst SHORTCUT_TABLE_ITEM_CLASS = 'jp-ContextualShortcut-TableItem';\n/**\n * The class name for each button-like symbol representing a key used in a shortcut in the ContextShortcutTable\n */\nconst SHORTCUT_KEY_CLASS = 'jp-ContextualShortcut-Key';\nfunction displayShortcuts(options) {\n    const { commands, trans, activeElement } = options;\n    const elt = activeElement !== null && activeElement !== void 0 ? activeElement : document.activeElement;\n    /**\n     * Find the distance from the target node to the first matching node.\n     *\n     * Based on Lumino private function commands.Private.targetDistance\n     * This traverses the DOM path from `elt` to the root\n     * computes the distance from `elt` to the first node which matches\n     * the CSS selector. If no match is found, `-1` is returned.\n     *\n     * It also stops traversal if the `data-lm-suppress-shortcuts` or\n     * `data-p-suppress-shortcuts` attributes are found.\n     */\n    function formatKeys(keys) {\n        const topContainer = [];\n        keys.forEach((key, index) => {\n            const container = [];\n            key.split(' ').forEach((ch, chIndex) => {\n                container.push(react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", { className: SHORTCUT_KEY_CLASS, key: `ch-${chIndex}` },\n                    react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"kbd\", null, ch)), react__WEBPACK_IMPORTED_MODULE_2__.createElement(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, { key: `fragment-${chIndex}` }, \" + \"));\n            });\n            topContainer.push(react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", { key: `key-${index}` }, container.slice(0, -1)), react__WEBPACK_IMPORTED_MODULE_2__.createElement(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, { key: `fragment-${index}` }, \" + \"));\n        });\n        return react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"span\", null, topContainer.slice(0, -1));\n    }\n    function capitalizeString(str) {\n        const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n        return capitalizedStr;\n    }\n    function formatLabel(b) {\n        const label = commands.label(b.command);\n        const commandID = b.command.split(':')[1];\n        const automaticLabel = commandID.split('-');\n        let capitalizedLabel = '';\n        for (let i = 0; i < automaticLabel.length; i++) {\n            const str = capitalizeString(automaticLabel[i]);\n            capitalizedLabel = capitalizedLabel + ' ' + str;\n        }\n        if (label.length > 0) {\n            return label;\n        }\n        else {\n            return capitalizedLabel;\n        }\n    }\n    function matchDistance(selector, elt) {\n        let targ = elt;\n        for (let dist = 0; targ !== null && targ !== targ.parentElement; targ = targ.parentElement, ++dist) {\n            if (targ.hasAttribute('data-lm-suppress-shortcuts')) {\n                return -1;\n            }\n            if (targ.matches(selector)) {\n                return dist;\n            }\n        }\n        return -1;\n    }\n    // Find active keybindings for target element\n    const activeBindings = new Map();\n    for (let i = 0; i < commands.keyBindings.length; i++) {\n        const kb = commands.keyBindings[i];\n        let distance = matchDistance(kb.selector, elt);\n        if (distance < 0) {\n            continue;\n        }\n        let formatted = _lumino_commands__WEBPACK_IMPORTED_MODULE_0__.CommandRegistry.formatKeystroke(kb.keys);\n        if (activeBindings.has(formatted)) {\n            let oldBinding = activeBindings.get(formatted);\n            // if the existing binding takes precedence, ignore this binding by continuing\n            if (oldBinding[0] < distance ||\n                (oldBinding[0] === distance &&\n                    _lumino_domutils__WEBPACK_IMPORTED_MODULE_1__.Selector.calculateSpecificity(oldBinding[1].selector) >\n                        _lumino_domutils__WEBPACK_IMPORTED_MODULE_1__.Selector.calculateSpecificity(kb.selector))) {\n                continue;\n            }\n        }\n        activeBindings.set(formatted, [distance, kb]);\n    }\n    // Group shortcuts by distance\n    let maxDistance = -1;\n    const groupedBindings = new Map();\n    for (let [distance, binding] of activeBindings.values()) {\n        maxDistance = Math.max(distance, maxDistance);\n        if (!groupedBindings.has(distance)) {\n            groupedBindings.set(distance, []);\n        }\n        groupedBindings.get(distance).push(binding);\n    }\n    // Display shortcuts by group\n    const bindingTable = [];\n    for (let d = 0; d <= maxDistance; d++) {\n        if (groupedBindings.has(d)) {\n            bindingTable.push(groupedBindings.get(d).map(b => (react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"tr\", { className: SHORTCUT_TABLE_ROW_CLASS, key: `${b.command}-${b.keys.join('-').replace(' ', '_')}` },\n                react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"td\", { className: SHORTCUT_TABLE_ITEM_CLASS }, formatLabel(b)),\n                react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"td\", { className: SHORTCUT_TABLE_ITEM_CLASS }, formatKeys([...b.keys]))))));\n            bindingTable.push(react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"tr\", { className: SHORTCUT_TABLE_LAST_ROW_CLASS, key: `group-${d}-last` }));\n        }\n    }\n    const body = (react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"table\", null,\n        react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"tbody\", null, bindingTable)));\n    return (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_3__.showDialog)({\n        title: trans.__('Keyboard Shortcuts'),\n        body,\n        buttons: [\n            _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_3__.Dialog.cancelButton({\n                label: trans.__('Close')\n            })\n        ]\n    });\n}\n//# sourceMappingURL=shortcuts.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/shortcuts.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/statusbarplugin.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/statusbarplugin.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   kernelStatus: () => (/* binding */ kernelStatus),\n/* harmony export */   runningSessionsStatus: () => (/* binding */ runningSessionsStatus)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/application */ \"webpack/sharing/consume/default/@jupyterlab/application/@jupyterlab/application\");\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/statusbar */ \"webpack/sharing/consume/default/@jupyterlab/statusbar/@jupyterlab/statusbar\");\n/* harmony import */ var _jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n/**\n * A plugin that provides a kernel status item to the status bar.\n */\nconst kernelStatus = {\n    id: '@jupyterlab/apputils-extension:kernel-status',\n    description: 'Provides the kernel status indicator model.',\n    autoStart: true,\n    requires: [_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.IStatusBar],\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.IKernelStatusModel,\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ISessionContextDialogs, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.ITranslator, _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.ILabShell],\n    activate: (app, statusBar, sessionDialogs_, translator_, labShell) => {\n        const translator = translator_ !== null && translator_ !== void 0 ? translator_ : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.nullTranslator;\n        const sessionDialogs = sessionDialogs_ !== null && sessionDialogs_ !== void 0 ? sessionDialogs_ : new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.SessionContextDialogs({ translator });\n        // When the status item is clicked, launch the kernel\n        // selection dialog for the current session.\n        const changeKernel = async () => {\n            if (!item.model.sessionContext) {\n                return;\n            }\n            await sessionDialogs.selectKernel(item.model.sessionContext);\n        };\n        const changeKernelOnKeyDown = async (event) => {\n            if (event.key === 'Enter' ||\n                event.key === 'Spacebar' ||\n                event.key === ' ') {\n                event.preventDefault();\n                event.stopPropagation();\n                return changeKernel();\n            }\n        };\n        // Create the status item.\n        const item = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.KernelStatus({ onClick: changeKernel, onKeyDown: changeKernelOnKeyDown }, translator);\n        const providers = new Set();\n        const addSessionProvider = (provider) => {\n            providers.add(provider);\n            if (app.shell.currentWidget) {\n                updateSession(app.shell, {\n                    newValue: app.shell.currentWidget,\n                    oldValue: null\n                });\n            }\n        };\n        function updateSession(shell, changes) {\n            var _a;\n            const { oldValue, newValue } = changes;\n            // Clean up after the old value if it exists,\n            // listen for changes to the title of the activity\n            if (oldValue) {\n                oldValue.title.changed.disconnect(onTitleChanged);\n            }\n            item.model.sessionContext =\n                (_a = [...providers]\n                    .map(provider => provider(changes.newValue))\n                    .filter(session => session !== null)[0]) !== null && _a !== void 0 ? _a : null;\n            if (newValue && item.model.sessionContext) {\n                onTitleChanged(newValue.title);\n                newValue.title.changed.connect(onTitleChanged);\n            }\n        }\n        // When the title of the active widget changes, update the label\n        // of the hover text.\n        const onTitleChanged = (title) => {\n            item.model.activityName = title.label;\n        };\n        if (labShell) {\n            labShell.currentChanged.connect(updateSession);\n        }\n        statusBar.registerStatusItem(kernelStatus.id, {\n            priority: 1,\n            item,\n            align: 'left',\n            rank: 1,\n            isActive: () => item.model.sessionContext !== null\n        });\n        return { addSessionProvider };\n    }\n};\n/*\n * A plugin providing running terminals and sessions information\n * to the status bar.\n */\nconst runningSessionsStatus = {\n    id: '@jupyterlab/apputils-extension:running-sessions-status',\n    description: 'Add the running sessions and terminals status bar item.',\n    autoStart: true,\n    requires: [_jupyterlab_statusbar__WEBPACK_IMPORTED_MODULE_2__.IStatusBar, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_3__.ITranslator],\n    activate: (app, statusBar, translator) => {\n        const item = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.RunningSessions({\n            onClick: () => app.shell.activateById('jp-running-sessions'),\n            onKeyDown: (event) => {\n                if (event.key === 'Enter' ||\n                    event.key === 'Spacebar' ||\n                    event.key === ' ') {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    app.shell.activateById('jp-running-sessions');\n                }\n            },\n            serviceManager: app.serviceManager,\n            translator\n        });\n        item.model.sessions = Array.from(app.serviceManager.sessions.running()).length;\n        item.model.terminals = Array.from(app.serviceManager.terminals.running()).length;\n        statusBar.registerStatusItem(runningSessionsStatus.id, {\n            item,\n            align: 'left',\n            rank: 0\n        });\n    }\n};\n//# sourceMappingURL=statusbarplugin.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/statusbarplugin.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/themesplugins.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/themesplugins.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   themesPaletteMenuPlugin: () => (/* binding */ themesPaletteMenuPlugin),\n/* harmony export */   themesPlugin: () => (/* binding */ themesPlugin)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/application */ \"webpack/sharing/consume/default/@jupyterlab/application/@jupyterlab/application\");\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/mainmenu */ \"webpack/sharing/consume/default/@jupyterlab/mainmenu/@jupyterlab/mainmenu\");\n/* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/settingregistry */ \"webpack/sharing/consume/default/@jupyterlab/settingregistry/@jupyterlab/settingregistry\");\n/* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _style_scrollbar_raw_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../style/scrollbar.raw.css */ \"../node_modules/@jupyterlab/apputils-extension/style/scrollbar.raw.css\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n\n\n\nvar CommandIDs;\n(function (CommandIDs) {\n    CommandIDs.changeTheme = 'apputils:change-theme';\n    CommandIDs.changePreferredLightTheme = 'apputils:change-light-theme';\n    CommandIDs.changePreferredDarkTheme = 'apputils:change-dark-theme';\n    CommandIDs.toggleAdaptiveTheme = 'apputils:adaptive-theme';\n    CommandIDs.themeScrollbars = 'apputils:theme-scrollbars';\n    CommandIDs.changeFont = 'apputils:change-font';\n    CommandIDs.incrFontSize = 'apputils:incr-font-size';\n    CommandIDs.decrFontSize = 'apputils:decr-font-size';\n})(CommandIDs || (CommandIDs = {}));\nfunction createStyleSheet(text) {\n    const style = document.createElement('style');\n    style.setAttribute('type', 'text/css');\n    style.appendChild(document.createTextNode(text));\n    return style;\n}\n/**\n * The default theme manager provider.\n */\nconst themesPlugin = {\n    id: '@jupyterlab/apputils-extension:themes',\n    description: 'Provides the theme manager.',\n    requires: [_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_4__.ISettingRegistry, _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.JupyterFrontEnd.IPaths, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ISplashScreen],\n    activate: (app, settings, paths, translator, splash) => {\n        const trans = translator.load('jupyterlab');\n        const host = app.shell;\n        const commands = app.commands;\n        const url = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.URLExt.join(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_2__.PageConfig.getBaseUrl(), paths.urls.themes);\n        const key = themesPlugin.id;\n        const manager = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ThemeManager({\n            key,\n            host,\n            settings,\n            splash: splash !== null && splash !== void 0 ? splash : undefined,\n            url\n        });\n        let scrollbarsStyleElement = null;\n        // Keep a synchronously set reference to the current theme,\n        // since the asynchronous setting of the theme in `changeTheme`\n        // can lead to an incorrect toggle on the currently used theme.\n        let currentTheme;\n        manager.themeChanged.connect((sender, args) => {\n            // Set data attributes on the application shell for the current theme.\n            currentTheme = args.newValue;\n            document.body.dataset.jpThemeLight = String(manager.isLight(currentTheme));\n            document.body.dataset.jpThemeName = currentTheme;\n            if (document.body.dataset.jpThemeScrollbars !==\n                String(manager.themeScrollbars(currentTheme))) {\n                document.body.dataset.jpThemeScrollbars = String(manager.themeScrollbars(currentTheme));\n                if (manager.themeScrollbars(currentTheme)) {\n                    if (!scrollbarsStyleElement) {\n                        scrollbarsStyleElement = createStyleSheet(_style_scrollbar_raw_css__WEBPACK_IMPORTED_MODULE_6__);\n                    }\n                    if (!scrollbarsStyleElement.parentElement) {\n                        document.body.appendChild(scrollbarsStyleElement);\n                    }\n                }\n                else {\n                    if (scrollbarsStyleElement && scrollbarsStyleElement.parentElement) {\n                        scrollbarsStyleElement.parentElement.removeChild(scrollbarsStyleElement);\n                    }\n                }\n            }\n            commands.notifyCommandChanged(CommandIDs.changeTheme);\n        });\n        commands.addCommand(CommandIDs.changeTheme, {\n            label: args => {\n                if (args.theme === undefined) {\n                    return trans.__('Switch to the provided `theme`.');\n                }\n                const theme = args['theme'];\n                const displayName = manager.getDisplayName(theme);\n                return args['isPalette']\n                    ? trans.__('Use Theme: %1', displayName)\n                    : displayName;\n            },\n            isToggled: args => args['theme'] === currentTheme,\n            execute: args => {\n                const theme = args['theme'];\n                if (theme === manager.theme) {\n                    return;\n                }\n                // Disable adaptive theme if users decide to change the theme when adaptive theme is on\n                if (manager.isToggledAdaptiveTheme()) {\n                    return manager.toggleAdaptiveTheme();\n                }\n                return manager.setTheme(theme);\n            }\n        });\n        commands.addCommand(CommandIDs.changePreferredLightTheme, {\n            label: args => {\n                if (args.theme === undefined) {\n                    return trans.__('Switch to the provided light `theme`.');\n                }\n                const theme = args['theme'];\n                const displayName = manager.getDisplayName(theme);\n                return args['isPalette']\n                    ? trans.__('Set Preferred Light Theme: %1', displayName)\n                    : displayName;\n            },\n            isToggled: args => args['theme'] === manager.preferredLightTheme,\n            execute: args => {\n                const theme = args['theme'];\n                if (theme === manager.preferredLightTheme) {\n                    return;\n                }\n                return manager.setPreferredLightTheme(theme);\n            }\n        });\n        commands.addCommand(CommandIDs.changePreferredDarkTheme, {\n            label: args => {\n                if (args.theme === undefined) {\n                    return trans.__('Switch to the provided dark `theme`.');\n                }\n                const theme = args['theme'];\n                const displayName = manager.getDisplayName(theme);\n                return args['isPalette']\n                    ? trans.__('Set Preferred Dark Theme: %1', displayName)\n                    : displayName;\n            },\n            isToggled: args => args['theme'] === manager.preferredDarkTheme,\n            execute: args => {\n                const theme = args['theme'];\n                if (theme === manager.preferredDarkTheme) {\n                    return;\n                }\n                return manager.setPreferredDarkTheme(theme);\n            }\n        });\n        commands.addCommand(CommandIDs.toggleAdaptiveTheme, {\n            // Avoid lengthy option text in menu\n            label: args => args['isPalette']\n                ? trans.__('Synchronize Styling Theme with System Settings')\n                : trans.__('Synchronize with System Settings'),\n            isToggled: () => manager.isToggledAdaptiveTheme(),\n            execute: () => {\n                manager.toggleAdaptiveTheme().catch(console.warn);\n            }\n        });\n        commands.addCommand(CommandIDs.themeScrollbars, {\n            label: trans.__('Theme Scrollbars'),\n            isToggled: () => manager.isToggledThemeScrollbars(),\n            execute: () => manager.toggleThemeScrollbars()\n        });\n        commands.addCommand(CommandIDs.changeFont, {\n            label: args => args['enabled'] ? `${args['font']}` : trans.__('waiting for fonts'),\n            isEnabled: args => args['enabled'],\n            isToggled: args => manager.getCSS(args['key']) === args['font'],\n            execute: args => manager.setCSSOverride(args['key'], args['font'])\n        });\n        commands.addCommand(CommandIDs.incrFontSize, {\n            label: args => {\n                switch (args.key) {\n                    case 'code-font-size':\n                        return trans.__('Increase Code Font Size');\n                    case 'content-font-size1':\n                        return trans.__('Increase Content Font Size');\n                    case 'ui-font-size1':\n                        return trans.__('Increase UI Font Size');\n                    default:\n                        return trans.__('Increase Font Size');\n                }\n            },\n            execute: args => manager.incrFontSize(args['key'])\n        });\n        commands.addCommand(CommandIDs.decrFontSize, {\n            label: args => {\n                switch (args.key) {\n                    case 'code-font-size':\n                        return trans.__('Decrease Code Font Size');\n                    case 'content-font-size1':\n                        return trans.__('Decrease Content Font Size');\n                    case 'ui-font-size1':\n                        return trans.__('Decrease UI Font Size');\n                    default:\n                        return trans.__('Decrease Font Size');\n                }\n            },\n            execute: args => manager.decrFontSize(args['key'])\n        });\n        return manager;\n    },\n    autoStart: true,\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.IThemeManager\n};\n/**\n * The default theme manager's UI command palette and main menu functionality.\n *\n * #### Notes\n * This plugin loads separately from the theme manager plugin in order to\n * prevent blocking of the theme manager while it waits for the command palette\n * and main menu to become available.\n */\nconst themesPaletteMenuPlugin = {\n    id: '@jupyterlab/apputils-extension:themes-palette-menu',\n    description: 'Adds theme commands to the menu and the command palette.',\n    requires: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.IThemeManager, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator],\n    optional: [_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ICommandPalette, _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_3__.IMainMenu],\n    activate: (app, manager, translator, palette, mainMenu) => {\n        const trans = translator.load('jupyterlab');\n        // If we have a main menu, add the theme manager to the settings menu.\n        if (mainMenu) {\n            void app.restored.then(() => {\n                var _a;\n                const isPalette = false;\n                const themeMenu = (_a = mainMenu.settingsMenu.items.find(item => {\n                    var _a;\n                    return item.type === 'submenu' &&\n                        ((_a = item.submenu) === null || _a === void 0 ? void 0 : _a.id) === 'jp-mainmenu-settings-apputilstheme';\n                })) === null || _a === void 0 ? void 0 : _a.submenu;\n                // choose a theme\n                if (themeMenu) {\n                    manager.themes.forEach((theme, index) => {\n                        themeMenu.insertItem(index, {\n                            command: CommandIDs.changeTheme,\n                            args: { isPalette, theme }\n                        });\n                    });\n                }\n            });\n        }\n        // If we have a command palette, add theme switching options to it.\n        if (palette) {\n            void app.restored.then(() => {\n                const category = trans.__('Theme');\n                const command = CommandIDs.changeTheme;\n                const isPalette = true;\n                // choose a theme\n                manager.themes.forEach(theme => {\n                    palette.addItem({ command, args: { isPalette, theme }, category });\n                });\n                // choose preferred light theme\n                manager.themes.forEach(theme => {\n                    palette.addItem({\n                        command: CommandIDs.changePreferredLightTheme,\n                        args: { isPalette, theme },\n                        category\n                    });\n                });\n                // choose preferred dark theme\n                manager.themes.forEach(theme => {\n                    palette.addItem({\n                        command: CommandIDs.changePreferredDarkTheme,\n                        args: { isPalette, theme },\n                        category\n                    });\n                });\n                // toggle adaptive theme\n                palette.addItem({\n                    command: CommandIDs.toggleAdaptiveTheme,\n                    args: { isPalette },\n                    category\n                });\n                // toggle scrollbar theming\n                palette.addItem({ command: CommandIDs.themeScrollbars, category });\n                // increase/decrease code font size\n                palette.addItem({\n                    command: CommandIDs.incrFontSize,\n                    args: {\n                        key: 'code-font-size'\n                    },\n                    category\n                });\n                palette.addItem({\n                    command: CommandIDs.decrFontSize,\n                    args: {\n                        key: 'code-font-size'\n                    },\n                    category\n                });\n                // increase/decrease content font size\n                palette.addItem({\n                    command: CommandIDs.incrFontSize,\n                    args: {\n                        key: 'content-font-size1'\n                    },\n                    category\n                });\n                palette.addItem({\n                    command: CommandIDs.decrFontSize,\n                    args: {\n                        key: 'content-font-size1'\n                    },\n                    category\n                });\n                // increase/decrease ui font size\n                palette.addItem({\n                    command: CommandIDs.incrFontSize,\n                    args: {\n                        key: 'ui-font-size1'\n                    },\n                    category\n                });\n                palette.addItem({\n                    command: CommandIDs.decrFontSize,\n                    args: {\n                        key: 'ui-font-size1'\n                    },\n                    category\n                });\n            });\n        }\n    },\n    autoStart: true\n};\n//# sourceMappingURL=themesplugins.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/themesplugins.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/toolbarregistryplugin.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/toolbarregistryplugin.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   toolbarRegistry: () => (/* binding */ toolbarRegistry)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/**\n * The default toolbar registry.\n */\nconst toolbarRegistry = {\n    id: '@jupyterlab/apputils-extension:toolbar-registry',\n    description: 'Provides toolbar items registry.',\n    autoStart: true,\n    provides: _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.IToolbarWidgetRegistry,\n    activate: (app) => {\n        const registry = new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ToolbarWidgetRegistry({\n            defaultFactory: (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.createDefaultFactory)(app.commands)\n        });\n        return registry;\n    }\n};\n//# sourceMappingURL=toolbarregistryplugin.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/toolbarregistryplugin.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/lib/workspacesplugin.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/lib/workspacesplugin.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   workspacesPlugin: () => (/* binding */ workspacesPlugin)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/application */ \"webpack/sharing/consume/default/@jupyterlab/application/@jupyterlab/application\");\n/* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/docregistry */ \"webpack/sharing/consume/default/@jupyterlab/docregistry/@jupyterlab/docregistry\");\n/* harmony import */ var _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/statedb */ \"webpack/sharing/consume/default/@jupyterlab/statedb/@jupyterlab/statedb\");\n/* harmony import */ var _jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_workspaces__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/workspaces */ \"webpack/sharing/consume/default/@jupyterlab/workspaces/@jupyterlab/workspaces\");\n/* harmony import */ var _jupyterlab_workspaces__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_workspaces__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_6__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n\n\nconst WORKSPACE_NAME = 'jupyterlab-workspace';\nconst WORKSPACE_EXT = '.' + WORKSPACE_NAME;\nconst LAST_SAVE_ID = 'workspace-ui:lastSave';\nconst ICON_NAME = 'jp-JupyterIcon';\n/**\n * The workspace MIME renderer.\n */\nconst workspacesPlugin = {\n    id: '@jupyterlab/apputils-extension:workspaces',\n    description: 'Add workspace file type.',\n    autoStart: true,\n    requires: [_jupyterlab_statedb__WEBPACK_IMPORTED_MODULE_3__.IStateDB, _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.ITranslator, _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.JupyterFrontEnd.IPaths],\n    optional: [_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__.IRouter, _jupyterlab_workspaces__WEBPACK_IMPORTED_MODULE_4__.IWorkspaceCommands],\n    activate: (app, state, translator, paths, router, workspaceCommands) => {\n        // The workspace factory creates dummy widgets to load a new workspace.\n        const factory = new Private.WorkspaceFactory({\n            workspaces: app.serviceManager.workspaces,\n            state,\n            translator,\n            open: async (id) => {\n                if (workspaceCommands) {\n                    await app.commands.execute(workspaceCommands.open, { workspace: id });\n                }\n                else {\n                    const workspacesBase = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.URLExt.join(paths.urls.app, 'workspaces');\n                    const url = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.URLExt.join(workspacesBase, id);\n                    if (!url.startsWith(workspacesBase)) {\n                        throw new Error('Can only be used for workspaces');\n                    }\n                    if (router) {\n                        router.navigate(url, { hard: true });\n                    }\n                    else {\n                        document.location.href = url;\n                    }\n                }\n            }\n        });\n        const trans = translator.load('jupyterlab');\n        app.docRegistry.addFileType({\n            name: WORKSPACE_NAME,\n            contentType: 'file',\n            fileFormat: 'text',\n            displayName: trans.__('JupyterLab Workspace File'),\n            extensions: [WORKSPACE_EXT],\n            mimeTypes: ['text/json'],\n            iconClass: ICON_NAME\n        });\n        app.docRegistry.addWidgetFactory(factory);\n    }\n};\nvar Private;\n(function (Private) {\n    /**\n     * This widget factory is used to handle double click on workspace\n     */\n    class WorkspaceFactory extends _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_2__.ABCWidgetFactory {\n        /**\n         * Construct a widget factory that uploads a workspace and navigates to it.\n         *\n         * @param options - The instantiation options for a `WorkspaceFactory`.\n         */\n        constructor(options) {\n            const trans = (options.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_5__.nullTranslator).load('jupyterlab');\n            super({\n                name: 'Workspace loader',\n                label: trans.__('Workspace loader'),\n                fileTypes: [WORKSPACE_NAME],\n                defaultFor: [WORKSPACE_NAME],\n                readOnly: true\n            });\n            this._state = options.state;\n            this._workspaces = options.workspaces;\n            this._open = options.open;\n        }\n        /**\n         * Loads the workspace into load, and jump to it\n         * @param context This is used to query the workspace content\n         */\n        createNewWidget(context) {\n            // Save a file's contents as a workspace and navigate to that workspace.\n            void context.ready.then(async () => {\n                const file = context.model;\n                const workspace = file.toJSON();\n                const path = context.path;\n                const id = workspace.metadata.id;\n                // Save the file contents as a workspace.\n                await this._workspaces.save(id, workspace);\n                // Save last save location for the save command.\n                await this._state.save(LAST_SAVE_ID, path);\n                // Navigate to new workspace.\n                await this._open(id);\n            });\n            return dummyWidget(context);\n        }\n    }\n    Private.WorkspaceFactory = WorkspaceFactory;\n    /**\n     * Returns a dummy widget with disposed content that doesn't render in the UI.\n     *\n     * @param context - The file context.\n     */\n    function dummyWidget(context) {\n        const widget = new _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_2__.DocumentWidget({ content: new _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget(), context });\n        widget.content.dispose();\n        return widget;\n    }\n})(Private || (Private = {}));\n//# sourceMappingURL=workspacesplugin.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/lib/workspacesplugin.js?");

/***/ }),

/***/ "../node_modules/react-dom/client.js":
/*!*******************************************!*\
  !*** ../node_modules/react-dom/client.js ***!
  \*******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

eval("\n\nvar m = __webpack_require__(/*! react-dom */ \"webpack/sharing/consume/default/react-dom/react-dom\");\nif (false) {} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/react-dom/client.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/apputils-extension/style/scrollbar.raw.css":
/*!******************************************************************************!*\
  !*** ../node_modules/@jupyterlab/apputils-extension/style/scrollbar.raw.css ***!
  \******************************************************************************/
/***/ ((module) => {

eval("module.exports = \"/*\\n * Copyright (c) Jupyter Development Team.\\n * Distributed under the terms of the Modified BSD License.\\n */\\n\\n/*\\n * Webkit scrollbar styling.\\n * Separate file which is dynamically loaded based on user/theme settings.\\n */\\n\\n/* use standard opaque scrollbars for most nodes */\\n\\n::-webkit-scrollbar,\\n::-webkit-scrollbar-corner {\\n  background: var(--jp-scrollbar-background-color);\\n}\\n\\n::-webkit-scrollbar-thumb {\\n  background: rgb(var(--jp-scrollbar-thumb-color));\\n  border: var(--jp-scrollbar-thumb-margin) solid transparent;\\n  background-clip: content-box;\\n  border-radius: var(--jp-scrollbar-thumb-radius);\\n}\\n\\n::-webkit-scrollbar-track:horizontal {\\n  border-left: var(--jp-scrollbar-endpad) solid\\n    var(--jp-scrollbar-background-color);\\n  border-right: var(--jp-scrollbar-endpad) solid\\n    var(--jp-scrollbar-background-color);\\n}\\n\\n::-webkit-scrollbar-track:vertical {\\n  border-top: var(--jp-scrollbar-endpad) solid\\n    var(--jp-scrollbar-background-color);\\n  border-bottom: var(--jp-scrollbar-endpad) solid\\n    var(--jp-scrollbar-background-color);\\n}\\n\\n/* for code nodes, use a transparent style of scrollbar */\\n\\n.CodeMirror-hscrollbar::-webkit-scrollbar,\\n.CodeMirror-vscrollbar::-webkit-scrollbar,\\n.CodeMirror-hscrollbar::-webkit-scrollbar-corner,\\n.CodeMirror-vscrollbar::-webkit-scrollbar-corner {\\n  background-color: transparent;\\n}\\n\\n.CodeMirror-hscrollbar::-webkit-scrollbar-thumb,\\n.CodeMirror-vscrollbar::-webkit-scrollbar-thumb {\\n  background: rgba(var(--jp-scrollbar-thumb-color), 0.5);\\n  border: var(--jp-scrollbar-thumb-margin) solid transparent;\\n  background-clip: content-box;\\n  border-radius: var(--jp-scrollbar-thumb-radius);\\n}\\n\\n.CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal {\\n  border-left: var(--jp-scrollbar-endpad) solid transparent;\\n  border-right: var(--jp-scrollbar-endpad) solid transparent;\\n}\\n\\n.CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical {\\n  border-top: var(--jp-scrollbar-endpad) solid transparent;\\n  border-bottom: var(--jp-scrollbar-endpad) solid transparent;\\n}\\n\";\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/apputils-extension/style/scrollbar.raw.css?");

/***/ })

}]);