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.
		
		
		
		
		
			
		
			
				
	
	
		
			1020 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			1020 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			JavaScript
		
	
"use strict";
 | 
						|
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([[5135],{
 | 
						|
 | 
						|
/***/ 45135:
 | 
						|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | 
						|
 | 
						|
// ESM COMPAT FLAG
 | 
						|
__webpack_require__.r(__webpack_exports__);
 | 
						|
 | 
						|
// EXPORTS
 | 
						|
__webpack_require__.d(__webpack_exports__, {
 | 
						|
  INotebookPathOpener: () => (/* reexport */ INotebookPathOpener),
 | 
						|
  INotebookShell: () => (/* reexport */ INotebookShell),
 | 
						|
  NotebookApp: () => (/* reexport */ NotebookApp),
 | 
						|
  NotebookShell: () => (/* reexport */ NotebookShell),
 | 
						|
  PanelHandler: () => (/* reexport */ PanelHandler),
 | 
						|
  Private: () => (/* reexport */ shell_Private),
 | 
						|
  SidePanelHandler: () => (/* reexport */ SidePanelHandler),
 | 
						|
  SidePanelPalette: () => (/* reexport */ SidePanelPalette),
 | 
						|
  defaultNotebookPathOpener: () => (/* reexport */ defaultNotebookPathOpener)
 | 
						|
});
 | 
						|
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @jupyterlab/application@~4.4.9 (singleton) (fallback: ../node_modules/@jupyterlab/application/lib/index.js)
 | 
						|
var index_js_ = __webpack_require__(42613);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @jupyterlab/docregistry@~4.4.9 (strict) (fallback: ../node_modules/@jupyterlab/docregistry/lib/index.js)
 | 
						|
var lib_index_js_ = __webpack_require__(68530);
 | 
						|
// EXTERNAL MODULE: ../node_modules/@jupyterlab/application/lib/mimerenderers.js
 | 
						|
var mimerenderers = __webpack_require__(75677);
 | 
						|
// EXTERNAL MODULE: ../node_modules/@jupyterlab/application/lib/status.js
 | 
						|
var lib_status = __webpack_require__(20389);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @jupyterlab/coreutils@~6.4.9 (singleton) (fallback: ../node_modules/@jupyterlab/coreutils/lib/index.js)
 | 
						|
var coreutils_lib_index_js_ = __webpack_require__(365);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/polling@^2.1.4 (strict) (fallback: ../node_modules/@lumino/polling/dist/index.es6.js)
 | 
						|
var index_es6_js_ = __webpack_require__(1492);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @jupyterlab/translation@~4.4.9 (singleton) (fallback: ../node_modules/@jupyterlab/translation/lib/index.js)
 | 
						|
var translation_lib_index_js_ = __webpack_require__(24973);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/algorithm@~2.0.3 (singleton) (fallback: ../node_modules/@lumino/algorithm/dist/index.es6.js)
 | 
						|
var dist_index_es6_js_ = __webpack_require__(56114);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/coreutils@~2.2.1 (singleton) (fallback: ../node_modules/@lumino/coreutils/dist/index.js)
 | 
						|
var dist_index_js_ = __webpack_require__(5406);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/signaling@~2.1.4 (singleton) (fallback: ../node_modules/@lumino/signaling/dist/index.es6.js)
 | 
						|
var signaling_dist_index_es6_js_ = __webpack_require__(2536);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/widgets@~2.7.1 (singleton) (fallback: ../node_modules/@lumino/widgets/dist/index.es6.js)
 | 
						|
var widgets_dist_index_es6_js_ = __webpack_require__(60920);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @jupyterlab/ui-components@~4.4.9 (singleton) (fallback: ../node_modules/@jupyterlab/ui-components/lib/index.js)
 | 
						|
var ui_components_lib_index_js_ = __webpack_require__(58293);
 | 
						|
// EXTERNAL MODULE: consume shared module (default) @lumino/messaging@~2.0.3 (singleton) (fallback: ../node_modules/@lumino/messaging/dist/index.es6.js)
 | 
						|
var messaging_dist_index_es6_js_ = __webpack_require__(34993);
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/panelhandler.js
 | 
						|
// Copyright (c) Jupyter Development Team.
 | 
						|
// Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * A class which manages a panel and sorts its widgets by rank.
 | 
						|
 */
 | 
						|
class PanelHandler {
 | 
						|
    constructor() {
 | 
						|
        /**
 | 
						|
         * A message hook for child remove messages on the panel handler.
 | 
						|
         */
 | 
						|
        this._panelChildHook = (handler, msg) => {
 | 
						|
            switch (msg.type) {
 | 
						|
                case 'child-removed':
 | 
						|
                    {
 | 
						|
                        const widget = msg.child;
 | 
						|
                        dist_index_es6_js_.ArrayExt.removeFirstWhere(this._items, (v) => v.widget === widget);
 | 
						|
                    }
 | 
						|
                    break;
 | 
						|
                default:
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
            return true;
 | 
						|
        };
 | 
						|
        this._items = new Array();
 | 
						|
        this._panel = new widgets_dist_index_es6_js_.Panel();
 | 
						|
        messaging_dist_index_es6_js_.MessageLoop.installMessageHook(this._panel, this._panelChildHook);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the panel managed by the handler.
 | 
						|
     */
 | 
						|
    get panel() {
 | 
						|
        return this._panel;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Add a widget to the panel.
 | 
						|
     *
 | 
						|
     * If the widget is already added, it will be moved.
 | 
						|
     */
 | 
						|
    addWidget(widget, rank) {
 | 
						|
        widget.parent = null;
 | 
						|
        const item = { widget, rank };
 | 
						|
        const index = dist_index_es6_js_.ArrayExt.upperBound(this._items, item, Private.itemCmp);
 | 
						|
        dist_index_es6_js_.ArrayExt.insert(this._items, index, item);
 | 
						|
        this._panel.insertWidget(index, widget);
 | 
						|
    }
 | 
						|
}
 | 
						|
/**
 | 
						|
 * A class which manages a side panel that can show at most one widget at a time.
 | 
						|
 */
 | 
						|
class SidePanelHandler extends PanelHandler {
 | 
						|
    /**
 | 
						|
     * Construct a new side panel handler.
 | 
						|
     */
 | 
						|
    constructor(area) {
 | 
						|
        super();
 | 
						|
        this._isHiddenByUser = false;
 | 
						|
        this._widgetAdded = new signaling_dist_index_es6_js_.Signal(this);
 | 
						|
        this._widgetRemoved = new signaling_dist_index_es6_js_.Signal(this);
 | 
						|
        this._area = area;
 | 
						|
        this._panel.hide();
 | 
						|
        this._currentWidget = null;
 | 
						|
        this._lastCurrentWidget = null;
 | 
						|
        this._widgetPanel = new widgets_dist_index_es6_js_.StackedPanel();
 | 
						|
        this._widgetPanel.widgetRemoved.connect(this._onWidgetRemoved, this);
 | 
						|
        this._closeButton = document.createElement('button');
 | 
						|
        ui_components_lib_index_js_.closeIcon.element({
 | 
						|
            container: this._closeButton,
 | 
						|
            height: '16px',
 | 
						|
            width: 'auto',
 | 
						|
        });
 | 
						|
        this._closeButton.onclick = () => {
 | 
						|
            this.collapse();
 | 
						|
            this.hide();
 | 
						|
        };
 | 
						|
        this._closeButton.className = 'jp-Button jp-SidePanel-collapse';
 | 
						|
        this._closeButton.title = 'Collapse side panel';
 | 
						|
        const icon = new widgets_dist_index_es6_js_.Widget({ node: this._closeButton });
 | 
						|
        this._panel.addWidget(icon);
 | 
						|
        this._panel.addWidget(this._widgetPanel);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the current widget in the sidebar panel.
 | 
						|
     */
 | 
						|
    get currentWidget() {
 | 
						|
        return (this._currentWidget ||
 | 
						|
            this._lastCurrentWidget ||
 | 
						|
            (this._items.length > 0 ? this._items[0].widget : null));
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the area of the side panel
 | 
						|
     */
 | 
						|
    get area() {
 | 
						|
        return this._area;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Whether the panel is visible
 | 
						|
     */
 | 
						|
    get isVisible() {
 | 
						|
        return this._panel.isVisible;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the stacked panel managed by the handler
 | 
						|
     */
 | 
						|
    get panel() {
 | 
						|
        return this._panel;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the widgets list.
 | 
						|
     */
 | 
						|
    get widgets() {
 | 
						|
        return this._items.map((obj) => obj.widget);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Signal fired when a widget is added to the panel
 | 
						|
     */
 | 
						|
    get widgetAdded() {
 | 
						|
        return this._widgetAdded;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Signal fired when a widget is removed from the panel
 | 
						|
     */
 | 
						|
    get widgetRemoved() {
 | 
						|
        return this._widgetRemoved;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the close button element.
 | 
						|
     */
 | 
						|
    get closeButton() {
 | 
						|
        return this._closeButton;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Expand the sidebar.
 | 
						|
     *
 | 
						|
     * #### Notes
 | 
						|
     * This will open the most recently used widget, or the first widget
 | 
						|
     * if there is no most recently used.
 | 
						|
     */
 | 
						|
    expand(id) {
 | 
						|
        if (id) {
 | 
						|
            if (this._currentWidget && this._currentWidget.id === id) {
 | 
						|
                this.collapse();
 | 
						|
                this.hide();
 | 
						|
            }
 | 
						|
            else {
 | 
						|
                this.collapse();
 | 
						|
                this.hide();
 | 
						|
                this.activate(id);
 | 
						|
                this.show();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else if (this.currentWidget) {
 | 
						|
            this._currentWidget = this.currentWidget;
 | 
						|
            this.activate(this._currentWidget.id);
 | 
						|
            this.show();
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Activate a widget residing in the stacked panel by ID.
 | 
						|
     *
 | 
						|
     * @param id - The widget's unique ID.
 | 
						|
     */
 | 
						|
    activate(id) {
 | 
						|
        const widget = this._findWidgetByID(id);
 | 
						|
        if (widget) {
 | 
						|
            this._currentWidget = widget;
 | 
						|
            widget.show();
 | 
						|
            widget.activate();
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Test whether the sidebar has the given widget by id.
 | 
						|
     */
 | 
						|
    has(id) {
 | 
						|
        return this._findWidgetByID(id) !== null;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Collapse the sidebar so no items are expanded.
 | 
						|
     */
 | 
						|
    collapse() {
 | 
						|
        var _a;
 | 
						|
        (_a = this._currentWidget) === null || _a === void 0 ? void 0 : _a.hide();
 | 
						|
        this._currentWidget = null;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Add a widget and its title to the stacked panel.
 | 
						|
     *
 | 
						|
     * If the widget is already added, it will be moved.
 | 
						|
     */
 | 
						|
    addWidget(widget, rank) {
 | 
						|
        widget.parent = null;
 | 
						|
        widget.hide();
 | 
						|
        const item = { widget, rank };
 | 
						|
        const index = this._findInsertIndex(item);
 | 
						|
        dist_index_es6_js_.ArrayExt.insert(this._items, index, item);
 | 
						|
        this._widgetPanel.insertWidget(index, widget);
 | 
						|
        this._refreshVisibility();
 | 
						|
        this._widgetAdded.emit(widget);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Hide the side panel
 | 
						|
     */
 | 
						|
    hide() {
 | 
						|
        this._isHiddenByUser = true;
 | 
						|
        this._refreshVisibility();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Show the side panel
 | 
						|
     */
 | 
						|
    show() {
 | 
						|
        this._isHiddenByUser = false;
 | 
						|
        this._refreshVisibility();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Find the insertion index for a rank item.
 | 
						|
     */
 | 
						|
    _findInsertIndex(item) {
 | 
						|
        return dist_index_es6_js_.ArrayExt.upperBound(this._items, item, Private.itemCmp);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Find the index of the item with the given widget, or `-1`.
 | 
						|
     */
 | 
						|
    _findWidgetIndex(widget) {
 | 
						|
        return dist_index_es6_js_.ArrayExt.findFirstIndex(this._items, (i) => i.widget === widget);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Find the widget with the given id, or `null`.
 | 
						|
     */
 | 
						|
    _findWidgetByID(id) {
 | 
						|
        const item = (0,dist_index_es6_js_.find)(this._items, (value) => value.widget.id === id);
 | 
						|
        return item ? item.widget : null;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Refresh the visibility of the stacked panel.
 | 
						|
     */
 | 
						|
    _refreshVisibility() {
 | 
						|
        this._panel.setHidden(this._isHiddenByUser);
 | 
						|
    }
 | 
						|
    /*
 | 
						|
     * Handle the `widgetRemoved` signal from the panel.
 | 
						|
     */
 | 
						|
    _onWidgetRemoved(sender, widget) {
 | 
						|
        if (widget === this._lastCurrentWidget) {
 | 
						|
            this._lastCurrentWidget = null;
 | 
						|
        }
 | 
						|
        dist_index_es6_js_.ArrayExt.removeAt(this._items, this._findWidgetIndex(widget));
 | 
						|
        this._refreshVisibility();
 | 
						|
        this._widgetRemoved.emit(widget);
 | 
						|
    }
 | 
						|
}
 | 
						|
/**
 | 
						|
 * A class to manages the palette entries associated to the side panels.
 | 
						|
 */
 | 
						|
class SidePanelPalette {
 | 
						|
    /**
 | 
						|
     * Construct a new side panel palette.
 | 
						|
     */
 | 
						|
    constructor(options) {
 | 
						|
        this._items = [];
 | 
						|
        this._commandPalette = options.commandPalette;
 | 
						|
        this._command = options.command;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get a command palette item from the widget id and the area.
 | 
						|
     */
 | 
						|
    getItem(widget, area) {
 | 
						|
        const itemList = this._items;
 | 
						|
        for (let i = 0; i < itemList.length; i++) {
 | 
						|
            const item = itemList[i];
 | 
						|
            if (item.widgetId === widget.id && item.area === area) {
 | 
						|
                return item;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Add an item to the command palette.
 | 
						|
     */
 | 
						|
    addItem(widget, area) {
 | 
						|
        // Check if the item does not already exist.
 | 
						|
        if (this.getItem(widget, area)) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        // Add a new item in command palette.
 | 
						|
        const disposableDelegate = this._commandPalette.addItem({
 | 
						|
            command: this._command,
 | 
						|
            category: 'View',
 | 
						|
            args: {
 | 
						|
                side: area,
 | 
						|
                title: `Show ${widget.title.caption}`,
 | 
						|
                id: widget.id,
 | 
						|
            },
 | 
						|
        });
 | 
						|
        // Keep the disposableDelegate object to be able to dispose of the item if the widget
 | 
						|
        // is remove from the side panel.
 | 
						|
        this._items.push({
 | 
						|
            widgetId: widget.id,
 | 
						|
            area: area,
 | 
						|
            disposable: disposableDelegate,
 | 
						|
        });
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Remove an item from the command palette.
 | 
						|
     */
 | 
						|
    removeItem(widget, area) {
 | 
						|
        const item = this.getItem(widget, area);
 | 
						|
        if (item) {
 | 
						|
            item.disposable.dispose();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
/**
 | 
						|
 * A namespace for private module data.
 | 
						|
 */
 | 
						|
var Private;
 | 
						|
(function (Private) {
 | 
						|
    /**
 | 
						|
     * A less-than comparison function for side bar rank items.
 | 
						|
     */
 | 
						|
    function itemCmp(first, second) {
 | 
						|
        return first.rank - second.rank;
 | 
						|
    }
 | 
						|
    Private.itemCmp = itemCmp;
 | 
						|
})(Private || (Private = {}));
 | 
						|
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/shell.js
 | 
						|
// Copyright (c) Jupyter Development Team.
 | 
						|
// Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * The Jupyter Notebook application shell token.
 | 
						|
 */
 | 
						|
const INotebookShell = new dist_index_js_.Token('@jupyter-notebook/application:INotebookShell');
 | 
						|
/**
 | 
						|
 * The default rank for ranked panels.
 | 
						|
 */
 | 
						|
const DEFAULT_RANK = 900;
 | 
						|
/**
 | 
						|
 * The application shell.
 | 
						|
 */
 | 
						|
class NotebookShell extends widgets_dist_index_es6_js_.Widget {
 | 
						|
    constructor() {
 | 
						|
        super();
 | 
						|
        this._translator = translation_lib_index_js_.nullTranslator;
 | 
						|
        this._currentChanged = new signaling_dist_index_es6_js_.Signal(this);
 | 
						|
        this._mainWidgetLoaded = new dist_index_js_.PromiseDelegate();
 | 
						|
        this.id = 'main';
 | 
						|
        this._userLayout = {};
 | 
						|
        this._topHandler = new PanelHandler();
 | 
						|
        this._menuHandler = new PanelHandler();
 | 
						|
        this._leftHandler = new SidePanelHandler('left');
 | 
						|
        this._rightHandler = new SidePanelHandler('right');
 | 
						|
        this._main = new widgets_dist_index_es6_js_.Panel();
 | 
						|
        const topWrapper = (this._topWrapper = new widgets_dist_index_es6_js_.Panel());
 | 
						|
        const menuWrapper = (this._menuWrapper = new widgets_dist_index_es6_js_.Panel());
 | 
						|
        this._topHandler.panel.id = 'top-panel';
 | 
						|
        this._topHandler.panel.node.setAttribute('role', 'banner');
 | 
						|
        this._menuHandler.panel.id = 'menu-panel';
 | 
						|
        this._menuHandler.panel.node.setAttribute('role', 'navigation');
 | 
						|
        this._main.id = 'main-panel';
 | 
						|
        this._main.node.setAttribute('role', 'main');
 | 
						|
        this._spacer_top = new widgets_dist_index_es6_js_.Widget();
 | 
						|
        this._spacer_top.id = 'spacer-widget-top';
 | 
						|
        this._spacer_bottom = new widgets_dist_index_es6_js_.Widget();
 | 
						|
        this._spacer_bottom.id = 'spacer-widget-bottom';
 | 
						|
        // create wrappers around the top and menu areas
 | 
						|
        topWrapper.id = 'top-panel-wrapper';
 | 
						|
        topWrapper.addWidget(this._topHandler.panel);
 | 
						|
        menuWrapper.id = 'menu-panel-wrapper';
 | 
						|
        menuWrapper.addWidget(this._menuHandler.panel);
 | 
						|
        const rootLayout = new widgets_dist_index_es6_js_.BoxLayout();
 | 
						|
        const leftHandler = this._leftHandler;
 | 
						|
        const rightHandler = this._rightHandler;
 | 
						|
        leftHandler.panel.id = 'jp-left-stack';
 | 
						|
        leftHandler.panel.node.setAttribute('role', 'complementary');
 | 
						|
        rightHandler.panel.id = 'jp-right-stack';
 | 
						|
        rightHandler.panel.node.setAttribute('role', 'complementary');
 | 
						|
        // Hide the side panels by default.
 | 
						|
        leftHandler.hide();
 | 
						|
        rightHandler.hide();
 | 
						|
        const middleLayout = new widgets_dist_index_es6_js_.BoxLayout({
 | 
						|
            spacing: 0,
 | 
						|
            direction: 'top-to-bottom',
 | 
						|
        });
 | 
						|
        widgets_dist_index_es6_js_.BoxLayout.setStretch(this._topWrapper, 0);
 | 
						|
        widgets_dist_index_es6_js_.BoxLayout.setStretch(this._menuWrapper, 0);
 | 
						|
        widgets_dist_index_es6_js_.BoxLayout.setStretch(this._main, 1);
 | 
						|
        const middlePanel = new widgets_dist_index_es6_js_.Panel({ layout: middleLayout });
 | 
						|
        middlePanel.addWidget(this._topWrapper);
 | 
						|
        middlePanel.addWidget(this._menuWrapper);
 | 
						|
        middlePanel.addWidget(this._spacer_top);
 | 
						|
        middlePanel.addWidget(this._main);
 | 
						|
        middlePanel.addWidget(this._spacer_bottom);
 | 
						|
        middlePanel.layout = middleLayout;
 | 
						|
        const vsplitPanel = new widgets_dist_index_es6_js_.SplitPanel();
 | 
						|
        vsplitPanel.id = 'jp-main-vsplit-panel';
 | 
						|
        vsplitPanel.spacing = 1;
 | 
						|
        vsplitPanel.orientation = 'vertical';
 | 
						|
        widgets_dist_index_es6_js_.SplitPanel.setStretch(vsplitPanel, 1);
 | 
						|
        const downPanel = new ui_components_lib_index_js_.TabPanelSvg({
 | 
						|
            tabsMovable: true,
 | 
						|
        });
 | 
						|
        this._downPanel = downPanel;
 | 
						|
        this._downPanel.id = 'jp-down-stack';
 | 
						|
        // TODO: Consider storing this as an attribute this._hsplitPanel if saving/restoring layout needed
 | 
						|
        const hsplitPanel = new widgets_dist_index_es6_js_.SplitPanel();
 | 
						|
        hsplitPanel.id = 'main-split-panel';
 | 
						|
        hsplitPanel.spacing = 1;
 | 
						|
        widgets_dist_index_es6_js_.BoxLayout.setStretch(hsplitPanel, 1);
 | 
						|
        widgets_dist_index_es6_js_.SplitPanel.setStretch(leftHandler.panel, 0);
 | 
						|
        widgets_dist_index_es6_js_.SplitPanel.setStretch(rightHandler.panel, 0);
 | 
						|
        widgets_dist_index_es6_js_.SplitPanel.setStretch(middlePanel, 1);
 | 
						|
        hsplitPanel.addWidget(leftHandler.panel);
 | 
						|
        hsplitPanel.addWidget(middlePanel);
 | 
						|
        hsplitPanel.addWidget(rightHandler.panel);
 | 
						|
        // Use relative sizing to set the width of the side panels.
 | 
						|
        // This will still respect the min-size of children widget in the stacked
 | 
						|
        // panel.
 | 
						|
        hsplitPanel.setRelativeSizes([1, 2.5, 1]);
 | 
						|
        vsplitPanel.addWidget(hsplitPanel);
 | 
						|
        vsplitPanel.addWidget(downPanel);
 | 
						|
        rootLayout.spacing = 0;
 | 
						|
        rootLayout.addWidget(vsplitPanel);
 | 
						|
        // initially hiding the down panel
 | 
						|
        this._downPanel.hide();
 | 
						|
        // Connect down panel change listeners
 | 
						|
        this._downPanel.tabBar.tabMoved.connect(this._onTabPanelChanged, this);
 | 
						|
        this._downPanel.stackedPanel.widgetRemoved.connect(this._onTabPanelChanged, this);
 | 
						|
        this.layout = rootLayout;
 | 
						|
        // Added Skip to Main Link
 | 
						|
        const skipLinkWidgetHandler = (this._skipLinkWidgetHandler =
 | 
						|
            new shell_Private.SkipLinkWidgetHandler(this));
 | 
						|
        this.add(skipLinkWidgetHandler.skipLinkWidget, 'top', { rank: 0 });
 | 
						|
        this._skipLinkWidgetHandler.show();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * A signal emitted when the current widget changes.
 | 
						|
     */
 | 
						|
    get currentChanged() {
 | 
						|
        return this._currentChanged;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * The current widget in the shell's main area.
 | 
						|
     */
 | 
						|
    get currentWidget() {
 | 
						|
        var _a;
 | 
						|
        return (_a = this._main.widgets[0]) !== null && _a !== void 0 ? _a : null;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the top area wrapper panel
 | 
						|
     */
 | 
						|
    get top() {
 | 
						|
        return this._topWrapper;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the menu area wrapper panel
 | 
						|
     */
 | 
						|
    get menu() {
 | 
						|
        return this._menuWrapper;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the left area handler
 | 
						|
     */
 | 
						|
    get leftHandler() {
 | 
						|
        return this._leftHandler;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Get the right area handler
 | 
						|
     */
 | 
						|
    get rightHandler() {
 | 
						|
        return this._rightHandler;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Is the left sidebar visible?
 | 
						|
     */
 | 
						|
    get leftCollapsed() {
 | 
						|
        return !(this._leftHandler.isVisible && this._leftHandler.panel.isVisible);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Is the right sidebar visible?
 | 
						|
     */
 | 
						|
    get rightCollapsed() {
 | 
						|
        return !(this._rightHandler.isVisible && this._rightHandler.panel.isVisible);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Promise that resolves when the main widget is loaded
 | 
						|
     */
 | 
						|
    get restored() {
 | 
						|
        return this._mainWidgetLoaded.promise;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Getter and setter for the translator.
 | 
						|
     */
 | 
						|
    get translator() {
 | 
						|
        var _a;
 | 
						|
        return (_a = this._translator) !== null && _a !== void 0 ? _a : translation_lib_index_js_.nullTranslator;
 | 
						|
    }
 | 
						|
    set translator(value) {
 | 
						|
        if (value !== this._translator) {
 | 
						|
            this._translator = value;
 | 
						|
            const trans = value.load('notebook');
 | 
						|
            this._leftHandler.closeButton.title = trans.__('Collapse %1 side panel', this._leftHandler.area);
 | 
						|
            this._rightHandler.closeButton.title = trans.__('Collapse %1 side panel', this._rightHandler.area);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * User custom shell layout.
 | 
						|
     */
 | 
						|
    get userLayout() {
 | 
						|
        return dist_index_js_.JSONExt.deepCopy(this._userLayout);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Activate a widget in its area.
 | 
						|
     */
 | 
						|
    activateById(id) {
 | 
						|
        // Search all areas that can have widgets for this widget, starting with main.
 | 
						|
        for (const area of ['main', 'top', 'left', 'right', 'menu', 'down']) {
 | 
						|
            const widget = (0,dist_index_es6_js_.find)(this.widgets(area), (w) => w.id === id);
 | 
						|
            if (widget) {
 | 
						|
                if (area === 'left') {
 | 
						|
                    this.expandLeft(id);
 | 
						|
                }
 | 
						|
                else if (area === 'right') {
 | 
						|
                    this.expandRight(id);
 | 
						|
                }
 | 
						|
                else if (area === 'down') {
 | 
						|
                    this._downPanel.show();
 | 
						|
                    widget.activate();
 | 
						|
                }
 | 
						|
                else {
 | 
						|
                    widget.activate();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Add a widget to the application shell.
 | 
						|
     *
 | 
						|
     * @param widget - The widget being added.
 | 
						|
     *
 | 
						|
     * @param area - Optional region in the shell into which the widget should
 | 
						|
     * be added.
 | 
						|
     *
 | 
						|
     * @param options - Optional open options.
 | 
						|
     *
 | 
						|
     */
 | 
						|
    add(widget, area, options) {
 | 
						|
        var _a, _b;
 | 
						|
        let userPosition;
 | 
						|
        if ((options === null || options === void 0 ? void 0 : options.type) && this._userLayout[options.type]) {
 | 
						|
            userPosition = this._userLayout[options.type];
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            userPosition = this._userLayout[widget.id];
 | 
						|
        }
 | 
						|
        area = (_a = userPosition === null || userPosition === void 0 ? void 0 : userPosition.area) !== null && _a !== void 0 ? _a : area;
 | 
						|
        options =
 | 
						|
            options || (userPosition === null || userPosition === void 0 ? void 0 : userPosition.options)
 | 
						|
                ? {
 | 
						|
                    ...options,
 | 
						|
                    ...userPosition === null || userPosition === void 0 ? void 0 : userPosition.options,
 | 
						|
                }
 | 
						|
                : undefined;
 | 
						|
        const rank = (_b = options === null || options === void 0 ? void 0 : options.rank) !== null && _b !== void 0 ? _b : DEFAULT_RANK;
 | 
						|
        switch (area) {
 | 
						|
            case 'top':
 | 
						|
                return this._topHandler.addWidget(widget, rank);
 | 
						|
            case 'menu':
 | 
						|
                return this._menuHandler.addWidget(widget, rank);
 | 
						|
            case 'main':
 | 
						|
            case undefined: {
 | 
						|
                if (this._main.widgets.length > 0) {
 | 
						|
                    // do not add the widget if there is already one
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
                const previousWidget = this.currentWidget;
 | 
						|
                this._main.addWidget(widget);
 | 
						|
                this._main.update();
 | 
						|
                this._currentChanged.emit({
 | 
						|
                    newValue: widget,
 | 
						|
                    oldValue: previousWidget,
 | 
						|
                });
 | 
						|
                this._mainWidgetLoaded.resolve();
 | 
						|
                break;
 | 
						|
            }
 | 
						|
            case 'left':
 | 
						|
                return this._leftHandler.addWidget(widget, rank);
 | 
						|
            case 'right':
 | 
						|
                return this._rightHandler.addWidget(widget, rank);
 | 
						|
            case 'down':
 | 
						|
                return this._downPanel.addWidget(widget);
 | 
						|
            default:
 | 
						|
                console.warn(`Cannot add widget to area: ${area}`);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Collapse the top area and the spacer to make the view more compact.
 | 
						|
     */
 | 
						|
    collapseTop() {
 | 
						|
        this._topWrapper.setHidden(true);
 | 
						|
        this._spacer_top.setHidden(true);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Expand the top area to show the header and the spacer.
 | 
						|
     */
 | 
						|
    expandTop() {
 | 
						|
        this._topWrapper.setHidden(false);
 | 
						|
        this._spacer_top.setHidden(false);
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Return the list of widgets for the given area.
 | 
						|
     *
 | 
						|
     * @param area The area
 | 
						|
     */
 | 
						|
    *widgets(area) {
 | 
						|
        switch (area !== null && area !== void 0 ? area : 'main') {
 | 
						|
            case 'top':
 | 
						|
                yield* this._topHandler.panel.widgets;
 | 
						|
                return;
 | 
						|
            case 'menu':
 | 
						|
                yield* this._menuHandler.panel.widgets;
 | 
						|
                return;
 | 
						|
            case 'main':
 | 
						|
                yield* this._main.widgets;
 | 
						|
                return;
 | 
						|
            case 'left':
 | 
						|
                yield* this._leftHandler.widgets;
 | 
						|
                return;
 | 
						|
            case 'right':
 | 
						|
                yield* this._rightHandler.widgets;
 | 
						|
                return;
 | 
						|
            case 'down':
 | 
						|
                yield* this._downPanel.widgets;
 | 
						|
                return;
 | 
						|
            default:
 | 
						|
                console.error(`This shell has no area called "${area}"`);
 | 
						|
                return;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Expand the left panel to show the sidebar with its widget.
 | 
						|
     */
 | 
						|
    expandLeft(id) {
 | 
						|
        this._leftHandler.panel.show();
 | 
						|
        this._leftHandler.expand(id); // Show the current widget, if any
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Collapse the left panel
 | 
						|
     */
 | 
						|
    collapseLeft() {
 | 
						|
        this._leftHandler.collapse();
 | 
						|
        this._leftHandler.panel.hide();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Expand the right panel to show the sidebar with its widget.
 | 
						|
     */
 | 
						|
    expandRight(id) {
 | 
						|
        this._rightHandler.panel.show();
 | 
						|
        this._rightHandler.expand(id); // Show the current widget, if any
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Collapse the right panel
 | 
						|
     */
 | 
						|
    collapseRight() {
 | 
						|
        this._rightHandler.collapse();
 | 
						|
        this._rightHandler.panel.hide();
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Restore the layout state and configuration for the application shell.
 | 
						|
     */
 | 
						|
    async restoreLayout(configuration) {
 | 
						|
        this._userLayout = configuration;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Handle a change on the down panel widgets
 | 
						|
     */
 | 
						|
    _onTabPanelChanged() {
 | 
						|
        if (this._downPanel.stackedPanel.widgets.length === 0) {
 | 
						|
            this._downPanel.hide();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
var shell_Private;
 | 
						|
(function (Private) {
 | 
						|
    class SkipLinkWidgetHandler {
 | 
						|
        /**
 | 
						|
         * Construct a new skipLink widget handler.
 | 
						|
         */
 | 
						|
        constructor(shell) {
 | 
						|
            this._isDisposed = false;
 | 
						|
            const skipLinkWidget = (this._skipLinkWidget = new widgets_dist_index_es6_js_.Widget());
 | 
						|
            const skipToMain = document.createElement('a');
 | 
						|
            skipToMain.href = '#first-cell';
 | 
						|
            skipToMain.tabIndex = 1;
 | 
						|
            skipToMain.text = 'Skip to Main';
 | 
						|
            skipToMain.className = 'skip-link';
 | 
						|
            skipToMain.addEventListener('click', this);
 | 
						|
            skipLinkWidget.addClass('jp-skiplink');
 | 
						|
            skipLinkWidget.id = 'jp-skiplink';
 | 
						|
            skipLinkWidget.node.appendChild(skipToMain);
 | 
						|
        }
 | 
						|
        handleEvent(event) {
 | 
						|
            switch (event.type) {
 | 
						|
                case 'click':
 | 
						|
                    this._focusMain();
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        _focusMain() {
 | 
						|
            const input = document.querySelector('#main-panel .jp-InputArea-editor');
 | 
						|
            input.tabIndex = 1;
 | 
						|
            input.focus();
 | 
						|
        }
 | 
						|
        /**
 | 
						|
         * Get the input element managed by the handler.
 | 
						|
         */
 | 
						|
        get skipLinkWidget() {
 | 
						|
            return this._skipLinkWidget;
 | 
						|
        }
 | 
						|
        /**
 | 
						|
         * Dispose of the handler and the resources it holds.
 | 
						|
         */
 | 
						|
        dispose() {
 | 
						|
            if (this.isDisposed) {
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            this._isDisposed = true;
 | 
						|
            this._skipLinkWidget.node.removeEventListener('click', this);
 | 
						|
            this._skipLinkWidget.dispose();
 | 
						|
        }
 | 
						|
        /**
 | 
						|
         * Hide the skipLink widget.
 | 
						|
         */
 | 
						|
        hide() {
 | 
						|
            this._skipLinkWidget.hide();
 | 
						|
        }
 | 
						|
        /**
 | 
						|
         * Show the skipLink widget.
 | 
						|
         */
 | 
						|
        show() {
 | 
						|
            this._skipLinkWidget.show();
 | 
						|
        }
 | 
						|
        /**
 | 
						|
         * Test whether the handler has been disposed.
 | 
						|
         */
 | 
						|
        get isDisposed() {
 | 
						|
            return this._isDisposed;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    Private.SkipLinkWidgetHandler = SkipLinkWidgetHandler;
 | 
						|
})(shell_Private || (shell_Private = {}));
 | 
						|
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/app.js
 | 
						|
// Copyright (c) Jupyter Development Team.
 | 
						|
// Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * App is the main application class. It is instantiated once and shared.
 | 
						|
 */
 | 
						|
class NotebookApp extends index_js_.JupyterFrontEnd {
 | 
						|
    /**
 | 
						|
     * Construct a new NotebookApp object.
 | 
						|
     *
 | 
						|
     * @param options The instantiation options for an application.
 | 
						|
     */
 | 
						|
    constructor(options = { shell: new NotebookShell() }) {
 | 
						|
        var _a, _b;
 | 
						|
        super({ ...options, shell: (_a = options.shell) !== null && _a !== void 0 ? _a : new NotebookShell() });
 | 
						|
        /**
 | 
						|
         * The name of the application.
 | 
						|
         */
 | 
						|
        this.name = 'Jupyter Notebook';
 | 
						|
        /**
 | 
						|
         * A namespace/prefix plugins may use to denote their provenance.
 | 
						|
         */
 | 
						|
        this.namespace = this.name;
 | 
						|
        /**
 | 
						|
         * The application busy and dirty status signals and flags.
 | 
						|
         */
 | 
						|
        this.status = new lib_status/* LabStatus */.J(this);
 | 
						|
        /**
 | 
						|
         * The version of the application.
 | 
						|
         */
 | 
						|
        this.version = (_b = coreutils_lib_index_js_.PageConfig.getOption('appVersion')) !== null && _b !== void 0 ? _b : 'unknown';
 | 
						|
        this._info = index_js_.JupyterLab.defaultInfo;
 | 
						|
        this._formatter = new index_es6_js_.Throttler(() => {
 | 
						|
            app_Private.setFormat(this);
 | 
						|
        }, 250);
 | 
						|
        // Add initial model factory.
 | 
						|
        this.docRegistry.addModelFactory(new lib_index_js_.Base64ModelFactory());
 | 
						|
        if (options.mimeExtensions) {
 | 
						|
            for (const plugin of (0,mimerenderers/* createRendermimePlugins */.as)(options.mimeExtensions)) {
 | 
						|
                this.registerPlugin(plugin);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        // Create an IInfo dictionary from the options to override the defaults.
 | 
						|
        const info = Object.keys(index_js_.JupyterLab.defaultInfo).reduce((acc, val) => {
 | 
						|
            if (val in options) {
 | 
						|
                acc[val] = JSON.parse(JSON.stringify(options[val]));
 | 
						|
            }
 | 
						|
            return acc;
 | 
						|
        }, {});
 | 
						|
        // Populate application info.
 | 
						|
        this._info = { ...index_js_.JupyterLab.defaultInfo, ...info };
 | 
						|
        this.restored = this.shell.restored;
 | 
						|
        this.restored.then(() => this._formatter.invoke());
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * The NotebookApp application information dictionary.
 | 
						|
     */
 | 
						|
    get info() {
 | 
						|
        return this._info;
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * The JupyterLab application paths dictionary.
 | 
						|
     */
 | 
						|
    get paths() {
 | 
						|
        return {
 | 
						|
            urls: {
 | 
						|
                base: coreutils_lib_index_js_.PageConfig.getOption('baseUrl'),
 | 
						|
                notFound: coreutils_lib_index_js_.PageConfig.getOption('notFoundUrl'),
 | 
						|
                app: coreutils_lib_index_js_.PageConfig.getOption('appUrl'),
 | 
						|
                static: coreutils_lib_index_js_.PageConfig.getOption('staticUrl'),
 | 
						|
                settings: coreutils_lib_index_js_.PageConfig.getOption('settingsUrl'),
 | 
						|
                themes: coreutils_lib_index_js_.PageConfig.getOption('themesUrl'),
 | 
						|
                doc: coreutils_lib_index_js_.PageConfig.getOption('docUrl'),
 | 
						|
                translations: coreutils_lib_index_js_.PageConfig.getOption('translationsApiUrl'),
 | 
						|
                hubHost: coreutils_lib_index_js_.PageConfig.getOption('hubHost') || undefined,
 | 
						|
                hubPrefix: coreutils_lib_index_js_.PageConfig.getOption('hubPrefix') || undefined,
 | 
						|
                hubUser: coreutils_lib_index_js_.PageConfig.getOption('hubUser') || undefined,
 | 
						|
                hubServerName: coreutils_lib_index_js_.PageConfig.getOption('hubServerName') || undefined,
 | 
						|
            },
 | 
						|
            directories: {
 | 
						|
                appSettings: coreutils_lib_index_js_.PageConfig.getOption('appSettingsDir'),
 | 
						|
                schemas: coreutils_lib_index_js_.PageConfig.getOption('schemasDir'),
 | 
						|
                static: coreutils_lib_index_js_.PageConfig.getOption('staticDir'),
 | 
						|
                templates: coreutils_lib_index_js_.PageConfig.getOption('templatesDir'),
 | 
						|
                themes: coreutils_lib_index_js_.PageConfig.getOption('themesDir'),
 | 
						|
                userSettings: coreutils_lib_index_js_.PageConfig.getOption('userSettingsDir'),
 | 
						|
                serverRoot: coreutils_lib_index_js_.PageConfig.getOption('serverRoot'),
 | 
						|
                workspaces: coreutils_lib_index_js_.PageConfig.getOption('workspacesDir'),
 | 
						|
            },
 | 
						|
        };
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Handle the DOM events for the application.
 | 
						|
     *
 | 
						|
     * @param event - The DOM event sent to the application.
 | 
						|
     */
 | 
						|
    handleEvent(event) {
 | 
						|
        super.handleEvent(event);
 | 
						|
        if (event.type === 'resize') {
 | 
						|
            void this._formatter.invoke();
 | 
						|
        }
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Register plugins from a plugin module.
 | 
						|
     *
 | 
						|
     * @param mod - The plugin module to register.
 | 
						|
     */
 | 
						|
    registerPluginModule(mod) {
 | 
						|
        let data = mod.default;
 | 
						|
        // Handle commonjs exports.
 | 
						|
        if (!Object.prototype.hasOwnProperty.call(mod, '__esModule')) {
 | 
						|
            data = mod;
 | 
						|
        }
 | 
						|
        if (!Array.isArray(data)) {
 | 
						|
            data = [data];
 | 
						|
        }
 | 
						|
        data.forEach((item) => {
 | 
						|
            try {
 | 
						|
                this.registerPlugin(item);
 | 
						|
            }
 | 
						|
            catch (error) {
 | 
						|
                console.error(error);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
    /**
 | 
						|
     * Register the plugins from multiple plugin modules.
 | 
						|
     *
 | 
						|
     * @param mods - The plugin modules to register.
 | 
						|
     */
 | 
						|
    registerPluginModules(mods) {
 | 
						|
        mods.forEach((mod) => {
 | 
						|
            this.registerPluginModule(mod);
 | 
						|
        });
 | 
						|
    }
 | 
						|
}
 | 
						|
/**
 | 
						|
 * A namespace for module-private functionality.
 | 
						|
 */
 | 
						|
var app_Private;
 | 
						|
(function (Private) {
 | 
						|
    /**
 | 
						|
     * Media query for mobile devices.
 | 
						|
     */
 | 
						|
    const MOBILE_QUERY = 'only screen and (max-width: 760px)';
 | 
						|
    /**
 | 
						|
     * Sets the `format` of a Jupyter front-end application.
 | 
						|
     *
 | 
						|
     * @param app The front-end application whose format is set.
 | 
						|
     */
 | 
						|
    function setFormat(app) {
 | 
						|
        app.format = window.matchMedia(MOBILE_QUERY).matches ? 'mobile' : 'desktop';
 | 
						|
    }
 | 
						|
    Private.setFormat = setFormat;
 | 
						|
})(app_Private || (app_Private = {}));
 | 
						|
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/pathopener.js
 | 
						|
// Copyright (c) Jupyter Development Team.
 | 
						|
// Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
/**
 | 
						|
 * A class to open paths in new browser tabs in the Notebook application.
 | 
						|
 */
 | 
						|
class DefaultNotebookPathOpener {
 | 
						|
    /**
 | 
						|
     * Open a path in a new browser tab.
 | 
						|
     */
 | 
						|
    open(options) {
 | 
						|
        const { prefix, path, searchParams, target, features } = options;
 | 
						|
        const url = new URL(coreutils_lib_index_js_.URLExt.join(prefix, coreutils_lib_index_js_.URLExt.encodeParts(path !== null && path !== void 0 ? path : '')), window.location.origin);
 | 
						|
        if (searchParams) {
 | 
						|
            url.search = searchParams.toString();
 | 
						|
        }
 | 
						|
        return window.open(url, target, features);
 | 
						|
    }
 | 
						|
}
 | 
						|
const defaultNotebookPathOpener = new DefaultNotebookPathOpener();
 | 
						|
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/tokens.js
 | 
						|
 | 
						|
/**
 | 
						|
 * The INotebookPathOpener token.
 | 
						|
 * The main purpose of this token is to allow other extensions or downstream applications
 | 
						|
 * to override the default behavior of opening a notebook in a new tab.
 | 
						|
 * It also allows passing the path as a URL search parameter, or other options to the window.open call.
 | 
						|
 */
 | 
						|
const INotebookPathOpener = new dist_index_js_.Token('@jupyter-notebook/application:INotebookPathOpener');
 | 
						|
 | 
						|
;// CONCATENATED MODULE: ../packages/application/lib/index.js
 | 
						|
// Copyright (c) Jupyter Development Team.
 | 
						|
// Distributed under the terms of the Modified BSD License.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/***/ })
 | 
						|
 | 
						|
}]);
 | 
						|
//# sourceMappingURL=5135.03844df535c8f2a569c7.js.map?v=03844df535c8f2a569c7
 |