@theia/notebook 1.41.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.
Files changed (188) hide show
  1. package/README.md +30 -0
  2. package/lib/browser/contributions/notebook-actions-contribution.d.ts +27 -0
  3. package/lib/browser/contributions/notebook-actions-contribution.d.ts.map +1 -0
  4. package/lib/browser/contributions/notebook-actions-contribution.js +172 -0
  5. package/lib/browser/contributions/notebook-actions-contribution.js.map +1 -0
  6. package/lib/browser/contributions/notebook-cell-actions-contribution.d.ts +30 -0
  7. package/lib/browser/contributions/notebook-cell-actions-contribution.d.ts.map +1 -0
  8. package/lib/browser/contributions/notebook-cell-actions-contribution.js +200 -0
  9. package/lib/browser/contributions/notebook-cell-actions-contribution.js.map +1 -0
  10. package/lib/browser/contributions/notebook-color-contribution.d.ts +6 -0
  11. package/lib/browser/contributions/notebook-color-contribution.d.ts.map +1 -0
  12. package/lib/browser/contributions/notebook-color-contribution.js +252 -0
  13. package/lib/browser/contributions/notebook-color-contribution.js.map +1 -0
  14. package/lib/browser/contributions/notebook-context-keys.d.ts +38 -0
  15. package/lib/browser/contributions/notebook-context-keys.d.ts.map +1 -0
  16. package/lib/browser/contributions/notebook-context-keys.js +95 -0
  17. package/lib/browser/contributions/notebook-context-keys.js.map +1 -0
  18. package/lib/browser/index.d.ts +11 -0
  19. package/lib/browser/index.d.ts.map +1 -0
  20. package/lib/browser/index.js +38 -0
  21. package/lib/browser/index.js.map +1 -0
  22. package/lib/browser/notebook-cell-resource-resolver.d.ts +20 -0
  23. package/lib/browser/notebook-cell-resource-resolver.d.ts.map +1 -0
  24. package/lib/browser/notebook-cell-resource-resolver.js +75 -0
  25. package/lib/browser/notebook-cell-resource-resolver.js.map +1 -0
  26. package/lib/browser/notebook-editor-widget-factory.d.ts +17 -0
  27. package/lib/browser/notebook-editor-widget-factory.d.ts.map +1 -0
  28. package/lib/browser/notebook-editor-widget-factory.js +78 -0
  29. package/lib/browser/notebook-editor-widget-factory.js.map +1 -0
  30. package/lib/browser/notebook-editor-widget.d.ts +49 -0
  31. package/lib/browser/notebook-editor-widget.d.ts.map +1 -0
  32. package/lib/browser/notebook-editor-widget.js +150 -0
  33. package/lib/browser/notebook-editor-widget.js.map +1 -0
  34. package/lib/browser/notebook-frontend-module.d.ts +5 -0
  35. package/lib/browser/notebook-frontend-module.d.ts.map +1 -0
  36. package/lib/browser/notebook-frontend-module.js +81 -0
  37. package/lib/browser/notebook-frontend-module.js.map +1 -0
  38. package/lib/browser/notebook-open-handler.d.ts +18 -0
  39. package/lib/browser/notebook-open-handler.d.ts.map +1 -0
  40. package/lib/browser/notebook-open-handler.js +94 -0
  41. package/lib/browser/notebook-open-handler.js.map +1 -0
  42. package/lib/browser/notebook-renderer-registry.d.ts +17 -0
  43. package/lib/browser/notebook-renderer-registry.d.ts.map +1 -0
  44. package/lib/browser/notebook-renderer-registry.js +63 -0
  45. package/lib/browser/notebook-renderer-registry.js.map +1 -0
  46. package/lib/browser/notebook-type-registry.d.ts +7 -0
  47. package/lib/browser/notebook-type-registry.d.ts.map +1 -0
  48. package/lib/browser/notebook-type-registry.js +42 -0
  49. package/lib/browser/notebook-type-registry.js.map +1 -0
  50. package/lib/browser/renderers/cell-output-webview.d.ts +12 -0
  51. package/lib/browser/renderers/cell-output-webview.d.ts.map +1 -0
  52. package/lib/browser/renderers/cell-output-webview.js +20 -0
  53. package/lib/browser/renderers/cell-output-webview.js.map +1 -0
  54. package/lib/browser/service/notebook-cell-context-manager.d.ts +16 -0
  55. package/lib/browser/service/notebook-cell-context-manager.d.ts.map +1 -0
  56. package/lib/browser/service/notebook-cell-context-manager.js +83 -0
  57. package/lib/browser/service/notebook-cell-context-manager.js.map +1 -0
  58. package/lib/browser/service/notebook-editor-service.d.ts +22 -0
  59. package/lib/browser/service/notebook-editor-service.d.ts.map +1 -0
  60. package/lib/browser/service/notebook-editor-service.js +95 -0
  61. package/lib/browser/service/notebook-editor-service.js.map +1 -0
  62. package/lib/browser/service/notebook-execution-service.d.ts +25 -0
  63. package/lib/browser/service/notebook-execution-service.d.ts.map +1 -0
  64. package/lib/browser/service/notebook-execution-service.js +140 -0
  65. package/lib/browser/service/notebook-execution-service.js.map +1 -0
  66. package/lib/browser/service/notebook-execution-state-service.d.ts +94 -0
  67. package/lib/browser/service/notebook-execution-state-service.d.ts.map +1 -0
  68. package/lib/browser/service/notebook-execution-state-service.js +250 -0
  69. package/lib/browser/service/notebook-execution-state-service.js.map +1 -0
  70. package/lib/browser/service/notebook-kernel-history-service.d.ts +23 -0
  71. package/lib/browser/service/notebook-kernel-history-service.d.ts.map +1 -0
  72. package/lib/browser/service/notebook-kernel-history-service.js +109 -0
  73. package/lib/browser/service/notebook-kernel-history-service.js.map +1 -0
  74. package/lib/browser/service/notebook-kernel-quick-pick-service.d.ts +65 -0
  75. package/lib/browser/service/notebook-kernel-quick-pick-service.d.ts.map +1 -0
  76. package/lib/browser/service/notebook-kernel-quick-pick-service.js +430 -0
  77. package/lib/browser/service/notebook-kernel-quick-pick-service.js.map +1 -0
  78. package/lib/browser/service/notebook-kernel-service.d.ts +112 -0
  79. package/lib/browser/service/notebook-kernel-service.d.ts.map +1 -0
  80. package/lib/browser/service/notebook-kernel-service.js +274 -0
  81. package/lib/browser/service/notebook-kernel-service.js.map +1 -0
  82. package/lib/browser/service/notebook-model-resolver-service.d.ts +26 -0
  83. package/lib/browser/service/notebook-model-resolver-service.d.ts.map +1 -0
  84. package/lib/browser/service/notebook-model-resolver-service.js +139 -0
  85. package/lib/browser/service/notebook-model-resolver-service.js.map +1 -0
  86. package/lib/browser/service/notebook-renderer-messaging-service.d.ts +30 -0
  87. package/lib/browser/service/notebook-renderer-messaging-service.d.ts.map +1 -0
  88. package/lib/browser/service/notebook-renderer-messaging-service.js +94 -0
  89. package/lib/browser/service/notebook-renderer-messaging-service.js.map +1 -0
  90. package/lib/browser/service/notebook-service.d.ts +64 -0
  91. package/lib/browser/service/notebook-service.d.ts.map +1 -0
  92. package/lib/browser/service/notebook-service.js +162 -0
  93. package/lib/browser/service/notebook-service.js.map +1 -0
  94. package/lib/browser/view/notebook-cell-editor.d.ts +26 -0
  95. package/lib/browser/view/notebook-cell-editor.d.ts.map +1 -0
  96. package/lib/browser/view/notebook-cell-editor.js +79 -0
  97. package/lib/browser/view/notebook-cell-editor.js.map +1 -0
  98. package/lib/browser/view/notebook-cell-list-view.d.ts +43 -0
  99. package/lib/browser/view/notebook-cell-list-view.d.ts.map +1 -0
  100. package/lib/browser/view/notebook-cell-list-view.js +111 -0
  101. package/lib/browser/view/notebook-cell-list-view.js.map +1 -0
  102. package/lib/browser/view/notebook-cell-toolbar-factory.d.ts +25 -0
  103. package/lib/browser/view/notebook-cell-toolbar-factory.d.ts.map +1 -0
  104. package/lib/browser/view/notebook-cell-toolbar-factory.js +93 -0
  105. package/lib/browser/view/notebook-cell-toolbar-factory.js.map +1 -0
  106. package/lib/browser/view/notebook-cell-toolbar.d.ts +25 -0
  107. package/lib/browser/view/notebook-cell-toolbar.d.ts.map +1 -0
  108. package/lib/browser/view/notebook-cell-toolbar.js +50 -0
  109. package/lib/browser/view/notebook-cell-toolbar.js.map +1 -0
  110. package/lib/browser/view/notebook-code-cell-view.d.ts +47 -0
  111. package/lib/browser/view/notebook-code-cell-view.d.ts.map +1 -0
  112. package/lib/browser/view/notebook-code-cell-view.js +166 -0
  113. package/lib/browser/view/notebook-code-cell-view.js.map +1 -0
  114. package/lib/browser/view/notebook-main-toolbar.d.ts +31 -0
  115. package/lib/browser/view/notebook-main-toolbar.d.ts.map +1 -0
  116. package/lib/browser/view/notebook-main-toolbar.js +118 -0
  117. package/lib/browser/view/notebook-main-toolbar.js.map +1 -0
  118. package/lib/browser/view/notebook-markdown-cell-view.d.ts +12 -0
  119. package/lib/browser/view/notebook-markdown-cell-view.d.ts.map +1 -0
  120. package/lib/browser/view/notebook-markdown-cell-view.js +70 -0
  121. package/lib/browser/view/notebook-markdown-cell-view.js.map +1 -0
  122. package/lib/browser/view-model/notebook-cell-model.d.ts +74 -0
  123. package/lib/browser/view-model/notebook-cell-model.d.ts.map +1 -0
  124. package/lib/browser/view-model/notebook-cell-model.js +226 -0
  125. package/lib/browser/view-model/notebook-cell-model.js.map +1 -0
  126. package/lib/browser/view-model/notebook-cell-output-model.d.ts +19 -0
  127. package/lib/browser/view-model/notebook-cell-output-model.d.ts.map +1 -0
  128. package/lib/browser/view-model/notebook-cell-output-model.js +61 -0
  129. package/lib/browser/view-model/notebook-cell-output-model.js.map +1 -0
  130. package/lib/browser/view-model/notebook-model.d.ts +59 -0
  131. package/lib/browser/view-model/notebook-model.d.ts.map +1 -0
  132. package/lib/browser/view-model/notebook-model.js +315 -0
  133. package/lib/browser/view-model/notebook-model.js.map +1 -0
  134. package/lib/common/index.d.ts +3 -0
  135. package/lib/common/index.d.ts.map +1 -0
  136. package/lib/common/index.js +30 -0
  137. package/lib/common/index.js.map +1 -0
  138. package/lib/common/notebook-common.d.ts +344 -0
  139. package/lib/common/notebook-common.d.ts.map +1 -0
  140. package/lib/common/notebook-common.js +112 -0
  141. package/lib/common/notebook-common.js.map +1 -0
  142. package/lib/common/notebook-protocol.d.ts +21 -0
  143. package/lib/common/notebook-protocol.d.ts.map +1 -0
  144. package/lib/common/notebook-protocol.js +18 -0
  145. package/lib/common/notebook-protocol.js.map +1 -0
  146. package/lib/common/notebook-range.d.ts +14 -0
  147. package/lib/common/notebook-range.d.ts.map +1 -0
  148. package/lib/common/notebook-range.js +18 -0
  149. package/lib/common/notebook-range.js.map +1 -0
  150. package/package.json +52 -0
  151. package/src/browser/contributions/notebook-actions-contribution.ts +171 -0
  152. package/src/browser/contributions/notebook-cell-actions-contribution.ts +204 -0
  153. package/src/browser/contributions/notebook-color-contribution.ts +268 -0
  154. package/src/browser/contributions/notebook-context-keys.ts +99 -0
  155. package/src/browser/index.ts +26 -0
  156. package/src/browser/notebook-cell-resource-resolver.ts +79 -0
  157. package/src/browser/notebook-editor-widget-factory.ts +70 -0
  158. package/src/browser/notebook-editor-widget.tsx +157 -0
  159. package/src/browser/notebook-frontend-module.ts +95 -0
  160. package/src/browser/notebook-open-handler.ts +87 -0
  161. package/src/browser/notebook-renderer-registry.ts +62 -0
  162. package/src/browser/notebook-type-registry.ts +30 -0
  163. package/src/browser/renderers/cell-output-webview.ts +32 -0
  164. package/src/browser/service/notebook-cell-context-manager.ts +70 -0
  165. package/src/browser/service/notebook-editor-service.ts +86 -0
  166. package/src/browser/service/notebook-execution-service.ts +139 -0
  167. package/src/browser/service/notebook-execution-state-service.ts +322 -0
  168. package/src/browser/service/notebook-kernel-history-service.ts +109 -0
  169. package/src/browser/service/notebook-kernel-quick-pick-service.ts +494 -0
  170. package/src/browser/service/notebook-kernel-service.ts +357 -0
  171. package/src/browser/service/notebook-model-resolver-service.ts +141 -0
  172. package/src/browser/service/notebook-renderer-messaging-service.ts +111 -0
  173. package/src/browser/service/notebook-service.ts +178 -0
  174. package/src/browser/style/index.css +236 -0
  175. package/src/browser/view/notebook-cell-editor.tsx +97 -0
  176. package/src/browser/view/notebook-cell-list-view.tsx +171 -0
  177. package/src/browser/view/notebook-cell-toolbar-factory.tsx +91 -0
  178. package/src/browser/view/notebook-cell-toolbar.tsx +70 -0
  179. package/src/browser/view/notebook-code-cell-view.tsx +190 -0
  180. package/src/browser/view/notebook-main-toolbar.tsx +115 -0
  181. package/src/browser/view/notebook-markdown-cell-view.tsx +73 -0
  182. package/src/browser/view-model/notebook-cell-model.ts +271 -0
  183. package/src/browser/view-model/notebook-cell-output-model.ts +69 -0
  184. package/src/browser/view-model/notebook-model.ts +372 -0
  185. package/src/common/index.ts +18 -0
  186. package/src/common/notebook-common.ts +462 -0
  187. package/src/common/notebook-protocol.ts +35 -0
  188. package/src/common/notebook-range.ts +30 -0
