jupyterlab-pioneer 0.2.0 → 1.0.0

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/lib/index.d.ts CHANGED
@@ -4,17 +4,21 @@ import { Token } from '@lumino/coreutils';
4
4
  import { Exporter } from './types';
5
5
  export declare const IJupyterLabPioneer: Token<IJupyterLabPioneer>;
6
6
  export interface IJupyterLabPioneer {
7
+ exporters: Exporter[];
7
8
  /**
8
9
  * Send event data to exporters defined in the configuration file.
9
10
  *
10
11
  * @param {NotebookPanel} notebookPanel The notebook panel the extension currently listens to.
11
12
  * @param {Object} eventDetail An object containing event details.
12
13
  * @param {Exporter} exporter The exporter configuration.
13
- * @param {Boolean=} logWholeNotebook A boolean indicating whether to log the entire notebook or not.
14
+ * @param {Boolean} logWholeNotebook A boolean indicating whether to log the entire notebook or not.
14
15
  */
15
16
  publishEvent(notebookPanel: NotebookPanel, eventDetail: Object, exporter: Exporter, logWholeNotebook?: Boolean): Promise<void>;
16
17
  }
17
18
  declare class JupyterLabPioneer implements IJupyterLabPioneer {
19
+ exporters: Exporter[];
20
+ constructor();
21
+ loadExporters(notebookPanel: NotebookPanel): Promise<void>;
18
22
  publishEvent(notebookPanel: NotebookPanel, eventDetail: Object, exporter: Exporter, logWholeNotebook?: Boolean): Promise<void>;
19
23
  }
20
24
  declare const plugin: JupyterFrontEndPlugin<JupyterLabPioneer>;
package/lib/index.js CHANGED
@@ -7,6 +7,31 @@ import { sendInfoNotification, addInfoToHelpMenu } from './utils';
7
7
  const PLUGIN_ID = 'jupyterlab-pioneer:plugin';
8
8
  export const IJupyterLabPioneer = new Token(PLUGIN_ID);
