jupyterlab-emrys
Version:
A computational environment for Jupyter. Powered by Emrys
90 lines (89 loc) • 2.95 kB
JavaScript
// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.
;
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var phosphor_panel_1 = require('phosphor-panel');
var phosphor_widget_1 = require('phosphor-widget');
var docregistry_1 = require('../docregistry');
/**
* The class name added to a Jupyter MarkdownWidget
*/
var MD_CLASS = 'jp-MarkdownWidget';
/**
* A widget for rendered markdown.
*/
var MarkdownWidget = (function (_super) {
__extends(MarkdownWidget, _super);
/**
* Construct a new markdown widget.
*/
function MarkdownWidget(context, rendermime) {
var _this = this;
_super.call(this);
this._rendermime = null;
this._context = null;
this.addClass(MD_CLASS);
this.layout = new phosphor_panel_1.PanelLayout();
this.title.text = context.path.split('/').pop();
this._rendermime = rendermime;
rendermime.resolver = context;
this._context = context;
context.pathChanged.connect(function (c, path) {
_this.title.text = path.split('/').pop();
});
context.model.contentChanged.connect(function () {
_this.update();
});
}
/**
* Handle an `after-attach` message to the widget.
*/
MarkdownWidget.prototype.onAfterAttach = function (msg) {
this.update();
};
/**
* Handle an `update-request` message to the widget.
*/
MarkdownWidget.prototype.onUpdateRequest = function (msg) {
var context = this._context;
var model = context.model;
var layout = this.layout;
var widget = this._rendermime.render({
'text/markdown': model.toString(),
});
if (layout.childCount()) {
layout.childAt(0).dispose();
}
layout.addChild(widget);
};
return MarkdownWidget;
}(phosphor_widget_1.Widget));
exports.MarkdownWidget = MarkdownWidget;
/**
* A widget factory for Markdown.
*/
var MarkdownWidgetFactory = (function (_super) {
__extends(MarkdownWidgetFactory, _super);
/**
* Construct a new markdown widget factory.
*/
function MarkdownWidgetFactory(rendermime) {
_super.call(this);
this._rendermime = null;
this._rendermime = rendermime;
}
/**
* Create a new widget given a context.
*/
MarkdownWidgetFactory.prototype.createNew = function (context, kernel) {
var widget = new MarkdownWidget(context, this._rendermime.clone());
this.widgetCreated.emit(widget);
return widget;
};
return MarkdownWidgetFactory;
}(docregistry_1.ABCWidgetFactory));
exports.MarkdownWidgetFactory = MarkdownWidgetFactory;