|
|
|
|
|
|
|
|
|
|
|
|
|
import { PageConfig } from '@jupyterlab/coreutils'; |
|
|
|
import './style.js'; |
|
|
|
async function createModule(scope, module) { |
|
try { |
|
const factory = await window._JUPYTERLAB[scope].get(module); |
|
const instance = factory(); |
|
instance.__scope__ = scope; |
|
return instance; |
|
} catch(e) { |
|
console.warn(`Failed to create module: package: ${scope}; module: ${module}`); |
|
throw e; |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
export async function main() { |
|
|
|
|
|
|
|
var browserTest = PageConfig.getOption('browserTest'); |
|
if (browserTest.toLowerCase() === 'true') { |
|
var el = document.createElement('div'); |
|
el.id = 'browserTest'; |
|
document.body.appendChild(el); |
|
el.textContent = '[]'; |
|
el.style.display = 'none'; |
|
var errors = []; |
|
var reported = false; |
|
var timeout = 25000; |
|
|
|
var report = function() { |
|
if (reported) { |
|
return; |
|
} |
|
reported = true; |
|
el.className = 'completed'; |
|
} |
|
|
|
window.onerror = function(msg, url, line, col, error) { |
|
errors.push(String(error)); |
|
el.textContent = JSON.stringify(errors) |
|
}; |
|
console.error = function(message) { |
|
errors.push(String(message)); |
|
el.textContent = JSON.stringify(errors) |
|
}; |
|
} |
|
|
|
var JupyterLab = require('@jupyterlab/application').JupyterLab; |
|
var disabled = []; |
|
var deferred = []; |
|
var ignorePlugins = []; |
|
var register = []; |
|
|
|
|
|
const federatedExtensionPromises = []; |
|
const federatedMimeExtensionPromises = []; |
|
const federatedStylePromises = []; |
|
|
|
|
|
const extensions = JSON.parse( |
|
PageConfig.getOption('federated_extensions') |
|
); |
|
|
|
const queuedFederated = []; |
|
|
|
extensions.forEach(data => { |
|
if (data.extension) { |
|
queuedFederated.push(data.name); |
|
federatedExtensionPromises.push(createModule(data.name, data.extension)); |
|
} |
|
if (data.mimeExtension) { |
|
queuedFederated.push(data.name); |
|
federatedMimeExtensionPromises.push(createModule(data.name, data.mimeExtension)); |
|
} |
|
|
|
if (data.style && !PageConfig.Extension.isDisabled(data.name)) { |
|
federatedStylePromises.push(createModule(data.name, data.style)); |
|
} |
|
}); |
|
|
|
const allPlugins = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function* activePlugins(extension) { |
|
|
|
let exports; |
|
if (extension.hasOwnProperty('__esModule')) { |
|
exports = extension.default; |
|
} else { |
|
|
|
exports = extension; |
|
} |
|
|
|
let plugins = Array.isArray(exports) ? exports : [exports]; |
|
for (let plugin of plugins) { |
|
const isDisabled = PageConfig.Extension.isDisabled(plugin.id); |
|
allPlugins.push({ |
|
id: plugin.id, |
|
description: plugin.description, |
|
requires: plugin.requires ?? [], |
|
optional: plugin.optional ?? [], |
|
provides: plugin.provides ?? null, |
|
autoStart: plugin.autoStart, |
|
enabled: !isDisabled, |
|
extension: extension.__scope__ |
|
}); |
|
if (isDisabled) { |
|
disabled.push(plugin.id); |
|
continue; |
|
} |
|
if (PageConfig.Extension.isDeferred(plugin.id)) { |
|
deferred.push(plugin.id); |
|
ignorePlugins.push(plugin.id); |
|
} |
|
yield plugin; |
|
} |
|
} |
|
|
|
|
|
const mimeExtensions = []; |
|
if (!queuedFederated.includes('@jupyterlab/javascript-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/javascript-extension'); |
|
ext.__scope__ = '@jupyterlab/javascript-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/json-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/json-extension'); |
|
ext.__scope__ = '@jupyterlab/json-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/mermaid-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/mermaid-extension/lib/mime.js'); |
|
ext.__scope__ = '@jupyterlab/mermaid-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/pdf-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/pdf-extension'); |
|
ext.__scope__ = '@jupyterlab/pdf-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/vega5-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/vega5-extension'); |
|
ext.__scope__ = '@jupyterlab/vega5-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
|
|
|
|
const federatedMimeExtensions = await Promise.allSettled(federatedMimeExtensionPromises); |
|
federatedMimeExtensions.forEach(p => { |
|
if (p.status === "fulfilled") { |
|
for (let plugin of activePlugins(p.value)) { |
|
mimeExtensions.push(plugin); |
|
} |
|
} else { |
|
console.error(p.reason); |
|
} |
|
}); |
|
|
|
|
|
if (!queuedFederated.includes('@jupyterlab/application-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/application-extension'); |
|
ext.__scope__ = '@jupyterlab/application-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/apputils-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/apputils-extension'); |
|
ext.__scope__ = '@jupyterlab/apputils-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/cell-toolbar-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/cell-toolbar-extension'); |
|
ext.__scope__ = '@jupyterlab/cell-toolbar-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/celltags-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/celltags-extension'); |
|
ext.__scope__ = '@jupyterlab/celltags-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/codemirror-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/codemirror-extension'); |
|
ext.__scope__ = '@jupyterlab/codemirror-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/completer-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/completer-extension'); |
|
ext.__scope__ = '@jupyterlab/completer-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/console-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/console-extension'); |
|
ext.__scope__ = '@jupyterlab/console-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/csvviewer-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/csvviewer-extension'); |
|
ext.__scope__ = '@jupyterlab/csvviewer-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/debugger-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/debugger-extension'); |
|
ext.__scope__ = '@jupyterlab/debugger-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/docmanager-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/docmanager-extension'); |
|
ext.__scope__ = '@jupyterlab/docmanager-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/documentsearch-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/documentsearch-extension'); |
|
ext.__scope__ = '@jupyterlab/documentsearch-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/extensionmanager-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/extensionmanager-extension'); |
|
ext.__scope__ = '@jupyterlab/extensionmanager-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/filebrowser-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/filebrowser-extension'); |
|
ext.__scope__ = '@jupyterlab/filebrowser-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/fileeditor-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/fileeditor-extension'); |
|
ext.__scope__ = '@jupyterlab/fileeditor-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/help-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/help-extension'); |
|
ext.__scope__ = '@jupyterlab/help-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/htmlviewer-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/htmlviewer-extension'); |
|
ext.__scope__ = '@jupyterlab/htmlviewer-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/hub-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/hub-extension'); |
|
ext.__scope__ = '@jupyterlab/hub-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/imageviewer-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/imageviewer-extension'); |
|
ext.__scope__ = '@jupyterlab/imageviewer-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/inspector-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/inspector-extension'); |
|
ext.__scope__ = '@jupyterlab/inspector-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/launcher-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/launcher-extension'); |
|
ext.__scope__ = '@jupyterlab/launcher-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/logconsole-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/logconsole-extension'); |
|
ext.__scope__ = '@jupyterlab/logconsole-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/lsp-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/lsp-extension'); |
|
ext.__scope__ = '@jupyterlab/lsp-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/mainmenu-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/mainmenu-extension'); |
|
ext.__scope__ = '@jupyterlab/mainmenu-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/markdownviewer-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/markdownviewer-extension'); |
|
ext.__scope__ = '@jupyterlab/markdownviewer-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/markedparser-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/markedparser-extension'); |
|
ext.__scope__ = '@jupyterlab/markedparser-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/mathjax-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/mathjax-extension'); |
|
ext.__scope__ = '@jupyterlab/mathjax-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/mermaid-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/mermaid-extension'); |
|
ext.__scope__ = '@jupyterlab/mermaid-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/metadataform-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/metadataform-extension'); |
|
ext.__scope__ = '@jupyterlab/metadataform-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/notebook-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/notebook-extension'); |
|
ext.__scope__ = '@jupyterlab/notebook-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/pluginmanager-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/pluginmanager-extension'); |
|
ext.__scope__ = '@jupyterlab/pluginmanager-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/rendermime-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/rendermime-extension'); |
|
ext.__scope__ = '@jupyterlab/rendermime-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/running-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/running-extension'); |
|
ext.__scope__ = '@jupyterlab/running-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/settingeditor-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/settingeditor-extension'); |
|
ext.__scope__ = '@jupyterlab/settingeditor-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/shortcuts-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/shortcuts-extension'); |
|
ext.__scope__ = '@jupyterlab/shortcuts-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/statusbar-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/statusbar-extension'); |
|
ext.__scope__ = '@jupyterlab/statusbar-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/terminal-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/terminal-extension'); |
|
ext.__scope__ = '@jupyterlab/terminal-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/theme-dark-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/theme-dark-extension'); |
|
ext.__scope__ = '@jupyterlab/theme-dark-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/theme-dark-high-contrast-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/theme-dark-high-contrast-extension'); |
|
ext.__scope__ = '@jupyterlab/theme-dark-high-contrast-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/theme-light-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/theme-light-extension'); |
|
ext.__scope__ = '@jupyterlab/theme-light-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/toc-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/toc-extension'); |
|
ext.__scope__ = '@jupyterlab/toc-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/tooltip-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/tooltip-extension'); |
|
ext.__scope__ = '@jupyterlab/tooltip-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/translation-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/translation-extension'); |
|
ext.__scope__ = '@jupyterlab/translation-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/ui-components-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/ui-components-extension'); |
|
ext.__scope__ = '@jupyterlab/ui-components-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
if (!queuedFederated.includes('@jupyterlab/workspaces-extension')) { |
|
try { |
|
let ext = require('@jupyterlab/workspaces-extension'); |
|
ext.__scope__ = '@jupyterlab/workspaces-extension'; |
|
for (let plugin of activePlugins(ext)) { |
|
register.push(plugin); |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
|
|
|
|
const federatedExtensions = await Promise.allSettled(federatedExtensionPromises); |
|
federatedExtensions.forEach(p => { |
|
if (p.status === "fulfilled") { |
|
for (let plugin of activePlugins(p.value)) { |
|
register.push(plugin); |
|
} |
|
} else { |
|
console.error(p.reason); |
|
} |
|
}); |
|
|
|
|
|
(await Promise.allSettled(federatedStylePromises)).filter(({status}) => status === "rejected").forEach(({reason}) => { |
|
console.error(reason); |
|
}); |
|
|
|
const lab = new JupyterLab({ |
|
mimeExtensions, |
|
disabled: { |
|
matches: disabled, |
|
patterns: PageConfig.Extension.disabled |
|
.map(function (val) { return val.raw; }) |
|
}, |
|
deferred: { |
|
matches: deferred, |
|
patterns: PageConfig.Extension.deferred |
|
.map(function (val) { return val.raw; }) |
|
}, |
|
availablePlugins: allPlugins |
|
}); |
|
register.forEach(function(item) { lab.registerPluginModule(item); }); |
|
|
|
lab.start({ ignorePlugins, bubblingKeydown: true }); |
|
|
|
|
|
var exposeAppInBrowser = (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true'; |
|
var devMode = (PageConfig.getOption('devMode') || '').toLowerCase() === 'true'; |
|
|
|
if (exposeAppInBrowser || devMode) { |
|
window.jupyterapp = lab; |
|
} |
|
|
|
|
|
if (browserTest.toLowerCase() === 'true') { |
|
lab.restored |
|
.then(function() { report(errors); }) |
|
.catch(function(reason) { report([`RestoreError: ${reason.message}`]); }); |
|
|
|
|
|
window.setTimeout(function() { report(errors); }, timeout); |
|
} |
|
|
|
} |
|
|