@@ -0,0 +1,64 @@
1
+ import { Disposable, DisposableCollection, Emitter, URI } from '@theia/core';
2
+ import { BinaryBuffer } from '@theia/core/lib/common/buffer';
3
+ import { NotebookData, NotebookExtensionDescription, TransientOptions } from '../../common';
4
+ import { NotebookModel, NotebookModelProps } from '../view-model/notebook-model';
5
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
6
+ import { MonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-model-service';
7
+ import { NotebookCellModel, NotebookCellModelProps } from '../view-model/notebook-cell-model';
8
+ import { Deferred } from '@theia/core/lib/common/promise-util';
9
+ export declare const NotebookProvider: unique symbol;
10
+ export interface SimpleNotebookProviderInfo {
11
+ readonly notebookType: string;
12
+ readonly serializer: NotebookSerializer;
13
+ readonly extensionData: NotebookExtensionDescription;
14
+ }
15
+ export interface NotebookSerializer {
16
+ options: TransientOptions;
17
+ dataToNotebook(data: BinaryBuffer): Promise<NotebookData>;
18
+ notebookToData(data: NotebookData): Promise<BinaryBuffer>;
19
+ }
20
+ export declare class NotebookService implements Disposable {
21
+ protected fileService: FileService;
22
+ protected modelService: MonacoTextModelService;
23
+ protected notebookModelFactory: (props: NotebookModelProps) => NotebookModel;
24
+ protected notebookCellModelFactory: (props: NotebookCellModelProps) => NotebookCellModel;
25
+ protected notebookSerializerEmitter: Emitter<string>;
26
+ readonly onNotebookSerializer: import("@theia/core").Event<string>;
27
+ protected readonly disposables: DisposableCollection;
28
+ protected readonly notebookProviders: Map<string, SimpleNotebookProviderInfo>;
29
+ protected readonly notebookModels: Map<string, NotebookModel>;
30
+ protected readonly didAddViewTypeEmitter: Emitter<string>;
31
+ readonly onDidAddViewType: import("@theia/core").Event<string>;
32
+ protected readonly didRemoveViewTypeEmitter: Emitter<string>;
33
+ readonly onDidRemoveViewType: import("@theia/core").Event<string>;
34
+ protected readonly willOpenNotebookTypeEmitter: Emitter<string>;
35
+ readonly onWillOpenNotebook: import("@theia/core").Event<string>;
36
+ protected readonly willAddNotebookDocumentEmitter: Emitter<URI>;
37
+ readonly onWillAddNotebookDocument: import("@theia/core").Event<URI>;
38
+ protected readonly didAddNotebookDocumentEmitter: Emitter<NotebookModel>;
39
+ readonly onDidAddNotebookDocument: import("@theia/core").Event<NotebookModel>;
40
+ protected readonly willRemoveNotebookDocumentEmitter: Emitter<NotebookModel>;
41
+ readonly onWillRemoveNotebookDocument: import("@theia/core").Event<NotebookModel>;
42
+ protected readonly didRemoveNotebookDocumentEmitter: Emitter<NotebookModel>;
43
+ readonly onDidRemoveNotebookDocument: import("@theia/core").Event<NotebookModel>;
44
+ dispose(): void;
45
+ protected readonly ready: Deferred<void>;
46
+ /**
47
+ * Marks the notebook service as ready. From this point on, the service will start dispatching the `onNotebookSerializer` event.
48
+ */
49
+ markReady(): void;
50
+ registerNotebookSerializer(notebookType: string, extensionData: NotebookExtensionDescription, serializer: NotebookSerializer): Disposable;
51
+ createNotebookModel(data: NotebookData, viewType: string, uri: URI): Promise<NotebookModel>;
52
+ getNotebookDataProvider(viewType: string): Promise<SimpleNotebookProviderInfo>;
53
+ /**
54
+ * When the application starts up, notebook providers from plugins are not registered yet.
55
+ * It takes a few seconds for the plugin host to start so that notebook data providers can be registered.
56
+ * This methods waits until the notebook provider is registered.
57
+ */
58
+ protected waitForNotebookProvider(type: string): Promise<SimpleNotebookProviderInfo | undefined>;
59
+ getNotebookEditorModel(uri: URI): NotebookModel | undefined;
60
+ getNotebookModels(): Iterable<NotebookModel>;
61
+ willOpenNotebook(type: string): Promise<void>;
62
+ listNotebookDocuments(): NotebookModel[];
63
+ }
64
+ //# sourceMappingURL=notebook-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-service.d.ts","sourceRoot":"","sources":["../../../src/browser/service/notebook-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.NotebookService = exports.NotebookProvider = void 0;
28
+ const core_1 = require("@theia/core");
29
+ const inversify_1 = require("@theia/core/shared/inversify");
30
+ const notebook_model_1 = require("../view-model/notebook-model");
31
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
32
+ const monaco_text_model_service_1 = require("@theia/monaco/lib/browser/monaco-text-model-service");
33
+ const notebook_cell_model_1 = require("../view-model/notebook-cell-model");
34
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
35
+ exports.NotebookProvider = Symbol('notebook provider');
36
+ let NotebookService = class NotebookService {
37
+ constructor() {
38
+ this.notebookSerializerEmitter = new core_1.Emitter();
39
+ this.onNotebookSerializer = this.notebookSerializerEmitter.event;
40
+ this.disposables = new core_1.DisposableCollection();
41
+ this.notebookProviders = new Map();
42
+ this.notebookModels = new Map();
43
+ this.didAddViewTypeEmitter = new core_1.Emitter();
44
+ this.onDidAddViewType = this.didAddViewTypeEmitter.event;
45
+ this.didRemoveViewTypeEmitter = new core_1.Emitter();
46
+ this.onDidRemoveViewType = this.didRemoveViewTypeEmitter.event;
47
+ this.willOpenNotebookTypeEmitter = new core_1.Emitter();
48
+ this.onWillOpenNotebook = this.willOpenNotebookTypeEmitter.event;
49
+ this.willAddNotebookDocumentEmitter = new core_1.Emitter();
50
+ this.onWillAddNotebookDocument = this.willAddNotebookDocumentEmitter.event;
51
+ this.didAddNotebookDocumentEmitter = new core_1.Emitter();
52
+ this.onDidAddNotebookDocument = this.didAddNotebookDocumentEmitter.event;
53
+ this.willRemoveNotebookDocumentEmitter = new core_1.Emitter();
54
+ this.onWillRemoveNotebookDocument = this.willRemoveNotebookDocumentEmitter.event;
55
+ this.didRemoveNotebookDocumentEmitter = new core_1.Emitter();
56
+ this.onDidRemoveNotebookDocument = this.didRemoveNotebookDocumentEmitter.event;
57
+ this.ready = new promise_util_1.Deferred();
58
+ }
59
+ dispose() {
60
+ this.disposables.dispose();
61
+ }
62
+ /**
63
+ * Marks the notebook service as ready. From this point on, the service will start dispatching the `onNotebookSerializer` event.
64
+ */
65
+ markReady() {
66
+ this.ready.resolve();
67
+ }
68
+ registerNotebookSerializer(notebookType, extensionData, serializer) {
69
+ if (this.notebookProviders.has(notebookType)) {
70
+ throw new Error(`notebook provider for viewtype '${notebookType}' already exists`);
71
+ }
72
+ this.notebookProviders.set(notebookType, { notebookType: notebookType, serializer, extensionData });
73
+ this.didAddViewTypeEmitter.fire(notebookType);
74
+ return core_1.Disposable.create(() => {
75
+ this.notebookProviders.delete(notebookType);
76
+ this.didRemoveViewTypeEmitter.fire(notebookType);
77
+ });
78
+ }
79
+ async createNotebookModel(data, viewType, uri) {
80
+ var _a;
81
+ const serializer = (_a = this.notebookProviders.get(viewType)) === null || _a === void 0 ? void 0 : _a.serializer;
82
+ if (!serializer) {
83
+ throw new Error('no notebook serializer for ' + viewType);
84
+ }
85
+ this.willAddNotebookDocumentEmitter.fire(uri);
86
+ const model = this.notebookModelFactory({ data, uri, viewType, serializer });
87
+ this.notebookModels.set(uri.toString(), model);
88
+ // Resolve cell text models right after creating the notebook model
89
+ // This ensures that all text models are available in the plugin host
90
+ await Promise.all(model.cells.map(e => e.resolveTextModel()));
91
+ this.didAddNotebookDocumentEmitter.fire(model);
92
+ return model;
93
+ }
94
+ async getNotebookDataProvider(viewType) {
95
+ await this.ready.promise;
96
+ await this.notebookSerializerEmitter.sequence(async (listener) => listener(`onNotebookSerializer:${viewType}`));
97
+ const result = await this.waitForNotebookProvider(viewType);
98
+ if (!result) {
99
+ throw new Error(`No provider registered for view type: '${viewType}'`);
100
+ }
101
+ return result;
102
+ }
103
+ /**
104
+ * When the application starts up, notebook providers from plugins are not registered yet.
105
+ * It takes a few seconds for the plugin host to start so that notebook data providers can be registered.
106
+ * This methods waits until the notebook provider is registered.
107
+ */
108
+ async waitForNotebookProvider(type) {
109
+ if (this.notebookProviders.has(type)) {
110
+ return this.notebookProviders.get(type);
111
+ }
112
+ const deferred = new promise_util_1.Deferred();
113
+ // 20 seconds of timeout
114
+ const timeoutDuration = 20000;
115
+ const disposable = this.onDidAddViewType(viewType => {
116
+ if (viewType === type) {
117
+ clearTimeout(timeout);
118
+ disposable.dispose();
119
+ deferred.resolve(this.notebookProviders.get(type));
120
+ }
121
+ });
122
+ const timeout = setTimeout(() => {
123
+ clearTimeout(timeout);
124
+ disposable.dispose();
125
+ deferred.reject();
126
+ }, timeoutDuration);
127
+ return deferred.promise;
128
+ }
129
+ getNotebookEditorModel(uri) {
130
+ return this.notebookModels.get(uri.toString());
131
+ }
132
+ getNotebookModels() {
133
+ return this.notebookModels.values();
134
+ }
135
+ async willOpenNotebook(type) {
136
+ return this.willOpenNotebookTypeEmitter.sequence(async (listener) => listener(type));
137
+ }
138
+ listNotebookDocuments() {
139
+ return [...this.notebookModels.values()];
140
+ }
141
+ };
142
+ __decorate([
143
+ (0, inversify_1.inject)(file_service_1.FileService),
144
+ __metadata("design:type", file_service_1.FileService)
145
+ ], NotebookService.prototype, "fileService", void 0);
146
+ __decorate([
147
+ (0, inversify_1.inject)(monaco_text_model_service_1.MonacoTextModelService),
148
+ __metadata("design:type", monaco_text_model_service_1.MonacoTextModelService)
149
+ ], NotebookService.prototype, "modelService", void 0);
150
+ __decorate([
151
+ (0, inversify_1.inject)(notebook_model_1.NotebookModelFactory),
152
+ __metadata("design:type", Function)
153
+ ], NotebookService.prototype, "notebookModelFactory", void 0);
154
+ __decorate([
155
+ (0, inversify_1.inject)(notebook_cell_model_1.NotebookCellModelFactory),
156
+ __metadata("design:type", Function)
157
+ ], NotebookService.prototype, "notebookCellModelFactory", void 0);
158
+ NotebookService = __decorate([
159
+ (0, inversify_1.injectable)()
160
+ ], NotebookService);
161
+ exports.NotebookService = NotebookService;
162
+ //# sourceMappingURL=notebook-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-service.js","sourceRoot":"","sources":["../../../src/browser/service/notebook-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ import * as React from '@theia/core/shared/react';
3
+ import { NotebookModel } from '../view-model/notebook-model';
4
+ import { NotebookCellModel } from '../view-model/notebook-cell-model';
5
+ import { MonacoCodeEditor } from '@theia/monaco/lib/browser/monaco-code-editor';
6
+ import { MonacoEditorServices } from '@theia/monaco/lib/browser/monaco-editor';
7
+ import { DisposableCollection } from '@theia/core';
8
+ interface CellEditorProps {
9
+ notebookModel: NotebookModel;
10
+ cell: NotebookCellModel;
11
+ monacoServices: MonacoEditorServices;
12
+ }
13
+ export declare class CellEditor extends React.Component<CellEditorProps, {}> {
14
+ protected editor?: MonacoCodeEditor;
15
+ protected toDispose: DisposableCollection;
16
+ protected container?: HTMLDivElement;
17
+ componentDidMount(): void;
18
+ componentWillUnmount(): void;
19
+ protected disposeEditor(): void;
20
+ protected initEditor(): Promise<void>;
21
+ protected assignRef: (component: HTMLDivElement) => void;
22
+ protected handleResize: () => void;
23
+ render(): React.ReactNode;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=notebook-cell-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-cell-editor.d.ts","sourceRoot":"","sources":["../../../src/browser/view/notebook-cell-editor.tsx"],"names":[],"mappings":";AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,UAAU,eAAe;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,cAAc,EAAE,oBAAoB,CAAA;CACvC;AAYD,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAEhE,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IAE5B,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAIrC,SAAS,CAAC,aAAa,IAAI,IAAI;cAKf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3C,SAAS,CAAC,SAAS,cAAe,cAAc,UAE9C;IAEF,SAAS,CAAC,YAAY,aAEpB;IAEO,MAAM,IAAI,KAAK,CAAC,SAAS;CAIrC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CellEditor = void 0;
19
+ const React = require("@theia/core/shared/react");
20
+ const monaco_code_editor_1 = require("@theia/monaco/lib/browser/monaco-code-editor");
21
+ const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
22
+ const core_1 = require("@theia/core");
23
+ const DEFAULT_EDITOR_OPTIONS = {
24
+ ...monaco_editor_provider_1.MonacoEditorProvider.inlineOptions,
25
+ minHeight: -1,
26
+ maxHeight: -1,
27
+ scrollbar: {
28
+ ...monaco_editor_provider_1.MonacoEditorProvider.inlineOptions.scrollbar,
29
+ alwaysConsumeMouseWheel: false
30
+ }
31
+ };
32
+ class CellEditor extends React.Component {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.toDispose = new core_1.DisposableCollection();
36
+ this.assignRef = (component) => {
37
+ this.container = component;
38
+ };
39
+ this.handleResize = () => {
40
+ var _a;
41
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.refresh();
42
+ };
43
+ }
44
+ componentDidMount() {
45
+ this.disposeEditor();
46
+ this.initEditor();
47
+ }
48
+ componentWillUnmount() {
49
+ this.disposeEditor();
50
+ }
51
+ disposeEditor() {
52
+ this.toDispose.dispose();
53
+ this.toDispose = new core_1.DisposableCollection();
54
+ }
55
+ async initEditor() {
56
+ const { cell, notebookModel, monacoServices } = this.props;
57
+ if (this.container) {
58
+ const editorNode = this.container;
59
+ const editorModel = await cell.resolveTextModel();
60
+ const uri = cell.uri;
61
+ this.editor = new monaco_code_editor_1.MonacoCodeEditor(uri, editorModel, editorNode, monacoServices, DEFAULT_EDITOR_OPTIONS);
62
+ this.toDispose.push(this.editor);
63
+ this.editor.setLanguage(cell.language);
64
+ this.toDispose.push(this.editor.getControl().onDidContentSizeChange(() => {
65
+ editorNode.style.height = this.editor.getControl().getContentHeight() + 7 + 'px';
66
+ this.editor.setSize({ width: -1, height: this.editor.getControl().getContentHeight() });
67
+ }));
68
+ this.toDispose.push(this.editor.onDocumentContentChanged(e => {
69
+ notebookModel.cellDirtyChanged(cell, true);
70
+ cell.source = e.document.getText();
71
+ }));
72
+ }
73
+ }
74
+ render() {
75
+ return React.createElement("div", { className: 'theia-notebook-cell-editor', onResize: this.handleResize, id: this.props.cell.uri.toString(), ref: this.assignRef });
76
+ }
77
+ }
78
+ exports.CellEditor = CellEditor;
79
+ //# sourceMappingURL=notebook-cell-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-cell-editor.js","sourceRoot":"","sources":["../../../src/browser/view/notebook-cell-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="react" />
2
+ import * as React from '@theia/core/shared/react';
3
+ import { CellKind } from '../../common';
4
+ import { NotebookCellModel } from '../view-model/notebook-cell-model';
5
+ import { NotebookModel } from '../view-model/notebook-model';
6
+ import { NotebookCellToolbarFactory } from './notebook-cell-toolbar-factory';
7
+ import { CommandRegistry, DisposableCollection } from '@theia/core';
8
+ export interface CellRenderer {
9
+ render(notebookData: NotebookModel, cell: NotebookCellModel, index: number): React.ReactNode;
10
+ }
11
+ interface CellListProps {
12
+ renderers: Map<CellKind, CellRenderer>;
13
+ notebookModel: NotebookModel;
14
+ toolbarRenderer: NotebookCellToolbarFactory;
15
+ commandRegistry: CommandRegistry;
16
+ }
17
+ interface NotebookCellListState {
18
+ selectedCell?: NotebookCellModel;
19
+ dragOverIndicator: {
20
+ cell: NotebookCellModel;
21
+ position: 'top' | 'bottom';
22
+ } | undefined;
23
+ }
24
+ export declare class NotebookCellListView extends React.Component<CellListProps, NotebookCellListState> {
25
+ protected toDispose: DisposableCollection;
26
+ constructor(props: CellListProps);
27
+ componentWillUnmount(): void;
28
+ render(): React.ReactNode;
29
+ renderCellContent(cell: NotebookCellModel, index: number): React.ReactNode;
30
+ protected onDragStart(event: React.DragEvent<HTMLLIElement>, index: number): void;
31
+ protected onDragOver(event: React.DragEvent<HTMLLIElement>, cell: NotebookCellModel, position?: 'top' | 'bottom'): void;
32
+ protected onDrop(event: React.DragEvent<HTMLLIElement>, dropElementIndex: number): void;
33
+ protected onAddNewCell(kind: CellKind, index: number): void;
34
+ protected shouldRenderDragOverIndicator(cell: NotebookCellModel, position: 'top' | 'bottom'): boolean;
35
+ }
36
+ export interface NotebookCellDividerProps {
37
+ onAddNewCell: (type: CellKind) => void;
38
+ onDrop: (event: React.DragEvent<HTMLLIElement>) => void;
39
+ onDragOver: (event: React.DragEvent<HTMLLIElement>) => void;
40
+ }
41
+ export declare function NotebookCellDivider({ onAddNewCell, onDrop, onDragOver }: NotebookCellDividerProps): React.JSX.Element;
42
+ export {};
43
+ //# sourceMappingURL=notebook-cell-list-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-cell-list-view.d.ts","sourceRoot":"","sources":["../../../src/browser/view/notebook-cell-list-view.tsx"],"names":[],"mappings":";AAeA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAgB,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAO,MAAM,aAAa,CAAC;AAIzE,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;CAC/F;AAED,UAAU,aAAa;IACnB,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,0BAA0B,CAAC;IAC5C,eAAe,EAAE,eAAe,CAAA;CACnC;AAED,UAAU,qBAAqB;IAC3B,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,iBAAiB,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC;CAC1F;AAED,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAE3F,SAAS,CAAC,SAAS,uBAA8B;gBAErC,KAAK,EAAE,aAAa;IAQvB,oBAAoB,IAAI,IAAI;IAI5B,MAAM,IAAI,KAAK,CAAC,SAAS;IAoClC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS;IAQ1E,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjF,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;IAOvH,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAgBvF,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3D,SAAS,CAAC,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO;CAMxG;AAED,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC/D;AAED,wBAAgB,mBAAmB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAerH"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotebookCellDivider = exports.NotebookCellListView = void 0;
4
+ // *****************************************************************************
5
+ // Copyright (C) 2023 TypeFox and others.
6
+ //
7
+ // This program and the accompanying materials are made available under the
8
+ // terms of the Eclipse Public License v. 2.0 which is available at
9
+ // http://www.eclipse.org/legal/epl-2.0.
10
+ //
11
+ // This Source Code may also be made available under the following Secondary
12
+ // Licenses when the conditions for such availability set forth in the Eclipse
13
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
14
+ // with the GNU Classpath Exception which is available at
15
+ // https://www.gnu.org/software/classpath/license.html.
16
+ //
17
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
18
+ // *****************************************************************************
19
+ const React = require("@theia/core/shared/react");
20
+ const common_1 = require("../../common");
21
+ const browser_1 = require("@theia/core/lib/browser");
22
+ const core_1 = require("@theia/core");
23
+ const notebook_actions_contribution_1 = require("../contributions/notebook-actions-contribution");
24
+ const notebook_cell_actions_contribution_1 = require("../contributions/notebook-cell-actions-contribution");
25
+ class NotebookCellListView extends React.Component {
26
+ constructor(props) {
27
+ super(props);
28
+ this.toDispose = new core_1.DisposableCollection();
29
+ this.state = { selectedCell: undefined, dragOverIndicator: undefined };
30
+ this.toDispose.push(props.notebookModel.onDidAddOrRemoveCell(e => {
31
+ this.setState({ selectedCell: undefined });
32
+ }));
33
+ }
34
+ componentWillUnmount() {
35
+ this.toDispose.dispose();
36
+ }
37
+ render() {
38
+ return React.createElement("ul", { className: 'theia-notebook-cell-list' },
39
+ this.props.notebookModel.cells
40
+ .map((cell, index) => React.createElement(React.Fragment, { key: 'cell-' + cell.handle },
41
+ React.createElement(NotebookCellDivider, { onAddNewCell: (kind) => this.onAddNewCell(kind, index), onDrop: e => this.onDrop(e, index), onDragOver: e => this.onDragOver(e, cell, 'top') }),
42
+ this.shouldRenderDragOverIndicator(cell, 'top') && React.createElement(CellDropIndicator, null),
43
+ React.createElement("li", { className: 'theia-notebook-cell' + (this.state.selectedCell === cell ? ' focused' : ''), onClick: () => {
44
+ this.setState({ selectedCell: cell });
45
+ this.props.notebookModel.setSelectedCell(cell);
46
+ }, onDragStart: e => this.onDragStart(e, index), onDragOver: e => this.onDragOver(e, cell), onDrop: e => this.onDrop(e, index), draggable: true, ref: (node) => cell.refChanged(node) },
47
+ React.createElement("div", { className: 'theia-notebook-cell-marker' + (this.state.selectedCell === cell ? ' theia-notebook-cell-marker-selected' : '') }),
48
+ React.createElement("div", { className: 'theia-notebook-cell-content' }, this.renderCellContent(cell, index)),
49
+ this.state.selectedCell === cell &&
50
+ this.props.toolbarRenderer.renderCellToolbar(notebook_cell_actions_contribution_1.NotebookCellActionContribution.ACTION_MENU, this.props.notebookModel, cell)),
51
+ this.shouldRenderDragOverIndicator(cell, 'bottom') && React.createElement(CellDropIndicator, null))),
52
+ React.createElement(NotebookCellDivider, { onAddNewCell: (kind) => this.onAddNewCell(kind, this.props.notebookModel.cells.length), onDrop: e => this.onDrop(e, this.props.notebookModel.cells.length - 1), onDragOver: e => this.onDragOver(e, this.props.notebookModel.cells[this.props.notebookModel.cells.length - 1], 'bottom') }));
53
+ }
54
+ renderCellContent(cell, index) {
55
+ const renderer = this.props.renderers.get(cell.cellKind);
56
+ if (!renderer) {
57
+ throw new Error(`No renderer found for cell type ${cell.cellKind}`);
58
+ }
59
+ return renderer.render(this.props.notebookModel, cell, index);
60
+ }
61
+ onDragStart(event, index) {
62
+ event.stopPropagation();
63
+ event.dataTransfer.setData('text/notebook-cell-index', index.toString());
64
+ }
65
+ onDragOver(event, cell, position) {
66
+ event.preventDefault();
67
+ event.stopPropagation();
68
+ // show indicator
69
+ this.setState({ ...this.state, dragOverIndicator: { cell, position: (position !== null && position !== void 0 ? position : event.nativeEvent.offsetY < event.currentTarget.clientHeight / 2) ? 'top' : 'bottom' } });
70
+ }
71
+ onDrop(event, dropElementIndex) {
72
+ var _a;
73
+ const index = parseInt(event.dataTransfer.getData('text/notebook-cell-index'));
74
+ const isTargetBelow = index < dropElementIndex;
75
+ let newIdx = ((_a = this.state.dragOverIndicator) === null || _a === void 0 ? void 0 : _a.position) === 'top' ? dropElementIndex : dropElementIndex + 1;
76
+ newIdx = isTargetBelow ? newIdx - 1 : newIdx;
77
+ if (index !== undefined && index !== dropElementIndex) {
78
+ this.props.notebookModel.applyEdits([{
79
+ editType: 6 /* Move */,
80
+ length: 1,
81
+ index,
82
+ newIdx
83
+ }], true);
84
+ }
85
+ this.setState({ ...this.state, dragOverIndicator: undefined });
86
+ }
87
+ onAddNewCell(kind, index) {
88
+ this.props.commandRegistry.executeCommand(notebook_actions_contribution_1.NotebookCommands.ADD_NEW_CELL_COMMAND.id, this.props.notebookModel, kind, index);
89
+ }
90
+ shouldRenderDragOverIndicator(cell, position) {
91
+ return this.state.dragOverIndicator !== undefined &&
92
+ this.state.dragOverIndicator.cell === cell &&
93
+ this.state.dragOverIndicator.position === position;
94
+ }
95
+ }
96
+ exports.NotebookCellListView = NotebookCellListView;
97
+ function NotebookCellDivider({ onAddNewCell, onDrop, onDragOver }) {
98
+ const [hover, setHover] = React.useState(false);
99
+ return React.createElement("li", { className: 'theia-notebook-cell-divider', onMouseEnter: () => setHover(true), onMouseLeave: () => setHover(false), onDrop: onDrop, onDragOver: onDragOver }, hover && React.createElement("div", { className: 'theia-notebook-add-cell-buttons' },
100
+ React.createElement("button", { className: 'theia-notebook-add-cell-button', onClick: () => onAddNewCell(common_1.CellKind.Code), title: core_1.nls.localizeByDefault('Add Code Cell') },
101
+ React.createElement("div", { className: (0, browser_1.codicon)('add') + ' theia-notebook-add-cell-button-icon' }),
102
+ core_1.nls.localizeByDefault('Code')),
103
+ React.createElement("button", { className: 'theia-notebook-add-cell-button', onClick: () => onAddNewCell(common_1.CellKind.Markup), title: core_1.nls.localizeByDefault('Add Markdown Cell') },
104
+ React.createElement("div", { className: (0, browser_1.codicon)('add') + ' theia-notebook-add-cell-button-icon' }),
105
+ core_1.nls.localizeByDefault('Markdown'))));
106
+ }
107
+ exports.NotebookCellDivider = NotebookCellDivider;
108
+ function CellDropIndicator() {
109
+ return React.createElement("div", { className: 'theia-notebook-cell-drop-indicator' });
110
+ }
111
+ //# sourceMappingURL=notebook-cell-list-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-cell-list-view.js","sourceRoot":"","sources":["../../../src/browser/view/notebook-cell-list-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="react" />
2
+ import * as React from '@theia/core/shared/react';
3
+ import { CommandRegistry, MenuModelRegistry } from '@theia/core';
4
+ import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
5
+ import { ContextMenuRenderer } from '@theia/core/lib/browser';
6
+ import { NotebookModel } from '../view-model/notebook-model';
7
+ import { NotebookCellModel } from '../view-model/notebook-cell-model';
8
+ import { NotebookCellOutputModel } from '../view-model/notebook-cell-output-model';
9
+ export interface NotebookCellToolbarItem {
10
+ id: string;
11
+ icon?: string;
12
+ label?: string;
13
+ onClick: (e: React.MouseEvent) => void;
14
+ }
15
+ export declare class NotebookCellToolbarFactory {
16
+ protected menuRegistry: MenuModelRegistry;
17
+ protected contextKeyService: ContextKeyService;
18
+ protected readonly contextMenuRenderer: ContextMenuRenderer;
19
+ protected readonly commandRegistry: CommandRegistry;
20
+ renderCellToolbar(menuPath: string[], notebookModel: NotebookModel, cell: NotebookCellModel): React.ReactNode;
21
+ renderSidebar(menuPath: string[], notebookModel: NotebookModel, cell: NotebookCellModel, output?: NotebookCellOutputModel): React.ReactNode;
22
+ private getMenuItems;
23
+ private createToolbarItem;
24
+ }
25
+ //# sourceMappingURL=notebook-cell-toolbar-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-cell-toolbar-factory.d.ts","sourceRoot":"","sources":["../../../src/browser/view/notebook-cell-toolbar-factory.tsx"],"names":[],"mappings":";AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAwB,iBAAiB,EAAY,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC1C;AAED,qBACa,0BAA0B;IAGnC,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAG1C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAEpD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS;IAK7G,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,uBAAuB,GAAG,KAAK,CAAC,SAAS;IAK3I,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,iBAAiB;CAiB5B"}