Skip to content
This repository has been archived by the owner on Oct 26, 2019. It is now read-only.

WIP: Update to Jupyterlab 0.1.3 #275

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
44 changes: 31 additions & 13 deletions client/js/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@

var $ = require('jquery');
var AnsiParser = require('ansi-parser');
var Services = require('jupyter-js-services');
var defaultSanitizer = require('jupyterlab/lib/sanitizer').defaultSanitizer;
var OutputArea = require('jupyterlab/lib/notebook/output-area');
var RenderMime = require('jupyterlab/lib/rendermime').RenderMime;
var renderers = require('jupyterlab/lib/renderers');
var PhWidget = require('phosphor-widget');
var Services = require('jupyter-js-services');
var PhWidget = require('phosphor/lib/ui/widget').Widget;

var Widgets = require('jupyter-js-widgets');
require('jquery-ui/themes/smoothness/jquery-ui.min.css');
Expand All @@ -25,6 +26,10 @@ var Layout = require('./layout');
// ES6 Promise polyfill
require('es6-promise').polyfill();

// see src/renderers/index.ts in Jupyterlab
var RENDERED_CLASS = 'jp-Rendered';
var RENDERED_HTML = 'jp-Rendered-html';

// Element.prototype.matches polyfill -- fixes widgets rendering issue in IE 11
// See ipywidgets' embed-webpack.js
if (Element && !Element.prototype.matches) {
Expand Down Expand Up @@ -83,7 +88,7 @@ if (Element && !Element.prototype.matches) {
});

// attach the view to the cell dom node
view.attach(this);
PhWidget.attach(view, this);

// create the widget area and widget subarea dom structure used
// by ipywidgets in jupyter
Expand Down Expand Up @@ -146,16 +151,25 @@ if (Element && !Element.prototype.matches) {
// NOTE: The HTMLRenderer doesn't work with current Safari versions -- inline JS scripts
// don't load. This simple implementation works around it by using jQuery to add the
// HTML to the DOM; this does run inline scripts.
{
mimetypes: ['text/html'],
render: function(mimetype, data) {
var widget = new PhWidget.Widget();
widget.onAfterAttach = function() {
$(widget.node).html(data);
};
(function() {
var r = new renderers.HTMLRenderer();
r.render = function(options) {
// see src/renderers/index.ts in Jupyterlab
var widget = new PhWidget();
widget.addClass(RENDERED_HTML);
widget.addClass(RENDERED_CLASS);
var source = options.source;
if (options.sanitizer) {
source = options.sanitizer.sanitize(source);
}
$(widget.node).html(source);
if (options.resolver) {
renderers.resolveUrls(widget.node, options.resolver);
}
return widget;
}
},
};
return r;
})(),
new renderers.ImageRenderer(),
new renderers.SVGRenderer(),
new renderers.LatexRenderer(),
Expand All @@ -169,7 +183,11 @@ if (Element && !Element.prototype.matches) {
mimeMap[m] = t;
});
});
return new RenderMime(mimeMap, order);
return new RenderMime({
renderers: mimeMap,
order: order,
sanitizer: defaultSanitizer
});
}

// shim kernel object on notebook for backward compatibility
Expand Down
13 changes: 7 additions & 6 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,15 @@ var webpackConfig = {
loaders: [
{ test: /\.css$/, loader: 'style-loader!css-loader' },
{ test: /\.json$/, loader: 'json-loader' },
{ test: /\.html$/, loader: 'file-loader' },
// jquery-ui loads some images
{ test: /\.(jpg|png|gif)$/, loader: "file" },
{ test: /\.(jpg|png|gif)$/, loader: 'file-loader' },
// required to load font-awesome
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff" },
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/font-woff" },
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=application/octet-stream" },
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&mimetype=image/svg+xml" }
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream' },
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader' },
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' }
]
},
resolve: {
Expand Down
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,14 @@
"fs-extra": "^0.26.5",
"hjson": "^1.7.4",
"http-proxy": "^1.12.0",
"jupyter-js-services": "0.15.x",
"jupyter-js-services": "0.17.x",
"jupyter-js-widgets": "1.2.x",
"jupyterlab": "0.1.1",
"jupyterlab": "0.2.0",
"morgan": "^1.6.1",
"nconf": "^0.8.2",
"passport": "^0.3.2",
"passport-local": "^1.0.0",
"phosphor": "^0.6.1",
"prompt": "^1.0.0",
"request": "^2.67.0",
"requirejs": "^2.1.21",
Expand All @@ -63,7 +64,7 @@
"devDependencies": {
"chai": "^3.4.1",
"css-loader": "^0.23.1",
"file-loader": "^0.8.5",
"file-loader": "^0.9.0",
"gulp": "^3.9.0",
"gulp-expect-file": "0.0.7",
"gulp-less": "^3.0.1",
Expand All @@ -79,7 +80,7 @@
"proxyquire": "^1.7.3",
"sinon": "^1.17.2",
"sinon-chai": "^2.8.0",
"style-loader": "^0.13.0",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"webpack": "^1.12.12"
}
Expand Down