@datalayer/jupyter-react 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +4 -0
  2. package/lib/app/JupyterReact.d.ts +5 -1
  3. package/lib/app/JupyterReact.js +5 -4
  4. package/lib/app/JupyterReact.js.map +1 -1
  5. package/lib/app/tabs/AboutTab.js +9 -3
  6. package/lib/app/tabs/AboutTab.js.map +1 -1
  7. package/lib/app/tabs/ComponentsTab.d.ts +3 -0
  8. package/lib/app/tabs/ComponentsTab.js +16 -0
  9. package/lib/app/tabs/ComponentsTab.js.map +1 -0
  10. package/lib/app/tabs/content/Content.d.ts +3 -0
  11. package/lib/app/tabs/content/Content.js +7 -0
  12. package/lib/app/tabs/content/Content.js.map +1 -0
  13. package/lib/components/cell/CellAdapter.js +3 -3
  14. package/lib/components/cell/CellAdapter.js.map +1 -1
  15. package/lib/components/notebook/Notebook.d.ts +18 -9
  16. package/lib/components/notebook/Notebook.js +10 -7
  17. package/lib/components/notebook/Notebook.js.map +1 -1
  18. package/lib/components/notebook/NotebookAdapter.d.ts +15 -12
  19. package/lib/components/notebook/NotebookAdapter.js +91 -87
  20. package/lib/components/notebook/NotebookAdapter.js.map +1 -1
  21. package/lib/components/notebook/NotebookCommands.d.ts +2 -2
  22. package/lib/components/notebook/NotebookCommands.js +18 -1
  23. package/lib/components/notebook/NotebookCommands.js.map +1 -1
  24. package/lib/components/notebook/NotebookState.js +1 -1
  25. package/lib/components/notebook/model/JupyterReactNotebookModelFactory.d.ts +2 -0
  26. package/lib/components/notebook/model/JupyterReactNotebookModelFactory.js +10 -4
  27. package/lib/components/notebook/model/JupyterReactNotebookModelFactory.js.map +1 -1
  28. package/lib/components/output/OutputAdapter.js +2 -2
  29. package/lib/components/output/OutputAdapter.js.map +1 -1
  30. package/lib/components/terminal/Terminal.js +4 -7
  31. package/lib/components/terminal/Terminal.js.map +1 -1
  32. package/lib/components/terminal/TerminalAdapter.js +2 -2
  33. package/lib/components/terminal/TerminalAdapter.js.map +1 -1
  34. package/lib/examples/All.js +32 -108
  35. package/lib/examples/All.js.map +1 -1
  36. package/lib/examples/Bokeh.js +3 -3
  37. package/lib/examples/Bokeh.js.map +1 -1
  38. package/lib/examples/Bqplot.js +5 -3
  39. package/lib/examples/Bqplot.js.map +1 -1
  40. package/lib/examples/Cell.js +1 -1
  41. package/lib/examples/Cell.js.map +1 -1
  42. package/lib/examples/Cells.js +1 -1
  43. package/lib/examples/Cells.js.map +1 -1
  44. package/lib/examples/Dashboard.js +1 -1
  45. package/lib/examples/Dashboard.js.map +1 -1
  46. package/lib/examples/FileBrowser.js +1 -1
  47. package/lib/examples/FileBrowser.js.map +1 -1
  48. package/lib/examples/{NotebookGeoJson.js → GeoJson.js} +6 -7
  49. package/lib/examples/GeoJson.js.map +1 -0
  50. package/lib/examples/IPyReact.js +4 -2
  51. package/lib/examples/IPyReact.js.map +1 -1
  52. package/lib/examples/IPyWidgets.js +2 -2
  53. package/lib/examples/IPyWidgets.js.map +1 -1
  54. package/lib/examples/{NotebookRedux.js → InjectableStore.js} +1 -1
  55. package/lib/examples/InjectableStore.js.map +1 -0
  56. package/lib/examples/Matplotlib.js +17 -0
  57. package/lib/examples/Matplotlib.js.map +1 -0
  58. package/lib/examples/Notebook.js +2 -2
  59. package/lib/examples/Notebook.js.map +1 -1
  60. package/lib/examples/NotebookKernelChange.js +2 -2
  61. package/lib/examples/NotebookKernelChange.js.map +1 -1
  62. package/lib/examples/NotebookModel.js +2 -2
  63. package/lib/examples/NotebookModel.js.map +1 -1
  64. package/lib/examples/NotebookModelChange.js +3 -2
  65. package/lib/examples/NotebookModelChange.js.map +1 -1
  66. package/lib/examples/{NotebookPanel.js → Panel.js} +6 -3
  67. package/lib/examples/Panel.js.map +1 -0
  68. package/lib/examples/{NotebookPlotly.js → Plotly.js} +4 -4
  69. package/lib/examples/Plotly.js.map +1 -0
  70. package/lib/examples/Terminal.js +1 -1
  71. package/lib/examples/Terminal.js.map +1 -1
  72. package/lib/examples/Vega.d.ts +1 -0
  73. package/lib/examples/Vega.js +17 -0
  74. package/lib/examples/Vega.js.map +1 -0
  75. package/lib/examples/samples/IPyWidgetsExample1.ipynb.json +6 -32
  76. package/lib/examples/samples/{NotebookMatplotlib.ipynb.json → Matplotlib.ipynb.json} +16 -18
  77. package/lib/index.d.ts +1 -1
  78. package/lib/index.js +1 -1
  79. package/lib/index.js.map +1 -1
  80. package/lib/jupyter/Jupyter.d.ts +7 -27
  81. package/lib/jupyter/Jupyter.js +10 -24
  82. package/lib/jupyter/Jupyter.js.map +1 -1
  83. package/lib/jupyter/JupyterConfig.d.ts +3 -0
  84. package/lib/jupyter/JupyterConfig.js +52 -25
  85. package/lib/jupyter/JupyterConfig.js.map +1 -1
  86. package/lib/jupyter/JupyterContext.js +1 -2
  87. package/lib/jupyter/JupyterContext.js.map +1 -1
  88. package/lib/jupyter/ipywidgets/IPyWidgetsManager.d.ts +16 -7
  89. package/lib/jupyter/ipywidgets/IPyWidgetsManager.js +67 -48
  90. package/lib/jupyter/ipywidgets/IPyWidgetsManager.js.map +1 -1
  91. package/lib/jupyter/ipywidgets/IPyWidgetsViewManager.d.ts +10 -0
  92. package/lib/jupyter/ipywidgets/IPyWidgetsViewManager.js +58 -0
  93. package/lib/jupyter/ipywidgets/IPyWidgetsViewManager.js.map +1 -0
  94. package/lib/jupyter/ipywidgets/lab/manager.d.ts +185 -0
  95. package/lib/jupyter/ipywidgets/lab/manager.js +466 -0
  96. package/lib/jupyter/ipywidgets/lab/manager.js.map +1 -0
  97. package/lib/jupyter/ipywidgets/lab/output.d.ts +38 -0
  98. package/lib/jupyter/ipywidgets/lab/output.js +133 -0
  99. package/lib/jupyter/ipywidgets/lab/output.js.map +1 -0
  100. package/lib/jupyter/ipywidgets/lab/plugin.d.ts +50 -0
  101. package/lib/jupyter/ipywidgets/lab/plugin.js +254 -0
  102. package/lib/jupyter/ipywidgets/lab/plugin.js.map +1 -0
  103. package/lib/jupyter/ipywidgets/lab/renderer.d.ts +26 -0
  104. package/lib/jupyter/ipywidgets/lab/renderer.js +98 -0
  105. package/lib/jupyter/ipywidgets/lab/renderer.js.map +1 -0
  106. package/lib/jupyter/ipywidgets/lab/semvercache.d.ts +9 -0
  107. package/lib/jupyter/ipywidgets/lab/semvercache.js +35 -0
  108. package/lib/jupyter/ipywidgets/lab/semvercache.js.map +1 -0
  109. package/lib/jupyter/lab/JupyterLabCss.d.ts +20 -0
  110. package/lib/jupyter/lab/JupyterLabCss.js +21 -0
  111. package/lib/jupyter/lab/JupyterLabCss.js.map +1 -0
  112. package/lib/jupyter/lab/index.js +2 -2
  113. package/lib/jupyter/lab/index.js.map +1 -1
  114. package/lib/jupyter/lab/widget.d.ts +3 -1
  115. package/lib/jupyter/lab/widget.js +4 -2
  116. package/lib/jupyter/lab/widget.js.map +1 -1
  117. package/lib/jupyter/lumino/IPyWidgetsAttached.js +2 -2
  118. package/lib/jupyter/lumino/IPyWidgetsAttached.js.map +1 -1
  119. package/lib/jupyter/services/kernel/Kernel.d.ts +6 -2
  120. package/lib/jupyter/services/kernel/Kernel.js +20 -6
  121. package/lib/jupyter/services/kernel/Kernel.js.map +1 -1
  122. package/package.json +9 -7
  123. package/style/base.css +0 -20
  124. package/lib/app/tabs/PluginsTab.d.ts +0 -2
  125. package/lib/app/tabs/PluginsTab.js +0 -6
  126. package/lib/app/tabs/PluginsTab.js.map +0 -1
  127. package/lib/examples/NotebookGeoJson.js.map +0 -1
  128. package/lib/examples/NotebookMatplotlib.js +0 -15
  129. package/lib/examples/NotebookMatplotlib.js.map +0 -1
  130. package/lib/examples/NotebookPanel.js.map +0 -1
  131. package/lib/examples/NotebookPlotly.js.map +0 -1
  132. package/lib/examples/NotebookRedux.js.map +0 -1
  133. package/lib/jupyter/ipywidgets/IPyWidgetsClassicManager.d.ts +0 -18
  134. package/lib/jupyter/ipywidgets/IPyWidgetsClassicManager.js +0 -76
  135. package/lib/jupyter/ipywidgets/IPyWidgetsClassicManager.js.map +0 -1
  136. package/lib/jupyter/ipywidgets/IPyWidgetsJupyterLabPlugin.d.ts +0 -13
  137. package/lib/jupyter/ipywidgets/IPyWidgetsJupyterLabPlugin.js +0 -182
  138. package/lib/jupyter/ipywidgets/IPyWidgetsJupyterLabPlugin.js.map +0 -1
  139. /package/lib/examples/{NotebookGeoJson.d.ts → GeoJson.d.ts} +0 -0
  140. /package/lib/examples/{NotebookMatplotlib.d.ts → InjectableStore.d.ts} +0 -0
  141. /package/lib/examples/{NotebookPanel.d.ts → Matplotlib.d.ts} +0 -0
  142. /package/lib/examples/{NotebookPlotly.d.ts → Panel.d.ts} +0 -0
  143. /package/lib/examples/{NotebookRedux.d.ts → Plotly.d.ts} +0 -0
