Add (dummy) IPyWidgets Renderer (#7849)

This commit is contained in:
Chris LaFreniere
2019-10-21 14:22:44 -07:00
committed by GitHub
parent a646af2ad2
commit 597a0cad6b
3 changed files with 54 additions and 1 deletions

View File

@@ -292,4 +292,17 @@ registerComponentType({
selector: MarkdownOutputComponent.SELECTOR
});
/**
* A mime renderer for IPyWidgets
*/
registerComponentType({
mimeTypes: [
'application/vnd.jupyter.widget-view',
'application/vnd.jupyter.widget-view+json'
],
rank: 47,
safe: true,
ctor: MimeRendererComponent,
selector: MimeRendererComponent.SELECTOR
});
registerCellComponent(TextCellComponent);

View File

@@ -80,6 +80,16 @@ export const dataResourceRendererFactory: IRenderMime.IRendererFactory = {
createRenderer: options => new widgets.RenderedDataResource(options)
};
export const ipywidgetFactory: IRenderMime.IRendererFactory = {
safe: false,
mimeTypes: [
'application/vnd.jupyter.widget-view',
'application/vnd.jupyter.widget-view+json'
],
defaultRank: 45,
createRenderer: options => new widgets.RenderedIPyWidget(options)
};
/**
* The standard factories provided by the rendermime package.
*/
@@ -90,5 +100,6 @@ export const standardRendererFactories: ReadonlyArray<IRenderMime.IRendererFacto
imageRendererFactory,
javaScriptRendererFactory,
textRendererFactory,
dataResourceRendererFactory
dataResourceRendererFactory,
ipywidgetFactory
];

View File

@@ -7,6 +7,7 @@ import * as renderers from './renderers';
import { IRenderMime } from '../models/renderMimeInterfaces';
import { ReadonlyJSONObject } from '../../common/models/jsonext';
import * as tableRenderers from 'sql/workbench/parts/notebook/browser/outputs/tableRenderers';
import { Deferred } from 'sql/base/common/promise';
/**
* A common base class for mime renderers.
@@ -376,3 +377,31 @@ export class RenderedDataResource extends RenderedCommon {
});
}
}
/**
* A dummy widget for (not) displaying ipywidgets.
*/
export class RenderedIPyWidget extends RenderedCommon {
/**
* Construct a new rendered widget.
*
* @param options - The options for initializing the widget.
*/
constructor(options: IRenderMime.IRendererOptions) {
super(options);
this.addClass('jp-RenderedIPyWidget');
}
/**
* Render a mime model.
*
* @param model - The mime model to render.
*
* @returns A promise which resolves when rendering is complete.
*/
render(model: IRenderMime.IMimeModel): Promise<void> {
let deferred = new Deferred<void>();
deferred.resolve();
return deferred.promise;
}
}