You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			828 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			828 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			JavaScript
		
	
// This file is auto-generated from the corresponding file in /dev_mode
 | 
						|
/*
 | 
						|
 * Copyright (c) Jupyter Development Team.
 | 
						|
 * Distributed under the terms of the Modified BSD License.
 | 
						|
 */
 | 
						|
 | 
						|
import { PageConfig } from '@jupyterlab/coreutils';
 | 
						|
import { PluginRegistry } from '@lumino/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;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * The main entry point for the application.
 | 
						|
 */
 | 
						|
export async function main() {
 | 
						|
 | 
						|
   // Handle a browser test.
 | 
						|
   // Set up error handling prior to loading extensions.
 | 
						|
   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 pluginRegistry = new PluginRegistry();
 | 
						|
  var JupyterLab = require('@jupyterlab/application').JupyterLab;
 | 
						|
  var disabled = [];
 | 
						|
  var deferred = [];
 | 
						|
  var ignorePlugins = [];
 | 
						|
  var register = [];
 | 
						|
 | 
						|
 | 
						|
  const federatedExtensionPromises = [];
 | 
						|
  const federatedMimeExtensionPromises = [];
 | 
						|
  const federatedStylePromises = [];
 | 
						|
 | 
						|
  // Start initializing the federated extensions
 | 
						|
  const extensions = JSON.parse(
 | 
						|
    PageConfig.getOption('federated_extensions')
 | 
						|
  );
 | 
						|
 | 
						|
  // Keep a mapping of renamed plugin ids to ensure user configs don't break.
 | 
						|
  // The mapping is defined in the main index.js for JupyterLab, since it may not be relevant for
 | 
						|
  // other lab-based applications (they may not use the same set of plugins).
 | 
						|
  const renamedPluginIds = {
 | 
						|
    '@jupyterlab/application:mimedocument': '@jupyterlab/application-extension:mimedocument',
 | 
						|
    '@jupyterlab/help-extension:licenses': '@jupyterlab/apputils-extension:licenses-plugin',
 | 
						|
    '@jupyterlab/lsp:ILSPCodeExtractorsManager': '@jupyterlab/lsp-extension:code-extractor-manager',
 | 
						|
    '@jupyterlab/translation:translator': '@jupyterlab/translation-extension:translator',
 | 
						|
    '@jupyterlab/workspaces:commands': '@jupyterlab/workspaces-extension:commands'
 | 
						|
  };
 | 
						|
 | 
						|
  // Transparently handle the case of renamed plugins, so current configs don't break.
 | 
						|
  // And emit a warning in the dev tools console to notify about the rename so
 | 
						|
  // users can update their config.
 | 
						|
  const disabledExtensions = PageConfig.Extension.disabled.map(id => {
 | 
						|
    if (renamedPluginIds[id]) {
 | 
						|
      console.warn(`Plugin ${id} has been renamed to ${renamedPluginIds[id]}. Consider updating your config to use the new name.`);
 | 
						|
      return renamedPluginIds[id];
 | 
						|
    }
 | 
						|
    return id;
 | 
						|
  });
 | 
						|
 | 
						|
  const deferredExtensions = PageConfig.Extension.deferred.map(id => {
 | 
						|
    if (renamedPluginIds[id]) {
 | 
						|
      console.warn(`Plugin id ${id} has been renamed to ${renamedPluginIds[id]}. Consider updating your config to use the new name.`);
 | 
						|
      return renamedPluginIds[id];
 | 
						|
    }
 | 
						|
    return id;
 | 
						|
  });
 | 
						|
 | 
						|
  // This is basically a copy of PageConfig.Extension.isDisabled to
 | 
						|
  // take into account the case of renamed plugins.
 | 
						|
  const isPluginDisabled = (id) => {
 | 
						|
    const separatorIndex = id.indexOf(':');
 | 
						|
    let extName = '';
 | 
						|
    if (separatorIndex !== -1) {
 | 
						|
      extName = id.slice(0, separatorIndex);
 | 
						|
    }
 | 
						|
    return disabledExtensions.some(val => val === id || (extName && val === extName));
 | 
						|
  }
 | 
						|
 | 
						|
  // This is basically a copy of PageConfig.Extension.isDeferred to
 | 
						|
  // take into account the case of renamed plugins.
 | 
						|
  const isPluginDeferred = (id) => {
 | 
						|
    const separatorIndex = id.indexOf(':');
 | 
						|
    let extName = '';
 | 
						|
    if (separatorIndex !== -1) {
 | 
						|
      extName = id.slice(0, separatorIndex);
 | 
						|
    }
 | 
						|
    return deferredExtensions.some(val => val === id || (extName && val === extName));
 | 
						|
  }
 | 
						|
 | 
						|
  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 && !isPluginDisabled(data.name)) {
 | 
						|
      federatedStylePromises.push(createModule(data.name, data.style));
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  const allPlugins = [];
 | 
						|
 | 
						|
  /**
 | 
						|
   * Get the plugins from an extension.
 | 
						|
   */
 | 
						|
  function getPlugins(extension) {
 | 
						|
    // Handle commonjs or es2015 modules
 | 
						|
    let exports;
 | 
						|
    if (extension.hasOwnProperty('__esModule')) {
 | 
						|
      exports = extension.default;
 | 
						|
    } else {
 | 
						|
      // CommonJS exports.
 | 
						|
      exports = extension;
 | 
						|
    }
 | 
						|
 | 
						|
    return Array.isArray(exports) ? exports : [exports];
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Iterate over active plugins in an extension.
 | 
						|
   *
 | 
						|
   * #### Notes
 | 
						|
   * This also populates the disabled, deferred, and ignored arrays.
 | 
						|
   */
 | 
						|
  function* activePlugins(extension) {
 | 
						|
    const plugins = getPlugins(extension);
 | 
						|
    for (let plugin of plugins) {
 | 
						|
      const isDisabled = isPluginDisabled(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 (isPluginDeferred(plugin.id)) {
 | 
						|
        deferred.push(plugin.id);
 | 
						|
        ignorePlugins.push(plugin.id);
 | 
						|
      }
 | 
						|
      yield plugin;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Handle the registered mime extensions.
 | 
						|
  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);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Add the federated mime extensions.
 | 
						|
  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);
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  // Handled the registered standard extensions.
 | 
						|
  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/services-extension')) {
 | 
						|
    try {
 | 
						|
      let ext = require('@jupyterlab/services-extension');
 | 
						|
      ext.__scope__ = '@jupyterlab/services-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);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Add the federated extensions.
 | 
						|
  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);
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  // Load all federated component styles and log errors for any that do not
 | 
						|
  (await Promise.allSettled(federatedStylePromises)).filter(({status}) => status === "rejected").forEach(({reason}) => {
 | 
						|
    console.error(reason);
 | 
						|
  });
 | 
						|
 | 
						|
  // 2. Register the plugins
 | 
						|
  pluginRegistry.registerPlugins(register);
 | 
						|
 | 
						|
  // 3. Get and resolve the service manager and connection status plugins
 | 
						|
  const IConnectionStatus = require('@jupyterlab/services').IConnectionStatus;
 | 
						|
  const IServiceManager = require('@jupyterlab/services').IServiceManager;
 | 
						|
  const connectionStatus = await pluginRegistry.resolveOptionalService(IConnectionStatus);
 | 
						|
  const serviceManager = await pluginRegistry.resolveRequiredService(IServiceManager);
 | 
						|
 | 
						|
  const lab = new JupyterLab({
 | 
						|
    pluginRegistry,
 | 
						|
    serviceManager,
 | 
						|
    mimeExtensions,
 | 
						|
    connectionStatus,
 | 
						|
    disabled: {
 | 
						|
      matches: disabled,
 | 
						|
      patterns: disabledExtensions
 | 
						|
        .map(function (val) { return val.raw; })
 | 
						|
    },
 | 
						|
    deferred: {
 | 
						|
      matches: deferred,
 | 
						|
      patterns: deferredExtensions
 | 
						|
        .map(function (val) { return val.raw; })
 | 
						|
    },
 | 
						|
    availablePlugins: allPlugins
 | 
						|
  });
 | 
						|
 | 
						|
  // 4. Start the application, which will activate the other plugins
 | 
						|
  lab.start({ ignorePlugins, bubblingKeydown: true });
 | 
						|
 | 
						|
  // Expose global app instance when in dev mode or when toggled explicitly.
 | 
						|
  var exposeAppInBrowser = (PageConfig.getOption('exposeAppInBrowser') || '').toLowerCase() === 'true';
 | 
						|
  var devMode = (PageConfig.getOption('devMode') || '').toLowerCase() === 'true';
 | 
						|
 | 
						|
  if (exposeAppInBrowser || devMode) {
 | 
						|
    window.jupyterapp = lab;
 | 
						|
  }
 | 
						|
 | 
						|
  // Handle a browser test.
 | 
						|
  if (browserTest.toLowerCase() === 'true') {
 | 
						|
    lab.restored
 | 
						|
      .then(function() { report(errors); })
 | 
						|
      .catch(function(reason) { report([`RestoreError: ${reason.message}`]); });
 | 
						|
 | 
						|
    // Handle failures to restore after the timeout has elapsed.
 | 
						|
    window.setTimeout(function() { report(errors); }, timeout);
 | 
						|
  }
 | 
						|
}
 |