@@ -0,0 +1,466 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ import { shims, } from '@jupyter-widgets/base';
4
+ import { ManagerBase, serialize_state, } from '@jupyter-widgets/base-manager';
5
+ import { Signal } from '@lumino/signaling';
6
+ import { valid } from 'semver';
7
+ import { SemVerCache } from './semvercache';
8
+ /**
9
+ * The mime type for a widget view.
10
+ */
11
+ export const WIDGET_VIEW_MIMETYPE = 'application/vnd.jupyter.widget-view+json';
12
+ /**
13
+ * The mime type for widget state data.
14
+ */
15
+ export const WIDGET_STATE_MIMETYPE = 'application/vnd.jupyter.widget-state+json';
16
+ /**
17
+ * A widget manager that returns Lumino widgets.
18
+ */
19
+ export class LabWidgetManager extends ManagerBase {
20
+ constructor(rendermime) {
21
+ super();
22
+ this._rendermime = rendermime;
23
+ }
24
+ /**
25
+ * Default callback handler to emit unhandled kernel messages.
26
+ */
27
+ callbacks(view) {
28
+ return {
29
+ iopub: {
30
+ output: (msg) => {
31
+ this._onUnhandledIOPubMessage.emit(msg);
32
+ },
33
+ },
34
+ };
35
+ }
36
+ /**
37
+ * Register a new kernel
38
+ */
39
+ _handleKernelChanged({ oldValue, newValue, }) {
40
+ if (oldValue) {
41
+ oldValue.removeCommTarget(this.comm_target_name, this._handleCommOpen);
42
+ }
43
+ if (newValue) {
44
+ newValue.registerCommTarget(this.comm_target_name, this._handleCommOpen);
45
+ }
46
+ }
47
+ /**
48
+ * Disconnect the widget manager from the kernel, setting each model's comm
49
+ * as dead.
50
+ */
51
+ disconnect() {
52
+ super.disconnect();
53
+ this._restoredStatus = false;
54
+ }
55
+ async _loadFromKernel() {
56
+ if (!this.kernel) {
57
+ throw new Error('Kernel not set');
58
+ }
59
+ if (this.kernel?.handleComms === false) {
60
+ // A "load" for a kernel that does not handle comms does nothing.
61
+ return;
62
+ }
63
+ return super._loadFromKernel();
64
+ }
65
+ /**
66
+ * Create a comm.
67
+ */
68
+ async _create_comm(target_name, model_id, data, metadata, buffers) {
69
+ const kernel = this.kernel;
70
+ if (!kernel) {
71
+ throw new Error('No current kernel');
72
+ }
73
+ const comm = kernel.createComm(target_name, model_id);
74
+ if (data || metadata) {
75
+ comm.open(data, metadata, buffers);
76
+ }
77
+ return new shims.services.Comm(comm);
78
+ }
79
+ /**
80
+ * Get the currently-registered comms.
81
+ */
82
+ async _get_comm_info() {
83
+ const kernel = this.kernel;
84
+ if (!kernel) {
85
+ throw new Error('No current kernel');
86
+ }
87
+ const reply = await kernel.requestCommInfo({
88
+ target_name: this.comm_target_name,
89
+ });
90
+ if (reply.content.status === 'ok') {
91
+ return reply.content.comms;
92
+ }
93
+ else {
94
+ return {};
95
+ }
96
+ }
97
+ /**
98
+ * Get whether the manager is disposed.
99
+ *
100
+ * #### Notes
101
+ * This is a read-only property.
102
+ */
103
+ get isDisposed() {
104
+ return this._isDisposed;
105
+ }
106
+ /**
107
+ * Dispose the resources held by the manager.
108
+ */
109
+ dispose() {
110
+ if (this.isDisposed) {
111
+ return;
112
+ }
113
+ this._isDisposed = true;
114
+ if (this._commRegistration) {
115
+ this._commRegistration.dispose();
116
+ }
117
+ }
118
+ /**
119
+ * Resolve a URL relative to the current notebook location.
120
+ */
121
+ async resolveUrl(url) {
122
+ return url;
123
+ }
124
+ /**
125
+ * Load a class and return a promise to the loaded object.
126
+ */
127
+ async loadClass(className, moduleName, moduleVersion) {
128
+ // Special-case the Jupyter base and controls packages. If we have just a
129
+ // plain version, with no indication of the compatible range, prepend a ^ to
130
+ // get all compatible versions. We may eventually apply this logic to all
131
+ // widget modules. See issues #2006 and #2017 for more discussion.
132
+ if ((moduleName === '@jupyter-widgets/base' ||
133
+ moduleName === '@jupyter-widgets/controls') &&
134
+ valid(moduleVersion)) {
135
+ moduleVersion = `^${moduleVersion}`;
136
+ }
137
+ const allVersions = this._registry.getAllVersions(moduleName);
138
+ if (!allVersions) {
139
+ throw new Error(`No version of module ${moduleName} is registered`);
140
+ }
141
+ const mod = this._registry.get(moduleName, moduleVersion);
142
+ if (!mod) {
143
+ const registeredVersionList = Object.keys(allVersions);
144
+ throw new Error(`Module ${moduleName}, version ${moduleVersion} is not registered, however, \
145
+ ${registeredVersionList.join(',')} ${registeredVersionList.length > 1 ? 'are' : 'is'}`);
146
+ }
147
+ let module;
148
+ if (typeof mod === 'function') {
149
+ module = await mod();
150
+ }
151
+ else {
152
+ module = await mod;
153
+ }
154
+ const cls = module[className];
155
+ if (!cls) {
156
+ throw new Error(`Class ${className} not found in module ${moduleName}`);
157
+ }
158
+ return cls;
159
+ }
160
+ get rendermime() {
161
+ return this._rendermime;
162
+ }
163
+ /**
164
+ * A signal emitted when state is restored to the widget manager.
165
+ *
166
+ * #### Notes
167
+ * This indicates that previously-unavailable widget models might be available now.
168
+ */
169
+ get restored() {
170
+ return this._restored;
171
+ }
172
+ /**
173
+ * Whether the state has been restored yet or not.
174
+ */
175
+ get restoredStatus() {
176
+ return this._restoredStatus;
177
+ }
178
+ /**
179
+ * A signal emitted for unhandled iopub kernel messages.
180
+ *
181
+ */
182
+ get onUnhandledIOPubMessage() {
183
+ return this._onUnhandledIOPubMessage;
184
+ }
185
+ register(data) {
186
+ this._registry.set(data.name, data.version, data.exports);
187
+ }
188
+ /**
189
+ * Register a widget model.
190
+ */
191
+ register_model(model_id, modelPromise) {
192
+ super.register_model(model_id, modelPromise);
193
+ // Update the synchronous model map
194
+ modelPromise.then((model) => {
195
+ this._modelsSync.set(model_id, model);
196
+ model.once('comm:close', () => {
197
+ this._modelsSync.delete(model_id);
198
+ });
199
+ });
200
+ }
201
+ /**
202
+ * Close all widgets and empty the widget state.
203
+ * @return Promise that resolves when the widget state is cleared.
204
+ */
205
+ async clear_state() {
206
+ await super.clear_state();
207
+ this._modelsSync = new Map();
208
+ }
209
+ /**
210
+ * Synchronously get the state of the live widgets in the widget manager.
211
+ *
212
+ * This includes all of the live widget models, and follows the format given in
213
+ * the @jupyter-widgets/schema package.
214
+ *
215
+ * @param options - The options for what state to return.
216
+ * @returns A state dictionary
217
+ */
218
+ get_state_sync(options = {}) {
219
+ const models = [];
220
+ for (const model of this._modelsSync.values()) {
221
+ if (model.comm_live) {
222
+ models.push(model);
223
+ }
224
+ }
225
+ return serialize_state(models, options);
226
+ }
227
+ // _handleCommOpen is an attribute, not a method, so `this` is captured in a
228
+ // single object that can be registered and removed
229
+ _handleCommOpen = async (comm, msg) => {
230
+ const oldComm = new shims.services.Comm(comm);
231
+ await this.handle_comm_open(oldComm, msg);
232
+ };
233
+ _restored = new Signal(this);
234
+ _restoredStatus = false;
235
+ _kernelRestoreInProgress = false;
236
+ _isDisposed = false;
237
+ _registry = new SemVerCache();
238
+ _rendermime;
239
+ _commRegistration;
240
+ _modelsSync = new Map();
241
+ _onUnhandledIOPubMessage = new Signal(this);
242
+ }
243
+ /**
244
+ * A widget manager that returns Lumino widgets.
245
+ */
246
+ export class KernelWidgetManager extends LabWidgetManager {
247
+ constructor(kernel, rendermime) {
248
+ super(rendermime);
249
+ this._kernel = kernel;
250
+ kernel.statusChanged.connect((sender, args) => {
251
+ this._handleKernelStatusChange(args);
252
+ });
253
+ kernel.connectionStatusChanged.connect((sender, args) => {
254
+ this._handleKernelConnectionStatusChange(args);
255
+ });
256
+ this._handleKernelChanged({
257
+ name: 'kernel',
258
+ oldValue: null,
259
+ newValue: kernel,
260
+ });
261
+ this.restoreWidgets();
262
+ }
263
+ _handleKernelConnectionStatusChange(status) {
264
+ if (status === 'connected') {
265
+ // Only restore if we aren't currently trying to restore from the kernel
266
+ // (for example, in our initial restore from the constructor).
267
+ if (!this._kernelRestoreInProgress) {
268
+ this.restoreWidgets();
269
+ }
270
+ }
271
+ }
272
+ _handleKernelStatusChange(status) {
273
+ if (status === 'restarting') {
274
+ this.disconnect();
275
+ }
276
+ }
277
+ /**
278
+ * Restore widgets from kernel and saved state.
279
+ */
280
+ async restoreWidgets() {
281
+ try {
282
+ this._kernelRestoreInProgress = true;
283
+ await this._loadFromKernel();
284
+ this._restoredStatus = true;
285
+ this._restored.emit();
286
+ }
287
+ catch (err) {
288
+ // Do nothing
289
+ }
290
+ this._kernelRestoreInProgress = false;
291
+ }
292
+ /**
293
+ * Dispose the resources held by the manager.
294
+ */
295
+ dispose() {
296
+ if (this.isDisposed) {
297
+ return;
298
+ }
299
+ this._kernel = null;
300
+ super.dispose();
301
+ }
302
+ get kernel() {
303
+ return this._kernel;
304
+ }
305
+ _kernel;
306
+ }
307
+ /**
308
+ * A widget manager that returns phosphor widgets.
309
+ */
310
+ export class WidgetManager extends LabWidgetManager {
311
+ constructor(context, rendermime, settings) {
312
+ super(rendermime);
313
+ this._context = context;
314
+ context.sessionContext.kernelChanged.connect((sender, args) => {
315
+ this._handleKernelChanged(args);
316
+ });
317
+ context.sessionContext.statusChanged.connect((sender, args) => {
318
+ this._handleKernelStatusChange(args);
319
+ });
320
+ context.sessionContext.connectionStatusChanged.connect((sender, args) => {
321
+ this._handleKernelConnectionStatusChange(args);
322
+ });
323
+ if (context.sessionContext.session?.kernel) {
324
+ this._handleKernelChanged({
325
+ name: 'kernel',
326
+ oldValue: null,
327
+ newValue: context.sessionContext.session?.kernel,
328
+ });
329
+ }
330
+ this.restoreWidgets(this._context.model);
331
+ this._settings = settings;
332
+ context.saveState.connect((sender, saveState) => {
333
+ if (saveState === 'started' && settings.saveState) {
334
+ this._saveState();
335
+ }
336
+ });
337
+ }
338
+ /**
339
+ * Save the widget state to the context model.
340
+ */
341
+ _saveState() {
342
+ const state = this.get_state_sync({ drop_defaults: true });
343
+ if (this._context.model.setMetadata) {
344
+ this._context.model.setMetadata('widgets', {
345
+ 'application/vnd.jupyter.widget-state+json': state,
346
+ });
347
+ }
348
+ else {
349
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
350
+ // @ts-ignore JupyterLab 3 support
351
+ this._context.model.metadata.set('widgets', {
352
+ 'application/vnd.jupyter.widget-state+json': state,
353
+ });
354
+ }
355
+ }
356
+ _handleKernelConnectionStatusChange(status) {
357
+ if (status === 'connected') {
358
+ // Only restore if we aren't currently trying to restore from the kernel
359
+ // (for example, in our initial restore from the constructor).
360
+ if (!this._kernelRestoreInProgress) {
361
+ // We only want to restore widgets from the kernel, not ones saved in the notebook.
362
+ this.restoreWidgets(this._context.model, {
363
+ loadKernel: true,
364
+ loadNotebook: false,
365
+ });
366
+ }
367
+ }
368
+ }
369
+ _handleKernelStatusChange(status) {
370
+ if (status === 'restarting') {
371
+ this.disconnect();
372
+ }
373
+ }
374
+ /**
375
+ * Restore widgets from kernel and saved state.
376
+ */
377
+ async restoreWidgets(notebook, { loadKernel, loadNotebook } = { loadKernel: true, loadNotebook: true }) {
378
+ try {
379
+ if (loadKernel) {
380
+ try {
381
+ this._kernelRestoreInProgress = true;
382
+ await this._loadFromKernel();
383
+ }
384
+ finally {
385
+ this._kernelRestoreInProgress = false;
386
+ }
387
+ }
388
+ if (loadNotebook) {
389
+ await this._loadFromNotebook(notebook);
390
+ }
391
+ // If the restore worked above, then update our state.
392
+ this._restoredStatus = true;
393
+ this._restored.emit();
394
+ }
395
+ catch (err) {
396
+ // Do nothing if the restore did not work.
397
+ }
398
+ }
399
+ /**
400
+ * Load widget state from notebook metadata
401
+ */
402
+ async _loadFromNotebook(notebook) {
403
+ const widget_md = notebook.getMetadata
404
+ ? notebook.getMetadata('widgets')
405
+ : // eslint-disable-next-line @typescript-eslint/ban-ts-comment
406
+ // @ts-ignore JupyterLab 3 support
407
+ notebook.metadata.get('widgets');
408
+ // Restore any widgets from saved state that are not live
409
+ if (widget_md && widget_md[WIDGET_STATE_MIMETYPE]) {
410
+ let state = widget_md[WIDGET_STATE_MIMETYPE];
411
+ state = this.filterExistingModelState(state);
412
+ await this.set_state(state);
413
+ }
414
+ }
415
+ /**
416
+ * Dispose the resources held by the manager.
417
+ */
418
+ dispose() {
419
+ if (this.isDisposed) {
420
+ return;
421
+ }
422
+ this._context = null;
423
+ super.dispose();
424
+ }
425
+ /**
426
+ * Resolve a URL relative to the current notebook location.
427
+ */
428
+ async resolveUrl(url) {
429
+ const partial = await this.context.urlResolver.resolveUrl(url);
430
+ return this.context.urlResolver.getDownloadUrl(partial);
431
+ }
432
+ get context() {
433
+ return this._context;
434
+ }
435
+ get kernel() {
436
+ return this._context.sessionContext?.session?.kernel ?? null;
437
+ }
438
+ /**
439
+ * Register a widget model.
440
+ */
441
+ register_model(model_id, modelPromise) {
442
+ super.register_model(model_id, modelPromise);
443
+ this.setDirty();
444
+ }
445
+ /**
446
+ * Close all widgets and empty the widget state.
447
+ * @return Promise that resolves when the widget state is cleared.
448
+ */
449
+ async clear_state() {
450
+ await super.clear_state();
451
+ this.setDirty();
452
+ }
453
+ /**
454
+ * Set the dirty state of the notebook model if applicable.
455
+ *
456
+ * TODO: perhaps should also set dirty when any model changes any data
457
+ */
458
+ setDirty() {
459
+ if (this._settings.saveState) {
460
+ this._context.model.dirty = true;
461
+ }
462
+ }
463
+ _context;
464
+ _settings;
465
+ }
466
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/jupyter/ipywidgets/lab/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /// <reference types="backbone" />
2
+ import * as outputBase from '@jupyter-widgets/output';
3
+ import { Panel } from '@lumino/widgets';
4
+ import { LabWidgetManager } from './manager';
5
+ import { OutputAreaModel, OutputArea } from '@jupyterlab/outputarea';
6
+ import { KernelMessage, Session } from '@jupyterlab/services';
7
+ export declare const OUTPUT_WIDGET_VERSION = "1.0.0";
8
+ export declare class OutputModel extends outputBase.OutputModel {
9
+ defaults(): Backbone.ObjectHash;
10
+ initialize(attributes: any, options: any): void;
11
+ /**
12
+ * Register a new kernel
13
+ */
14
+ _handleKernelChanged({ oldValue, }: Session.ISessionConnection.IKernelChangedArgs): void;
15
+ /**
16
+ * Reset the message id.
17
+ */
18
+ reset_msg_id(): void;
19
+ add(msg: KernelMessage.IIOPubMessage): void;
20
+ clear_output(wait?: boolean): void;
21
+ get outputs(): OutputAreaModel;
22
+ setOutputs(model?: any, value?: any, options?: any): void;
23
+ widget_manager: LabWidgetManager;
24
+ private _msgHook;
25
+ private _outputs;
26
+ }
27
+ export declare class OutputView extends outputBase.OutputView {
28
+ _createElement(tagName: string): HTMLElement;
29
+ _setElement(el: HTMLElement): void;
30
+ /**
31
+ * Called when view is rendered.
32
+ */
33
+ render(): void;
34
+ remove(): any;
35
+ model: OutputModel;
36
+ _outputView: OutputArea;
37
+ luminoWidget: Panel;
38
+ }
@@ -0,0 +1,133 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ import * as outputBase from '@jupyter-widgets/output';
4
+ import { JupyterLuminoPanelWidget } from '@jupyter-widgets/base';
5
+ import { WidgetManager } from './manager';
6
+ import { OutputAreaModel, OutputArea } from '@jupyterlab/outputarea';
7
+ import $ from 'jquery';
8
+ export const OUTPUT_WIDGET_VERSION = outputBase.OUTPUT_WIDGET_VERSION;
9
+ export class OutputModel extends outputBase.OutputModel {
10
+ defaults() {
11
+ return { ...super.defaults(), msg_id: '', outputs: [] };
12
+ }
13
+ initialize(attributes, options) {
14
+ super.initialize(attributes, options);
15
+ // The output area model is trusted since widgets are only rendered in trusted contexts.
16
+ this._outputs = new OutputAreaModel({ trusted: true });
17
+ this._msgHook = (msg) => {
18
+ this.add(msg);
19
+ return false;
20
+ };
21
+ // if the context is available, react on kernel changes
22
+ if (this.widget_manager instanceof WidgetManager) {
23
+ this.widget_manager.context.sessionContext.kernelChanged.connect((sender, args) => {
24
+ this._handleKernelChanged(args);
25
+ });
26
+ }
27
+ this.listenTo(this, 'change:msg_id', this.reset_msg_id);
28
+ this.listenTo(this, 'change:outputs', this.setOutputs);
29
+ this.setOutputs();
30
+ }
31
+ /**
32
+ * Register a new kernel
33
+ */
34
+ _handleKernelChanged({ oldValue, }) {
35
+ const msgId = this.get('msg_id');
36
+ if (msgId && oldValue) {
37
+ oldValue.removeMessageHook(msgId, this._msgHook);
38
+ this.set('msg_id', null);
39
+ }
40
+ }
41
+ /**
42
+ * Reset the message id.
43
+ */
44
+ reset_msg_id() {
45
+ const kernel = this.widget_manager.kernel;
46
+ const msgId = this.get('msg_id');
47
+ const oldMsgId = this.previous('msg_id');
48
+ // Clear any old handler.
49
+ if (oldMsgId && kernel) {
50
+ kernel.removeMessageHook(oldMsgId, this._msgHook);
51
+ }
52
+ // Register any new handler.
53
+ if (msgId && kernel) {
54
+ kernel.registerMessageHook(msgId, this._msgHook);
55
+ }
56
+ }
57
+ add(msg) {
58
+ const msgType = msg.header.msg_type;
59
+ switch (msgType) {
60
+ case 'execute_result':
61
+ case 'display_data':
62
+ case 'stream':
63
+ case 'error': {
64
+ const model = msg.content;
65
+ model.output_type = msgType;
66
+ this._outputs.add(model);
67
+ break;
68
+ }
69
+ case 'clear_output':
70
+ this.clear_output(msg.content.wait);
71
+ break;
72
+ default:
73
+ break;
74
+ }
75
+ this.set('outputs', this._outputs.toJSON(), { newMessage: true });
76
+ this.save_changes();
77
+ }
78
+ clear_output(wait = false) {
79
+ this._outputs.clear(wait);
80
+ }
81
+ get outputs() {
82
+ return this._outputs;
83
+ }
84
+ setOutputs(model, value, options) {
85
+ if (!(options && options.newMessage)) {
86
+ // fromJSON does not clear the existing output
87
+ this.clear_output();
88
+ // fromJSON does not copy the message, so we make a deep copy
89
+ this._outputs.fromJSON(JSON.parse(JSON.stringify(this.get('outputs'))));
90
+ }
91
+ }
92
+ _msgHook;
93
+ _outputs;
94
+ }
95
+ export class OutputView extends outputBase.OutputView {
96
+ _createElement(tagName) {
97
+ this.luminoWidget = new JupyterLuminoPanelWidget({ view: this });
98
+ return this.luminoWidget.node;
99
+ }
100
+ _setElement(el) {
101
+ if (this.el || el !== this.luminoWidget.node) {
102
+ // Boxes don't allow setting the element beyond the initial creation.
103
+ throw new Error('Cannot reset the DOM element.');
104
+ }
105
+ this.el = this.luminoWidget.node;
106
+ this.$el = $(this.luminoWidget.node);
107
+ }
108
+ /**
109
+ * Called when view is rendered.
110
+ */
111
+ render() {
112
+ super.render();
113
+ this._outputView = new OutputArea({
114
+ rendermime: this.model.widget_manager.rendermime,
115
+ contentFactory: OutputArea.defaultContentFactory,
116
+ model: this.model.outputs,
117
+ });
118
+ // TODO: why is this a readonly property now?
119
+ // this._outputView.model = this.model.outputs;
120
+ // TODO: why is this on the model now?
121
+ // this._outputView.trusted = true;
122
+ this.luminoWidget.insertWidget(0, this._outputView);
123
+ this.luminoWidget.addClass('jupyter-widgets');
124
+ this.luminoWidget.addClass('widget-output');
125
+ this.update(); // Set defaults.
126
+ }
127
+ remove() {
128
+ this._outputView.dispose();
129
+ return super.remove();
130
+ }
131
+ _outputView;
132
+ }
133
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../../src/jupyter/ipywidgets/lab/output.ts"],"names":[],"mappings":"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"}