|
1 | 1 | // Copyright (c) Manabu TERADA |
2 | 2 | // Distributed under the terms of the Modified BSD License. |
3 | 3 |
|
4 | | -import { |
5 | | - JupyterFrontEnd, |
6 | | - JupyterFrontEndPlugin, |
7 | | -} from '@jupyterlab/application'; |
8 | | - |
9 | | -import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; |
10 | 4 | import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; |
11 | 5 | import { Widget } from '@lumino/widgets'; |
12 | 6 |
|
@@ -132,49 +126,25 @@ export class NetVisMimeRenderer extends Widget implements IRenderMime.IRenderer |
132 | 126 | } |
133 | 127 |
|
134 | 128 | /** |
135 | | - * Extension definition for JupyterLab 4.x |
| 129 | + * Mime extension definition (JupyterLab expects rendererFactory & rank here). |
136 | 130 | */ |
137 | | -const mimeExtension: JupyterFrontEndPlugin<void> = { |
138 | | - id: 'net_vis:mime', |
139 | | - autoStart: true, |
140 | | - requires: [IRenderMimeRegistry], |
141 | | - activate: (app: JupyterFrontEnd, rendermime: IRenderMimeRegistry) => { |
142 | | - console.log('NetVis MIME extension activation started'); |
143 | | - |
144 | | - /** |
145 | | - * Create a renderer factory for NetVis data. |
146 | | - */ |
147 | | - const factory: IRenderMime.IRendererFactory & { defaultRank?: number } = { |
148 | | - safe: true, |
149 | | - mimeTypes: [MIME_TYPE], |
150 | | - // Explicit default rank to match JupyterLab 4 expectations and avoid |
151 | | - // `defaultRank` lookups on undefined. |
152 | | - defaultRank: 0, |
153 | | - createRenderer: (options: IRenderMime.IRendererOptions) => { |
154 | | - return new NetVisMimeRenderer(options); |
155 | | - } |
156 | | - }; |
157 | | - |
158 | | - // Register the factory with fallback paths for JL3/JL4 |
159 | | - try { |
160 | | - // Preferred path (JL4): factory carries its defaultRank |
161 | | - rendermime.addFactory(factory); |
162 | | - } catch (primaryError) { |
163 | | - console.warn('[NetVis] Primary factory registration failed, retrying with explicit rank', primaryError); |
164 | | - try { |
165 | | - // JL3-style explicit rank argument |
166 | | - rendermime.addFactory(factory, 0); |
167 | | - } catch (fallbackError) { |
168 | | - console.error('[NetVis] Failed to register MIME renderer factory', { |
169 | | - primaryError, |
170 | | - fallbackError |
171 | | - }); |
172 | | - return; |
173 | | - } |
174 | | - } |
175 | | - |
176 | | - console.log(`NetVis MIME renderer registered for ${MIME_TYPE}`); |
| 131 | +const rendererFactory: IRenderMime.IRendererFactory & { defaultRank?: number } = { |
| 132 | + safe: true, |
| 133 | + mimeTypes: [MIME_TYPE], |
| 134 | + // Explicit default rank to match JupyterLab 4 expectations and avoid |
| 135 | + // `defaultRank` lookups on undefined. |
| 136 | + defaultRank: 0, |
| 137 | + createRenderer: (options: IRenderMime.IRendererOptions) => { |
| 138 | + return new NetVisMimeRenderer(options); |
177 | 139 | } |
178 | 140 | }; |
179 | 141 |
|
| 142 | +const mimeExtension: IRenderMime.IExtension = { |
| 143 | + id: 'net_vis:mime', |
| 144 | + rendererFactory, |
| 145 | + // Rank used by JupyterLab registry; also keep defaultRank on factory. |
| 146 | + rank: 0, |
| 147 | + dataType: 'json' |
| 148 | +}; |
| 149 | + |
180 | 150 | export default mimeExtension; |
0 commit comments