9
9
  class JupyterLabPioneer {
10
+ constructor() {
11
+ this.exporters = [];
12
+ }
13
+ async loadExporters(notebookPanel) {
14
+ var _a;
15
+ const config = (await requestAPI('config'));
16
+ const activeEvents = config.activeEvents;
17
+ const exporters = ((_a = notebookPanel.content.model) === null || _a === void 0 ? void 0 : _a.getMetadata('exporters')) || config.exporters; // The exporters configuration in the notebook metadata overrides the configuration in the configuration file "jupyter_jupyterlab_pioneer_config.py"
18
+ const processedExporters = activeEvents && activeEvents.length
19
+ ? exporters.map(e => {
20
+ if (!e.activeEvents) {
21
+ e.activeEvents = activeEvents;
22
+ return e;
23
+ }
24
+ else {
25
+ return e;
26
+ }
27
+ })
28
+ : exporters.filter(e => e.activeEvents && e.activeEvents.length);
29
+ // Exporters without specifying the corresponding activeEvents will use the global activeEvents configuration.
30
+ // When the global activeEvents configuration is null, exporters that do not have corresponding activeEvents will be ignored.
31
+ console.log(processedExporters);
32
+ this.exporters = processedExporters;
33
+ sendInfoNotification(processedExporters, true);
34
+ }
10
35
  async publishEvent(notebookPanel, eventDetail, exporter, logWholeNotebook) {
11
36
  var _a, _b;
12
37
  if (!notebookPanel) {
@@ -38,42 +63,15 @@ const plugin = {
38
63
  activate: async (app, notebookTracker, mainMenu) => {
39
64
  const version = await requestAPI('version');
40
65
  console.log(`${PLUGIN_ID}: ${version}`);
41
- const config = (await requestAPI('config'));
42
66
  const pioneer = new JupyterLabPioneer();
43
67
  addInfoToHelpMenu(app, mainMenu, version);
44
- sendInfoNotification(config.exporters, true);
45
68
  notebookTracker.widgetAdded.connect(async (_, notebookPanel) => {
46
- var _a, _b;
47
69
  await notebookPanel.revealed;
48
70
  await notebookPanel.sessionContext.ready;
49
- const activeEvents = config.activeEvents;
50
- const exporters = ((_a = notebookPanel.content.model) === null || _a === void 0 ? void 0 : _a.getMetadata('exporters')) ||
51
- config.exporters; // The exporters configuration in the notebook metadata overrides the configuration in the configuration file "jupyter_jupyterlab_pioneer_config.py"
52
- const processedExporters = activeEvents && activeEvents.length
53
- ? exporters.map(e => {
54
- if (!e.activeEvents) {
55
- e.activeEvents = activeEvents;
56
- return e;
57
- }
58
- else {
59
- return e;
60
- }
61
- })
62
- : exporters.filter(e => e.activeEvents && e.activeEvents.length);
63
- // Exporters without specifying the corresponding activeEvents will use the global activeEvents configuration.
64
- // When the global activeEvents configuration is null, exporters that do not have corresponding activeEvents will be ignored.
65
- console.log(processedExporters);
66
- processedExporters.forEach(exporter => {
67
- producerCollection.forEach(producer => {
68
- var _a;
69
- if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(producer.id)) {
70
- new producer().listen(notebookPanel, pioneer, exporter);
71
- }
72
- });
71
+ await pioneer.loadExporters(notebookPanel);
72
+ producerCollection.forEach(producer => {
73
+ new producer().listen(notebookPanel, pioneer);
73
74
  });
74
- if ((_b = notebookPanel.content.model) === null || _b === void 0 ? void 0 : _b.getMetadata('exporters')) {
75
- sendInfoNotification(processedExporters, false);
76
- }
77
75
  });
78
76
  return pioneer;
79
77
  }
package/lib/producer.d.ts CHANGED
@@ -1,58 +1,57 @@
1
1
  import { NotebookPanel } from '@jupyterlab/notebook';
2
2
  import { IJupyterLabPioneer } from './index';
3
- import { Exporter } from './types';
4
3
  export declare class ActiveCellChangeEventProducer {
5
4
  static id: string;
6
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
5
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
7
6
  }
8
7
  export declare class CellAddEventProducer {
9
8
  static id: string;
10
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
9
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
11
10
  }
12
11
  export declare class CellEditEventProducer {
13
12
  static id: string;
14
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
13
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
15
14
  }
16
15
  export declare class CellExecuteEventProducer {
17
16
  static id: string;
18
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
17
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
19
18
  }
20
19
  export declare class CellRemoveEventProducer {
21
20
  static id: string;
22
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
21
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
23
22
  }
24
23
  export declare class ClipboardCopyEventProducer {
25
24
  static id: string;
26
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
25
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
27
26
  }
28
27
  export declare class ClipboardCutEventProducer {
29
28
  static id: string;
30
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
29
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
31
30
  }
32
31
  export declare class ClipboardPasteEventProducer {
33
32
  static id: string;
34
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
33
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
35
34
  }
36
35
  export declare class NotebookHiddenEventProducer {
37
36
  static id: string;
38
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
37
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
39
38
  }
40
39
  export declare class NotebookOpenEventProducer {
41
40
  static id: string;
42
41
  private produced;
43
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): Promise<void>;
42
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): Promise<void>;
44
43
  }
45
44
  export declare class NotebookSaveEventProducer {
46
45
  static id: string;
47
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
46
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
48
47
  }
49
48
  export declare class NotebookScrollEventProducer {
50
49
  static id: string;
51
50
  private timeout;
52
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
51
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
53
52
  }
54
53
  export declare class NotebookVisibleEventProducer {
55
54
  static id: string;
56
- listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer, exporter: Exporter): void;
55
+ listen(notebookPanel: NotebookPanel, pioneer: IJupyterLabPioneer): void;
57
56
  }
58
57
  export declare const producerCollection: (typeof ActiveCellChangeEventProducer)[];
package/lib/producer.js CHANGED
@@ -2,9 +2,8 @@ import { NotebookActions } from '@jupyterlab/notebook';
2
2
  import { EditorView } from '@codemirror/view';
3
3
  import { requestAPI } from './handler';
4
4
  class ActiveCellChangeEventProducer {
5
- listen(notebookPanel, pioneer, exporter) {
5
+ listen(notebookPanel, pioneer) {
6
6
  notebookPanel.content.activeCellChanged.connect(async (_, cell) => {
7
- var _a, _b;
8
7
  if (cell && notebookPanel.content.widgets) {
9
8
  const activatedCell = {
10
9
  id: cell === null || cell === void 0 ? void 0 : cell.model.id,
@@ -17,7 +16,12 @@ class ActiveCellChangeEventProducer {
17
16
  cells: [activatedCell] // activated cell
18
17
  }
19
18
  };
20
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == ActiveCellChangeEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
19
+ pioneer.exporters.forEach(async (exporter) => {
20
+ var _a, _b, _c;
21
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(ActiveCellChangeEventProducer.id)) {
22
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == ActiveCellChangeEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
23
+ }
24
+ });
21
25
  }
22
26
  });
23
27
  }
@@ -25,10 +29,9 @@ class ActiveCellChangeEventProducer {
25
29
  ActiveCellChangeEventProducer.id = 'ActiveCellChangeEvent';
26
30
  export { ActiveCellChangeEventProducer };
27
31
  class CellAddEventProducer {
28
- listen(notebookPanel, pioneer, exporter) {
32
+ listen(notebookPanel, pioneer) {
29
33
  var _a;
30
34
  (_a = notebookPanel.content.model) === null || _a === void 0 ? void 0 : _a.cells.changed.connect(async (_, args) => {
31
- var _a, _b;
32
35
  if (args.type === 'add') {
33
36
  const addedCell = {
34
37
  id: args.newValues[0].id,
@@ -41,7 +44,12 @@ class CellAddEventProducer {
41
44
  cells: [addedCell]
42
45
  }
43
46
  };
44
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == CellAddEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
47
+ pioneer.exporters.forEach(async (exporter) => {
48
+ var _a, _b, _c;
49
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellAddEventProducer.id)) {
50
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == CellAddEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
51
+ }
52
+ });
45
53
  }
46
54
  });
47
55
  }
@@ -49,10 +57,10 @@ class CellAddEventProducer {
49
57
  CellAddEventProducer.id = 'CellAddEvent';
50
58
  export { CellAddEventProducer };
51
59
  class CellEditEventProducer {
52
- listen(notebookPanel, pioneer, exporter) {
60
+ listen(notebookPanel, pioneer) {
53
61
  var _a, _b;
54
62
  const sendDoc = async (_, cell) => {
55
- var _a, _b, _c, _d;
63
+ var _a, _b;
56
64
  await (cell === null || cell === void 0 ? void 0 : cell.ready); // wait until cell is ready, to prevent errors when creating new cells
57
65
  const editor = cell === null || cell === void 0 ? void 0 : cell.editor;
58
66
  const event = {
@@ -63,7 +71,12 @@ class CellEditEventProducer {
63
71
  doc: (_b = (_a = editor === null || editor === void 0 ? void 0 : editor.state) === null || _a === void 0 ? void 0 : _a.doc) === null || _b === void 0 ? void 0 : _b.toJSON() // send entire cell content if this is a new cell
64
72
  }
65
73
  };
66
- await pioneer.publishEvent(notebookPanel, event, exporter, (_d = (_c = exporter.activeEvents) === null || _c === void 0 ? void 0 : _c.find(o => o.name == CellEditEventProducer.id)) === null || _d === void 0 ? void 0 : _d.logWholeNotebook);
74
+ pioneer.exporters.forEach(async (exporter) => {
75
+ var _a, _b, _c;
76
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellEditEventProducer.id)) {
77
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == CellEditEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
78
+ }
79
+ });
67
80
  };
68
81
  const addDocChangeListener = async (cell) => {
69
82
  await (cell === null || cell === void 0 ? void 0 : cell.ready); // wait until cell is ready, to prevent errors when creating new cells
@@ -78,8 +91,13 @@ class CellEditEventProducer {
78
91
  changes: v.changes.toJSON() // send changes
79
92
  }
80
93
  };
81
- await pioneer.publishEvent(notebookPanel, event, exporter, false // do not log whole notebook for doc changes
82
- );
94
+ pioneer.exporters.forEach(async (exporter) => {
95
+ var _a;
96
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellEditEventProducer.id)) {
97
+ await pioneer.publishEvent(notebookPanel, event, exporter, false // do not log whole notebook for doc changes
98
+ );
99
+ }
100
+ });
83
101
  }
84
102
  }));
