@jupyterlab/galata 5.0.0-alpha.2 → 5.0.0-alpha.21
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.
- package/README.md +192 -31
- package/lib/benchmarkReporter.d.ts +1 -0
- package/lib/benchmarkReporter.js +34 -39
- package/lib/benchmarkReporter.js.map +1 -1
- package/lib/benchmarkVLTpl.js +19 -5
- package/lib/benchmarkVLTpl.js.map +1 -1
- package/lib/contents.d.ts +5 -5
- package/lib/contents.js +32 -36
- package/lib/contents.js.map +1 -1
- package/lib/extension/global.d.ts +197 -0
- package/lib/extension/global.js +601 -0
- package/lib/extension/global.js.map +1 -0
- package/lib/extension/index.d.ts +6 -0
- package/lib/extension/index.js +27 -0
- package/lib/extension/index.js.map +1 -0
- package/lib/extension/tokens.d.ts +232 -0
- package/lib/extension/tokens.js +13 -0
- package/lib/extension/tokens.js.map +1 -0
- package/lib/extension.d.ts +223 -0
- package/lib/{global.js → extension.js} +1 -2
- package/lib/extension.js.map +1 -0
- package/lib/fixtures.d.ts +32 -10
- package/lib/fixtures.js +64 -17
- package/lib/fixtures.js.map +1 -1
- package/lib/galata.d.ts +140 -19
- package/lib/galata.js +272 -87
- package/lib/galata.js.map +1 -1
- package/lib/helpers/activity.d.ts +6 -0
- package/lib/helpers/activity.js +19 -5
- package/lib/helpers/activity.js.map +1 -1
- package/lib/helpers/debuggerpanel.d.ts +4 -0
- package/lib/helpers/debuggerpanel.js +16 -0
- package/lib/helpers/debuggerpanel.js.map +1 -1
- package/lib/helpers/filebrowser.js +8 -2
- package/lib/helpers/filebrowser.js.map +1 -1
- package/lib/helpers/index.d.ts +1 -0
- package/lib/helpers/index.js +6 -1
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/kernel.js +7 -7
- package/lib/helpers/kernel.js.map +1 -1
- package/lib/helpers/menu.d.ts +7 -0
- package/lib/helpers/menu.js +17 -1
- package/lib/helpers/menu.js.map +1 -1
- package/lib/helpers/notebook.d.ts +6 -4
- package/lib/helpers/notebook.js +127 -31
- package/lib/helpers/notebook.js.map +1 -1
- package/lib/helpers/sidebar.d.ts +8 -1
- package/lib/helpers/sidebar.js +33 -15
- package/lib/helpers/sidebar.js.map +1 -1
- package/lib/helpers/statusbar.js +1 -1
- package/lib/helpers/statusbar.js.map +1 -1
- package/lib/helpers/style.d.ts +42 -0
- package/lib/helpers/style.js +50 -0
- package/lib/helpers/style.js.map +1 -0
- package/lib/helpers/theme.js +1 -1
- package/lib/helpers/theme.js.map +1 -1
- package/lib/index.d.ts +5 -2
- package/lib/index.js +12 -3
- package/lib/index.js.map +1 -1
- package/lib/jupyterlabpage.d.ts +29 -4
- package/lib/jupyterlabpage.js +38 -22
- package/lib/jupyterlabpage.js.map +1 -1
- package/lib/playwright-config.js +5 -1
- package/lib/playwright-config.js.map +1 -1
- package/lib/utils.js +5 -1
- package/lib/utils.js.map +1 -1
- package/package.json +31 -47
- package/src/benchmarkReporter.ts +756 -0
- package/src/benchmarkVLTpl.ts +91 -0
- package/src/contents.ts +472 -0
- package/src/extension.ts +281 -0
- package/src/fixtures.ts +387 -0
- package/src/galata.ts +1035 -0
- package/src/helpers/activity.ts +115 -0
- package/src/helpers/debuggerpanel.ts +159 -0
- package/src/helpers/filebrowser.ts +228 -0
- package/src/helpers/index.ts +15 -0
- package/src/helpers/kernel.ts +39 -0
- package/src/helpers/logconsole.ts +32 -0
- package/src/helpers/menu.ts +228 -0
- package/src/helpers/notebook.ts +1217 -0
- package/src/helpers/performance.ts +57 -0
- package/src/helpers/sidebar.ts +289 -0
- package/src/helpers/statusbar.ts +56 -0
- package/src/helpers/style.ts +100 -0
- package/src/helpers/theme.ts +50 -0
- package/src/index.ts +19 -0
- package/src/jupyterlabpage.ts +704 -0
- package/src/playwright-config.ts +26 -0
- package/src/utils.ts +264 -0
- package/src/vega-statistics.d.ts +15 -0
- package/lib/global.d.ts +0 -23
- package/lib/global.js.map +0 -1
- package/lib/inpage/tokens.d.ts +0 -135
- package/lib/inpage/tokens.js +0 -9
- package/lib/inpage/tokens.js.map +0 -1
- package/lib/lib-inpage/inpage.js +0 -3957
- package/lib/lib-inpage/inpage.js.map +0 -1
- package/style/index.css +0 -10
- package/style/index.js +0 -10
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
// Copyright (c) Jupyter Development Team.
|
|
3
|
+
// Copyright (c) Bloomberg Finance LP.
|
|
4
|
+
// Distributed under the terms of the Modified BSD License.
|
|
5
|
+
import { findIndex } from '@lumino/algorithm';
|
|
6
|
+
import { Signal } from '@lumino/signaling';
|
|
7
|
+
import { PLUGIN_ID_GALATA_HELPERS } from './tokens';
|
|
8
|
+
const PLUGIN_ID_DOC_MANAGER = '@jupyterlab/docmanager-extension:manager';
|
|
9
|
+
const PLUGIN_ID_ROUTER = '@jupyterlab/application-extension:router';
|
|
10
|
+
/**
|
|
11
|
+
* In-Page Galata helpers
|
|
12
|
+
*/
|
|
13
|
+
export class GalataInpage {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.listeners = new WeakMap();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get an application plugin
|
|
19
|
+
*
|
|
20
|
+
* @param pluginId Plugin ID
|
|
21
|
+
* @returns Application plugin
|
|
22
|
+
*/
|
|
23
|
+
async getPlugin(pluginId) {
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
const app = this._app;
|
|
26
|
+
const hasPlugin = app.hasPlugin(pluginId);
|
|
27
|
+
if (hasPlugin) {
|
|
28
|
+
try {
|
|
29
|
+
const appAny = app;
|
|
30
|
+
const plugin = appAny._plugins
|
|
31
|
+
? appAny._plugins.get(pluginId)
|
|
32
|
+
: undefined;
|
|
33
|
+
if (plugin.activated) {
|
|
34
|
+
resolve(plugin.service);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
void app.activatePlugin(pluginId).then(response => {
|
|
38
|
+
resolve(plugin.service);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error('Failed to get plugin', error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the Jupyter notifications
|
|
50
|
+
*
|
|
51
|
+
* @returns Jupyter Notifications
|
|
52
|
+
*/
|
|
53
|
+
async getNotifications() {
|
|
54
|
+
var _a;
|
|
55
|
+
const plugin = await this.getPlugin(PLUGIN_ID_GALATA_HELPERS);
|
|
56
|
+
return (_a = plugin === null || plugin === void 0 ? void 0 : plugin.notifications.notifications) !== null && _a !== void 0 ? _a : [];
|
|
57
|
+
}
|
|
58
|
+
off(event, listener) {
|
|
59
|
+
const callback = this.listeners.get(listener);
|
|
60
|
+
if (callback) {
|
|
61
|
+
this.getPlugin(PLUGIN_ID_GALATA_HELPERS)
|
|
62
|
+
.then(plugin => {
|
|
63
|
+
if (!plugin) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
switch (event) {
|
|
67
|
+
case 'dialog':
|
|
68
|
+
plugin.dialogs.currentChanged.disconnect(callback);
|
|
69
|
+
break;
|
|
70
|
+
case 'notification':
|
|
71
|
+
plugin.notifications.changed.disconnect(callback);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
this.listeners.delete(listener);
|
|
75
|
+
})
|
|
76
|
+
.catch(reason => {
|
|
77
|
+
console.log(`Failed to disconnect listener for '${event}' event.`, reason);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Connect a listener to new or updated Jupyter notification events.
|
|
83
|
+
*
|
|
84
|
+
* @param event Event type
|
|
85
|
+
* @param listener Event listener
|
|
86
|
+
*/
|
|
87
|
+
on(event, listener) {
|
|
88
|
+
this.getPlugin(PLUGIN_ID_GALATA_HELPERS)
|
|
89
|
+
.then(plugin => {
|
|
90
|
+
switch (event) {
|
|
91
|
+
case 'dialog':
|
|
92
|
+
{
|
|
93
|
+
const callback = (tracker, dialog) => {
|
|
94
|
+
listener(dialog);
|
|
95
|
+
};
|
|
96
|
+
this.listeners.set(listener, callback);
|
|
97
|
+
plugin === null || plugin === void 0 ? void 0 : plugin.dialogs.currentChanged.connect(callback);
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
case 'notification':
|
|
101
|
+
{
|
|
102
|
+
const callback = (manager, notification) => {
|
|
103
|
+
if (notification.type !== 'removed') {
|
|
104
|
+
listener(notification.notification);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
this.listeners.set(listener, callback);
|
|
108
|
+
plugin === null || plugin === void 0 ? void 0 : plugin.notifications.changed.connect(callback);
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
.catch(reason => {
|
|
114
|
+
console.error(`Failed to add listener to JupyterLab dialog event:\n${reason}`);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
once(event, listener) {
|
|
118
|
+
const onceListener = (arg) => {
|
|
119
|
+
try {
|
|
120
|
+
listener(arg);
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
this.off(event, onceListener);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
this.on(event, onceListener);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Wait for a function to finish for max. timeout milliseconds
|
|
130
|
+
*
|
|
131
|
+
* @param fn Function
|
|
132
|
+
* @param timeout Timeout
|
|
133
|
+
*/
|
|
134
|
+
async waitForFunction(fn, timeout) {
|
|
135
|
+
return new Promise((resolve, reject) => {
|
|
136
|
+
let checkTimer = null;
|
|
137
|
+
let timeoutTimer = null;
|
|
138
|
+
const check = async () => {
|
|
139
|
+
checkTimer = null;
|
|
140
|
+
if (await Promise.resolve(fn())) {
|
|
141
|
+
if (timeoutTimer) {
|
|
142
|
+
clearTimeout(timeoutTimer);
|
|
143
|
+
}
|
|
144
|
+
resolve();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
checkTimer = window.setTimeout(check, 200);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
void check();
|
|
151
|
+
if (timeout) {
|
|
152
|
+
timeoutTimer = window.setTimeout(() => {
|
|
153
|
+
timeoutTimer = null;
|
|
154
|
+
if (checkTimer) {
|
|
155
|
+
clearTimeout(checkTimer);
|
|
156
|
+
}
|
|
157
|
+
reject(new Error('Timed out waiting for condition to be fulfilled.'));
|
|
158
|
+
}, timeout);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Waits for the given `timeout` in milliseconds.
|
|
164
|
+
*
|
|
165
|
+
* @param timeout A timeout to wait for
|
|
166
|
+
*/
|
|
167
|
+
async waitForTimeout(timeout) {
|
|
168
|
+
return new Promise(resolve => {
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
resolve();
|
|
171
|
+
}, timeout);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Wait for a condition to fulfill or for a certain time
|
|
176
|
+
*
|
|
177
|
+
* @param condition Condition or timeout to wait for
|
|
178
|
+
* @param timeout Timeout
|
|
179
|
+
*/
|
|
180
|
+
async waitFor(condition, timeout) {
|
|
181
|
+
const conditionType = typeof condition;
|
|
182
|
+
if (conditionType === 'function') {
|
|
183
|
+
return this.waitForFunction(condition, timeout);
|
|
184
|
+
}
|
|
185
|
+
else if (conditionType === 'number') {
|
|
186
|
+
return this.waitForTimeout(condition);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Wait for the route to be on path and close all documents
|
|
191
|
+
*
|
|
192
|
+
* @param path Path to monitor
|
|
193
|
+
*/
|
|
194
|
+
async waitForLaunch(path = '/lab') {
|
|
195
|
+
let resolver;
|
|
196
|
+
const delegate = new Promise(resolve => {
|
|
197
|
+
resolver = resolve;
|
|
198
|
+
});
|
|
199
|
+
const router = await this.getPlugin(PLUGIN_ID_ROUTER);
|
|
200
|
+
const docManager = await this.getPlugin(PLUGIN_ID_DOC_MANAGER);
|
|
201
|
+
const listener = async (sender, args) => {
|
|
202
|
+
if (args.path === path) {
|
|
203
|
+
router === null || router === void 0 ? void 0 : router.routed.disconnect(listener);
|
|
204
|
+
await (docManager === null || docManager === void 0 ? void 0 : docManager.closeAll());
|
|
205
|
+
resolver();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
router === null || router === void 0 ? void 0 : router.routed.connect(listener);
|
|
209
|
+
return delegate;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Wait for an element to be found from a CSS selector
|
|
213
|
+
*
|
|
214
|
+
* @param selector CSS selector
|
|
215
|
+
* @param node Element
|
|
216
|
+
* @param options Options
|
|
217
|
+
* @returns Selected element
|
|
218
|
+
*/
|
|
219
|
+
async waitForSelector(selector, node, options) {
|
|
220
|
+
const waitForHidden = options && options.hidden;
|
|
221
|
+
return new Promise((resolve, reject) => {
|
|
222
|
+
const timer = setInterval(() => {
|
|
223
|
+
const parent = node || document;
|
|
224
|
+
const found = parent.querySelector(selector);
|
|
225
|
+
if (waitForHidden) {
|
|
226
|
+
if (!found) {
|
|
227
|
+
clearInterval(timer);
|
|
228
|
+
resolve(null);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else if (found) {
|
|
232
|
+
clearInterval(timer);
|
|
233
|
+
resolve(found);
|
|
234
|
+
}
|
|
235
|
+
}, 200);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Wait for an element to be found from a XPath
|
|
240
|
+
*
|
|
241
|
+
* @param selector CSS selector
|
|
242
|
+
* @param node Element
|
|
243
|
+
* @param options Options
|
|
244
|
+
* @returns Selected element
|
|
245
|
+
*/
|
|
246
|
+
async waitForXPath(selector, node, options) {
|
|
247
|
+
const waitForHidden = options && options.hidden;
|
|
248
|
+
return new Promise((resolve, reject) => {
|
|
249
|
+
const timer = setInterval(() => {
|
|
250
|
+
const parent = node || document;
|
|
251
|
+
const iterator = document.evaluate(selector, parent, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
|
|
252
|
+
const found = iterator && iterator.iterateNext();
|
|
253
|
+
if (waitForHidden) {
|
|
254
|
+
if (!found) {
|
|
255
|
+
clearInterval(timer);
|
|
256
|
+
resolve(null);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else if (found) {
|
|
260
|
+
clearInterval(timer);
|
|
261
|
+
resolve(found);
|
|
262
|
+
}
|
|
263
|
+
}, 200);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Delete all cells of the active notebook
|
|
268
|
+
*/
|
|
269
|
+
async deleteNotebookCells() {
|
|
270
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
271
|
+
const nb = nbPanel.content;
|
|
272
|
+
void this._app.commands.execute('notebook:delete-cell');
|
|
273
|
+
nb.update();
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Add a cell to the active notebook
|
|
277
|
+
*
|
|
278
|
+
* @param cellType Cell type
|
|
279
|
+
* @param source Cell input source
|
|
280
|
+
* @returns Action success result
|
|
281
|
+
*/
|
|
282
|
+
addNotebookCell(cellType, source) {
|
|
283
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
284
|
+
const nb = nbPanel.content;
|
|
285
|
+
if (nb !== null) {
|
|
286
|
+
void this._app.commands.execute('notebook:insert-cell-below');
|
|
287
|
+
if (nb.model) {
|
|
288
|
+
const sharedModel = nb.model.sharedModel;
|
|
289
|
+
sharedModel.insertCell(sharedModel.cells.length, {
|
|
290
|
+
cell_type: cellType,
|
|
291
|
+
source
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
nb.update();
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Reset execution count of one or all cells.
|
|
303
|
+
*
|
|
304
|
+
* @param cellIndex Cell index
|
|
305
|
+
*/
|
|
306
|
+
resetExecutionCount(cellIndex) {
|
|
307
|
+
var _a;
|
|
308
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
309
|
+
const nb = nbPanel.content;
|
|
310
|
+
if (nb) {
|
|
311
|
+
if (nb.model) {
|
|
312
|
+
if (cellIndex === undefined) {
|
|
313
|
+
for (const cell of nb.model.cells) {
|
|
314
|
+
switch (cell.type) {
|
|
315
|
+
case 'code':
|
|
316
|
+
cell.executionCount = null;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else if (((_a = nb.model.cells.get(cellIndex)) === null || _a === void 0 ? void 0 : _a.type) === 'code') {
|
|
322
|
+
nb.model.cells.get(cellIndex).executionCount =
|
|
323
|
+
null;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Set the type and content of a cell in the active notebook
|
|
330
|
+
*
|
|
331
|
+
* @param cellIndex Cell index
|
|
332
|
+
* @param cellType Cell type
|
|
333
|
+
* @param source Cell input source
|
|
334
|
+
* @returns Action success status
|
|
335
|
+
*/
|
|
336
|
+
setNotebookCell(cellIndex, cellType, source) {
|
|
337
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
338
|
+
const nb = nbPanel.content;
|
|
339
|
+
if (nb) {
|
|
340
|
+
const numCells = nb.widgets.length;
|
|
341
|
+
if (cellIndex < 0 || cellIndex >= numCells) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
if (nb.model) {
|
|
345
|
+
const sharedModel = nb.model.sharedModel;
|
|
346
|
+
sharedModel.transact(() => {
|
|
347
|
+
sharedModel.deleteCell(cellIndex);
|
|
348
|
+
sharedModel.insertCell(cellIndex, { cell_type: cellType, source });
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
nb.update();
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
return true;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Test if a cell is selected in the active notebook
|
|
360
|
+
*
|
|
361
|
+
* @param cellIndex Cell index
|
|
362
|
+
* @returns Whether the cell is selected or not
|
|
363
|
+
*/
|
|
364
|
+
isNotebookCellSelected(cellIndex) {
|
|
365
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
366
|
+
const nb = nbPanel.content;
|
|
367
|
+
const numCells = nb.widgets.length;
|
|
368
|
+
if (cellIndex < 0 || cellIndex >= numCells) {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
return nb.isSelected(nb.widgets[cellIndex]);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Save the active notebook
|
|
375
|
+
*/
|
|
376
|
+
async saveActiveNotebook() {
|
|
377
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
378
|
+
await nbPanel.context.save();
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Wait for a Markdown cell to be rendered
|
|
382
|
+
*
|
|
383
|
+
* @param cell Cell
|
|
384
|
+
*/
|
|
385
|
+
async waitForMarkdownCellRendered(cell) {
|
|
386
|
+
if (!cell.inViewport) {
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
await cell.ready;
|
|
390
|
+
if (cell.rendered) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
let resolver;
|
|
394
|
+
const delegate = new Promise(resolve => {
|
|
395
|
+
resolver = resolve;
|
|
396
|
+
});
|
|
397
|
+
const onRenderedChanged = () => {
|
|
398
|
+
Signal.disconnectReceiver(onRenderedChanged);
|
|
399
|
+
resolver();
|
|
400
|
+
};
|
|
401
|
+
cell.renderedChanged.connect(onRenderedChanged);
|
|
402
|
+
return delegate;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Wait for a cell to be run
|
|
406
|
+
*
|
|
407
|
+
* @param cell Cell
|
|
408
|
+
* @param timeout Timeout
|
|
409
|
+
*/
|
|
410
|
+
async waitForCellRun(cell, timeout = 2000) {
|
|
411
|
+
const model = cell.model;
|
|
412
|
+
const code = model.sharedModel.getSource();
|
|
413
|
+
if (!code.trim()) {
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
const cellType = cell.model.type;
|
|
417
|
+
if (cellType === 'markdown') {
|
|
418
|
+
await this.waitForMarkdownCellRendered(cell);
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
else if (cellType === 'raw') {
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
// 'code'
|
|
426
|
+
let resolver;
|
|
427
|
+
const delegate = new Promise(resolve => {
|
|
428
|
+
resolver = resolve;
|
|
429
|
+
});
|
|
430
|
+
let numTries = 0;
|
|
431
|
+
let timer = null;
|
|
432
|
+
let timeoutTimer = null;
|
|
433
|
+
const clearAndResolve = () => {
|
|
434
|
+
clearInterval(timer);
|
|
435
|
+
timer = null;
|
|
436
|
+
clearTimeout(timeoutTimer);
|
|
437
|
+
timeoutTimer = null;
|
|
438
|
+
resolver();
|
|
439
|
+
};
|
|
440
|
+
const startTimeout = () => {
|
|
441
|
+
if (!timeoutTimer) {
|
|
442
|
+
timeoutTimer = setTimeout(() => {
|
|
443
|
+
clearAndResolve();
|
|
444
|
+
}, timeout);
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
const checkIfDone = () => {
|
|
448
|
+
if (cell.model.executionCount !== null) {
|
|
449
|
+
if (!cell.inViewport) {
|
|
450
|
+
clearAndResolve();
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
const output = cell.node.querySelector('.jp-Cell-outputArea .jp-OutputArea-output');
|
|
454
|
+
if (output) {
|
|
455
|
+
if (output.textContent === 'Loading widget...') {
|
|
456
|
+
startTimeout();
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
clearAndResolve();
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
if (numTries > 0) {
|
|
464
|
+
clearAndResolve();
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
startTimeout();
|
|
470
|
+
}
|
|
471
|
+
numTries++;
|
|
472
|
+
};
|
|
473
|
+
checkIfDone();
|
|
474
|
+
timer = setInterval(() => {
|
|
475
|
+
checkIfDone();
|
|
476
|
+
}, 200);
|
|
477
|
+
return delegate;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Run the active notebook cell by cell
|
|
482
|
+
* and execute the callback after each cell execution
|
|
483
|
+
*
|
|
484
|
+
* @param callback Callback
|
|
485
|
+
*/
|
|
486
|
+
async runActiveNotebookCellByCell(callback) {
|
|
487
|
+
var _a, _b;
|
|
488
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
489
|
+
const notebook = nbPanel.content;
|
|
490
|
+
if (!notebook.widgets) {
|
|
491
|
+
console.error('NOTEBOOK CELL PROBLEM', notebook);
|
|
492
|
+
}
|
|
493
|
+
const numCells = notebook.widgets.length;
|
|
494
|
+
if (numCells === 0) {
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
void this._app.commands.execute('notebook:deselect-all');
|
|
498
|
+
for (let i = 0; i < numCells; ++i) {
|
|
499
|
+
const cell = notebook.widgets[i];
|
|
500
|
+
notebook.activeCellIndex = i;
|
|
501
|
+
notebook.select(cell);
|
|
502
|
+
await this._app.commands.execute('notebook:run-cell');
|
|
503
|
+
await this.waitForCellRun(cell);
|
|
504
|
+
if (callback === null || callback === void 0 ? void 0 : callback.onAfterCellRun) {
|
|
505
|
+
await callback.onAfterCellRun(i);
|
|
506
|
+
}
|
|
507
|
+
await notebook
|
|
508
|
+
.scrollToItem(i, ((_b = (_a = cell.model.outputs) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0
|
|
509
|
+
? 'end'
|
|
510
|
+
: 'start')
|
|
511
|
+
.catch(reason => {
|
|
512
|
+
// no-op
|
|
513
|
+
});
|
|
514
|
+
if (callback === null || callback === void 0 ? void 0 : callback.onAfterScroll) {
|
|
515
|
+
await callback.onAfterScroll();
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Test if one or all cells have an execution number.
|
|
521
|
+
*
|
|
522
|
+
* @param cellIndex Cell index
|
|
523
|
+
* @returns Whether the cell was executed or not
|
|
524
|
+
*
|
|
525
|
+
* ### Notes
|
|
526
|
+
* It checks that no cells have a `null` execution count.
|
|
527
|
+
*/
|
|
528
|
+
haveBeenExecuted(cellIndex) {
|
|
529
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
530
|
+
const nb = nbPanel.content;
|
|
531
|
+
let counter = 0;
|
|
532
|
+
if (nb) {
|
|
533
|
+
if (nb.model) {
|
|
534
|
+
if (cellIndex === undefined) {
|
|
535
|
+
for (const cell of nb.model.cells) {
|
|
536
|
+
if (cell.type === 'code') {
|
|
537
|
+
counter +=
|
|
538
|
+
cell.sharedModel.getSource().length > 0 &&
|
|
539
|
+
cell.executionCount === null
|
|
540
|
+
? 1
|
|
541
|
+
: 0;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
else {
|
|
546
|
+
const cell = nb.model.cells.get(cellIndex);
|
|
547
|
+
if ((cell === null || cell === void 0 ? void 0 : cell.type) === 'code') {
|
|
548
|
+
counter +=
|
|
549
|
+
cell.sharedModel.getSource().length > 0 &&
|
|
550
|
+
cell.executionCount === null
|
|
551
|
+
? 1
|
|
552
|
+
: 0;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return counter === 0;
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Get the index of a toolbar item
|
|
561
|
+
*
|
|
562
|
+
* @param itemName Item name
|
|
563
|
+
* @returns Index
|
|
564
|
+
*/
|
|
565
|
+
getNotebookToolbarItemIndex(itemName) {
|
|
566
|
+
const nbPanel = this._app.shell.currentWidget;
|
|
567
|
+
return findIndex(nbPanel.toolbar.names(), name => name === itemName);
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Test if a element is visible or not
|
|
571
|
+
*
|
|
572
|
+
* @param el Element
|
|
573
|
+
* @returns Test result
|
|
574
|
+
*/
|
|
575
|
+
isElementVisible(el) {
|
|
576
|
+
return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Set the application theme
|
|
580
|
+
*
|
|
581
|
+
* @param themeName Theme name
|
|
582
|
+
*/
|
|
583
|
+
async setTheme(themeName) {
|
|
584
|
+
await this._app.commands.execute('apputils:change-theme', {
|
|
585
|
+
theme: themeName
|
|
586
|
+
});
|
|
587
|
+
await this.waitFor(async () => {
|
|
588
|
+
return document.body.dataset.jpThemeName === themeName;
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Application object
|
|
593
|
+
*/
|
|
594
|
+
get app() {
|
|
595
|
+
if (!this._app) {
|
|
596
|
+
this._app = window.jupyterapp;
|
|
597
|
+
}
|
|
598
|
+
return this._app;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../extension/src/global.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
|
|
2
|
+
import { IGalataHelpers } from './tokens';
|
|
3
|
+
export type { IGalataInpage, INotebookRunCallback, IPluginNameToInterfaceMap, IWaitForSelectorOptions } from './tokens';
|
|
4
|
+
export { IGalataHelpers } from './tokens';
|
|
5
|
+
declare const galataPlugin: JupyterFrontEndPlugin<IGalataHelpers>;
|
|
6
|
+
export default galataPlugin;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
import { Dialog, Notification } from '@jupyterlab/apputils';
|
|
4
|
+
import { GalataInpage } from './global';
|
|
5
|
+
import { PLUGIN_ID_GALATA_HELPERS } from './tokens';
|
|
6
|
+
export { IGalataHelpers } from './tokens';
|
|
7
|
+
/**
|
|
8
|
+
* Galata in-page object
|
|
9
|
+
*/
|
|
10
|
+
window.galata = new GalataInpage();
|
|
11
|
+
/**
|
|
12
|
+
* Galata in-page object
|
|
13
|
+
* @deprecated
|
|
14
|
+
*/
|
|
15
|
+
window.galataip = window.galata;
|
|
16
|
+
const galataPlugin = {
|
|
17
|
+
id: PLUGIN_ID_GALATA_HELPERS,
|
|
18
|
+
autoStart: true,
|
|
19
|
+
activate: (app) => {
|
|
20
|
+
return Object.freeze({
|
|
21
|
+
notifications: Notification.manager,
|
|
22
|
+
dialogs: Dialog.tracker
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export default galataPlugin;
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../extension/src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAM3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAkB,wBAAwB,EAAE,MAAM,UAAU,CAAC;AASpE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC;;;GAGG;AACH,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;AAEhC,MAAM,YAAY,GAA0C;IAC1D,EAAE,EAAE,wBAAwB;IAC5B,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,CAAC,GAAoB,EAAkB,EAAE;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,aAAa,EAAE,YAAY,CAAC,OAAO;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,YAAY,CAAC"}
|