@theia/notebook 1.67.0-next.56 → 1.67.0-next.59

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 (229) hide show
  1. package/lib/browser/contributions/cell-operations.d.ts +8 -0
  2. package/lib/browser/contributions/cell-operations.d.ts.map +1 -0
  3. package/lib/browser/contributions/cell-operations.js +45 -0
  4. package/lib/browser/contributions/cell-operations.js.map +1 -0
  5. package/lib/browser/contributions/notebook-actions-contribution.d.ts +48 -0
  6. package/lib/browser/contributions/notebook-actions-contribution.d.ts.map +1 -0
  7. package/lib/browser/contributions/notebook-actions-contribution.js +344 -0
  8. package/lib/browser/contributions/notebook-actions-contribution.js.map +1 -0
  9. package/lib/browser/contributions/notebook-cell-actions-contribution.d.ts +66 -0
  10. package/lib/browser/contributions/notebook-cell-actions-contribution.d.ts.map +1 -0
  11. package/lib/browser/contributions/notebook-cell-actions-contribution.js +526 -0
  12. package/lib/browser/contributions/notebook-cell-actions-contribution.js.map +1 -0
  13. package/lib/browser/contributions/notebook-color-contribution.d.ts +6 -0
  14. package/lib/browser/contributions/notebook-color-contribution.d.ts.map +1 -0
  15. package/lib/browser/contributions/notebook-color-contribution.js +247 -0
  16. package/lib/browser/contributions/notebook-color-contribution.js.map +1 -0
  17. package/lib/browser/contributions/notebook-context-keys.d.ts +44 -0
  18. package/lib/browser/contributions/notebook-context-keys.d.ts.map +1 -0
  19. package/lib/browser/contributions/notebook-context-keys.js +108 -0
  20. package/lib/browser/contributions/notebook-context-keys.js.map +1 -0
  21. package/lib/browser/contributions/notebook-label-provider-contribution.d.ts +19 -0
  22. package/lib/browser/contributions/notebook-label-provider-contribution.d.ts.map +1 -0
  23. package/lib/browser/contributions/notebook-label-provider-contribution.js +86 -0
  24. package/lib/browser/contributions/notebook-label-provider-contribution.js.map +1 -0
  25. package/lib/browser/contributions/notebook-outline-contribution.d.ts +29 -0
  26. package/lib/browser/contributions/notebook-outline-contribution.d.ts.map +1 -0
  27. package/lib/browser/contributions/notebook-outline-contribution.js +115 -0
  28. package/lib/browser/contributions/notebook-outline-contribution.js.map +1 -0
  29. package/lib/browser/contributions/notebook-output-action-contribution.d.ts +16 -0
  30. package/lib/browser/contributions/notebook-output-action-contribution.d.ts.map +1 -0
  31. package/lib/browser/contributions/notebook-output-action-contribution.js +83 -0
  32. package/lib/browser/contributions/notebook-output-action-contribution.js.map +1 -0
  33. package/lib/browser/contributions/notebook-status-bar-contribution.d.ts +12 -0
  34. package/lib/browser/contributions/notebook-status-bar-contribution.d.ts.map +1 -0
  35. package/lib/browser/contributions/notebook-status-bar-contribution.js +61 -0
  36. package/lib/browser/contributions/notebook-status-bar-contribution.js.map +1 -0
  37. package/lib/browser/contributions/notebook-undo-redo-handler.d.ts +10 -0
  38. package/lib/browser/contributions/notebook-undo-redo-handler.d.ts.map +1 -0
  39. package/lib/browser/contributions/notebook-undo-redo-handler.js +49 -0
  40. package/lib/browser/contributions/notebook-undo-redo-handler.js.map +1 -0
  41. package/lib/browser/index.d.ts +14 -0
  42. package/lib/browser/index.d.ts.map +1 -0
  43. package/lib/browser/index.js +32 -0
  44. package/lib/browser/index.js.map +1 -0
  45. package/lib/browser/notebook-cell-open-handler.d.ts +10 -0
  46. package/lib/browser/notebook-cell-open-handler.d.ts.map +1 -0
  47. package/lib/browser/notebook-cell-open-handler.js +52 -0
  48. package/lib/browser/notebook-cell-open-handler.js.map +1 -0
  49. package/lib/browser/notebook-cell-resource-resolver.d.ts +26 -0
  50. package/lib/browser/notebook-cell-resource-resolver.d.ts.map +1 -0
  51. package/lib/browser/notebook-cell-resource-resolver.js +109 -0
  52. package/lib/browser/notebook-cell-resource-resolver.js.map +1 -0
  53. package/lib/browser/notebook-editor-split-contribution.d.ts +14 -0
  54. package/lib/browser/notebook-editor-split-contribution.d.ts.map +1 -0
  55. package/lib/browser/notebook-editor-split-contribution.js +51 -0
  56. package/lib/browser/notebook-editor-split-contribution.js.map +1 -0
  57. package/lib/browser/notebook-editor-widget-factory.d.ts +20 -0
  58. package/lib/browser/notebook-editor-widget-factory.d.ts.map +1 -0
  59. package/lib/browser/notebook-editor-widget-factory.js +101 -0
  60. package/lib/browser/notebook-editor-widget-factory.js.map +1 -0
  61. package/lib/browser/notebook-editor-widget.d.ts +102 -0
  62. package/lib/browser/notebook-editor-widget.d.ts.map +1 -0
  63. package/lib/browser/notebook-editor-widget.js +336 -0
  64. package/lib/browser/notebook-editor-widget.js.map +1 -0
  65. package/lib/browser/notebook-frontend-module.d.ts +5 -0
  66. package/lib/browser/notebook-frontend-module.d.ts.map +1 -0
  67. package/lib/browser/notebook-frontend-module.js +116 -0
  68. package/lib/browser/notebook-frontend-module.js.map +1 -0
  69. package/lib/browser/notebook-open-handler.d.ts +29 -0
  70. package/lib/browser/notebook-open-handler.d.ts.map +1 -0
  71. package/lib/browser/notebook-open-handler.js +119 -0
  72. package/lib/browser/notebook-open-handler.js.map +1 -0
  73. package/lib/browser/notebook-output-utils.d.ts +13 -0
  74. package/lib/browser/notebook-output-utils.d.ts.map +1 -0
  75. package/lib/browser/notebook-output-utils.js +112 -0
  76. package/lib/browser/notebook-output-utils.js.map +1 -0
  77. package/lib/browser/notebook-renderer-registry.d.ts +25 -0
  78. package/lib/browser/notebook-renderer-registry.d.ts.map +1 -0
  79. package/lib/browser/notebook-renderer-registry.js +72 -0
  80. package/lib/browser/notebook-renderer-registry.js.map +1 -0
  81. package/lib/browser/notebook-type-registry.d.ts +12 -0
  82. package/lib/browser/notebook-type-registry.d.ts.map +1 -0
  83. package/lib/browser/notebook-type-registry.js +60 -0
  84. package/lib/browser/notebook-type-registry.js.map +1 -0
  85. package/lib/browser/notebook-types.d.ts +131 -0
  86. package/lib/browser/notebook-types.d.ts.map +1 -0
  87. package/lib/browser/notebook-types.js +28 -0
  88. package/lib/browser/notebook-types.js.map +1 -0
  89. package/lib/browser/renderers/cell-output-webview.d.ts +26 -0
  90. package/lib/browser/renderers/cell-output-webview.d.ts.map +1 -0
  91. package/lib/browser/renderers/cell-output-webview.js +21 -0
  92. package/lib/browser/renderers/cell-output-webview.js.map +1 -0
  93. package/lib/browser/service/notebook-cell-editor-service.d.ts +23 -0
  94. package/lib/browser/service/notebook-cell-editor-service.d.ts.map +1 -0
  95. package/lib/browser/service/notebook-cell-editor-service.js +89 -0
  96. package/lib/browser/service/notebook-cell-editor-service.js.map +1 -0
  97. package/lib/browser/service/notebook-cell-status-bar-service.d.ts +39 -0
  98. package/lib/browser/service/notebook-cell-status-bar-service.d.ts.map +1 -0
  99. package/lib/browser/service/notebook-cell-status-bar-service.js +69 -0
  100. package/lib/browser/service/notebook-cell-status-bar-service.js.map +1 -0
  101. package/lib/browser/service/notebook-clipboard-service.d.ts +10 -0
  102. package/lib/browser/service/notebook-clipboard-service.d.ts.map +1 -0
  103. package/lib/browser/service/notebook-clipboard-service.js +42 -0
  104. package/lib/browser/service/notebook-clipboard-service.js.map +1 -0
  105. package/lib/browser/service/notebook-context-manager.d.ts +28 -0
  106. package/lib/browser/service/notebook-context-manager.d.ts.map +1 -0
  107. package/lib/browser/service/notebook-context-manager.js +135 -0
  108. package/lib/browser/service/notebook-context-manager.js.map +1 -0
  109. package/lib/browser/service/notebook-editor-widget-service.d.ts +27 -0
  110. package/lib/browser/service/notebook-editor-widget-service.d.ts.map +1 -0
  111. package/lib/browser/service/notebook-editor-widget-service.js +124 -0
  112. package/lib/browser/service/notebook-editor-widget-service.js.map +1 -0
  113. package/lib/browser/service/notebook-execution-service.d.ts +25 -0
  114. package/lib/browser/service/notebook-execution-service.d.ts.map +1 -0
  115. package/lib/browser/service/notebook-execution-service.js +150 -0
  116. package/lib/browser/service/notebook-execution-service.js.map +1 -0
  117. package/lib/browser/service/notebook-execution-state-service.d.ts +78 -0
  118. package/lib/browser/service/notebook-execution-state-service.d.ts.map +1 -0
  119. package/lib/browser/service/notebook-execution-state-service.js +247 -0
  120. package/lib/browser/service/notebook-execution-state-service.js.map +1 -0
  121. package/lib/browser/service/notebook-kernel-history-service.d.ts +28 -0
  122. package/lib/browser/service/notebook-kernel-history-service.d.ts.map +1 -0
  123. package/lib/browser/service/notebook-kernel-history-service.js +116 -0
  124. package/lib/browser/service/notebook-kernel-history-service.js.map +1 -0
  125. package/lib/browser/service/notebook-kernel-quick-pick-service.d.ts +61 -0
  126. package/lib/browser/service/notebook-kernel-quick-pick-service.d.ts.map +1 -0
  127. package/lib/browser/service/notebook-kernel-quick-pick-service.js +425 -0
  128. package/lib/browser/service/notebook-kernel-quick-pick-service.js.map +1 -0
  129. package/lib/browser/service/notebook-kernel-service.d.ts +125 -0
  130. package/lib/browser/service/notebook-kernel-service.d.ts.map +1 -0
  131. package/lib/browser/service/notebook-kernel-service.js +268 -0
  132. package/lib/browser/service/notebook-kernel-service.js.map +1 -0
  133. package/lib/browser/service/notebook-model-resolver-service.d.ts +28 -0
  134. package/lib/browser/service/notebook-model-resolver-service.d.ts.map +1 -0
  135. package/lib/browser/service/notebook-model-resolver-service.js +157 -0
  136. package/lib/browser/service/notebook-model-resolver-service.js.map +1 -0
  137. package/lib/browser/service/notebook-monaco-text-model-service.d.ts +21 -0
  138. package/lib/browser/service/notebook-monaco-text-model-service.d.ts.map +1 -0
  139. package/lib/browser/service/notebook-monaco-text-model-service.js +73 -0
  140. package/lib/browser/service/notebook-monaco-text-model-service.js.map +1 -0
  141. package/lib/browser/service/notebook-options.d.ts +30 -0
  142. package/lib/browser/service/notebook-options.d.ts.map +1 -0
  143. package/lib/browser/service/notebook-options.js +130 -0
  144. package/lib/browser/service/notebook-options.js.map +1 -0
  145. package/lib/browser/service/notebook-renderer-messaging-service.d.ts +35 -0
  146. package/lib/browser/service/notebook-renderer-messaging-service.d.ts.map +1 -0
  147. package/lib/browser/service/notebook-renderer-messaging-service.js +100 -0
  148. package/lib/browser/service/notebook-renderer-messaging-service.js.map +1 -0
  149. package/lib/browser/service/notebook-service.d.ts +68 -0
  150. package/lib/browser/service/notebook-service.d.ts.map +1 -0
  151. package/lib/browser/service/notebook-service.js +184 -0
  152. package/lib/browser/service/notebook-service.js.map +1 -0
  153. package/lib/browser/view/notebook-cell-editor.d.ts +46 -0
  154. package/lib/browser/view/notebook-cell-editor.d.ts.map +1 -0
  155. package/lib/browser/view/notebook-cell-editor.js +271 -0
  156. package/lib/browser/view/notebook-cell-editor.js.map +1 -0
  157. package/lib/browser/view/notebook-cell-list-view.d.ts +58 -0
  158. package/lib/browser/view/notebook-cell-list-view.d.ts.map +1 -0
  159. package/lib/browser/view/notebook-cell-list-view.js +225 -0
  160. package/lib/browser/view/notebook-cell-list-view.js.map +1 -0
  161. package/lib/browser/view/notebook-cell-toolbar-factory.d.ts +33 -0
  162. package/lib/browser/view/notebook-cell-toolbar-factory.d.ts.map +1 -0
  163. package/lib/browser/view/notebook-cell-toolbar-factory.js +110 -0
  164. package/lib/browser/view/notebook-cell-toolbar-factory.js.map +1 -0
  165. package/lib/browser/view/notebook-cell-toolbar.d.ts +25 -0
  166. package/lib/browser/view/notebook-cell-toolbar.d.ts.map +1 -0
  167. package/lib/browser/view/notebook-cell-toolbar.js +51 -0
  168. package/lib/browser/view/notebook-cell-toolbar.js.map +1 -0
  169. package/lib/browser/view/notebook-code-cell-view.d.ts +93 -0
  170. package/lib/browser/view/notebook-code-cell-view.d.ts.map +1 -0
  171. package/lib/browser/view/notebook-code-cell-view.js +338 -0
  172. package/lib/browser/view/notebook-code-cell-view.js.map +1 -0
  173. package/lib/browser/view/notebook-find-widget.d.ts +63 -0
  174. package/lib/browser/view/notebook-find-widget.d.ts.map +1 -0
  175. package/lib/browser/view/notebook-find-widget.js +225 -0
  176. package/lib/browser/view/notebook-find-widget.js.map +1 -0
  177. package/lib/browser/view/notebook-main-toolbar.d.ts +53 -0
  178. package/lib/browser/view/notebook-main-toolbar.d.ts.map +1 -0
  179. package/lib/browser/view/notebook-main-toolbar.js +184 -0
  180. package/lib/browser/view/notebook-main-toolbar.js.map +1 -0
  181. package/lib/browser/view/notebook-markdown-cell-view.d.ts +28 -0
  182. package/lib/browser/view/notebook-markdown-cell-view.d.ts.map +1 -0
  183. package/lib/browser/view/notebook-markdown-cell-view.js +216 -0
  184. package/lib/browser/view/notebook-markdown-cell-view.js.map +1 -0
  185. package/lib/browser/view/notebook-viewport-service.d.ts +17 -0
  186. package/lib/browser/view/notebook-viewport-service.d.ts.map +1 -0
  187. package/lib/browser/view/notebook-viewport-service.js +61 -0
  188. package/lib/browser/view/notebook-viewport-service.js.map +1 -0
  189. package/lib/browser/view-model/notebook-cell-model.d.ts +137 -0
  190. package/lib/browser/view-model/notebook-cell-model.d.ts.map +1 -0
  191. package/lib/browser/view-model/notebook-cell-model.js +367 -0
  192. package/lib/browser/view-model/notebook-cell-model.js.map +1 -0
  193. package/lib/browser/view-model/notebook-cell-output-model.d.ts +17 -0
  194. package/lib/browser/view-model/notebook-cell-output-model.d.ts.map +1 -0
  195. package/lib/browser/view-model/notebook-cell-output-model.js +87 -0
  196. package/lib/browser/view-model/notebook-cell-output-model.js.map +1 -0
  197. package/lib/browser/view-model/notebook-model.d.ts +85 -0
  198. package/lib/browser/view-model/notebook-model.d.ts.map +1 -0
  199. package/lib/browser/view-model/notebook-model.js +446 -0
  200. package/lib/browser/view-model/notebook-model.js.map +1 -0
  201. package/lib/browser/view-model/notebook-view-model.d.ts +40 -0
  202. package/lib/browser/view-model/notebook-view-model.d.ts.map +1 -0
  203. package/lib/browser/view-model/notebook-view-model.js +120 -0
  204. package/lib/browser/view-model/notebook-view-model.js.map +1 -0
  205. package/lib/common/index.d.ts +3 -0
  206. package/lib/common/index.d.ts.map +1 -0
  207. package/lib/common/index.js +21 -0
  208. package/lib/common/index.js.map +1 -0
  209. package/lib/common/notebook-common.d.ts +227 -0
  210. package/lib/common/notebook-common.d.ts.map +1 -0
  211. package/lib/common/notebook-common.js +151 -0
  212. package/lib/common/notebook-common.js.map +1 -0
  213. package/lib/common/notebook-preferences.d.ts +15 -0
  214. package/lib/common/notebook-preferences.d.ts.map +1 -0
  215. package/lib/common/notebook-preferences.js +89 -0
  216. package/lib/common/notebook-preferences.js.map +1 -0
  217. package/lib/common/notebook-protocol.d.ts +21 -0
  218. package/lib/common/notebook-protocol.d.ts.map +1 -0
  219. package/lib/common/notebook-protocol.js +18 -0
  220. package/lib/common/notebook-protocol.js.map +1 -0
  221. package/lib/common/notebook-range.d.ts +14 -0
  222. package/lib/common/notebook-range.d.ts.map +1 -0
  223. package/lib/common/notebook-range.js +18 -0
  224. package/lib/common/notebook-range.js.map +1 -0
  225. package/lib/node/notebook-backend-module.d.ts +4 -0
  226. package/lib/node/notebook-backend-module.d.ts.map +1 -0
  227. package/lib/node/notebook-backend-module.js +23 -0
  228. package/lib/node/notebook-backend-module.js.map +1 -0
  229. package/package.json +7 -7
