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

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AttachmentsModel\": () => (/* binding */ AttachmentsModel),\n/* harmony export */   \"AttachmentsResolver\": () => (/* binding */ AttachmentsResolver)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/observables */ \"webpack/sharing/consume/default/@jupyterlab/observables/@jupyterlab/observables\");\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/rendermime */ \"webpack/sharing/consume/default/@jupyterlab/rendermime/@jupyterlab/rendermime\");\n/* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_2__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * The default implementation of the IAttachmentsModel.\n */\nclass AttachmentsModel {\n    /**\n     * Construct a new observable outputs instance.\n     */\n    constructor(options = {}) {\n        this._map = new _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__.ObservableMap();\n        this._isDisposed = false;\n        this._stateChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal(this);\n        this._changed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal(this);\n        this._modelDB = null;\n        this._serialized = null;\n        this._changeGuard = false;\n        this.contentFactory =\n            options.contentFactory || AttachmentsModel.defaultContentFactory;\n        if (options.values) {\n            for (const key of Object.keys(options.values)) {\n                if (options.values[key] !== undefined) {\n                    this.set(key, options.values[key]);\n                }\n            }\n        }\n        this._map.changed.connect(this._onMapChanged, this);\n        // If we are given a IModelDB, keep an up-to-date\n        // serialized copy of the AttachmentsModel in it.\n        if (options.modelDB) {\n            this._modelDB = options.modelDB;\n            this._serialized = this._modelDB.createValue('attachments');\n            if (this._serialized.get()) {\n                this.fromJSON(this._serialized.get());\n            }\n            else {\n                this._serialized.set(this.toJSON());\n            }\n            this._serialized.changed.connect(this._onSerializedChanged, this);\n        }\n    }\n    /**\n     * A signal emitted when the model state changes.\n     */\n    get stateChanged() {\n        return this._stateChanged;\n    }\n    /**\n     * A signal emitted when the model changes.\n     */\n    get changed() {\n        return this._changed;\n    }\n    /**\n     * The keys of the attachments in the model.\n     */\n    get keys() {\n        return this._map.keys();\n    }\n    /**\n     * Get the length of the items in the model.\n     */\n    get length() {\n        return this._map.keys().length;\n    }\n    /**\n     * Test whether the model is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Dispose of the resources used by the model.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this._map.dispose();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal.clearData(this);\n    }\n    /**\n     * Whether the specified key is set.\n     */\n    has(key) {\n        return this._map.has(key);\n    }\n    /**\n     * Get an item at the specified key.\n     */\n    get(key) {\n        return this._map.get(key);\n    }\n    /**\n     * Set the value at the specified key.\n     */\n    set(key, value) {\n        // Normalize stream data.\n        const item = this._createItem({ value });\n        this._map.set(key, item);\n    }\n    /**\n     * Remove the attachment whose name is the specified key\n     */\n    remove(key) {\n        this._map.delete(key);\n    }\n    /**\n     * Clear all of the attachments.\n     */\n    clear() {\n        this._map.values().forEach((item) => {\n            item.dispose();\n        });\n        this._map.clear();\n    }\n    /**\n     * Deserialize the model from JSON.\n     *\n     * #### Notes\n     * This will clear any existing data.\n     */\n    fromJSON(values) {\n        this.clear();\n        Object.keys(values).forEach(key => {\n            if (values[key] !== undefined) {\n                this.set(key, values[key]);\n            }\n        });\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const ret = {};\n        for (const key of this._map.keys()) {\n            ret[key] = this._map.get(key).toJSON();\n        }\n        return ret;\n    }\n    /**\n     * Create an attachment item and hook up its signals.\n     */\n    _createItem(options) {\n        const factory = this.contentFactory;\n        const item = factory.createAttachmentModel(options);\n        item.changed.connect(this._onGenericChange, this);\n        return item;\n    }\n    /**\n     * Handle a change to the list.\n     */\n    _onMapChanged(sender, args) {\n        if (this._serialized && !this._changeGuard) {\n            this._changeGuard = true;\n            this._serialized.set(this.toJSON());\n            this._changeGuard = false;\n        }\n        this._changed.emit(args);\n        this._stateChanged.emit(void 0);\n    }\n    /**\n     * If the serialized version of the outputs have changed due to a remote\n     * action, then update the model accordingly.\n     */\n    _onSerializedChanged(sender, args) {\n        if (!this._changeGuard) {\n            this._changeGuard = true;\n            this.fromJSON(args.newValue);\n            this._changeGuard = false;\n        }\n    }\n    /**\n     * Handle a change to an item.\n     */\n    _onGenericChange() {\n        this._stateChanged.emit(void 0);\n    }\n}\n/**\n * The namespace for AttachmentsModel class statics.\n */\n(function (AttachmentsModel) {\n    /**\n     * The default implementation of a `IAttachmentsModel.IContentFactory`.\n     */\n    class ContentFactory {\n        /**\n         * Create an attachment model.\n         */\n        createAttachmentModel(options) {\n            return new _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_1__.AttachmentModel(options);\n        }\n    }\n    AttachmentsModel.ContentFactory = ContentFactory;\n    /**\n     * The default attachment model factory.\n     */\n    AttachmentsModel.defaultContentFactory = new ContentFactory();\n})(AttachmentsModel || (AttachmentsModel = {}));\n/**\n * A resolver for cell attachments 'attachment:filename'.\n *\n * Will resolve to a data: url.\n */\nclass AttachmentsResolver {\n    /**\n     * Create an attachments resolver object.\n     */\n    constructor(options) {\n        this._parent = options.parent || null;\n        this._model = options.model;\n    }\n    /**\n     * Resolve a relative url to a correct server path.\n     */\n    async resolveUrl(url) {\n        if (this._parent && !url.startsWith('attachment:')) {\n            return this._parent.resolveUrl(url);\n        }\n        return url;\n    }\n    /**\n     * Get the download url of a given absolute server path.\n     *\n     * #### Notes\n     * The returned URL may include a query parameter.\n     */\n    async getDownloadUrl(path) {\n        if (this._parent && !path.startsWith('attachment:')) {\n            return this._parent.getDownloadUrl(path);\n        }\n        // Return a data URL with the data of the url\n        const key = path.slice('attachment:'.length);\n        const attachment = this._model.get(key);\n        if (attachment === undefined) {\n            // Resolve with unprocessed path, to show as broken image\n            return path;\n        }\n        const { data } = attachment;\n        const mimeType = Object.keys(data)[0];\n        // Only support known safe types:\n        if (mimeType === undefined ||\n            _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_1__.imageRendererFactory.mimeTypes.indexOf(mimeType) === -1) {\n            throw new Error(`Cannot render unknown image mime type \"${mimeType}\".`);\n        }\n        const dataUrl = `data:${mimeType};base64,${data[mimeType]}`;\n        return dataUrl;\n    }\n    /**\n     * Whether the URL should be handled by the resolver\n     * or not.\n     */\n    isLocal(url) {\n        var _a, _b, _c;\n        if (this._parent && !url.startsWith('attachment:')) {\n            return (_c = (_b = (_a = this._parent).isLocal) === null || _b === void 0 ? void 0 : _b.call(_a, url)) !== null && _c !== void 0 ? _c : true;\n        }\n        return true;\n    }\n}\n//# sourceMappingURL=model.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/attachments/lib/model.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CellDragUtils\": () => (/* binding */ CellDragUtils)\n/* harmony export */ });\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/virtualdom */ \"webpack/sharing/consume/default/@lumino/virtualdom/@lumino/virtualdom\");\n/* harmony import */ var _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n/**\n * This module contains some utility functions to operate on cells. This\n * could be shared by widgets that contain cells, like the CodeConsole or\n * Notebook widgets.\n */\n\n\n/**\n * Constants for drag\n */\n/**\n * The threshold in pixels to start a drag event.\n */\nconst DRAG_THRESHOLD = 5;\n/**\n * The class name added to drag images.\n */\nconst DRAG_IMAGE_CLASS = 'jp-dragImage';\n/**\n * The class name added to singular drag images\n */\nconst SINGLE_DRAG_IMAGE_CLASS = 'jp-dragImage-singlePrompt';\n/**\n * The class name added to the drag image cell content.\n */\nconst CELL_DRAG_CONTENT_CLASS = 'jp-dragImage-content';\n/**\n * The class name added to the drag image cell content.\n */\nconst CELL_DRAG_PROMPT_CLASS = 'jp-dragImage-prompt';\n/**\n * The class name added to the drag image cell content.\n */\nconst CELL_DRAG_MULTIPLE_BACK = 'jp-dragImage-multipleBack';\nvar CellDragUtils;\n(function (CellDragUtils) {\n    /**\n     * Find the cell index containing the target html element.\n     * This function traces up the DOM hierarchy to find the root cell\n     * node. Then find the corresponding child and select it.\n     *\n     * @param node - the cell node or a child of the cell node.\n     * @param cells - an iterable of Cells\n     * @param isCellNode - a function that takes in a node and checks if\n     * it is a cell node.\n     *\n     * @returns index of the cell we're looking for. Returns -1 if\n     * the cell is not founds\n     */\n    function findCell(node, cells, isCellNode) {\n        let cellIndex = -1;\n        while (node && node.parentElement) {\n            if (isCellNode(node)) {\n                (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_0__.each)(cells, (cell, index) => {\n                    if (cell.node === node) {\n                        cellIndex = index;\n                        return false;\n                    }\n                });\n                break;\n            }\n            node = node.parentElement;\n        }\n        return cellIndex;\n    }\n    CellDragUtils.findCell = findCell;\n    /**\n     * Detect which part of the cell triggered the MouseEvent\n     *\n     * @param cell - The cell which contains the MouseEvent's target\n     * @param target - The DOM node which triggered the MouseEvent\n     */\n    function detectTargetArea(cell, target) {\n        let targetArea;\n        if (cell) {\n            if (cell.editorWidget.node.contains(target)) {\n                targetArea = 'input';\n            }\n            else if (cell.promptNode.contains(target)) {\n                targetArea = 'prompt';\n            }\n            else {\n                targetArea = 'cell';\n            }\n        }\n        else {\n            targetArea = 'unknown';\n        }\n        return targetArea;\n    }\n    CellDragUtils.detectTargetArea = detectTargetArea;\n    /**\n     * Detect if a drag event should be started. This is down if the\n     * mouse is moved beyond a certain distance (DRAG_THRESHOLD).\n     *\n     * @param prevX - X Coordinate of the mouse pointer during the mousedown event\n     * @param prevY - Y Coordinate of the mouse pointer during the mousedown event\n     * @param nextX - Current X Coordinate of the mouse pointer\n     * @param nextY - Current Y Coordinate of the mouse pointer\n     */\n    function shouldStartDrag(prevX, prevY, nextX, nextY) {\n        const dx = Math.abs(nextX - prevX);\n        const dy = Math.abs(nextY - prevY);\n        return dx >= DRAG_THRESHOLD || dy >= DRAG_THRESHOLD;\n    }\n    CellDragUtils.shouldStartDrag = shouldStartDrag;\n    /**\n     * Create an image for the cell(s) to be dragged\n     *\n     * @param activeCell - The cell from where the drag event is triggered\n     * @param selectedCells - The cells to be dragged\n     */\n    function createCellDragImage(activeCell, selectedCells) {\n        const count = selectedCells.length;\n        let promptNumber;\n        if (activeCell.model.type === 'code') {\n            const executionCount = activeCell.model\n                .executionCount;\n            promptNumber = ' ';\n            if (executionCount) {\n                promptNumber = executionCount.toString();\n            }\n        }\n        else {\n            promptNumber = '';\n        }\n        const cellContent = activeCell.model.value.text.split('\\n')[0].slice(0, 26);\n        if (count > 1) {\n            if (promptNumber !== '') {\n                return _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.VirtualDOM.realize(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: DRAG_IMAGE_CLASS }, _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_PROMPT_CLASS }, '[' + promptNumber + ']:'), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_CONTENT_CLASS }, cellContent)), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: CELL_DRAG_MULTIPLE_BACK }, '')));\n            }\n            else {\n                return _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.VirtualDOM.realize(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: DRAG_IMAGE_CLASS }, _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_PROMPT_CLASS }), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_CONTENT_CLASS }, cellContent)), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: CELL_DRAG_MULTIPLE_BACK }, '')));\n            }\n        }\n        else {\n            if (promptNumber !== '') {\n                return _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.VirtualDOM.realize(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: `${DRAG_IMAGE_CLASS} ${SINGLE_DRAG_IMAGE_CLASS}` }, _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_PROMPT_CLASS }, '[' + promptNumber + ']:'), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_CONTENT_CLASS }, cellContent))));\n            }\n            else {\n                return _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.VirtualDOM.realize(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div(_lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.div({ className: `${DRAG_IMAGE_CLASS} ${SINGLE_DRAG_IMAGE_CLASS}` }, _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_PROMPT_CLASS }), _lumino_virtualdom__WEBPACK_IMPORTED_MODULE_1__.h.span({ className: CELL_DRAG_CONTENT_CLASS }, cellContent))));\n            }\n        }\n    }\n    CellDragUtils.createCellDragImage = createCellDragImage;\n})(CellDragUtils || (CellDragUtils = {}));\n//# sourceMappingURL=celldragutils.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/celldragutils.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Collapser\": () => (/* binding */ Collapser),\n/* harmony export */   \"InputCollapser\": () => (/* binding */ InputCollapser),\n/* harmony export */   \"OutputCollapser\": () => (/* binding */ OutputCollapser)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/domutils */ \"webpack/sharing/consume/default/@lumino/domutils/@lumino/domutils\");\n/* harmony import */ var _lumino_domutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_domutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n/**\n * The CSS class added to all collapsers.\n */\nconst COLLAPSER_CLASS = 'jp-Collapser';\n/**\n * The CSS class added to the collapser child.\n */\nconst COLLAPSER_CHILD_CLASS = 'jp-Collapser-child';\n/**\n * The CSS class added to input collapsers.\n */\nconst INPUT_COLLAPSER = 'jp-InputCollapser';\n/**\n * The CSS class added to output collapsers.\n */\nconst OUTPUT_COLLAPSER = 'jp-OutputCollapser';\n/**\n * Abstract collapser base class.\n *\n * ### Notes\n * A collapser is a visible div to the left of a cell's\n * input/output that a user can click on to collapse the\n * input/output.\n */\nclass Collapser extends _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ReactWidget {\n    /**\n     * Construct a new collapser.\n     */\n    constructor() {\n        super();\n        this.addClass(COLLAPSER_CLASS);\n    }\n    /**\n     * Is the input/output of the parent collapsed.\n     */\n    get collapsed() {\n        return false;\n    }\n    /**\n     * Render the collapser with the virtual DOM.\n     */\n    render() {\n        const childClass = COLLAPSER_CHILD_CLASS;\n        return react__WEBPACK_IMPORTED_MODULE_2__.createElement(\"div\", { className: childClass, onClick: e => this.handleClick(e) });\n    }\n}\n/**\n * A collapser subclass to collapse a cell's input area.\n */\nclass InputCollapser extends Collapser {\n    /**\n     * Construct a new input collapser.\n     */\n    constructor() {\n        super();\n        this.addClass(INPUT_COLLAPSER);\n    }\n    /**\n     * Is the cell's input collapsed?\n     */\n    get collapsed() {\n        var _a;\n        const cell = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.parent;\n        if (cell) {\n            return cell.inputHidden;\n        }\n        else {\n            return false;\n        }\n    }\n    /**\n     * Handle a click event for the user to collapse the cell's input.\n     */\n    handleClick(e) {\n        var _a;\n        const cell = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.parent;\n        if (cell) {\n            cell.inputHidden = !cell.inputHidden;\n        }\n        /* We need this until we watch the cell state */\n        this.update();\n    }\n}\n/**\n * A collapser subclass to collapse a cell's output area.\n */\nclass OutputCollapser extends Collapser {\n    /**\n     * Construct a new output collapser.\n     */\n    constructor() {\n        super();\n        this.addClass(OUTPUT_COLLAPSER);\n    }\n    /**\n     * Is the cell's output collapsed?\n     */\n    get collapsed() {\n        var _a;\n        const cell = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.parent;\n        if (cell) {\n            return cell.outputHidden;\n        }\n        else {\n            return false;\n        }\n    }\n    /**\n     * Handle a click event for the user to collapse the cell's output.\n     */\n    handleClick(e) {\n        var _a, _b;\n        const cell = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.parent;\n        if (cell) {\n            cell.outputHidden = !cell.outputHidden;\n            /* Scroll cell into view after output collapse */\n            if (cell.outputHidden) {\n                let area = (_b = cell.parent) === null || _b === void 0 ? void 0 : _b.node;\n                if (area) {\n                    _lumino_domutils__WEBPACK_IMPORTED_MODULE_1__.ElementExt.scrollIntoViewIfNeeded(area, cell.node);\n                }\n            }\n        }\n        /* We need this until we watch the cell state */\n        this.update();\n    }\n}\n//# sourceMappingURL=collapser.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/collapser.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CellHeader\": () => (/* binding */ CellHeader),\n/* harmony export */   \"CellFooter\": () => (/* binding */ CellFooter)\n/* harmony export */ });\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * The CSS class added to the cell header.\n */\nconst CELL_HEADER_CLASS = 'jp-CellHeader';\n/**\n * The CSS class added to the cell footer.\n */\nconst CELL_FOOTER_CLASS = 'jp-CellFooter';\n/**\n * Default implementation of a cell header.\n */\nclass CellHeader extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * Construct a new cell header.\n     */\n    constructor() {\n        super();\n        this.addClass(CELL_HEADER_CLASS);\n    }\n}\n/**\n * Default implementation of a cell footer.\n */\nclass CellFooter extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * Construct a new cell footer.\n     */\n    constructor() {\n        super();\n        this.addClass(CELL_FOOTER_CLASS);\n    }\n}\n//# sourceMappingURL=headerfooter.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/headerfooter.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CellDragUtils\": () => (/* reexport safe */ _celldragutils__WEBPACK_IMPORTED_MODULE_0__.CellDragUtils),\n/* harmony export */   \"Collapser\": () => (/* reexport safe */ _collapser__WEBPACK_IMPORTED_MODULE_1__.Collapser),\n/* harmony export */   \"InputCollapser\": () => (/* reexport safe */ _collapser__WEBPACK_IMPORTED_MODULE_1__.InputCollapser),\n/* harmony export */   \"OutputCollapser\": () => (/* reexport safe */ _collapser__WEBPACK_IMPORTED_MODULE_1__.OutputCollapser),\n/* harmony export */   \"CellFooter\": () => (/* reexport safe */ _headerfooter__WEBPACK_IMPORTED_MODULE_2__.CellFooter),\n/* harmony export */   \"CellHeader\": () => (/* reexport safe */ _headerfooter__WEBPACK_IMPORTED_MODULE_2__.CellHeader),\n/* harmony export */   \"InputArea\": () => (/* reexport safe */ _inputarea__WEBPACK_IMPORTED_MODULE_3__.InputArea),\n/* harmony export */   \"InputPrompt\": () => (/* reexport safe */ _inputarea__WEBPACK_IMPORTED_MODULE_3__.InputPrompt),\n/* harmony export */   \"AttachmentsCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.AttachmentsCellModel),\n/* harmony export */   \"CellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.CellModel),\n/* harmony export */   \"CodeCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.CodeCellModel),\n/* harmony export */   \"MarkdownCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.MarkdownCellModel),\n/* harmony export */   \"RawCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.RawCellModel),\n/* harmony export */   \"isCodeCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.isCodeCellModel),\n/* harmony export */   \"isMarkdownCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.isMarkdownCellModel),\n/* harmony export */   \"isRawCellModel\": () => (/* reexport safe */ _model__WEBPACK_IMPORTED_MODULE_4__.isRawCellModel),\n/* harmony export */   \"InputPlaceholder\": () => (/* reexport safe */ _placeholder__WEBPACK_IMPORTED_MODULE_5__.InputPlaceholder),\n/* harmony export */   \"OutputPlaceholder\": () => (/* reexport safe */ _placeholder__WEBPACK_IMPORTED_MODULE_5__.OutputPlaceholder),\n/* harmony export */   \"Placeholder\": () => (/* reexport safe */ _placeholder__WEBPACK_IMPORTED_MODULE_5__.Placeholder),\n/* harmony export */   \"AttachmentsCell\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.AttachmentsCell),\n/* harmony export */   \"Cell\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.Cell),\n/* harmony export */   \"CodeCell\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.CodeCell),\n/* harmony export */   \"MARKDOWN_HEADING_COLLAPSED\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.MARKDOWN_HEADING_COLLAPSED),\n/* harmony export */   \"MarkdownCell\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.MarkdownCell),\n/* harmony export */   \"RawCell\": () => (/* reexport safe */ _widget__WEBPACK_IMPORTED_MODULE_6__.RawCell)\n/* harmony export */ });\n/* harmony import */ var _celldragutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./celldragutils */ \"../node_modules/@jupyterlab/cells/lib/celldragutils.js\");\n/* harmony import */ var _collapser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collapser */ \"../node_modules/@jupyterlab/cells/lib/collapser.js\");\n/* harmony import */ var _headerfooter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./headerfooter */ \"../node_modules/@jupyterlab/cells/lib/headerfooter.js\");\n/* harmony import */ var _inputarea__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputarea */ \"../node_modules/@jupyterlab/cells/lib/inputarea.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./model */ \"../node_modules/@jupyterlab/cells/lib/model.js\");\n/* harmony import */ var _placeholder__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./placeholder */ \"../node_modules/@jupyterlab/cells/lib/placeholder.js\");\n/* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./widget */ \"../node_modules/@jupyterlab/cells/lib/widget.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module cells\n */\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/index.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InputArea\": () => (/* binding */ InputArea),\n/* harmony export */   \"InputPrompt\": () => (/* binding */ InputPrompt)\n/* harmony export */ });\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/codeeditor */ \"webpack/sharing/consume/default/@jupyterlab/codeeditor/@jupyterlab/codeeditor\");\n/* harmony import */ var _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_codemirror__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/codemirror */ \"webpack/sharing/consume/default/@jupyterlab/codemirror/@jupyterlab/codemirror\");\n/* harmony import */ var _jupyterlab_codemirror__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_codemirror__WEBPACK_IMPORTED_MODULE_2__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n/**\n * The class name added to input area widgets.\n */\nconst INPUT_AREA_CLASS = 'jp-InputArea';\n/**\n * The class name added to the prompt area of cell.\n */\nconst INPUT_AREA_PROMPT_CLASS = 'jp-InputArea-prompt';\n/**\n * The class name added to OutputPrompt.\n */\nconst INPUT_PROMPT_CLASS = 'jp-InputPrompt';\n/**\n * The class name added to the editor area of the cell.\n */\nconst INPUT_AREA_EDITOR_CLASS = 'jp-InputArea-editor';\n/** ****************************************************************************\n * InputArea\n ******************************************************************************/\n/**\n * An input area widget, which hosts a prompt and an editor widget.\n */\nclass InputArea extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /**\n     * Construct an input area widget.\n     */\n    constructor(options) {\n        super();\n        this.addClass(INPUT_AREA_CLASS);\n        const model = (this.model = options.model);\n        const contentFactory = (this.contentFactory =\n            options.contentFactory || InputArea.defaultContentFactory);\n        // Prompt\n        const prompt = (this._prompt = contentFactory.createInputPrompt());\n        prompt.addClass(INPUT_AREA_PROMPT_CLASS);\n        // Editor\n        const editorOptions = {\n            model,\n            factory: contentFactory.editorFactory,\n            updateOnShow: options.updateOnShow\n        };\n        const editor = (this._editor = new _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_1__.CodeEditorWrapper(editorOptions));\n        editor.addClass(INPUT_AREA_EDITOR_CLASS);\n        const layout = (this.layout = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.PanelLayout());\n        layout.addWidget(prompt);\n        if (!options.placeholder) {\n            layout.addWidget(editor);\n        }\n    }\n    /**\n     * Get the CodeEditorWrapper used by the cell.\n     */\n    get editorWidget() {\n        return this._editor;\n    }\n    /**\n     * Get the CodeEditor used by the cell.\n     */\n    get editor() {\n        return this._editor.editor;\n    }\n    /**\n     * Get the prompt node used by the cell.\n     */\n    get promptNode() {\n        return this._prompt.node;\n    }\n    /**\n     * Render an input instead of the text editor.\n     */\n    renderInput(widget) {\n        const layout = this.layout;\n        if (this._rendered) {\n            this._rendered.parent = null;\n        }\n        this._editor.hide();\n        this._rendered = widget;\n        layout.addWidget(widget);\n    }\n    /**\n     * Show the text editor.\n     */\n    showEditor() {\n        if (this._rendered) {\n            this._rendered.parent = null;\n        }\n        this._editor.show();\n    }\n    /**\n     * Set the prompt of the input area.\n     */\n    setPrompt(value) {\n        this._prompt.executionCount = value;\n    }\n    /**\n     * Dispose of the resources held by the widget.\n     */\n    dispose() {\n        // Do nothing if already disposed.\n        if (this.isDisposed) {\n            return;\n        }\n        this._prompt = null;\n        this._editor = null;\n        this._rendered = null;\n        super.dispose();\n    }\n}\n/**\n * A namespace for `InputArea` statics.\n */\n(function (InputArea) {\n    /**\n     * Default implementation of `IContentFactory`.\n     *\n     * This defaults to using an `editorFactory` based on CodeMirror.\n     */\n    class ContentFactory {\n        /**\n         * Construct a `ContentFactory`.\n         */\n        constructor(options = {}) {\n            this._editor = options.editorFactory || InputArea.defaultEditorFactory;\n        }\n        /**\n         * Return the `CodeEditor.Factory` being used.\n         */\n        get editorFactory() {\n            return this._editor;\n        }\n        /**\n         * Create an input prompt.\n         */\n        createInputPrompt() {\n            return new InputPrompt();\n        }\n    }\n    InputArea.ContentFactory = ContentFactory;\n    /**\n     * A function to create the default CodeMirror editor factory.\n     */\n    function _createDefaultEditorFactory() {\n        const editorServices = new _jupyterlab_codemirror__WEBPACK_IMPORTED_MODULE_2__.CodeMirrorEditorFactory();\n        return editorServices.newInlineEditor;\n    }\n    /**\n     * The default editor factory singleton based on CodeMirror.\n     */\n    InputArea.defaultEditorFactory = _createDefaultEditorFactory();\n    /**\n     * The default `ContentFactory` instance.\n     */\n    InputArea.defaultContentFactory = new ContentFactory({});\n})(InputArea || (InputArea = {}));\n/**\n * The default input prompt implementation.\n */\nclass InputPrompt extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_0__.Widget {\n    /*\n     * Create an output prompt widget.\n     */\n    constructor() {\n        super();\n        this._executionCount = null;\n        this.addClass(INPUT_PROMPT_CLASS);\n    }\n    /**\n     * The execution count for the prompt.\n     */\n    get executionCount() {\n        return this._executionCount;\n    }\n    set executionCount(value) {\n        this._executionCount = value;\n        if (value === null) {\n            this.node.textContent = ' ';\n        }\n        else {\n            this.node.textContent = `[${value || ' '}]:`;\n        }\n    }\n}\n//# sourceMappingURL=inputarea.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/inputarea.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isCodeCellModel\": () => (/* binding */ isCodeCellModel),\n/* harmony export */   \"isMarkdownCellModel\": () => (/* binding */ isMarkdownCellModel),\n/* harmony export */   \"isRawCellModel\": () => (/* binding */ isRawCellModel),\n/* harmony export */   \"CellModel\": () => (/* binding */ CellModel),\n/* harmony export */   \"AttachmentsCellModel\": () => (/* binding */ AttachmentsCellModel),\n/* harmony export */   \"RawCellModel\": () => (/* binding */ RawCellModel),\n/* harmony export */   \"MarkdownCellModel\": () => (/* binding */ MarkdownCellModel),\n/* harmony export */   \"CodeCellModel\": () => (/* binding */ CodeCellModel)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_attachments__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @jupyterlab/attachments */ \"../node_modules/@jupyterlab/attachments/lib/model.js\");\n/* harmony import */ var _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/codeeditor */ \"webpack/sharing/consume/default/@jupyterlab/codeeditor/@jupyterlab/codeeditor\");\n/* harmony import */ var _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_shared_models__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/shared-models */ \"webpack/sharing/consume/default/@jupyterlab/shared-models/@jupyterlab/shared-models\");\n/* harmony import */ var _jupyterlab_shared_models__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_shared_models__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @jupyterlab/outputarea */ \"webpack/sharing/consume/default/@jupyterlab/outputarea/@jupyterlab/outputarea\");\n/* harmony import */ var _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_4__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\n\n\n\n\n\n\n\nfunction isCodeCellModel(model) {\n    return model.type === 'code';\n}\nfunction isMarkdownCellModel(model) {\n    return model.type === 'markdown';\n}\nfunction isRawCellModel(model) {\n    return model.type === 'raw';\n}\n/**\n * An implementation of the cell model.\n */\nclass CellModel extends _jupyterlab_codeeditor__WEBPACK_IMPORTED_MODULE_2__.CodeEditor.Model {\n    /**\n     * Construct a cell model from optional cell content.\n     */\n    constructor(options) {\n        var _a;\n        super({\n            modelDB: options.modelDB,\n            id: options.id || ((_a = options.cell) === null || _a === void 0 ? void 0 : _a.id) || _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.UUID.uuid4()\n        });\n        /**\n         * A signal emitted when the state of the model changes.\n         */\n        this.contentChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        /**\n         * A signal emitted when a model state changes.\n         */\n        this.stateChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        /**\n         * A mutex to update the shared model.\n         */\n        this._modelDBMutex = _jupyterlab_shared_models__WEBPACK_IMPORTED_MODULE_3__.createMutex();\n        this.value.changed.connect(this.onGenericChange, this);\n        const cellType = this.modelDB.createValue('type');\n        cellType.set(this.type);\n        const observableMetadata = this.modelDB.createMap('metadata');\n        observableMetadata.changed.connect(this.onModelDBMetadataChange, this);\n        observableMetadata.changed.connect(this.onGenericChange, this);\n        const cell = options.cell;\n        const trusted = this.modelDB.createValue('trusted');\n        trusted.changed.connect(this.onTrustedChanged, this);\n        if (!cell) {\n            trusted.set(false);\n            return;\n        }\n        trusted.set(!!cell.metadata['trusted']);\n        delete cell.metadata['trusted'];\n        if (Array.isArray(cell.source)) {\n            this.value.text = cell.source.join('');\n        }\n        else {\n            this.value.text = cell.source;\n        }\n        const metadata = _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.JSONExt.deepCopy(cell.metadata);\n        if (this.type !== 'raw') {\n            delete metadata['format'];\n        }\n        if (this.type !== 'code') {\n            delete metadata['collapsed'];\n            delete metadata['scrolled'];\n        }\n        for (const key in metadata) {\n            observableMetadata.set(key, metadata[key]);\n        }\n    }\n    /**\n     * The type of cell.\n     */\n    get type() {\n        // This getter really should be abstract, but our current constructor\n        // depends on .type working\n        return 'raw';\n    }\n    /**\n     * The id for the cell.\n     */\n    get id() {\n        return this.sharedModel.getId();\n    }\n    /**\n     * The metadata associated with the cell.\n     */\n    get metadata() {\n        return this.modelDB.get('metadata');\n    }\n    /**\n     * Get the trusted state of the model.\n     */\n    get trusted() {\n        return this.modelDB.getValue('trusted');\n    }\n    /**\n     * Set the trusted state of the model.\n     */\n    set trusted(newValue) {\n        const oldValue = this.trusted;\n        if (oldValue === newValue) {\n            return;\n        }\n        this.modelDB.setValue('trusted', newValue);\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const metadata = Object.create(null);\n        for (const key of this.metadata.keys()) {\n            const value = JSON.parse(JSON.stringify(this.metadata.get(key)));\n            metadata[key] = value;\n        }\n        if (this.trusted) {\n            metadata['trusted'] = true;\n        }\n        return {\n            cell_type: this.type,\n            source: this.value.text,\n            metadata\n        };\n    }\n    /**\n     * Handle a change to the trusted state.\n     *\n     * The default implementation is a no-op.\n     */\n    onTrustedChanged(trusted, args) {\n        /* no-op */\n    }\n    /**\n     * Handle a change to the cell metadata modelDB and reflect it in the shared model.\n     */\n    onModelDBMetadataChange(sender, event) {\n        const metadata = this.sharedModel.getMetadata();\n        this._modelDBMutex(() => {\n            switch (event.type) {\n                case 'add':\n                    this._changeCellMetadata(metadata, event);\n                    break;\n                case 'change':\n                    this._changeCellMetadata(metadata, event);\n                    break;\n                case 'remove':\n                    delete metadata[event.key];\n                    break;\n                default:\n                    throw new Error(`Invalid event type: ${event.type}`);\n            }\n            this.sharedModel.setMetadata(metadata);\n        });\n    }\n    /**\n     * Change the cell metadata for a given event.\n     *\n     * @param metadata The cell metadata.\n     * @param event The event to handle.\n     */\n    _changeCellMetadata(metadata, event) {\n        switch (event.key) {\n            case 'jupyter':\n                metadata.jupyter = event.newValue;\n                break;\n            case 'collapsed':\n                metadata.collapsed = event.newValue;\n                break;\n            case 'name':\n                metadata.name = event.newValue;\n                break;\n            case 'scrolled':\n                metadata.scrolled = event.newValue;\n                break;\n            case 'tags':\n                metadata.tags = event.newValue;\n                break;\n            case 'trusted':\n                metadata.trusted = event.newValue;\n                break;\n            default:\n                // The default is applied for custom metadata that are not\n                // defined in the official nbformat but which are defined\n                // by the user.\n                metadata[event.key] = event.newValue;\n        }\n    }\n    /**\n     * Handle a change to the cell shared model and reflect it in modelDB.\n     * We update the modeldb metadata when the shared model changes.\n     *\n     * This method overrides the CodeEditor protected _onSharedModelChanged\n     * so we first call super._onSharedModelChanged\n     *\n     * @override CodeEditor._onSharedModelChanged\n     */\n    _onSharedModelChanged(sender, change) {\n        super._onSharedModelChanged(sender, change);\n        this._modelDBMutex(() => {\n            var _a;\n            if (change.metadataChange) {\n                const newValue = (_a = change.metadataChange) === null || _a === void 0 ? void 0 : _a.newValue;\n                if (newValue) {\n                    Object.keys(newValue).map(key => {\n                        switch (key) {\n                            case 'collapsed':\n                                this.metadata.set('collapsed', newValue.jupyter);\n                                break;\n                            case 'jupyter':\n                                this.metadata.set('jupyter', newValue.jupyter);\n                                break;\n                            case 'name':\n                                this.metadata.set('name', newValue.name);\n                                break;\n                            case 'scrolled':\n                                this.metadata.set('scrolled', newValue.scrolled);\n                                break;\n                            case 'tags':\n                                this.metadata.set('tags', newValue.tags);\n                                break;\n                            case 'trusted':\n                                this.metadata.set('trusted', newValue.trusted);\n                                break;\n                            default:\n                                // The default is applied for custom metadata that are not\n                                // defined in the official nbformat but which are defined\n                                // by the user.\n                                this.metadata.set(key, newValue[key]);\n                        }\n                    });\n                }\n            }\n        });\n    }\n    /**\n     * Handle a change to the observable value.\n     */\n    onGenericChange() {\n        this.contentChanged.emit(void 0);\n    }\n}\n/**\n * A base implementation for cell models with attachments.\n */\nclass AttachmentsCellModel extends CellModel {\n    /**\n     * Construct a new cell with optional attachments.\n     */\n    constructor(options) {\n        super(options);\n        const factory = options.contentFactory || AttachmentsCellModel.defaultContentFactory;\n        let attachments;\n        const cell = options.cell;\n        if (cell && (cell.cell_type === 'raw' || cell.cell_type === 'markdown')) {\n            attachments = cell\n                .attachments;\n        }\n        this._attachments = factory.createAttachmentsModel({\n            values: attachments,\n            modelDB: this.modelDB\n        });\n        this._attachments.stateChanged.connect(this.onGenericChange, this);\n    }\n    /**\n     * Get the attachments of the model.\n     */\n    get attachments() {\n        return this._attachments;\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const cell = super.toJSON();\n        if (this.attachments.length) {\n            cell.attachments = this.attachments.toJSON();\n        }\n        return cell;\n    }\n}\n/**\n * The namespace for `AttachmentsCellModel` statics.\n */\n(function (AttachmentsCellModel) {\n    /**\n     * The default implementation of an `IContentFactory`.\n     */\n    class ContentFactory {\n        /**\n         * Create an attachments model.\n         */\n        createAttachmentsModel(options) {\n            return new _jupyterlab_attachments__WEBPACK_IMPORTED_MODULE_5__.AttachmentsModel(options);\n        }\n    }\n    AttachmentsCellModel.ContentFactory = ContentFactory;\n    /**\n     * The shared `ContentFactory` instance.\n     */\n    AttachmentsCellModel.defaultContentFactory = new ContentFactory();\n})(AttachmentsCellModel || (AttachmentsCellModel = {}));\n/**\n * An implementation of a raw cell model.\n */\nclass RawCellModel extends AttachmentsCellModel {\n    /**\n     * The type of the cell.\n     */\n    get type() {\n        return 'raw';\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const cell = super.toJSON();\n        cell.id = this.id;\n        return cell;\n    }\n}\n/**\n * An implementation of a markdown cell model.\n */\nclass MarkdownCellModel extends AttachmentsCellModel {\n    /**\n     * Construct a markdown cell model from optional cell content.\n     */\n    constructor(options) {\n        super(options);\n        // Use the Github-flavored markdown mode.\n        this.mimeType = 'text/x-ipythongfm';\n    }\n    /**\n     * The type of the cell.\n     */\n    get type() {\n        return 'markdown';\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const cell = super.toJSON();\n        cell.id = this.id;\n        return cell;\n    }\n}\n/**\n * An implementation of a code cell Model.\n */\nclass CodeCellModel extends CellModel {\n    /**\n     * Construct a new code cell with optional original cell content.\n     */\n    constructor(options) {\n        var _a;\n        super(options);\n        this._executedCode = '';\n        this._isDirty = false;\n        const factory = options.contentFactory || CodeCellModel.defaultContentFactory;\n        const trusted = this.trusted;\n        const cell = options.cell;\n        let outputs = [];\n        const executionCount = this.modelDB.createValue('executionCount');\n        if (!executionCount.get()) {\n            if (cell && cell.cell_type === 'code') {\n                executionCount.set(cell.execution_count || null);\n                outputs = (_a = cell.outputs) !== null && _a !== void 0 ? _a : [];\n                // If execution count is not null presume the input code was the latest executed\n                // TODO load from the notebook file when the dirty state is stored in it\n                if (cell.execution_count != null) {\n                    // True if execution_count is null or undefined\n                    this._executedCode = this.value.text.trim();\n                }\n            }\n            else {\n                executionCount.set(null);\n            }\n        }\n        executionCount.changed.connect(this._onExecutionCountChanged, this);\n        this._modelDBMutex(() => {\n            const sharedCell = this.sharedModel;\n            sharedCell.setOutputs(outputs);\n        });\n        this._outputs = factory.createOutputArea({ trusted, values: outputs });\n        this._outputs.changed.connect(this.onGenericChange, this);\n        this._outputs.changed.connect(this.onModelDBOutputsChange, this);\n        // We keep `collapsed` and `jupyter.outputs_hidden` metadata in sync, since\n        // they are redundant in nbformat 4.4. See\n        // https://github.com/jupyter/nbformat/issues/137\n        this.metadata.changed.connect(Private.collapseChanged, this);\n        // Sync `collapsed` and `jupyter.outputs_hidden` for the first time, giving\n        // preference to `collapsed`.\n        if (this.metadata.has('collapsed')) {\n            const collapsed = this.metadata.get('collapsed');\n            Private.collapseChanged(this.metadata, {\n                type: 'change',\n                key: 'collapsed',\n                oldValue: collapsed,\n                newValue: collapsed\n            });\n        }\n        else if (this.metadata.has('jupyter')) {\n            const jupyter = this.metadata.get('jupyter');\n            if (jupyter.hasOwnProperty('outputs_hidden')) {\n                Private.collapseChanged(this.metadata, {\n                    type: 'change',\n                    key: 'jupyter',\n                    oldValue: jupyter,\n                    newValue: jupyter\n                });\n            }\n        }\n    }\n    switchSharedModel(sharedModel, reinitialize) {\n        if (reinitialize) {\n            this.clearExecution();\n            sharedModel.getOutputs().forEach(output => this._outputs.add(output));\n        }\n        super.switchSharedModel(sharedModel, reinitialize);\n    }\n    /**\n     * The type of the cell.\n     */\n    get type() {\n        return 'code';\n    }\n    /**\n     * The execution count of the cell.\n     */\n    get executionCount() {\n        return this.modelDB.has('executionCount')\n            ? this.modelDB.getValue('executionCount')\n            : null;\n    }\n    set executionCount(newValue) {\n        const oldValue = this.executionCount;\n        if (newValue === oldValue) {\n            return;\n        }\n        this.modelDB.setValue('executionCount', newValue || null);\n    }\n    /**\n     * Whether the cell is dirty or not.\n     *\n     * A cell is dirty if it is output is not empty and does not\n     * result of the input code execution.\n     */\n    get isDirty() {\n        // Test could be done dynamically with this._executedCode\n        // but for performance reason, the diff status is stored in a boolean.\n        return this._isDirty;\n    }\n    /**\n     * Set whether the cell is dirty or not.\n     */\n    _setDirty(v) {\n        if (v !== this._isDirty) {\n            if (!v) {\n                this._executedCode = this.value.text.trim();\n            }\n            this._isDirty = v;\n            this.stateChanged.emit({\n                name: 'isDirty',\n                oldValue: !v,\n                newValue: v\n            });\n        }\n    }\n    clearExecution() {\n        this.outputs.clear();\n        this.executionCount = null;\n        this._setDirty(false);\n        this.metadata.delete('execution');\n    }\n    /**\n     * The cell outputs.\n     */\n    get outputs() {\n        return this._outputs;\n    }\n    /**\n     * Dispose of the resources held by the model.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._outputs.dispose();\n        this._outputs = null;\n        super.dispose();\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const cell = super.toJSON();\n        cell.execution_count = this.executionCount || null;\n        cell.outputs = this.outputs.toJSON();\n        cell.id = this.id;\n        return cell;\n    }\n    /**\n     * Handle a change to the trusted state.\n     */\n    onTrustedChanged(trusted, args) {\n        if (this._outputs) {\n            this._outputs.trusted = args.newValue;\n        }\n        this.stateChanged.emit({\n            name: 'trusted',\n            oldValue: args.oldValue,\n            newValue: args.newValue\n        });\n    }\n    /**\n     * Handle a change to the cell outputs modelDB and reflect it in the shared model.\n     */\n    onModelDBOutputsChange(sender, event) {\n        const codeCell = this.sharedModel;\n        this._modelDBMutex(() => {\n            switch (event.type) {\n                case 'add': {\n                    const outputs = event.newValues.map(output => output.toJSON());\n                    codeCell.updateOutputs(event.newIndex, event.newIndex + outputs.length, outputs);\n                    break;\n                }\n                case 'set': {\n                    const newValues = event.newValues.map(output => output.toJSON());\n                    codeCell.updateOutputs(event.oldIndex, event.oldValues.length, newValues);\n                    break;\n                }\n                case 'remove':\n                    codeCell.updateOutputs(event.oldIndex, event.oldValues.length);\n                    break;\n                default:\n                    throw new Error(`Invalid event type: ${event.type}`);\n            }\n        });\n    }\n    /**\n     * Handle a change to the observable value.\n     */\n    onGenericChange() {\n        if (this.executionCount !== null) {\n            this._setDirty(this._executedCode !== this.value.text.trim());\n        }\n        this.contentChanged.emit(void 0);\n    }\n    /**\n     * Handle a change to the output shared model and reflect it in modelDB.\n     * We update the modeldb metadata when the nbcell changes.\n     *\n     * This method overrides the CellModel protected _onSharedModelChanged\n     * so we first call super._onSharedModelChanged\n     *\n     * @override CellModel._onSharedModelChanged\n     */\n    _onSharedModelChanged(sender, change) {\n        super._onSharedModelChanged(sender, change);\n        this._modelDBMutex(() => {\n            if (change.outputsChange) {\n                this.clearExecution();\n                sender.getOutputs().forEach(output => this._outputs.add(output));\n            }\n            if (change.executionCountChange) {\n                this.executionCount = change.executionCountChange.newValue\n                    ? change.executionCountChange.newValue\n                    : null;\n            }\n        });\n    }\n    /**\n     * Handle a change to the execution count.\n     */\n    _onExecutionCountChanged(count, args) {\n        const codeCell = this.sharedModel;\n        this._modelDBMutex(() => {\n            codeCell.execution_count = args.newValue\n                ? args.newValue\n                : null;\n        });\n        this.contentChanged.emit(void 0);\n        this.stateChanged.emit({\n            name: 'executionCount',\n            oldValue: args.oldValue,\n            newValue: args.newValue\n        });\n        if (args.newValue && this.isDirty) {\n            this._setDirty(false);\n        }\n    }\n}\n/**\n * The namespace for `CodeCellModel` statics.\n */\n(function (CodeCellModel) {\n    /**\n     * The default implementation of an `IContentFactory`.\n     */\n    class ContentFactory {\n        /**\n         * Create an output area.\n         */\n        createOutputArea(options) {\n            return new _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_4__.OutputAreaModel(options);\n        }\n    }\n    CodeCellModel.ContentFactory = ContentFactory;\n    /**\n     * The shared `ContentFactory` instance.\n     */\n    CodeCellModel.defaultContentFactory = new ContentFactory();\n})(CodeCellModel || (CodeCellModel = {}));\nvar Private;\n(function (Private) {\n    function collapseChanged(metadata, args) {\n        if (args.key === 'collapsed') {\n            const jupyter = (metadata.get('jupyter') || {});\n            const { outputs_hidden } = jupyter, newJupyter = __rest(jupyter, [\"outputs_hidden\"]);\n            if (outputs_hidden !== args.newValue) {\n                if (args.newValue !== undefined) {\n                    newJupyter['outputs_hidden'] = args.newValue;\n                }\n                if (Object.keys(newJupyter).length === 0) {\n                    metadata.delete('jupyter');\n                }\n                else {\n                    metadata.set('jupyter', newJupyter);\n                }\n            }\n        }\n        else if (args.key === 'jupyter') {\n            const jupyter = (args.newValue || {});\n            if (jupyter.hasOwnProperty('outputs_hidden')) {\n                metadata.set('collapsed', jupyter.outputs_hidden);\n            }\n            else {\n                metadata.delete('collapsed');\n            }\n        }\n    }\n    Private.collapseChanged = collapseChanged;\n})(Private || (Private = {}));\n//# sourceMappingURL=model.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/model.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Placeholder\": () => (/* binding */ Placeholder),\n/* harmony export */   \"InputPlaceholder\": () => (/* binding */ InputPlaceholder),\n/* harmony export */   \"OutputPlaceholder\": () => (/* binding */ OutputPlaceholder)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n/**\n * The CSS class added to placeholders.\n */\nconst PLACEHOLDER_CLASS = 'jp-Placeholder';\n/**\n * The CSS classes added to input placeholder prompts.\n */\nconst INPUT_PROMPT_CLASS = 'jp-Placeholder-prompt jp-InputPrompt';\n/**\n * The CSS classes added to output placeholder prompts.\n */\nconst OUTPUT_PROMPT_CLASS = 'jp-Placeholder-prompt jp-OutputPrompt';\n/**\n * The CSS class added to placeholder content.\n */\nconst CONTENT_CLASS = 'jp-Placeholder-content';\n/**\n * The CSS class added to input placeholders.\n */\nconst INPUT_PLACEHOLDER_CLASS = 'jp-InputPlaceholder';\n/**\n * The CSS class added to output placeholders.\n */\nconst OUTPUT_PLACEHOLDER_CLASS = 'jp-OutputPlaceholder';\n/**\n * An abstract base class for placeholders\n *\n * ### Notes\n * A placeholder is the element that is shown when input/output\n * is hidden.\n */\nclass Placeholder extends _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.ReactWidget {\n    /**\n     * Construct a new placeholder.\n     */\n    constructor(callback) {\n        super();\n        this.addClass(PLACEHOLDER_CLASS);\n        this._callback = callback;\n    }\n    /**\n     * Handle the click event.\n     */\n    handleClick(e) {\n        const callback = this._callback;\n        callback(e);\n    }\n}\n/**\n * The input placeholder class.\n */\nclass InputPlaceholder extends Placeholder {\n    /**\n     * Construct a new input placeholder.\n     */\n    constructor(callback) {\n        super(callback);\n        this.addClass(INPUT_PLACEHOLDER_CLASS);\n    }\n    /**\n     * Render the input placeholder using the virtual DOM.\n     */\n    render() {\n        return [\n            react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: INPUT_PROMPT_CLASS, key: \"input\" }),\n            react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: CONTENT_CLASS, onClick: e => this.handleClick(e), key: \"content\" },\n                react__WEBPACK_IMPORTED_MODULE_0__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__.ellipsesIcon.react, { className: \"jp-MoreHorizIcon\", elementPosition: \"center\", height: \"auto\", width: \"32px\" }))\n        ];\n    }\n}\n/**\n * The output placeholder class.\n */\nclass OutputPlaceholder extends Placeholder {\n    /**\n     * Construct a new output placeholder.\n     */\n    constructor(callback) {\n        super(callback);\n        this.addClass(OUTPUT_PLACEHOLDER_CLASS);\n    }\n    /**\n     * Render the output placeholder using the virtual DOM.\n     */\n    render() {\n        return [\n            react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: OUTPUT_PROMPT_CLASS, key: \"output\" }),\n            react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: CONTENT_CLASS, onClick: e => this.handleClick(e), key: \"content\" },\n                react__WEBPACK_IMPORTED_MODULE_0__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_2__.ellipsesIcon.react, { className: \"jp-MoreHorizIcon\", elementPosition: \"center\", height: \"auto\", width: \"32px\" }))\n        ];\n    }\n}\n//# sourceMappingURL=placeholder.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/placeholder.js?");

