|
@@ -1,6 +1,9 @@
|
|
// Copyright (c) Jupyter Development Team.
|
|
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
|
|
|
|
|
|
+import * as marked
|
|
|
|
+ from 'marked';
|
|
|
|
+
|
|
import {
|
|
import {
|
|
IRenderer
|
|
IRenderer
|
|
} from '../rendermime';
|
|
} from '../rendermime';
|
|
@@ -17,7 +20,7 @@ import {
|
|
} from 'phosphor-messaging';
|
|
} from 'phosphor-messaging';
|
|
|
|
|
|
import {
|
|
import {
|
|
- typeset
|
|
|
|
|
|
+ typeset, removeMath, replaceMath
|
|
} from './latex';
|
|
} from './latex';
|
|
|
|
|
|
|
|
|
|
@@ -69,6 +72,7 @@ class LatexWidget extends Widget {
|
|
export
|
|
export
|
|
class HTMLRenderer implements IRenderer<Widget> {
|
|
class HTMLRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['text/html'];
|
|
mimetypes = ['text/html'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
return new HTMLWidget(data);
|
|
return new HTMLWidget(data);
|
|
}
|
|
}
|
|
@@ -81,6 +85,7 @@ class HTMLRenderer implements IRenderer<Widget> {
|
|
export
|
|
export
|
|
class ImageRenderer implements IRenderer<Widget> {
|
|
class ImageRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['image/png', 'image/jpeg', 'image/gif'];
|
|
mimetypes = ['image/png', 'image/jpeg', 'image/gif'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
let w = new Widget();
|
|
let w = new Widget();
|
|
let img = document.createElement('img');
|
|
let img = document.createElement('img');
|
|
@@ -97,6 +102,7 @@ class ImageRenderer implements IRenderer<Widget> {
|
|
export
|
|
export
|
|
class TextRenderer implements IRenderer<Widget> {
|
|
class TextRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['text/plain'];
|
|
mimetypes = ['text/plain'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
let w = new Widget();
|
|
let w = new Widget();
|
|
w.node.textContent = data;
|
|
w.node.textContent = data;
|
|
@@ -135,6 +141,7 @@ class ConsoleTextRenderer implements IRenderer<Widget> {
|
|
export
|
|
export
|
|
class JavascriptRenderer implements IRenderer<Widget> {
|
|
class JavascriptRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['text/javascript', 'application/javascript'];
|
|
mimetypes = ['text/javascript', 'application/javascript'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
let w = new Widget();
|
|
let w = new Widget();
|
|
let s = document.createElement('script');
|
|
let s = document.createElement('script');
|
|
@@ -152,6 +159,7 @@ class JavascriptRenderer implements IRenderer<Widget> {
|
|
export
|
|
export
|
|
class SVGRenderer implements IRenderer<Widget> {
|
|
class SVGRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['image/svg+xml'];
|
|
mimetypes = ['image/svg+xml'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
let w = new Widget();
|
|
let w = new Widget();
|
|
w.node.innerHTML = data;
|
|
w.node.innerHTML = data;
|
|
@@ -170,7 +178,23 @@ class SVGRenderer implements IRenderer<Widget> {
|
|
export
|
|
export
|
|
class LatexRenderer implements IRenderer<Widget> {
|
|
class LatexRenderer implements IRenderer<Widget> {
|
|
mimetypes = ['text/latex'];
|
|
mimetypes = ['text/latex'];
|
|
|
|
+
|
|
render(mimetype: string, data: string): Widget {
|
|
render(mimetype: string, data: string): Widget {
|
|
return new LatexWidget(data);
|
|
return new LatexWidget(data);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * A renderer for Jupyter Markdown data.
|
|
|
|
+ */
|
|
|
|
+export
|
|
|
|
+class MarkdownRenderer implements IRenderer<Widget> {
|
|
|
|
+ mimetypes = ['application/vnd.jupyter.markdown'];
|
|
|
|
+
|
|
|
|
+ render(mimetype: string, text: string): Widget {
|
|
|
|
+ let data = removeMath(text);
|
|
|
|
+ let html = marked(data['text']);
|
|
|
|
+ return new HTMLWidget(replaceMath(html, data['math']));
|
|
|
|
+ }
|
|
|
|
+}
|