File tree Expand file tree Collapse file tree 4 files changed +15
-6
lines changed Expand file tree Collapse file tree 4 files changed +15
-6
lines changed Original file line number Diff line number Diff line change 1
1
import { IDisposable } from '@lumino/disposable' ;
2
2
3
3
import { IJupyterYModel } from '../types' ;
4
- import { IJupyterYWidgetManager } from './types' ;
4
+ import { IJupyterYWidget , IJupyterYWidgetManager } from './types' ;
5
5
6
6
export class NotebookRendererModel implements IDisposable {
7
7
constructor ( options : NotebookRendererModel . IOptions ) {
@@ -26,14 +26,19 @@ export class NotebookRendererModel implements IDisposable {
26
26
}
27
27
}
28
28
29
- createYWidget ( commId : string , node : HTMLElement ) : void {
29
+ createYWidget (
30
+ commId : string ,
31
+ node : HTMLElement
32
+ ) : IJupyterYWidget | undefined {
30
33
if ( this . _kernelId ) {
31
34
const yModel = this . _widgetManager . getWidgetModel ( this . _kernelId , commId ) ;
32
35
if ( yModel ) {
33
36
const widgetFactory = this . _widgetManager . getWidgetFactory (
34
37
yModel . yModelName
35
38
) ;
36
- new widgetFactory ( yModel , node ) ;
39
+ if ( widgetFactory ) {
40
+ return new widgetFactory ( yModel , node ) ;
41
+ }
37
42
}
38
43
}
39
44
}
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ export interface IJupyterYWidgetManager {
22
22
yWidgetFactory : IJupyterYWidgetFactory
23
23
) : void ;
24
24
getWidgetModel ( kernelId : string , commId : string ) : IJupyterYModel | undefined ;
25
- getWidgetFactory ( modelName : string ) : any | undefined ;
25
+ getWidgetFactory ( modelName : string ) : IJupyterYWidgetFactory | undefined ;
26
26
}
27
27
28
28
export const IJupyterYWidgetManager = new Token < IJupyterYWidgetManager > (
@@ -33,4 +33,5 @@ export const IJupyterYWidgetManager = new Token<IJupyterYWidgetManager>(
33
33
export interface IJupyterYWidget {
34
34
node : HTMLElement ;
35
35
yModel : IJupyterYModel ;
36
+ dispose ?( ) : void ;
36
37
}
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import { Widget } from '@lumino/widgets';
4
4
import { NotebookRendererModel } from './model' ;
5
5
import { IRenderMime } from '@jupyterlab/rendermime' ;
6
6
import { IJupyterYModel } from '../types' ;
7
+ import { IJupyterYWidget } from './types' ;
7
8
8
9
export const CLASS_NAME = 'mimerenderer-jupyterywidget' ;
9
10
@@ -25,6 +26,7 @@ export class JupyterYWidget extends Widget implements IRenderMime.IRenderer {
25
26
if ( this . isDisposed ) {
26
27
return ;
27
28
}
29
+ this . _ywidget ?. dispose ?.( ) ;
28
30
this . _yModel ?. dispose ( ) ;
29
31
super . dispose ( ) ;
30
32
}
@@ -35,10 +37,11 @@ export class JupyterYWidget extends Widget implements IRenderMime.IRenderer {
35
37
if ( ! this . _yModel ) {
36
38
return ;
37
39
}
38
- this . _modelFactory . createYWidget ( modelId , this . node ) ;
40
+ this . _ywidget = this . _modelFactory . createYWidget ( modelId , this . node ) ;
39
41
}
40
42
41
43
private _modelFactory : NotebookRendererModel ;
42
44
private _mimeType : string ;
43
45
private _yModel ?: IJupyterYModel ;
46
+ private _ywidget ?: IJupyterYWidget ;
44
47
}
Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ export class JupyterYWidgetManager implements IJupyterYWidgetManager {
34
34
return this . _registry . get ( kernelId ) ?. getModel ( commId ) ;
35
35
}
36
36
37
- getWidgetFactory ( modelName : string ) {
37
+ getWidgetFactory ( modelName : string ) : IJupyterYWidgetFactory | undefined {
38
38
return this . _yWidgetFactories . get ( modelName ) ;
39
39
}
40
40
You can’t perform that action at this time.
0 commit comments