forked from jupyterlab/jupyterlab
/
rendermime.ts
48 lines (41 loc) · 1.16 KB
/
rendermime.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.
import json2html = require('json-to-html');
import {
IRenderMime,
RenderMimeRegistry,
RenderedHTML,
standardRendererFactories
} from '@jupyterlab/rendermime';
/**
* Get a copy of the default rendermime instance.
*/
export function defaultRenderMime(): RenderMimeRegistry {
return Private.rendermime.clone();
}
/**
* A namespace for private data.
*/
namespace Private {
class JSONRenderer extends RenderedHTML {
mimeType = 'text/html';
renderModel(model: IRenderMime.IMimeModel): Promise<void> {
let source = model.data['application/json'];
model.setData({ data: { 'text/html': json2html(source) } });
return super.renderModel(model);
}
}
const jsonRendererFactory = {
mimeTypes: ['application/json'],
safe: true,
createRenderer(
options: IRenderMime.IRendererOptions
): IRenderMime.IRenderer {
return new JSONRenderer(options);
}
};
export const rendermime = new RenderMimeRegistry({
initialFactories: standardRendererFactories
});
rendermime.addFactory(jsonRendererFactory, 10);
}