85
103
  };
@@ -99,9 +117,8 @@ class CellEditEventProducer {
99
117
  CellEditEventProducer.id = 'CellEditEvent';
100
118
  export { CellEditEventProducer };
101
119
  class CellExecuteEventProducer {
102
- listen(notebookPanel, pioneer, exporter) {
120
+ listen(notebookPanel, pioneer) {
103
121
  NotebookActions.executed.connect(async (_, args) => {
104
- var _a, _b;
105
122
  if (notebookPanel.content === args.notebook) {
106
123
  const executedCell = {
107
124
  id: args.cell.model.id,
@@ -116,7 +133,12 @@ class CellExecuteEventProducer {
116
133
  kernelError: args.success ? null : args.error
117
134
  }
118
135
  };
119
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == CellExecuteEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
136
+ pioneer.exporters.forEach(async (exporter) => {
137
+ var _a, _b, _c;
138
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellExecuteEventProducer.id)) {
139
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == CellExecuteEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
140
+ }
141
+ });
120
142
  }
121
143
  });
122
144
  }
@@ -124,10 +146,9 @@ class CellExecuteEventProducer {
124
146
  CellExecuteEventProducer.id = 'CellExecuteEvent';
125
147
  export { CellExecuteEventProducer };
126
148
  class CellRemoveEventProducer {
127
- listen(notebookPanel, pioneer, exporter) {
149
+ listen(notebookPanel, pioneer) {
128
150
  var _a;
129
151
  (_a = notebookPanel.content.model) === null || _a === void 0 ? void 0 : _a.cells.changed.connect(async (_, args) => {
130
- var _a, _b;
131
152
  if (args.type === 'remove') {
132
153
  const removedCell = {
133
154
  index: args.oldIndex
@@ -139,7 +160,12 @@ class CellRemoveEventProducer {
139
160
  cells: [removedCell]
140
161
  }
141
162
  };
142
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == CellRemoveEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
163
+ pioneer.exporters.forEach(async (exporter) => {
164
+ var _a, _b, _c;
165
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
166
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == CellRemoveEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
167
+ }
168
+ });
143
169
  }
144
170
  });
145
171
  }
@@ -147,9 +173,9 @@ class CellRemoveEventProducer {
147
173
  CellRemoveEventProducer.id = 'CellRemoveEvent';
148
174
  export { CellRemoveEventProducer };
149
175
  class ClipboardCopyEventProducer {
150
- listen(notebookPanel, pioneer, exporter) {
176
+ listen(notebookPanel, pioneer) {
151
177
  notebookPanel.node.addEventListener('copy', async () => {
152
- var _a, _b, _c, _d;
178
+ var _a, _b;
153
179
  const cell = {
154
180
  id: (_a = notebookPanel.content.activeCell) === null || _a === void 0 ? void 0 : _a.model.id,
155
181
  index: notebookPanel.content.widgets.findIndex(value => value === notebookPanel.content.activeCell)
@@ -163,16 +189,21 @@ class ClipboardCopyEventProducer {
163
189
  selection: text
164
190
  }
165
191
  };
166
- await pioneer.publishEvent(notebookPanel, event, exporter, (_d = (_c = exporter.activeEvents) === null || _c === void 0 ? void 0 : _c.find(o => o.name == ClipboardCopyEventProducer.id)) === null || _d === void 0 ? void 0 : _d.logWholeNotebook);
192
+ pioneer.exporters.forEach(async (exporter) => {
193
+ var _a, _b, _c;
194
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
195
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == ClipboardCopyEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
196
+ }
197
+ });
167
198
  });
168
199
  }
169
200
  }
170
201
  ClipboardCopyEventProducer.id = 'ClipboardCopyEvent';
171
202
  export { ClipboardCopyEventProducer };
172
203
  class ClipboardCutEventProducer {
173
- listen(notebookPanel, pioneer, exporter) {
204
+ listen(notebookPanel, pioneer) {
174
205
  notebookPanel.node.addEventListener('cut', async () => {
175
- var _a, _b, _c, _d;
206
+ var _a, _b;
176
207
  const cell = {
177
208
  id: (_a = notebookPanel.content.activeCell) === null || _a === void 0 ? void 0 : _a.model.id,
178
209
  index: notebookPanel.content.widgets.findIndex(value => value === notebookPanel.content.activeCell)
@@ -186,16 +217,21 @@ class ClipboardCutEventProducer {
186
217
  selection: text
187
218
  }
188
219
  };
189
- await pioneer.publishEvent(notebookPanel, event, exporter, (_d = (_c = exporter.activeEvents) === null || _c === void 0 ? void 0 : _c.find(o => o.name == ClipboardCutEventProducer.id)) === null || _d === void 0 ? void 0 : _d.logWholeNotebook);
220
+ pioneer.exporters.forEach(async (exporter) => {
221
+ var _a, _b, _c;
222
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
223
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == ClipboardCutEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
224
+ }
225
+ });
190
226
  });
191
227
  }
192
228
  }
193
229
  ClipboardCutEventProducer.id = 'ClipboardCutEvent';
194
230
  export { ClipboardCutEventProducer };
195
231
  class ClipboardPasteEventProducer {
196
- listen(notebookPanel, pioneer, exporter) {
232
+ listen(notebookPanel, pioneer) {
197
233
  notebookPanel.node.addEventListener('paste', async (e) => {
198
- var _a, _b, _c;
234
+ var _a;
199
235
  const cell = {
200
236
  id: (_a = notebookPanel.content.activeCell) === null || _a === void 0 ? void 0 : _a.model.id,
201
237
  index: notebookPanel.content.widgets.findIndex(value => value === notebookPanel.content.activeCell)
@@ -209,16 +245,20 @@ class ClipboardPasteEventProducer {
209
245
  selection: text
210
246
  }
211
247
  };
212
- await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == ClipboardPasteEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
248
+ pioneer.exporters.forEach(async (exporter) => {
249
+ var _a, _b, _c;
250
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
251
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == ClipboardPasteEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
252
+ }
253
+ });
213
254
  });
214
255
  }
215
256
  }
216
257
  ClipboardPasteEventProducer.id = 'ClipboardPasteEvent';
217
258
  export { ClipboardPasteEventProducer };
218
259
  class NotebookHiddenEventProducer {
219
- listen(notebookPanel, pioneer, exporter) {
260
+ listen(notebookPanel, pioneer) {
220
261
  document.addEventListener('visibilitychange', async (e) => {
221
- var _a, _b;
222
262
  if (document.visibilityState === 'hidden' &&
223
263
  document.contains(notebookPanel.node)) {
224
264
  const event = {
@@ -226,7 +266,12 @@ class NotebookHiddenEventProducer {
226
266
  eventTime: Date.now(),
227
267
  eventInfo: null
228
268
  };
229
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == NotebookHiddenEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
269
+ pioneer.exporters.forEach(async (exporter) => {
270
+ var _a, _b, _c;
271
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
272
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == NotebookHiddenEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
273
+ }
274
+ });
230
275
  }
231
276
  });
232
277
  }
@@ -237,8 +282,7 @@ class NotebookOpenEventProducer {
237
282
  constructor() {
238
283
  this.produced = false;
239
284
  }
240
- async listen(notebookPanel, pioneer, exporter) {
241
- var _a, _b;
285
+ async listen(notebookPanel, pioneer) {
242
286
  if (!this.produced) {
243
287
  const event = {
244
288
  eventName: NotebookOpenEventProducer.id,
@@ -247,24 +291,33 @@ class NotebookOpenEventProducer {
247
291
  environ: await requestAPI('environ')
248
292
  }
249
293
  };
250
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == NotebookOpenEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
251
- this.produced = true;
294
+ pioneer.exporters.forEach(async (exporter) => {
295
+ var _a, _b, _c;
296
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
297
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == NotebookOpenEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
298
+ this.produced = true;
299
+ }
300
+ });
252
301
  }
253
302
  }
254
303
  }
255
304
  NotebookOpenEventProducer.id = 'NotebookOpenEvent';
256
305
  export { NotebookOpenEventProducer };
257
306
  class NotebookSaveEventProducer {
258
- listen(notebookPanel, pioneer, exporter) {
307
+ listen(notebookPanel, pioneer) {
259
308
  notebookPanel.context.saveState.connect(async (_, saveState) => {
260
- var _a, _b;
261
309
  if (saveState.match('completed')) {
262
310
  const event = {
263
311
  eventName: NotebookSaveEventProducer.id,
264
312
  eventTime: Date.now(),
265
313
  eventInfo: null
266
314
  };
267
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == NotebookSaveEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
315
+ pioneer.exporters.forEach(async (exporter) => {
316
+ var _a, _b, _c;
317
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
318
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == NotebookSaveEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
319
+ }
320
+ });
268
321
  }
269
322
  });
270
323
  }
@@ -293,9 +346,8 @@ class NotebookScrollEventProducer {
293
346
  constructor() {
294
347
  this.timeout = 0;
295
348
  }
296
- listen(notebookPanel, pioneer, exporter) {
349
+ listen(notebookPanel, pioneer) {
297
350
  notebookPanel.content.node.addEventListener('scroll', async (e) => {
298
- var _a, _b;
299
351
  e.stopPropagation();
300
352
  clearTimeout(this.timeout);
301
353
  await new Promise(resolve => (this.timeout = window.setTimeout(resolve, 1500))); // wait 1.5 seconds before preceding
@@ -306,16 +358,20 @@ class NotebookScrollEventProducer {
306
358
  cells: getVisibleCells(notebookPanel)
307
359
  }
308
360
  };
309
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == NotebookScrollEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
361
+ pioneer.exporters.forEach(async (exporter) => {
362
+ var _a, _b, _c;
363
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(CellRemoveEventProducer.id)) {
364
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == NotebookScrollEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
365
+ }
366
+ });
310
367
  });
311
368
  }
312
369
  }
313
370
  NotebookScrollEventProducer.id = 'NotebookScrollEvent';
314
371
  export { NotebookScrollEventProducer };
315
372
  class NotebookVisibleEventProducer {
316
- listen(notebookPanel, pioneer, exporter) {
373
+ listen(notebookPanel, pioneer) {
317
374
  document.addEventListener('visibilitychange', async () => {
318
- var _a, _b;
319
375
  if (document.visibilityState === 'visible' &&
320
376
  document.contains(notebookPanel.node)) {
321
377
  const event = {
@@ -325,7 +381,12 @@ class NotebookVisibleEventProducer {
325
381
  cells: getVisibleCells(notebookPanel)
326
382
  }
327
383
  };
328
- await pioneer.publishEvent(notebookPanel, event, exporter, (_b = (_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.find(o => o.name == NotebookVisibleEventProducer.id)) === null || _b === void 0 ? void 0 : _b.logWholeNotebook);
384
+ pioneer.exporters.forEach(async (exporter) => {
385
+ var _a, _b, _c;
386
+ if ((_a = exporter.activeEvents) === null || _a === void 0 ? void 0 : _a.map(o => o.name).includes(NotebookVisibleEventProducer.id)) {
387
+ await pioneer.publishEvent(notebookPanel, event, exporter, (_c = (_b = exporter.activeEvents) === null || _b === void 0 ? void 0 : _b.find(o => o.name == NotebookVisibleEventProducer.id)) === null || _c === void 0 ? void 0 : _c.logWholeNotebook);
388
+ }
389
+ });
329
390
  }
330
391
  });
331
392
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jupyterlab-pioneer",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "description": "A JupyterLab extension.",
5
5
  "keywords": [
6
6
  "jupyter",