@@ -0,0 +1,271 @@
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 = exports.FIND_MATCH_DECORATION = exports.CURRENT_FIND_MATCH_DECORATION = void 0;
19
+ const React = require("@theia/core/shared/react");
20
+ const simple_monaco_editor_1 = require("@theia/monaco/lib/browser/simple-monaco-editor");
21
+ const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
22
+ const contextkey_1 = require("@theia/monaco-editor-core/esm/vs/platform/contextkey/common/contextkey");
23
+ const core_1 = require("@theia/core");
24
+ const notebook_context_keys_1 = require("../contributions/notebook-context-keys");
25
+ const editorExtensions_1 = require("@theia/monaco-editor-core/esm/vs/editor/browser/editorExtensions");
26
+ const textModel_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/model/textModel");
27
+ const model_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/model");
28
+ const browser_1 = require("@theia/core/lib/browser");
29
+ const DEFAULT_EDITOR_OPTIONS = {
30
+ ...monaco_editor_provider_1.MonacoEditorProvider.inlineOptions,
31
+ minHeight: -1,
32
+ maxHeight: -1,
33
+ scrollbar: {
34
+ ...monaco_editor_provider_1.MonacoEditorProvider.inlineOptions.scrollbar,
35
+ alwaysConsumeMouseWheel: false
36
+ },
37
+ lineDecorationsWidth: 10,
38
+ };
39
+ exports.CURRENT_FIND_MATCH_DECORATION = textModel_1.ModelDecorationOptions.register({
40
+ description: 'current-find-match',
41
+ stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,
42
+ zIndex: 13,
43
+ className: 'currentFindMatch',
44
+ inlineClassName: 'currentFindMatchInline',
45
+ showIfCollapsed: true,
46
+ overviewRuler: {
47
+ color: 'editorOverviewRuler.findMatchForeground',
48
+ position: model_1.OverviewRulerLane.Center
49
+ }
50
+ });
51
+ exports.FIND_MATCH_DECORATION = textModel_1.ModelDecorationOptions.register({
52
+ description: 'find-match',
53
+ stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,
54
+ zIndex: 10,
55
+ className: 'findMatch',
56
+ inlineClassName: 'findMatchInline',
57
+ showIfCollapsed: true,
58
+ overviewRuler: {
59
+ color: 'editorOverviewRuler.findMatchForeground',
60
+ position: model_1.OverviewRulerLane.Center
61
+ }
62
+ });
63
+ class CellEditor extends React.Component {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.toDispose = new core_1.DisposableCollection();
67
+ this.matches = [];
68
+ this.oldMatchDecorations = [];
69
+ this.handleResize = () => {
70
+ var _a;
71
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.refresh();
72
+ };
73
+ }
74
+ componentDidMount() {
75
+ var _a;
76
+ const cellViewModel = this.props.notebookViewModel.cellViewModels.get(this.props.cell.handle);
77
+ if (!cellViewModel) {
78
+ throw new Error('CellViewModel not found for cell ' + this.props.cell.handle);
79
+ }
80
+ this.disposeEditor();
81
+ this.toDispose.push(cellViewModel.onWillFocusCellEditor(focusRequest => {
82
+ var _a, _b, _c, _d, _e, _f;
83
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getControl().focus();
84
+ const lineCount = (_c = (_b = this.editor) === null || _b === void 0 ? void 0 : _b.getControl().getModel()) === null || _c === void 0 ? void 0 : _c.getLineCount();
85
+ if (focusRequest && lineCount !== undefined) {
86
+ (_d = this.editor) === null || _d === void 0 ? void 0 : _d.getControl().setPosition(focusRequest === 'lastLine' ?
87
+ { lineNumber: lineCount, column: 1 } :
88
+ { lineNumber: focusRequest, column: 1 }, 'keyboard');
89
+ }
90
+ const currentLine = (_f = (_e = this.editor) === null || _e === void 0 ? void 0 : _e.getControl().getPosition()) === null || _f === void 0 ? void 0 : _f.lineNumber;
91
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_FIRST_LINE, currentLine === 1);
92
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_LAST_LINE, currentLine === lineCount);
93
+ }));
94
+ this.toDispose.push(cellViewModel.onWillBlurCellEditor(() => this.blurEditor()));
95
+ this.toDispose.push(this.props.cell.onDidChangeEditorOptions(options => {
96
+ var _a;
97
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getControl().updateOptions(options);
98
+ }));
99
+ this.toDispose.push(this.props.cell.onDidChangeLanguage(language => {
100
+ var _a;
101
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.setLanguage(language);
102
+ }));
103
+ this.toDispose.push(this.props.cell.onDidFindMatches(matches => {
104
+ this.matches = matches;
105
+ (0, browser_1.animationFrame)().then(() => this.setMatches());
106
+ }));
107
+ this.toDispose.push(this.props.cell.onDidSelectFindMatch(match => this.centerEditorInView()));
108
+ this.toDispose.push(this.props.notebookViewModel.onDidChangeSelectedCell(e => {
109
+ var _a;
110
+ if (e.cell !== this.props.cell && ((_a = this.editor) === null || _a === void 0 ? void 0 : _a.getControl().hasTextFocus())) {
111
+ this.blurEditor();
112
+ }
113
+ }));
114
+ if (!this.props.notebookViewportService || (this.container && this.props.notebookViewportService.isElementInViewport(this.container))) {
115
+ this.initEditor();
116
+ }
117
+ else {
118
+ const disposable = (_a = this.props.notebookViewportService) === null || _a === void 0 ? void 0 : _a.onDidChangeViewport(() => {
119
+ if (!this.editor && this.container && this.props.notebookViewportService.isElementInViewport(this.container)) {
120
+ this.initEditor();
121
+ disposable.dispose();
122
+ }
123
+ });
124
+ this.toDispose.push(disposable);
125
+ }
126
+ this.toDispose.push(this.props.cell.onDidRequestCenterEditor(() => {
127
+ this.centerEditorInView();
128
+ }));
129
+ }
130
+ componentWillUnmount() {
131
+ if (this.resizeObserver) {
132
+ if (this.container) {
133
+ this.resizeObserver.unobserve(this.container);
134
+ }
135
+ this.resizeObserver.disconnect();
136
+ this.resizeObserver = undefined;
137
+ }
138
+ this.disposeEditor();
139
+ }
140
+ disposeEditor() {
141
+ if (this.editor) {
142
+ this.props.notebookCellEditorService.editorDisposed(this.editor.uri);
143
+ }
144
+ this.toDispose.dispose();
145
+ this.toDispose = new core_1.DisposableCollection();
146
+ }
147
+ centerEditorInView() {
148
+ var _a, _b;
149
+ const editorDomNode = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getControl().getDomNode();
150
+ if (editorDomNode) {
151
+ editorDomNode.scrollIntoView({
152
+ behavior: 'instant',
153
+ block: 'center'
154
+ });
155
+ }
156
+ else {
157
+ (_b = this.container) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
158
+ behavior: 'instant',
159
+ block: 'center'
160
+ });
161
+ }
162
+ }
163
+ async initEditor() {
164
+ const { cell, notebookModel, monacoServices } = this.props;
165
+ if (this.container) {
166
+ const editorNode = this.container;
167
+ editorNode.style.height = '';
168
+ const editorModel = await cell.resolveTextModel();
169
+ const uri = cell.uri;
170
+ this.editor = new simple_monaco_editor_1.SimpleMonacoEditor(uri, editorModel, editorNode, monacoServices, { ...DEFAULT_EDITOR_OPTIONS, ...cell.editorOptions }, [[contextkey_1.IContextKeyService, this.props.notebookContextManager.scopedStore]], { contributions: editorExtensions_1.EditorExtensionsRegistry.getEditorContributions().filter(c => c.id !== 'editor.contrib.findController') });
171
+ this.toDispose.push(this.editor);
172
+ this.editor.setLanguage(cell.language);
173
+ this.toDispose.push(this.editor.getControl().onDidContentSizeChange(() => {
174
+ editorNode.style.height = this.editor.getControl().getContentHeight() + 7 + 'px';
175
+ this.editor.setSize({ width: -1, height: this.editor.getControl().getContentHeight() });
176
+ }));
177
+ this.toDispose.push(this.editor.onDocumentContentChanged(e => {
178
+ notebookModel.cellDirtyChanged(cell, true);
179
+ }));
180
+ this.toDispose.push(this.editor.getControl().onDidFocusEditorText(() => {
181
+ this.props.notebookViewModel.setSelectedCell(cell, false);
182
+ this.props.notebookCellEditorService.editorFocusChanged(this.editor);
183
+ }));
184
+ this.toDispose.push(this.editor.getControl().onDidBlurEditorText(() => {
185
+ var _a;
186
+ if (((_a = this.props.notebookCellEditorService.getActiveCell()) === null || _a === void 0 ? void 0 : _a.uri.toString()) === this.props.cell.uri.toString()) {
187
+ this.props.notebookCellEditorService.editorFocusChanged(undefined);
188
+ }
189
+ }));
190
+ this.toDispose.push(this.editor.getControl().onDidChangeCursorSelection(e => {
191
+ const selectedText = this.editor.getControl().getModel().getValueInRange(e.selection);
192
+ // TODO handle secondary selections
193
+ this.props.cell.selection = {
194
+ start: { line: e.selection.startLineNumber - 1, character: e.selection.startColumn - 1 },
195
+ end: { line: e.selection.endLineNumber - 1, character: e.selection.endColumn - 1 }
196
+ };
197
+ this.props.notebookModel.selectedText = selectedText;
198
+ }));
199
+ this.toDispose.push(this.editor.getControl().onDidChangeCursorPosition(e => {
200
+ if (e.secondaryPositions.length === 0) {
201
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_FIRST_LINE, e.position.lineNumber === 1);
202
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_LAST_LINE, e.position.lineNumber === this.editor.getControl().getModel().getLineCount());
203
+ }
204
+ else {
205
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_FIRST_LINE, false);
206
+ this.props.notebookContextManager.scopedStore.setContext(notebook_context_keys_1.NOTEBOOK_CELL_CURSOR_LAST_LINE, false);
207
+ }
208
+ }));
209
+ this.props.notebookCellEditorService.editorCreated(uri, this.editor);
210
+ this.setMatches();
211
+ if (this.props.notebookViewModel.selectedCell === cell) {
212
+ this.editor.getControl().focus();
213
+ }
214
+ }
215
+ }
216
+ setMatches() {
217
+ if (!this.editor) {
218
+ return;
219
+ }
220
+ const decorations = [];
221
+ for (const match of this.matches) {
222
+ const decoration = match.selected ? exports.CURRENT_FIND_MATCH_DECORATION : exports.FIND_MATCH_DECORATION;
223
+ decorations.push({
224
+ range: {
225
+ startLineNumber: match.range.start.line,
226
+ startColumn: match.range.start.character,
227
+ endLineNumber: match.range.end.line,
228
+ endColumn: match.range.end.character
229
+ },
230
+ options: decoration
231
+ });
232
+ }
233
+ this.oldMatchDecorations = this.editor.getControl()
234
+ .changeDecorations(accessor => accessor.deltaDecorations(this.oldMatchDecorations, decorations));
235
+ }
236
+ setContainer(component) {
237
+ if (this.resizeObserver && this.container) {
238
+ this.resizeObserver.unobserve(this.container);
239
+ }
240
+ this.container = component !== null && component !== void 0 ? component : undefined;
241
+ if (this.container) {
242
+ if (!this.resizeObserver) {
243
+ this.resizeObserver = new ResizeObserver(() => {
244
+ this.handleResize();
245
+ });
246
+ }
247
+ this.resizeObserver.observe(this.container);
248
+ }
249
+ }
250
+ ;
251
+ estimateHeight() {
252
+ var _a, _b;
253
+ const lineHeight = (_b = (_a = this.props.fontInfo) === null || _a === void 0 ? void 0 : _a.lineHeight) !== null && _b !== void 0 ? _b : 20;
254
+ return this.props.cell.text.split(core_1.OS.backend.EOL).length * lineHeight + 10 + 7 + 'px';
255
+ }
256
+ render() {
257
+ return React.createElement("div", { className: 'theia-notebook-cell-editor', id: this.props.cell.uri.toString(), ref: container => this.setContainer(container), style: { height: this.editor ? undefined : this.estimateHeight() } });
258
+ }
259
+ blurEditor() {
260
+ var _a;
261
+ let parent = (_a = this.container) === null || _a === void 0 ? void 0 : _a.parentElement;
262
+ while (parent && !parent.classList.contains('theia-notebook-cell')) {
263
+ parent = parent.parentElement;
264
+ }
265
+ if (parent) {
266
+ parent.focus();
267
+ }
268
+ }
269
+ }
270
+ exports.CellEditor = CellEditor;
271
+ //# 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,58 @@
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, MenuModelRegistry } from '@theia/core';
8
+ import { NotebookContextManager } from '../service/notebook-context-manager';
9
+ import { NotebookViewModel } from '../view-model/notebook-view-model';
10
+ export interface CellRenderer {
11
+ render(notebookData: NotebookModel, cell: NotebookCellModel, index: number): React.ReactNode;
12
+ renderSidebar(notebookModel: NotebookModel, cell: NotebookCellModel): React.ReactNode;
13
+ renderDragImage(cell: NotebookCellModel): HTMLElement;
14
+ }
15
+ export declare function observeCellHeight(ref: HTMLDivElement | null, cell: NotebookCellModel): void;
16
+ interface CellListProps {
17
+ renderers: Map<CellKind, CellRenderer>;
18
+ notebookModel: NotebookModel;
19
+ notebookViewModel: NotebookViewModel;
20
+ notebookContext: NotebookContextManager;
21
+ toolbarRenderer: NotebookCellToolbarFactory;
22
+ commandRegistry: CommandRegistry;
23
+ menuRegistry: MenuModelRegistry;
24
+ }
25
+ interface NotebookCellListState {
26
+ selectedCell?: NotebookCellModel;
27
+ scrollIntoView: boolean;
28
+ dragOverIndicator: {
29
+ cell: NotebookCellModel;
30
+ position: 'top' | 'bottom';
31
+ } | undefined;
32
+ }
33
+ export declare class NotebookCellListView extends React.Component<CellListProps, NotebookCellListState> {
34
+ protected toDispose: DisposableCollection;
35
+ protected static dragGhost: HTMLElement | undefined;
36
+ protected cellListRef: React.RefObject<HTMLUListElement>;
37
+ constructor(props: CellListProps);
38
+ componentWillUnmount(): void;
39
+ render(): React.ReactNode;
40
+ renderCellContent(cell: NotebookCellModel, index: number): React.ReactNode;
41
+ renderCellSidebar(cell: NotebookCellModel): React.ReactNode;
42
+ protected onDragStart(event: React.DragEvent<HTMLElement>): void;
43
+ protected onDragOver(event: React.DragEvent<HTMLLIElement>, cell: NotebookCellModel, position?: 'top' | 'bottom'): void;
44
+ protected isEnabled(): boolean;
45
+ protected onDrop(event: React.DragEvent<HTMLLIElement>, dropElementIndex: number): void;
46
+ protected onAddNewCell(handler: (...args: unknown[]) => void, index: number): void;
47
+ protected shouldRenderDragOverIndicator(cell: NotebookCellModel, position: 'top' | 'bottom'): boolean;
48
+ }
49
+ export interface NotebookCellDividerProps {
50
+ isVisible: () => boolean;
51
+ onAddNewCell: (createCommand: (...args: unknown[]) => void) => void;
52
+ onDrop: (event: React.DragEvent<HTMLLIElement>) => void;
53
+ onDragOver: (event: React.DragEvent<HTMLLIElement>) => void;
54
+ menuRegistry: MenuModelRegistry;
55
+ }
56
+ export declare function NotebookCellDivider({ isVisible, onAddNewCell, onDrop, onDragOver, menuRegistry }: NotebookCellDividerProps): React.JSX.Element;
57
+ export {};
58
+ //# 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":"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"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotebookCellDivider = exports.NotebookCellListView = exports.observeCellHeight = 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
+ function observeCellHeight(ref, cell) {
26
+ var _a;
27
+ if (ref) {
28
+ cell.cellHeight = (_a = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect().height) !== null && _a !== void 0 ? _a : 0;
29
+ new ResizeObserver(entries => { var _a; return cell.cellHeight = (_a = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect().height) !== null && _a !== void 0 ? _a : 0; }).observe(ref);
30
+ }
31
+ }
32
+ exports.observeCellHeight = observeCellHeight;
33
+ class NotebookCellListView extends React.Component {
34
+ constructor(props) {
35
+ super(props);
36
+ this.toDispose = new core_1.DisposableCollection();
37
+ this.cellListRef = React.createRef();
38
+ this.state = { selectedCell: props.notebookViewModel.selectedCell, dragOverIndicator: undefined, scrollIntoView: true };
39
+ this.toDispose.push(props.notebookModel.onDidAddOrRemoveCell(e => {
40
+ if (e.newCellIds && e.newCellIds.length > 0) {
41
+ this.setState({
42
+ ...this.state,
43
+ selectedCell: props.notebookViewModel.selectedCell,
44
+ scrollIntoView: true
45
+ });
46
+ }
47
+ else {
48
+ this.setState({
49
+ ...this.state,
50
+ selectedCell: props.notebookViewModel.selectedCell,
51
+ scrollIntoView: false
52
+ });
53
+ }
54
+ }));
55
+ this.toDispose.push(props.notebookModel.onDidChangeContent(events => {
56
+ if (events.some(e => e.kind === common_1.NotebookCellsChangeType.Move)) {
57
+ // When a cell has been moved, we need to rerender the whole component
58
+ this.forceUpdate();
59
+ }
60
+ }));
61
+ this.toDispose.push(props.notebookViewModel.onDidChangeSelectedCell(e => {
62
+ this.setState({
63
+ ...this.state,
64
+ selectedCell: e.cell,
65
+ scrollIntoView: e.scrollIntoView
66
+ });
67
+ }));
68
+ this.toDispose.push((0, browser_1.onDomEvent)(document, 'focusin', () => {
69
+ (0, browser_1.animationFrame)().then(() => {
70
+ if (!this.cellListRef.current) {
71
+ return;
72
+ }
73
+ let hasCellFocus = false;
74
+ let hasFocus = false;
75
+ if (this.cellListRef.current.contains(document.activeElement)) {
76
+ if (this.props.notebookViewModel.selectedCell) {
77
+ hasCellFocus = true;
78
+ }
79
+ hasFocus = true;
80
+ }
81
+ this.props.notebookContext.changeCellFocus(hasCellFocus);
82
+ this.props.notebookContext.changeCellListFocus(hasFocus);
83
+ });
84
+ }));
85
+ }
86
+ componentWillUnmount() {
87
+ this.toDispose.dispose();
88
+ }
89
+ render() {
90
+ return React.createElement("ul", { className: 'theia-notebook-cell-list', ref: this.cellListRef, onDragStart: e => this.onDragStart(e) },
91
+ this.props.notebookModel.getVisibleCells()
92
+ .map((cell, index) => {
93
+ const cellViewModel = this.props.notebookViewModel.cellViewModels.get(cell.handle);
94
+ return React.createElement(React.Fragment, { key: 'cell-' + cell.handle },
95
+ React.createElement(NotebookCellDivider, { menuRegistry: this.props.menuRegistry, isVisible: () => this.isEnabled(), onAddNewCell: handler => this.onAddNewCell(handler, index), onDrop: e => this.onDrop(e, index), onDragOver: e => this.onDragOver(e, cell, 'top') }),
96
+ React.createElement(CellDropIndicator, { visible: this.shouldRenderDragOverIndicator(cell, 'top') }),
97
+ React.createElement("li", { className: 'theia-notebook-cell' + (this.state.selectedCell === cell ? ' focused' : '') + (this.isEnabled() ? ' draggable' : ''), onDragEnd: e => {
98
+ var _a;
99
+ (_a = NotebookCellListView.dragGhost) === null || _a === void 0 ? void 0 : _a.remove();
100
+ this.setState({ ...this.state, dragOverIndicator: undefined });
101
+ }, onDragOver: e => this.onDragOver(e, cell), onDrop: e => this.onDrop(e, index), draggable: true, tabIndex: -1, "data-cell-handle": cell.handle, ref: ref => {
102
+ if (ref && cell === this.state.selectedCell && this.state.scrollIntoView) {
103
+ ref.scrollIntoView({ block: 'nearest' });
104
+ if (cell.cellKind === common_1.CellKind.Markup && !(cellViewModel === null || cellViewModel === void 0 ? void 0 : cellViewModel.editing)) {
105
+ ref.focus();
106
+ }
107
+ }
108
+ }, onClick: e => {
109
+ this.setState({ ...this.state, selectedCell: cell });
110
+ this.props.notebookViewModel.setSelectedCell(cell, false);
111
+ } },
112
+ React.createElement("div", { className: 'theia-notebook-cell-sidebar' },
113
+ React.createElement("div", { className: 'theia-notebook-cell-marker' + (this.state.selectedCell === cell ? ' theia-notebook-cell-marker-selected' : '') }),
114
+ this.renderCellSidebar(cell)),
115
+ React.createElement("div", { className: 'theia-notebook-cell-content' }, this.renderCellContent(cell, index)),
116
+ this.state.selectedCell === cell &&
117
+ this.props.toolbarRenderer.renderCellToolbar(notebook_cell_actions_contribution_1.NotebookCellActionContribution.ACTION_MENU, cell, {
118
+ contextMenuArgs: () => [cell], commandArgs: () => [this.props.notebookModel, cell]
119
+ })),
120
+ React.createElement(CellDropIndicator, { visible: this.shouldRenderDragOverIndicator(cell, 'bottom') }));
121
+ }),
122
+ React.createElement(NotebookCellDivider, { menuRegistry: this.props.menuRegistry, isVisible: () => this.isEnabled(), onAddNewCell: handler => this.onAddNewCell(handler, 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') }));
123
+ }
124
+ renderCellContent(cell, index) {
125
+ const renderer = this.props.renderers.get(cell.cellKind);
126
+ if (!renderer) {
127
+ throw new Error(`No renderer found for cell type ${cell.cellKind}`);
128
+ }
129
+ return renderer.render(this.props.notebookModel, cell, index);
130
+ }
131
+ renderCellSidebar(cell) {
132
+ const renderer = this.props.renderers.get(cell.cellKind);
133
+ if (!renderer) {
134
+ throw new Error(`No renderer found for cell type ${cell.cellKind}`);
135
+ }
136
+ return renderer.renderSidebar(this.props.notebookModel, cell);
137
+ }
138
+ onDragStart(event) {
139
+ var _a, _b;
140
+ event.stopPropagation();
141
+ if (!this.isEnabled()) {
142
+ event.preventDefault();
143
+ return;
144
+ }
145
+ const cellHandle = event.target.getAttribute('data-cell-handle');
146
+ if (!cellHandle) {
147
+ throw new Error('Cell handle not found in element for cell drag event');
148
+ }
149
+ const index = this.props.notebookModel.getCellIndexByHandle(parseInt(cellHandle));
150
+ const cell = this.props.notebookModel.cells[index];
151
+ NotebookCellListView.dragGhost = document.createElement('div');
152
+ NotebookCellListView.dragGhost.classList.add('theia-notebook-drag-ghost-image');
153
+ NotebookCellListView.dragGhost.appendChild((_b = (_a = this.props.renderers.get(cell.cellKind)) === null || _a === void 0 ? void 0 : _a.renderDragImage(cell)) !== null && _b !== void 0 ? _b : document.createElement('div'));
154
+ document.body.appendChild(NotebookCellListView.dragGhost);
155
+ event.dataTransfer.setDragImage(NotebookCellListView.dragGhost, -10, 0);
156
+ event.dataTransfer.setData('text/theia-notebook-cell-index', index.toString());
157
+ event.dataTransfer.setData('text/plain', this.props.notebookModel.cells[index].source);
158
+ }
159
+ onDragOver(event, cell, position) {
160
+ if (!this.isEnabled()) {
161
+ return;
162
+ }
163
+ event.preventDefault();
164
+ event.stopPropagation();
165
+ // show indicator
166
+ this.setState({ ...this.state, dragOverIndicator: { cell, position: (position !== null && position !== void 0 ? position : event.nativeEvent.offsetY < event.currentTarget.clientHeight / 2) ? 'top' : 'bottom' } });
167
+ }
168
+ isEnabled() {
169
+ return !Boolean(this.props.notebookModel.readOnly);
170
+ }
171
+ onDrop(event, dropElementIndex) {
172
+ var _a;
173
+ if (!this.isEnabled()) {
174
+ this.setState({ dragOverIndicator: undefined });
175
+ return;
176
+ }
177
+ const index = parseInt(event.dataTransfer.getData('text/theia-notebook-cell-index'));
178
+ const isTargetBelow = index < dropElementIndex;
179
+ let newIdx = ((_a = this.state.dragOverIndicator) === null || _a === void 0 ? void 0 : _a.position) === 'top' ? dropElementIndex : dropElementIndex + 1;
180
+ newIdx = isTargetBelow ? newIdx - 1 : newIdx;
181
+ if (index !== undefined && index !== dropElementIndex) {
182
+ this.props.notebookModel.applyEdits([{
183
+ editType: 6 /* CellEditType.Move */,
184
+ length: 1,
185
+ index,
186
+ newIdx
187
+ }], true);
188
+ }
189
+ this.setState({ ...this.state, dragOverIndicator: undefined });
190
+ }
191
+ onAddNewCell(handler, index) {
192
+ if (this.isEnabled()) {
193
+ this.props.commandRegistry.executeCommand(notebook_actions_contribution_1.NotebookCommands.CHANGE_SELECTED_CELL.id, index - 1);
194
+ handler(this.props.notebookModel, index);
195
+ }
196
+ }
197
+ shouldRenderDragOverIndicator(cell, position) {
198
+ return this.isEnabled() &&
199
+ this.state.dragOverIndicator !== undefined &&
200
+ this.state.dragOverIndicator.cell === cell &&
201
+ this.state.dragOverIndicator.position === position;
202
+ }
203
+ }
204
+ exports.NotebookCellListView = NotebookCellListView;
205
+ function NotebookCellDivider({ isVisible, onAddNewCell, onDrop, onDragOver, menuRegistry }) {
206
+ const [hover, setHover] = React.useState(false);
207
+ const menuPath = notebook_actions_contribution_1.NotebookMenus.NOTEBOOK_MAIN_TOOLBAR_CELL_ADD_GROUP; // we contribute into this menu, so it will exist
208
+ const menuItems = menuRegistry.getMenu(menuPath).children.filter(item => core_1.CommandMenu.is(item)).map(item => item);
209
+ const renderItem = (item) => {
210
+ const execute = (...args) => {
211
+ if (core_1.CommandMenu.is(item)) {
212
+ item.run([...menuPath, item.id], ...args);
213
+ }
214
+ };
215
+ return React.createElement("button", { key: item.id, className: 'theia-notebook-add-cell-button', onClick: () => onAddNewCell(execute), title: core_1.nls.localizeByDefault(`Add ${item.label} Cell`) },
216
+ React.createElement("div", { className: item.icon + ' theia-notebook-add-cell-button-icon' }),
217
+ React.createElement("div", { className: 'theia-notebook-add-cell-button-text' }, item.label));
218
+ };
219
+ return React.createElement("li", { className: 'theia-notebook-cell-divider', onMouseEnter: () => setHover(true), onMouseLeave: () => setHover(false), onDrop: onDrop, onDragOver: onDragOver }, hover && isVisible() && React.createElement("div", { className: 'theia-notebook-add-cell-buttons' }, menuItems.map((item) => renderItem(item))));
220
+ }
221
+ exports.NotebookCellDivider = NotebookCellDivider;
222
+ function CellDropIndicator(props) {
223
+ return React.createElement("div", { className: 'theia-notebook-cell-drop-indicator', style: { visibility: props.visible ? 'visible' : 'hidden' } });
224
+ }
225
+ //# 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,33 @@
1
+ /// <reference types="react" />
2
+ import * as React from '@theia/core/shared/react';
3
+ import { CommandRegistry, DisposableCollection, Emitter, Event, 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 { NotebookCellModel } from '../view-model/notebook-cell-model';
7
+ import { NotebookContextManager } from '../service/notebook-context-manager';
8
+ export interface NotebookCellToolbarItem {
9
+ id: string;
10
+ icon?: string;
11
+ label?: string;
12
+ onClick: (e: React.MouseEvent) => void;
13
+ isVisible: () => boolean;
14
+ }
15
+ export interface toolbarItemOptions {
16
+ contextMenuArgs?: () => unknown[];
17
+ commandArgs?: () => unknown[];
18
+ }
19
+ export declare class NotebookCellToolbarFactory {
20
+ protected menuRegistry: MenuModelRegistry;
21
+ protected contextKeyService: ContextKeyService;
22
+ protected readonly contextMenuRenderer: ContextMenuRenderer;
23
+ protected readonly commandRegistry: CommandRegistry;
24
+ protected readonly notebookContextManager: NotebookContextManager;
25
+ protected readonly onDidChangeContextEmitter: Emitter<void>;
26
+ readonly onDidChangeContext: Event<void>;
27
+ protected toDisposeOnRender: DisposableCollection;
28
+ renderCellToolbar(menuPath: string[], cell: NotebookCellModel, itemOptions: toolbarItemOptions): React.ReactNode;
29
+ renderSidebar(menuPath: string[], cell: NotebookCellModel, itemOptions: toolbarItemOptions): React.ReactNode;
30
+ private getMenuItems;
31
+ private createToolbarItem;
32
+ }
33
+ //# sourceMappingURL=notebook-cell-toolbar-factory.d.ts.map