/***/ }),

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

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MARKDOWN_HEADING_COLLAPSED\": () => (/* binding */ MARKDOWN_HEADING_COLLAPSED),\n/* harmony export */   \"Cell\": () => (/* binding */ Cell),\n/* harmony export */   \"CodeCell\": () => (/* binding */ CodeCell),\n/* harmony export */   \"AttachmentsCell\": () => (/* binding */ AttachmentsCell),\n/* harmony export */   \"MarkdownCell\": () => (/* binding */ MarkdownCell),\n/* harmony export */   \"RawCell\": () => (/* binding */ RawCell)\n/* harmony export */ });\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! marked */ \"../node_modules/marked/lib/marked.js\");\n/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(marked__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_attachments__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @jupyterlab/attachments */ \"../node_modules/@jupyterlab/attachments/lib/model.js\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/outputarea */ \"webpack/sharing/consume/default/@jupyterlab/outputarea/@jupyterlab/outputarea\");\n/* harmony import */ var _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @jupyterlab/rendermime */ \"webpack/sharing/consume/default/@jupyterlab/rendermime/@jupyterlab/rendermime\");\n/* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @lumino/algorithm */ \"webpack/sharing/consume/default/@lumino/algorithm/@lumino/algorithm\");\n/* harmony import */ var _lumino_algorithm__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_lumino_algorithm__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _collapser__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./collapser */ \"../node_modules/@jupyterlab/cells/lib/collapser.js\");\n/* harmony import */ var _headerfooter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./headerfooter */ \"../node_modules/@jupyterlab/cells/lib/headerfooter.js\");\n/* harmony import */ var _inputarea__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inputarea */ \"../node_modules/@jupyterlab/cells/lib/inputarea.js\");\n/* harmony import */ var _placeholder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./placeholder */ \"../node_modules/@jupyterlab/cells/lib/placeholder.js\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @jupyterlab/ui-components */ \"webpack/sharing/consume/default/@jupyterlab/ui-components/@jupyterlab/ui-components\");\n/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_8__);\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The CSS class added to cell widgets.\n */\nconst CELL_CLASS = 'jp-Cell';\n/**\n * The CSS class added to the cell header.\n */\nconst CELL_HEADER_CLASS = 'jp-Cell-header';\n/**\n * The CSS class added to the cell footer.\n */\nconst CELL_FOOTER_CLASS = 'jp-Cell-footer';\n/**\n * The CSS class added to the cell input wrapper.\n */\nconst CELL_INPUT_WRAPPER_CLASS = 'jp-Cell-inputWrapper';\n/**\n * The CSS class added to the cell output wrapper.\n */\nconst CELL_OUTPUT_WRAPPER_CLASS = 'jp-Cell-outputWrapper';\n/**\n * The CSS class added to the cell input area.\n */\nconst CELL_INPUT_AREA_CLASS = 'jp-Cell-inputArea';\n/**\n * The CSS class added to the cell output area.\n */\nconst CELL_OUTPUT_AREA_CLASS = 'jp-Cell-outputArea';\n/**\n * The CSS class added to the cell input collapser.\n */\nconst CELL_INPUT_COLLAPSER_CLASS = 'jp-Cell-inputCollapser';\n/**\n * The CSS class added to the cell output collapser.\n */\nconst CELL_OUTPUT_COLLAPSER_CLASS = 'jp-Cell-outputCollapser';\n/**\n * The class name added to the cell when readonly.\n */\nconst READONLY_CLASS = 'jp-mod-readOnly';\n/**\n * The class name added to the cell when dirty.\n */\nconst DIRTY_CLASS = 'jp-mod-dirty';\n/**\n * The class name added to code cells.\n */\nconst CODE_CELL_CLASS = 'jp-CodeCell';\n/**\n * The class name added to markdown cells.\n */\nconst MARKDOWN_CELL_CLASS = 'jp-MarkdownCell';\n/**\n * The class name added to rendered markdown output widgets.\n */\nconst MARKDOWN_OUTPUT_CLASS = 'jp-MarkdownOutput';\nconst MARKDOWN_HEADING_COLLAPSED = 'jp-MarkdownHeadingCollapsed';\nconst HEADING_COLLAPSER_CLASS = 'jp-collapseHeadingButton';\nconst SHOW_HIDDEN_CELLS_CLASS = 'jp-showHiddenCellsButton';\n/**\n * The class name added to raw cells.\n */\nconst RAW_CELL_CLASS = 'jp-RawCell';\n/**\n * The class name added to a rendered input area.\n */\nconst RENDERED_CLASS = 'jp-mod-rendered';\nconst NO_OUTPUTS_CLASS = 'jp-mod-noOutputs';\n/**\n * The text applied to an empty markdown cell.\n */\nconst DEFAULT_MARKDOWN_TEXT = 'Type Markdown and LaTeX: $ α^2 $';\n/**\n * The timeout to wait for change activity to have ceased before rendering.\n */\nconst RENDER_TIMEOUT = 1000;\n/**\n * The mime type for a rich contents drag object.\n */\nconst CONTENTS_MIME_RICH = 'application/x-jupyter-icontentsrich';\n/** ****************************************************************************\n * Cell\n ******************************************************************************/\n/**\n * A base cell widget.\n */\nclass Cell extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Widget {\n    /**\n     * Construct a new base cell widget.\n     */\n    constructor(options) {\n        super();\n        this._readOnly = false;\n        this._inputHidden = false;\n        this._syncCollapse = false;\n        this._syncEditable = false;\n        this.addClass(CELL_CLASS);\n        const model = (this._model = options.model);\n        const contentFactory = (this.contentFactory =\n            options.contentFactory || Cell.defaultContentFactory);\n        this.layout = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.PanelLayout();\n        // Header\n        const header = contentFactory.createCellHeader();\n        header.addClass(CELL_HEADER_CLASS);\n        this.layout.addWidget(header);\n        // Input\n        const inputWrapper = (this._inputWrapper = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Panel());\n        inputWrapper.addClass(CELL_INPUT_WRAPPER_CLASS);\n        const inputCollapser = new _collapser__WEBPACK_IMPORTED_MODULE_9__.InputCollapser();\n        inputCollapser.addClass(CELL_INPUT_COLLAPSER_CLASS);\n        const input = (this._input = new _inputarea__WEBPACK_IMPORTED_MODULE_10__.InputArea({\n            model,\n            contentFactory,\n            updateOnShow: options.updateEditorOnShow,\n            placeholder: options.placeholder\n        }));\n        input.addClass(CELL_INPUT_AREA_CLASS);\n        inputWrapper.addWidget(inputCollapser);\n        inputWrapper.addWidget(input);\n        this.layout.addWidget(inputWrapper);\n        this._inputPlaceholder = new _placeholder__WEBPACK_IMPORTED_MODULE_11__.InputPlaceholder(() => {\n            this.inputHidden = !this.inputHidden;\n        });\n        // Footer\n        const footer = this.contentFactory.createCellFooter();\n        footer.addClass(CELL_FOOTER_CLASS);\n        this.layout.addWidget(footer);\n        // Editor settings\n        if (options.editorConfig) {\n            let editorOptions = {};\n            Object.keys(options.editorConfig).forEach((key) => {\n                var _a, _b;\n                editorOptions[key] = (_b = (_a = options.editorConfig) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : null;\n            });\n            this.editor.setOptions(editorOptions);\n        }\n        model.metadata.changed.connect(this.onMetadataChanged, this);\n    }\n    /**\n     * Initialize view state from model.\n     *\n     * #### Notes\n     * Should be called after construction. For convenience, returns this, so it\n     * can be chained in the construction, like `new Foo().initializeState();`\n     */\n    initializeState() {\n        this.loadCollapseState();\n        this.loadEditableState();\n        return this;\n    }\n    /**\n     * Get the prompt node used by the cell.\n     */\n    get promptNode() {\n        if (!this._inputHidden) {\n            return this._input.promptNode;\n        }\n        else {\n            return this._inputPlaceholder.node\n                .firstElementChild;\n        }\n    }\n    /**\n     * Get the CodeEditorWrapper used by the cell.\n     */\n    get editorWidget() {\n        return this._input.editorWidget;\n    }\n    /**\n     * Get the CodeEditor used by the cell.\n     */\n    get editor() {\n        return this._input.editor;\n    }\n    /**\n     * Get the model used by the cell.\n     */\n    get model() {\n        return this._model;\n    }\n    /**\n     * Get the input area for the cell.\n     */\n    get inputArea() {\n        return this._input;\n    }\n    /**\n     * The read only state of the cell.\n     */\n    get readOnly() {\n        return this._readOnly;\n    }\n    set readOnly(value) {\n        if (value === this._readOnly) {\n            return;\n        }\n        this._readOnly = value;\n        if (this.syncEditable) {\n            this.saveEditableState();\n        }\n        this.update();\n    }\n    /**\n     * Save view editable state to model\n     */\n    saveEditableState() {\n        const { metadata } = this.model;\n        const current = metadata.get('editable');\n        if ((this.readOnly && current === false) ||\n            (!this.readOnly && current === undefined)) {\n            return;\n        }\n        if (this.readOnly) {\n            this.model.metadata.set('editable', false);\n        }\n        else {\n            this.model.metadata.delete('editable');\n        }\n    }\n    /**\n     * Load view editable state from model.\n     */\n    loadEditableState() {\n        this.readOnly = this.model.metadata.get('editable') === false;\n    }\n    /**\n     * A promise that resolves when the widget renders for the first time.\n     */\n    get ready() {\n        return Promise.resolve(undefined);\n    }\n    /**\n     * Set the prompt for the widget.\n     */\n    setPrompt(value) {\n        this._input.setPrompt(value);\n    }\n    /**\n     * The view state of input being hidden.\n     */\n    get inputHidden() {\n        return this._inputHidden;\n    }\n    set inputHidden(value) {\n        if (this._inputHidden === value) {\n            return;\n        }\n        const layout = this._inputWrapper.layout;\n        if (value) {\n            this._input.parent = null;\n            layout.addWidget(this._inputPlaceholder);\n        }\n        else {\n            this._inputPlaceholder.parent = null;\n            layout.addWidget(this._input);\n        }\n        this._inputHidden = value;\n        if (this.syncCollapse) {\n            this.saveCollapseState();\n        }\n        this.handleInputHidden(value);\n    }\n    /**\n     * Save view collapse state to model\n     */\n    saveCollapseState() {\n        const jupyter = Object.assign({}, this.model.metadata.get('jupyter'));\n        if ((this.inputHidden && jupyter.source_hidden === true) ||\n            (!this.inputHidden && jupyter.source_hidden === undefined)) {\n            return;\n        }\n        if (this.inputHidden) {\n            jupyter.source_hidden = true;\n        }\n        else {\n            delete jupyter.source_hidden;\n        }\n        if (Object.keys(jupyter).length === 0) {\n            this.model.metadata.delete('jupyter');\n        }\n        else {\n            this.model.metadata.set('jupyter', jupyter);\n        }\n    }\n    /**\n     * Revert view collapse state from model.\n     */\n    loadCollapseState() {\n        const jupyter = this.model.metadata.get('jupyter') || {};\n        this.inputHidden = !!jupyter.source_hidden;\n    }\n    /**\n     * Handle the input being hidden.\n     *\n     * #### Notes\n     * This is called by the `inputHidden` setter so that subclasses\n     * can perform actions upon the input being hidden without accessing\n     * private state.\n     */\n    handleInputHidden(value) {\n        return;\n    }\n    /**\n     * Whether to sync the collapse state to the cell model.\n     */\n    get syncCollapse() {\n        return this._syncCollapse;\n    }\n    set syncCollapse(value) {\n        if (this._syncCollapse === value) {\n            return;\n        }\n        this._syncCollapse = value;\n        if (value) {\n            this.loadCollapseState();\n        }\n    }\n    /**\n     * Whether to sync the editable state to the cell model.\n     */\n    get syncEditable() {\n        return this._syncEditable;\n    }\n    set syncEditable(value) {\n        if (this._syncEditable === value) {\n            return;\n        }\n        this._syncEditable = value;\n        if (value) {\n            this.loadEditableState();\n        }\n    }\n    /**\n     * Clone the cell, using the same model.\n     */\n    clone() {\n        const constructor = this.constructor;\n        return new constructor({\n            model: this.model,\n            contentFactory: this.contentFactory,\n            placeholder: false\n        });\n    }\n    /**\n     * Dispose of the resources held by the widget.\n     */\n    dispose() {\n        // Do nothing if already disposed.\n        if (this.isDisposed) {\n            return;\n        }\n        this._input = null;\n        this._model = null;\n        this._inputWrapper = null;\n        this._inputPlaceholder = null;\n        super.dispose();\n    }\n    /**\n     * Handle `after-attach` messages.\n     */\n    onAfterAttach(msg) {\n        this.update();\n    }\n    /**\n     * Handle `'activate-request'` messages.\n     */\n    onActivateRequest(msg) {\n        this.editor.focus();\n    }\n    /**\n     * Handle `fit-request` messages.\n     */\n    onFitRequest(msg) {\n        // need this for for when a theme changes font size\n        this.editor.refresh();\n    }\n    /**\n     * Handle `update-request` messages.\n     */\n    onUpdateRequest(msg) {\n        if (!this._model) {\n            return;\n        }\n        // Handle read only state.\n        if (this.editor.getOption('readOnly') !== this._readOnly) {\n            this.editor.setOption('readOnly', this._readOnly);\n            this.toggleClass(READONLY_CLASS, this._readOnly);\n        }\n    }\n    /**\n     * Handle changes in the metadata.\n     */\n    onMetadataChanged(model, args) {\n        switch (args.key) {\n            case 'jupyter':\n                if (this.syncCollapse) {\n                    this.loadCollapseState();\n                }\n                break;\n            case 'editable':\n                if (this.syncEditable) {\n                    this.loadEditableState();\n                }\n                break;\n            default:\n                break;\n        }\n    }\n}\n/**\n * The namespace for the `Cell` class statics.\n */\n(function (Cell) {\n    /**\n     * The default implementation of an `IContentFactory`.\n     *\n     * This includes a CodeMirror editor factory to make it easy to use out of the box.\n     */\n    class ContentFactory {\n        /**\n         * Create a content factory for a cell.\n         */\n        constructor(options = {}) {\n            this._editorFactory =\n                options.editorFactory || _inputarea__WEBPACK_IMPORTED_MODULE_10__.InputArea.defaultEditorFactory;\n        }\n        /**\n         * The readonly editor factory that create code editors\n         */\n        get editorFactory() {\n            return this._editorFactory;\n        }\n        /**\n         * Create a new cell header for the parent widget.\n         */\n        createCellHeader() {\n            return new _headerfooter__WEBPACK_IMPORTED_MODULE_12__.CellHeader();\n        }\n        /**\n         * Create a new cell header for the parent widget.\n         */\n        createCellFooter() {\n            return new _headerfooter__WEBPACK_IMPORTED_MODULE_12__.CellFooter();\n        }\n        /**\n         * Create an input prompt.\n         */\n        createInputPrompt() {\n            return new _inputarea__WEBPACK_IMPORTED_MODULE_10__.InputPrompt();\n        }\n        /**\n         * Create the output prompt for the widget.\n         */\n        createOutputPrompt() {\n            return new _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__.OutputPrompt();\n        }\n        /**\n         * Create an stdin widget.\n         */\n        createStdin(options) {\n            return new _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__.Stdin(options);\n        }\n    }\n    Cell.ContentFactory = ContentFactory;\n    /**\n     * The default content factory for cells.\n     */\n    Cell.defaultContentFactory = new ContentFactory();\n})(Cell || (Cell = {}));\n/** ****************************************************************************\n * CodeCell\n ******************************************************************************/\n/**\n * A widget for a code cell.\n */\nclass CodeCell extends Cell {\n    /**\n     * Construct a code cell widget.\n     */\n    constructor(options) {\n        super(options);\n        this._outputHidden = false;\n        this._syncScrolled = false;\n        this._savingMetadata = false;\n        this.addClass(CODE_CELL_CLASS);\n        // Only save options not handled by parent constructor.\n        const rendermime = (this._rendermime = options.rendermime);\n        const contentFactory = this.contentFactory;\n        const model = this.model;\n        if (!options.placeholder) {\n            // Insert the output before the cell footer.\n            const outputWrapper = (this._outputWrapper = new _lumino_widgets__WEBPACK_IMPORTED_MODULE_6__.Panel());\n            outputWrapper.addClass(CELL_OUTPUT_WRAPPER_CLASS);\n            const outputCollapser = new _collapser__WEBPACK_IMPORTED_MODULE_9__.OutputCollapser();\n            outputCollapser.addClass(CELL_OUTPUT_COLLAPSER_CLASS);\n            const output = (this._output = new _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__.OutputArea({\n                model: model.outputs,\n                rendermime,\n                contentFactory: contentFactory,\n                maxNumberOutputs: options.maxNumberOutputs\n            }));\n            output.addClass(CELL_OUTPUT_AREA_CLASS);\n            // Set a CSS if there are no outputs, and connect a signal for future\n            // changes to the number of outputs. This is for conditional styling\n            // if there are no outputs.\n            if (model.outputs.length === 0) {\n                this.addClass(NO_OUTPUTS_CLASS);\n            }\n            output.outputLengthChanged.connect(this._outputLengthHandler, this);\n            outputWrapper.addWidget(outputCollapser);\n            outputWrapper.addWidget(output);\n            this.layout.insertWidget(2, outputWrapper);\n            if (model.isDirty) {\n                this.addClass(DIRTY_CLASS);\n            }\n            this._outputPlaceholder = new _placeholder__WEBPACK_IMPORTED_MODULE_11__.OutputPlaceholder(() => {\n                this.outputHidden = !this.outputHidden;\n            });\n        }\n        model.stateChanged.connect(this.onStateChanged, this);\n    }\n    /**\n     * Initialize view state from model.\n     *\n     * #### Notes\n     * Should be called after construction. For convenience, returns this, so it\n     * can be chained in the construction, like `new Foo().initializeState();`\n     */\n    initializeState() {\n        super.initializeState();\n        this.loadScrolledState();\n        this.setPrompt(`${this.model.executionCount || ''}`);\n        return this;\n    }\n    /**\n     * Get the output area for the cell.\n     */\n    get outputArea() {\n        return this._output;\n    }\n    /**\n     * The view state of output being collapsed.\n     */\n    get outputHidden() {\n        return this._outputHidden;\n    }\n    set outputHidden(value) {\n        if (this._outputHidden === value) {\n            return;\n        }\n        const layout = this._outputWrapper.layout;\n        if (value) {\n            layout.removeWidget(this._output);\n            layout.addWidget(this._outputPlaceholder);\n            if (this.inputHidden && !this._outputWrapper.isHidden) {\n                this._outputWrapper.hide();\n            }\n        }\n        else {\n            if (this._outputWrapper.isHidden) {\n                this._outputWrapper.show();\n            }\n            layout.removeWidget(this._outputPlaceholder);\n            layout.addWidget(this._output);\n        }\n        this._outputHidden = value;\n        if (this.syncCollapse) {\n            this.saveCollapseState();\n        }\n    }\n    /**\n     * Save view collapse state to model\n     */\n    saveCollapseState() {\n        // Because collapse state for a code cell involves two different pieces of\n        // metadata (the `collapsed` and `jupyter` metadata keys), we block reacting\n        // to changes in metadata until we have fully committed our changes.\n        // Otherwise setting one key can trigger a write to the other key to\n        // maintain the synced consistency.\n        this._savingMetadata = true;\n        try {\n            super.saveCollapseState();\n            const metadata = this.model.metadata;\n            const collapsed = this.model.metadata.get('collapsed');\n            if ((this.outputHidden && collapsed === true) ||\n                (!this.outputHidden && collapsed === undefined)) {\n                return;\n            }\n            // Do not set jupyter.outputs_hidden since it is redundant. See\n            // and https://github.com/jupyter/nbformat/issues/137\n            if (this.outputHidden) {\n                metadata.set('collapsed', true);\n            }\n            else {\n                metadata.delete('collapsed');\n            }\n        }\n        finally {\n            this._savingMetadata = false;\n        }\n    }\n    /**\n     * Revert view collapse state from model.\n     *\n     * We consider the `collapsed` metadata key as the source of truth for outputs\n     * being hidden.\n     */\n    loadCollapseState() {\n        super.loadCollapseState();\n        this.outputHidden = !!this.model.metadata.get('collapsed');\n    }\n    /**\n     * Whether the output is in a scrolled state?\n     */\n    get outputsScrolled() {\n        return this._outputsScrolled;\n    }\n    set outputsScrolled(value) {\n        this.toggleClass('jp-mod-outputsScrolled', value);\n        this._outputsScrolled = value;\n        if (this.syncScrolled) {\n            this.saveScrolledState();\n        }\n    }\n    /**\n     * Save view collapse state to model\n     */\n    saveScrolledState() {\n        const { metadata } = this.model;\n        const current = metadata.get('scrolled');\n        if ((this.outputsScrolled && current === true) ||\n            (!this.outputsScrolled && current === undefined)) {\n            return;\n        }\n        if (this.outputsScrolled) {\n            metadata.set('scrolled', true);\n        }\n        else {\n            metadata.delete('scrolled');\n        }\n    }\n    /**\n     * Revert view collapse state from model.\n     */\n    loadScrolledState() {\n        const metadata = this.model.metadata;\n        // We don't have the notion of 'auto' scrolled, so we make it false.\n        if (metadata.get('scrolled') === 'auto') {\n            this.outputsScrolled = false;\n        }\n        else {\n            this.outputsScrolled = !!metadata.get('scrolled');\n        }\n    }\n    /**\n     * Whether to sync the scrolled state to the cell model.\n     */\n    get syncScrolled() {\n        return this._syncScrolled;\n    }\n    set syncScrolled(value) {\n        if (this._syncScrolled === value) {\n            return;\n        }\n        this._syncScrolled = value;\n        if (value) {\n            this.loadScrolledState();\n        }\n    }\n    /**\n     * Handle the input being hidden.\n     *\n     * #### Notes\n     * This method is called by the case cell implementation and is\n     * subclasses here so the code cell can watch to see when input\n     * is hidden without accessing private state.\n     */\n    handleInputHidden(value) {\n        if (!value && this._outputWrapper.isHidden) {\n            this._outputWrapper.show();\n        }\n        else if (value && !this._outputWrapper.isHidden && this._outputHidden) {\n            this._outputWrapper.hide();\n        }\n    }\n    /**\n     * Clone the cell, using the same model.\n     */\n    clone() {\n        const constructor = this.constructor;\n        return new constructor({\n            model: this.model,\n            contentFactory: this.contentFactory,\n            rendermime: this._rendermime,\n            placeholder: false\n        });\n    }\n    /**\n     * Clone the OutputArea alone, returning a simplified output area, using the same model.\n     */\n    cloneOutputArea() {\n        return new _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__.SimplifiedOutputArea({\n            model: this.model.outputs,\n            contentFactory: this.contentFactory,\n            rendermime: this._rendermime\n        });\n    }\n    /**\n     * Dispose of the resources used by the widget.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        this._output.outputLengthChanged.disconnect(this._outputLengthHandler, this);\n        this._rendermime = null;\n        this._output = null;\n        this._outputWrapper = null;\n        this._outputPlaceholder = null;\n        super.dispose();\n    }\n    /**\n     * Handle changes in the model.\n     */\n    onStateChanged(model, args) {\n        switch (args.name) {\n            case 'executionCount':\n                this.setPrompt(`${model.executionCount || ''}`);\n                break;\n            case 'isDirty':\n                if (model.isDirty) {\n                    this.addClass(DIRTY_CLASS);\n                }\n                else {\n                    this.removeClass(DIRTY_CLASS);\n                }\n                break;\n            default:\n                break;\n        }\n    }\n    /**\n     * Handle changes in the metadata.\n     */\n    onMetadataChanged(model, args) {\n        if (this._savingMetadata) {\n            // We are in middle of a metadata transaction, so don't react to it.\n            return;\n        }\n        switch (args.key) {\n            case 'scrolled':\n                if (this.syncScrolled) {\n                    this.loadScrolledState();\n                }\n                break;\n            case 'collapsed':\n                if (this.syncCollapse) {\n                    this.loadCollapseState();\n                }\n                break;\n            default:\n                break;\n        }\n        super.onMetadataChanged(model, args);\n    }\n    /**\n     * Handle changes in the number of outputs in the output area.\n     */\n    _outputLengthHandler(sender, args) {\n        const force = args === 0 ? true : false;\n        this.toggleClass(NO_OUTPUTS_CLASS, force);\n    }\n}\n/**\n * The namespace for the `CodeCell` class statics.\n */\n(function (CodeCell) {\n    /**\n     * Execute a cell given a client session.\n     */\n    async function execute(cell, sessionContext, metadata) {\n        var _a;\n        const model = cell.model;\n        const code = model.value.text;\n        if (!code.trim() || !((_a = sessionContext.session) === null || _a === void 0 ? void 0 : _a.kernel)) {\n            model.clearExecution();\n            return;\n        }\n        const cellId = { cellId: model.id };\n        metadata = Object.assign(Object.assign(Object.assign({}, model.metadata.toJSON()), metadata), cellId);\n        const { recordTiming } = metadata;\n        model.clearExecution();\n        cell.outputHidden = false;\n        cell.setPrompt('*');\n        model.trusted = true;\n        let future;\n        try {\n            const msgPromise = _jupyterlab_outputarea__WEBPACK_IMPORTED_MODULE_2__.OutputArea.execute(code, cell.outputArea, sessionContext, metadata);\n            // cell.outputArea.future assigned synchronously in `execute`\n            if (recordTiming) {\n                const recordTimingHook = (msg) => {\n                    let label;\n                    switch (msg.header.msg_type) {\n                        case 'status':\n                            label = `status.${msg.content.execution_state}`;\n                            break;\n                        case 'execute_input':\n                            label = 'execute_input';\n                            break;\n                        default:\n                            return true;\n                    }\n                    // If the data is missing, estimate it to now\n                    // Date was added in 5.1: https://jupyter-client.readthedocs.io/en/stable/messaging.html#message-header\n                    const value = msg.header.date || new Date().toISOString();\n                    const timingInfo = Object.assign({}, model.metadata.get('execution'));\n                    timingInfo[`iopub.${label}`] = value;\n                    model.metadata.set('execution', timingInfo);\n                    return true;\n                };\n                cell.outputArea.future.registerMessageHook(recordTimingHook);\n            }\n            else {\n                model.metadata.delete('execution');\n            }\n            // Save this execution's future so we can compare in the catch below.\n            future = cell.outputArea.future;\n            const msg = (await msgPromise);\n            model.executionCount = msg.content.execution_count;\n            if (recordTiming) {\n                const timingInfo = Object.assign({}, model.metadata.get('execution'));\n                const started = msg.metadata.started;\n                // Started is not in the API, but metadata IPyKernel sends\n                if (started) {\n                    timingInfo['shell.execute_reply.started'] = started;\n                }\n                // Per above, the 5.0 spec does not assume date, so we estimate is required\n                const finished = msg.header.date;\n                timingInfo['shell.execute_reply'] =\n                    finished || new Date().toISOString();\n                model.metadata.set('execution', timingInfo);\n            }\n            return msg;\n        }\n        catch (e) {\n            // If we started executing, and the cell is still indicating this\n            // execution, clear the prompt.\n            if (future && !cell.isDisposed && cell.outputArea.future === future) {\n                cell.setPrompt('');\n            }\n            throw e;\n        }\n    }\n    CodeCell.execute = execute;\n})(CodeCell || (CodeCell = {}));\n/**\n * `AttachmentsCell` - A base class for a cell widget that allows\n *  attachments to be drag/drop'd or pasted onto it\n */\nclass AttachmentsCell extends Cell {\n    /**\n     * Handle the DOM events for the widget.\n     *\n     * @param event - The DOM event sent to the widget.\n     *\n     * #### Notes\n     * This method implements the DOM `EventListener` interface and is\n     * called in response to events on the notebook panel's node. It should\n     * not be called directly by user code.\n     */\n    handleEvent(event) {\n        switch (event.type) {\n            case 'paste':\n                this._evtPaste(event);\n                break;\n            case 'dragenter':\n                event.preventDefault();\n                break;\n            case 'dragover':\n                event.preventDefault();\n                break;\n            case 'drop':\n                this._evtNativeDrop(event);\n                break;\n            case 'lm-dragover':\n                this._evtDragOver(event);\n                break;\n            case 'lm-drop':\n                this._evtDrop(event);\n                break;\n            default:\n                break;\n        }\n    }\n    /**\n     * Handle `after-attach` messages for the widget.\n     */\n    onAfterAttach(msg) {\n        super.onAfterAttach(msg);\n        const node = this.node;\n        node.addEventListener('lm-dragover', this);\n        node.addEventListener('lm-drop', this);\n        node.addEventListener('dragenter', this);\n        node.addEventListener('dragover', this);\n        node.addEventListener('drop', this);\n        node.addEventListener('paste', this);\n    }\n    /**\n     * A message handler invoked on a `'before-detach'`\n     * message\n     */\n    onBeforeDetach(msg) {\n        const node = this.node;\n        node.removeEventListener('drop', this);\n        node.removeEventListener('dragover', this);\n        node.removeEventListener('dragenter', this);\n        node.removeEventListener('paste', this);\n        node.removeEventListener('lm-dragover', this);\n        node.removeEventListener('lm-drop', this);\n    }\n    _evtDragOver(event) {\n        const supportedMimeType = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_5__.some)(_jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__.imageRendererFactory.mimeTypes, mimeType => {\n            if (!event.mimeData.hasData(CONTENTS_MIME_RICH)) {\n                return false;\n            }\n            const data = event.mimeData.getData(CONTENTS_MIME_RICH);\n            return data.model.mimetype === mimeType;\n        });\n        if (!supportedMimeType) {\n            return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        event.dropAction = event.proposedAction;\n    }\n    /**\n     * Handle the `paste` event for the widget\n     */\n    _evtPaste(event) {\n        if (event.clipboardData) {\n            const items = event.clipboardData.items;\n            for (let i = 0; i < items.length; i++) {\n                if (items[i].type === 'text/plain') {\n                    // Skip if this text is the path to a file\n                    if (i < items.length - 1 && items[i + 1].kind === 'file') {\n                        continue;\n                    }\n                    items[i].getAsString(text => {\n                        var _a, _b;\n                        (_b = (_a = this.editor).replaceSelection) === null || _b === void 0 ? void 0 : _b.call(_a, text);\n                    });\n                }\n                this._attachFiles(event.clipboardData.items);\n            }\n        }\n        event.preventDefault();\n    }\n    /**\n     * Handle the `drop` event for the widget\n     */\n    _evtNativeDrop(event) {\n        if (event.dataTransfer) {\n            this._attachFiles(event.dataTransfer.items);\n        }\n        event.preventDefault();\n    }\n    /**\n     * Handle the `'lm-drop'` event for the widget.\n     */\n    _evtDrop(event) {\n        const supportedMimeTypes = (0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_5__.toArray)((0,_lumino_algorithm__WEBPACK_IMPORTED_MODULE_5__.filter)(event.mimeData.types(), mimeType => {\n            if (mimeType === CONTENTS_MIME_RICH) {\n                const data = event.mimeData.getData(CONTENTS_MIME_RICH);\n                return (_jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__.imageRendererFactory.mimeTypes.indexOf(data.model.mimetype) !== -1);\n            }\n            return _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__.imageRendererFactory.mimeTypes.indexOf(mimeType) !== -1;\n        }));\n        if (supportedMimeTypes.length === 0) {\n            return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n        if (event.proposedAction === 'none') {\n            event.dropAction = 'none';\n            return;\n        }\n        event.dropAction = 'copy';\n        for (const mimeType of supportedMimeTypes) {\n            if (mimeType === CONTENTS_MIME_RICH) {\n                const { model, withContent } = event.mimeData.getData(CONTENTS_MIME_RICH);\n                if (model.type === 'file') {\n                    const URI = this._generateURI(model.name);\n                    this.updateCellSourceWithAttachment(model.name, URI);\n                    void withContent().then(fullModel => {\n                        this.model.attachments.set(URI, {\n                            [fullModel.mimetype]: fullModel.content\n                        });\n                    });\n                }\n            }\n            else {\n                // Pure mimetype, no useful name to infer\n                const URI = this._generateURI();\n                this.model.attachments.set(URI, {\n                    [mimeType]: event.mimeData.getData(mimeType)\n                });\n                this.updateCellSourceWithAttachment(URI, URI);\n            }\n        }\n    }\n    /**\n     * Attaches all DataTransferItems (obtained from\n     * clipboard or native drop events) to the cell\n     */\n    _attachFiles(items) {\n        for (let i = 0; i < items.length; i++) {\n            const item = items[i];\n            if (item.kind === 'file') {\n                const blob = item.getAsFile();\n                if (blob) {\n                    this._attachFile(blob);\n                }\n            }\n        }\n    }\n    /**\n     * Takes in a file object and adds it to\n     * the cell attachments\n     */\n    _attachFile(blob) {\n        const reader = new FileReader();\n        reader.onload = evt => {\n            const { href, protocol } = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.URLExt.parse(reader.result);\n            if (protocol !== 'data:') {\n                return;\n            }\n            const dataURIRegex = /([\\w+\\/\\+]+)?(?:;(charset=[\\w\\d-]*|base64))?,(.*)/;\n            const matches = dataURIRegex.exec(href);\n            if (!matches || matches.length !== 4) {\n                return;\n            }\n            const mimeType = matches[1];\n            const encodedData = matches[3];\n            const bundle = { [mimeType]: encodedData };\n            const URI = this._generateURI(blob.name);\n            if (mimeType.startsWith('image/')) {\n                this.model.attachments.set(URI, bundle);\n                this.updateCellSourceWithAttachment(blob.name, URI);\n            }\n        };\n        reader.onerror = evt => {\n            console.error(`Failed to attach ${blob.name}` + evt);\n        };\n        reader.readAsDataURL(blob);\n    }\n    /**\n     * Generates a unique URI for a file\n     * while preserving the file extension.\n     */\n    _generateURI(name = '') {\n        const lastIndex = name.lastIndexOf('.');\n        return lastIndex !== -1\n            ? _lumino_coreutils__WEBPACK_IMPORTED_MODULE_4__.UUID.uuid4().concat(name.substring(lastIndex))\n            : _lumino_coreutils__WEBPACK_IMPORTED_MODULE_4__.UUID.uuid4();\n    }\n}\n/** ****************************************************************************\n * MarkdownCell\n ******************************************************************************/\n/**\n * A widget for a Markdown cell.\n *\n * #### Notes\n * Things get complicated if we want the rendered text to update\n * any time the text changes, the text editor model changes,\n * or the input area model changes.  We don't support automatically\n * updating the rendered text in all of these cases.\n */\nclass MarkdownCell extends AttachmentsCell {\n    /**\n     * Construct a Markdown cell widget.\n     */\n    constructor(options) {\n        var _a, _b;\n        super(options);\n        this._toggleCollapsedSignal = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_7__.Signal(this);\n        this._renderer = null;\n        this._rendered = true;\n        this._prevText = '';\n        this._ready = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_4__.PromiseDelegate();\n        this.addClass(MARKDOWN_CELL_CLASS);\n        // Ensure we can resolve attachments:\n        this._rendermime = options.rendermime.clone({\n            resolver: new _jupyterlab_attachments__WEBPACK_IMPORTED_MODULE_13__.AttachmentsResolver({\n                parent: (_a = options.rendermime.resolver) !== null && _a !== void 0 ? _a : undefined,\n                model: this.model.attachments\n            })\n        });\n        // Stop codemirror handling paste\n        this.editor.setOption('handlePaste', false);\n        // Check if heading cell is set to be collapsed\n        this._headingCollapsed = ((_b = this.model.metadata.get(MARKDOWN_HEADING_COLLAPSED)) !== null && _b !== void 0 ? _b : false);\n        // Throttle the rendering rate of the widget.\n        this._monitor = new _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.ActivityMonitor({\n            signal: this.model.contentChanged,\n            timeout: RENDER_TIMEOUT\n        });\n        this._monitor.activityStopped.connect(() => {\n            if (this._rendered) {\n                this.update();\n            }\n        }, this);\n        void this._updateRenderedInput().then(() => {\n            this._ready.resolve(void 0);\n        });\n        this.renderCollapseButtons(this._renderer);\n        this.renderInput(this._renderer);\n    }\n    /**\n     * A promise that resolves when the widget renders for the first time.\n     */\n    get ready() {\n        return this._ready.promise;\n    }\n    /**\n     * Text that represents the heading if cell is a heading.\n     * Returns empty string if not a heading.\n     */\n    get headingInfo() {\n        let text = this.model.value.text;\n        const lines = marked__WEBPACK_IMPORTED_MODULE_0___default().lexer(text);\n        let line;\n        for (line of lines) {\n            if (line.type === 'heading') {\n                return { text: line.text, level: line.depth };\n            }\n            else if (line.type === 'html') {\n                let match = line.raw.match(/<h([1-6])(.*?)>(.*?)<\\/h\\1>/);\n                if (match === null || match === void 0 ? void 0 : match[3]) {\n                    return { text: match[3], level: parseInt(match[1]) };\n                }\n                return { text: '', level: -1 };\n            }\n        }\n        return { text: '', level: -1 };\n    }\n    get headingCollapsed() {\n        return this._headingCollapsed;\n    }\n    set headingCollapsed(value) {\n        this._headingCollapsed = value;\n        if (value) {\n            this.model.metadata.set(MARKDOWN_HEADING_COLLAPSED, value);\n        }\n        else if (this.model.metadata.has(MARKDOWN_HEADING_COLLAPSED)) {\n            this.model.metadata.delete(MARKDOWN_HEADING_COLLAPSED);\n        }\n        const collapseButton = this.inputArea.promptNode.getElementsByClassName(HEADING_COLLAPSER_CLASS)[0];\n        if (collapseButton) {\n            collapseButton.setAttribute('style', `background:\n      ${value ? 'var(--jp-icon-caret-right)' : 'var(--jp-icon-caret-down)'} no-repeat center`);\n        }\n        this.renderCollapseButtons(this._renderer);\n    }\n    get numberChildNodes() {\n        return this._numberChildNodes;\n    }\n    set numberChildNodes(value) {\n        this._numberChildNodes = value;\n        this.renderCollapseButtons(this._renderer);\n    }\n    get toggleCollapsedSignal() {\n        return this._toggleCollapsedSignal;\n    }\n    /**\n     * Whether the cell is rendered.\n     */\n    get rendered() {\n        return this._rendered;\n    }\n    set rendered(value) {\n        if (value === this._rendered) {\n            return;\n        }\n        this._rendered = value;\n        this._handleRendered();\n        // Refreshing an editor can be really expensive, so we don't call it from\n        // _handleRendered, since _handledRendered is also called on every update\n        // request.\n        if (!this._rendered) {\n            this.editor.refresh();\n        }\n    }\n    maybeCreateCollapseButton() {\n        if (this.headingInfo.level > 0 &&\n            this.inputArea.promptNode.getElementsByClassName(HEADING_COLLAPSER_CLASS)\n                .length == 0) {\n            let collapseButton = this.inputArea.promptNode.appendChild(document.createElement('button'));\n            collapseButton.className = `bp3-button bp3-minimal jp-Button minimal ${HEADING_COLLAPSER_CLASS}`;\n            collapseButton.style.background = `${this._headingCollapsed\n                ? 'var(--jp-icon-caret-right)'\n                : 'var(--jp-icon-caret-down)'} no-repeat center`;\n            collapseButton.onclick = (event) => {\n                this.headingCollapsed = !this.headingCollapsed;\n                this._toggleCollapsedSignal.emit(this._headingCollapsed);\n            };\n        }\n    }\n    maybeCreateOrUpdateExpandButton() {\n        var _a, _b;\n        const expandButton = this.node.getElementsByClassName(SHOW_HIDDEN_CELLS_CLASS);\n        // Create the \"show hidden\" button if not already created\n        if (this.headingCollapsed &&\n            expandButton.length === 0 &&\n            this._numberChildNodes > 0) {\n            const numberChildNodes = document.createElement('button');\n            numberChildNodes.className = `bp3-button bp3-minimal jp-Button ${SHOW_HIDDEN_CELLS_CLASS}`;\n            _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_8__.addIcon.render(numberChildNodes);\n            const numberChildNodesText = document.createElement('div');\n            numberChildNodesText.nodeValue = `${this._numberChildNodes} cell${this._numberChildNodes > 1 ? 's' : ''} hidden`;\n            numberChildNodes.appendChild(numberChildNodesText);\n            numberChildNodes.onclick = () => {\n                this.headingCollapsed = false;\n                this._toggleCollapsedSignal.emit(this._headingCollapsed);\n            };\n            this.node.appendChild(numberChildNodes);\n        }\n        else if (((_b = (_a = expandButton === null || expandButton === void 0 ? void 0 : expandButton[0]) === null || _a === void 0 ? void 0 : _a.childNodes) === null || _b === void 0 ? void 0 : _b.length) > 1) {\n            // If the heading is collapsed, update text\n            if (this._headingCollapsed) {\n                expandButton[0].childNodes[1].textContent = `${this._numberChildNodes} cell${this._numberChildNodes > 1 ? 's' : ''} hidden`;\n                // If the heading isn't collapsed, remove the button\n            }\n            else {\n                for (const el of expandButton) {\n                    this.node.removeChild(el);\n                }\n            }\n        }\n    }\n    /**\n     * Render the collapse button for heading cells,\n     * and for collapsed heading cells render the \"expand hidden cells\"\n     * button.\n     */\n    renderCollapseButtons(widget) {\n        this.node.classList.toggle(MARKDOWN_HEADING_COLLAPSED, this._headingCollapsed);\n        this.maybeCreateCollapseButton();\n        this.maybeCreateOrUpdateExpandButton();\n    }\n    /**\n     * Render an input instead of the text editor.\n     */\n    renderInput(widget) {\n        this.addClass(RENDERED_CLASS);\n        this.renderCollapseButtons(widget);\n        this.inputArea.renderInput(widget);\n    }\n    /**\n     * Show the text editor instead of rendered input.\n     */\n    showEditor() {\n        this.removeClass(RENDERED_CLASS);\n        this.inputArea.showEditor();\n    }\n    /*\n     * Handle `update-request` messages.\n     */\n    onUpdateRequest(msg) {\n        // Make sure we are properly rendered.\n        this._handleRendered();\n        super.onUpdateRequest(msg);\n    }\n    /**\n     * Modify the cell source to include a reference to the attachment.\n     */\n    updateCellSourceWithAttachment(attachmentName, URI) {\n        var _a, _b;\n        const textToBeAppended = `![${attachmentName}](attachment:${URI !== null && URI !== void 0 ? URI : attachmentName})`;\n        (_b = (_a = this.editor).replaceSelection) === null || _b === void 0 ? void 0 : _b.call(_a, textToBeAppended);\n    }\n    /**\n     * Handle the rendered state.\n     */\n    _handleRendered() {\n        if (!this._rendered) {\n            this.showEditor();\n        }\n        else {\n            // TODO: It would be nice for the cell to provide a way for\n            // its consumers to hook into when the rendering is done.\n            void this._updateRenderedInput();\n            this.renderInput(this._renderer);\n        }\n    }\n    /**\n     * Update the rendered input.\n     */\n    _updateRenderedInput() {\n        const model = this.model;\n        const text = (model && model.value.text) || DEFAULT_MARKDOWN_TEXT;\n        // Do not re-render if the text has not changed.\n        if (text !== this._prevText) {\n            const mimeModel = new _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_3__.MimeModel({ data: { 'text/markdown': text } });\n            if (!this._renderer) {\n                this._renderer = this._rendermime.createRenderer('text/markdown');\n                this._renderer.addClass(MARKDOWN_OUTPUT_CLASS);\n            }\n            this._prevText = text;\n            return this._renderer.renderModel(mimeModel);\n        }\n        return Promise.resolve(void 0);\n    }\n    /**\n     * Clone the cell, using the same model.\n     */\n    clone() {\n        const constructor = this.constructor;\n        return new constructor({\n            model: this.model,\n            contentFactory: this.contentFactory,\n            rendermime: this._rendermime,\n            placeholder: false\n        });\n    }\n}\n/** ****************************************************************************\n * RawCell\n ******************************************************************************/\n/**\n * A widget for a raw cell.\n */\nclass RawCell extends Cell {\n    /**\n     * Construct a raw cell widget.\n     */\n    constructor(options) {\n        super(options);\n        this.addClass(RAW_CELL_CLASS);\n    }\n    /**\n     * Clone the cell, using the same model.\n     */\n    clone() {\n        const constructor = this.constructor;\n        return new constructor({\n            model: this.model,\n            contentFactory: this.contentFactory,\n            placeholder: false\n        });\n    }\n}\n//# sourceMappingURL=widget.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/cells/lib/widget.js?");

/***/ })

}]);