@opensumi/ide-notebook 3.5.1-next-1731935606.0 → 3.5.1-next-1732847732.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -2
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/kernel-panel/index.d.ts +0 -1
- package/lib/browser/kernel-panel/index.d.ts.map +1 -1
- package/lib/browser/kernel-panel/index.js +0 -1
- package/lib/browser/kernel-panel/index.js.map +1 -1
- package/lib/browser/libro/libro-opensumi-content-contribution.d.ts.map +1 -1
- package/lib/browser/libro/libro-opensumi-content-contribution.js +3 -2
- package/lib/browser/libro/libro-opensumi-content-contribution.js.map +1 -1
- package/lib/browser/libro-keybind-contribution.d.ts +5 -7
- package/lib/browser/libro-keybind-contribution.d.ts.map +1 -1
- package/lib/browser/libro-keybind-contribution.js +14 -23
- package/lib/browser/libro-keybind-contribution.js.map +1 -1
- package/lib/browser/libro.contribution.d.ts +4 -2
- package/lib/browser/libro.contribution.d.ts.map +1 -1
- package/lib/browser/libro.contribution.js +33 -4
- package/lib/browser/libro.contribution.js.map +1 -1
- package/lib/browser/variables/index.less +102 -0
- package/lib/browser/variables/inspector-script.d.ts +17 -0
- package/lib/browser/variables/inspector-script.d.ts.map +1 -0
- package/lib/browser/variables/inspector-script.js +339 -0
- package/lib/browser/variables/inspector-script.js.map +1 -0
- package/lib/browser/variables/libro-variable-color-registry.d.ts +6 -0
- package/lib/browser/variables/libro-variable-color-registry.d.ts.map +1 -0
- package/lib/browser/variables/libro-variable-color-registry.js +111 -0
- package/lib/browser/variables/libro-variable-color-registry.js.map +1 -0
- package/lib/browser/variables/libro-variable-module.d.ts +3 -0
- package/lib/browser/variables/libro-variable-module.d.ts.map +1 -0
- package/lib/browser/variables/libro-variable-module.js +5 -0
- package/lib/browser/variables/libro-variable-module.js.map +1 -0
- package/lib/browser/variables/variable-panel.d.ts +6 -0
- package/lib/browser/variables/variable-panel.d.ts.map +1 -0
- package/lib/browser/variables/variable-panel.js +57 -0
- package/lib/browser/variables/variable-panel.js.map +1 -0
- package/lib/browser/variables/variable-protocol.d.ts +2 -0
- package/lib/browser/variables/variable-protocol.d.ts.map +1 -0
- package/lib/browser/variables/variable-protocol.js +2 -0
- package/lib/browser/variables/variable-protocol.js.map +1 -0
- package/lib/browser/variables/variable-view.d.ts +45 -0
- package/lib/browser/variables/variable-view.d.ts.map +1 -0
- package/lib/browser/variables/variable-view.js +242 -0
- package/lib/browser/variables/variable-view.js.map +1 -0
- package/package.json +13 -13
- package/src/browser/index.ts +0 -2
- package/src/browser/kernel-panel/index.ts +0 -1
- package/src/browser/libro/libro-opensumi-content-contribution.ts +3 -2
- package/src/browser/libro-keybind-contribution.ts +17 -24
- package/src/browser/libro.contribution.tsx +47 -3
- package/src/browser/variables/index.less +102 -0
- package/src/browser/variables/inspector-script.ts +349 -0
- package/src/browser/variables/libro-variable-color-registry.ts +131 -0
- package/src/browser/variables/libro-variable-module.ts +6 -0
- package/src/browser/variables/variable-panel.tsx +73 -0
- package/src/browser/variables/variable-protocol.ts +1 -0
- package/src/browser/variables/variable-view.tsx +311 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts +0 -7
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts.map +0 -1
- package/lib/browser/kernel-panel/kernel.panel.contribution.js +0 -32
- package/lib/browser/kernel-panel/kernel.panel.contribution.js.map +0 -1
- package/src/browser/kernel-panel/kernel.panel.contribution.ts +0 -32
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { SearchOutlined, SelectOutlined } from '@ant-design/icons';
|
|
3
|
+
import { LibroContextKey, LibroJupyterModel, NotebookCommands } from '@difizen/libro-jupyter/noeditor';
|
|
4
|
+
import { BaseView, CommandRegistry, ThemeService, ViewInstance, inject, prop, transient, useInject, view, } from '@difizen/mana-app';
|
|
5
|
+
import { Input, List, Tag, Tooltip, message } from 'antd';
|
|
6
|
+
import React, { forwardRef } from 'react';
|
|
7
|
+
import './index.less';
|
|
8
|
+
import { DisposableCollection, localize } from '@opensumi/ide-core-common';
|
|
9
|
+
import { Languages } from './inspector-script';
|
|
10
|
+
const LibroVariableComponent = forwardRef((props, ref) => {
|
|
11
|
+
const instance = useInject(ViewInstance);
|
|
12
|
+
const themeService = useInject(ThemeService);
|
|
13
|
+
const libroContextKey = useInject(LibroContextKey);
|
|
14
|
+
return (React.createElement("div", { ref: ref, className: 'libro-variable-content' },
|
|
15
|
+
React.createElement("div", { className: 'libro-variable-search' },
|
|
16
|
+
React.createElement(Input, { className: 'libro-variable-search-input', placeholder: localize('notebook.variable.panel.search.placeholder'), prefix: React.createElement(SearchOutlined, null), onChange: (e) => instance.search(e.target.value), onFocus: () => {
|
|
17
|
+
libroContextKey.disableCommandMode();
|
|
18
|
+
}, onBlur: () => {
|
|
19
|
+
libroContextKey.enableCommandMode();
|
|
20
|
+
} }),
|
|
21
|
+
React.createElement("img", { src: `${themeService.getCurrentTheme().type === 'dark'
|
|
22
|
+
? 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*rY0oTpYcmZsAAAAAAAAAAAAADiuUAQ/original'
|
|
23
|
+
: 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*VApRSqHz8wQAAAAAAAAAAAAADiuUAQ/original'}`, onClick: instance.refresh, className: 'libro-variable-search-extra' })),
|
|
24
|
+
React.createElement(List, { className: 'libro-variable-list', itemLayout: 'horizontal', dataSource: instance.filteredList, renderItem: (item) => {
|
|
25
|
+
const DesrendeItem = () => React.createElement(Tooltip, { title: item.varContent }, item.varContent);
|
|
26
|
+
return (React.createElement(List.Item, null,
|
|
27
|
+
React.createElement(List.Item.Meta, { title: React.createElement("div", { className: 'libro-variable-title' },
|
|
28
|
+
React.createElement("span", { className: 'libro-variable-name' },
|
|
29
|
+
item.varName,
|
|
30
|
+
React.createElement(Tag, { className: 'libro-variable-type-tag', bordered: false }, item.varType)),
|
|
31
|
+
React.createElement(Tooltip, { placement: 'top', title: localize('notebook.variable.panel.show.detail') },
|
|
32
|
+
React.createElement(SelectOutlined, { onClick: () => instance.showVariable(item), className: 'libro-variable-extra' }))), description: React.createElement(DesrendeItem, null) })));
|
|
33
|
+
} })));
|
|
34
|
+
});
|
|
35
|
+
let LibroVariablePanelView = class LibroVariablePanelView extends BaseView {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(...arguments);
|
|
38
|
+
this.connectorToDispose = new DisposableCollection();
|
|
39
|
+
this.kernelInited = false;
|
|
40
|
+
this.view = LibroVariableComponent;
|
|
41
|
+
this.showVariable = async (variable) => {
|
|
42
|
+
if (!this.parent) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
let activeIndex = this.parent.model.cells.length;
|
|
46
|
+
if (this.parent.activeCell) {
|
|
47
|
+
activeIndex = this.parent.findCellIndex(this.parent.activeCell) + 1;
|
|
48
|
+
}
|
|
49
|
+
await this.parent.addCell({
|
|
50
|
+
cell: {
|
|
51
|
+
cell_type: 'code',
|
|
52
|
+
source: variable.varName,
|
|
53
|
+
metadata: {},
|
|
54
|
+
outputs: [],
|
|
55
|
+
},
|
|
56
|
+
}, activeIndex);
|
|
57
|
+
const cell = this.parent.model.cells[activeIndex];
|
|
58
|
+
window.requestAnimationFrame(() => {
|
|
59
|
+
var _a;
|
|
60
|
+
(_a = this.commands) === null || _a === void 0 ? void 0 : _a.executeCommand(NotebookCommands.RunCell.id, cell, this.parent);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
this.pause = () => {
|
|
64
|
+
this.connectorToDispose.dispose();
|
|
65
|
+
this.connectorToDispose = new DisposableCollection();
|
|
66
|
+
};
|
|
67
|
+
this.search = (v) => {
|
|
68
|
+
this.searchValue = v;
|
|
69
|
+
};
|
|
70
|
+
/*
|
|
71
|
+
* Invokes a inspection if the signal emitted from specified session is an 'execute_input' msg.
|
|
72
|
+
*/
|
|
73
|
+
this.queryCall = (msg) => {
|
|
74
|
+
var _a, _b, _c;
|
|
75
|
+
const msgType = msg.header.msg_type;
|
|
76
|
+
switch (msgType) {
|
|
77
|
+
case 'execute_input': {
|
|
78
|
+
const code = msg.content.code;
|
|
79
|
+
if (!(code === ((_a = this.languageModel) === null || _a === void 0 ? void 0 : _a.queryCommand)) &&
|
|
80
|
+
!(code === ((_b = this.languageModel) === null || _b === void 0 ? void 0 : _b.matrixQueryCommand)) &&
|
|
81
|
+
!code.startsWith(((_c = this.languageModel) === null || _c === void 0 ? void 0 : _c.widgetQueryCommand) || '')) {
|
|
82
|
+
this.performInspection();
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
default:
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
this.refresh = async () => {
|
|
91
|
+
try {
|
|
92
|
+
await this.performInspection();
|
|
93
|
+
message.success(localize('notebook.variable.panel.refresh.success', 'Variable refresh successful'));
|
|
94
|
+
}
|
|
95
|
+
catch (ex) {
|
|
96
|
+
message.error(localize('notebook.variable.panel.refresh.error', 'Variable refresh failed'));
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Performs an inspection by sending an execute request with the query command to the kernel.
|
|
101
|
+
*/
|
|
102
|
+
this.performInspection = () => {
|
|
103
|
+
const content = {
|
|
104
|
+
code: this.languageModel.queryCommand,
|
|
105
|
+
stop_on_error: false,
|
|
106
|
+
store_history: false,
|
|
107
|
+
};
|
|
108
|
+
return this.fetch(content, this.handleQueryResponse);
|
|
109
|
+
};
|
|
110
|
+
this.handleQueryResponse = (response) => {
|
|
111
|
+
const msgType = response.header.msg_type;
|
|
112
|
+
switch (msgType) {
|
|
113
|
+
case 'execute_result': {
|
|
114
|
+
const payload = response;
|
|
115
|
+
let content = payload.content.data['text/plain'];
|
|
116
|
+
if (content.slice(0, 1) === "'" || content.slice(0, 1) === '"') {
|
|
117
|
+
content = content.slice(1, -1);
|
|
118
|
+
content = content.replace(/\\"/g, '"').replace(/\\'/g, "'");
|
|
119
|
+
}
|
|
120
|
+
const update = JSON.parse(content);
|
|
121
|
+
this.list = update;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case 'display_data': {
|
|
125
|
+
const payloadDisplay = response;
|
|
126
|
+
let contentDisplay = payloadDisplay.content.data['text/plain'];
|
|
127
|
+
if (contentDisplay.slice(0, 1) === "'" || contentDisplay.slice(0, 1) === '"') {
|
|
128
|
+
contentDisplay = contentDisplay.slice(1, -1);
|
|
129
|
+
contentDisplay = contentDisplay.replace(/\\"/g, '"').replace(/\\'/g, "'");
|
|
130
|
+
}
|
|
131
|
+
const updateDisplay = JSON.parse(contentDisplay);
|
|
132
|
+
this.list = updateDisplay;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
default:
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
this.fetch = async (content, ioCallback) => {
|
|
140
|
+
const model = this.parent.model;
|
|
141
|
+
await model.kcReady;
|
|
142
|
+
const connection = model.kernelConnection;
|
|
143
|
+
const future = connection.requestExecute(content);
|
|
144
|
+
future.onIOPub = (msg) => {
|
|
145
|
+
ioCallback(msg);
|
|
146
|
+
};
|
|
147
|
+
return future.done;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
get filteredList() {
|
|
151
|
+
if (!this.searchValue) {
|
|
152
|
+
return this.list;
|
|
153
|
+
}
|
|
154
|
+
if (!this.list) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
return this.list.filter((item) => {
|
|
158
|
+
if (!this.searchValue) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
return item.varName.includes(this.searchValue);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async update() {
|
|
165
|
+
if (!this.parent) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (!(this.parent.model instanceof LibroJupyterModel)) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const model = this.parent.model;
|
|
172
|
+
const connection = model.kernelConnection;
|
|
173
|
+
if (connection) {
|
|
174
|
+
this.connectorToDispose.push(connection.statusChanged((status) => {
|
|
175
|
+
if (status === 'dead') {
|
|
176
|
+
this.kernelInited = false;
|
|
177
|
+
this.list = undefined;
|
|
178
|
+
this.connectorToDispose.dispose();
|
|
179
|
+
}
|
|
180
|
+
}));
|
|
181
|
+
this.connectorToDispose.push(connection.statusChanged((status) => {
|
|
182
|
+
if (status === 'restarting') {
|
|
183
|
+
this.kernelInited = false;
|
|
184
|
+
this.list = undefined;
|
|
185
|
+
this.setupConnector(model);
|
|
186
|
+
}
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
this.setupConnector(model);
|
|
190
|
+
}
|
|
191
|
+
async setupConnector(model) {
|
|
192
|
+
if (!this.kernelInited) {
|
|
193
|
+
model.kcReady.then(async (connection) => {
|
|
194
|
+
const lang = (await connection.info).language_info.name;
|
|
195
|
+
const languageModel = await Languages.getScript(lang);
|
|
196
|
+
this.languageModel = languageModel;
|
|
197
|
+
this.initOnKernel().then(() => {
|
|
198
|
+
this.kernelInited = true;
|
|
199
|
+
this.connectorToDispose.push(connection.iopubMessage(this.queryCall));
|
|
200
|
+
this.performInspection();
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
if (model.kernelConnection) {
|
|
206
|
+
this.connectorToDispose.push(model.kernelConnection.iopubMessage(this.queryCall));
|
|
207
|
+
this.performInspection();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Initializes the kernel by running the set up script located at _initScriptPath.
|
|
213
|
+
*/
|
|
214
|
+
initOnKernel() {
|
|
215
|
+
const content = {
|
|
216
|
+
code: this.languageModel.initScript,
|
|
217
|
+
stop_on_error: false,
|
|
218
|
+
silent: true,
|
|
219
|
+
};
|
|
220
|
+
return this.fetch(content, () => {
|
|
221
|
+
// no op
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
__decorate([
|
|
226
|
+
inject(CommandRegistry),
|
|
227
|
+
__metadata("design:type", Object)
|
|
228
|
+
], LibroVariablePanelView.prototype, "commands", void 0);
|
|
229
|
+
__decorate([
|
|
230
|
+
prop(),
|
|
231
|
+
__metadata("design:type", Array)
|
|
232
|
+
], LibroVariablePanelView.prototype, "list", void 0);
|
|
233
|
+
__decorate([
|
|
234
|
+
prop(),
|
|
235
|
+
__metadata("design:type", String)
|
|
236
|
+
], LibroVariablePanelView.prototype, "searchValue", void 0);
|
|
237
|
+
LibroVariablePanelView = __decorate([
|
|
238
|
+
transient(),
|
|
239
|
+
view('libro-variable-panel-view')
|
|
240
|
+
], LibroVariablePanelView);
|
|
241
|
+
export { LibroVariablePanelView };
|
|
242
|
+
//# sourceMappingURL=variable-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-view.js","sourceRoot":"","sources":["../../../src/browser/variables/variable-view.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-notebook",
|
|
3
|
-
"version": "3.5.1-next-
|
|
3
|
+
"version": "3.5.1-next-1732847732.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
"@difizen/libro-lsp": "0.2.45",
|
|
24
24
|
"@difizen/libro-toc": "0.2.45",
|
|
25
25
|
"@difizen/mana-app": "^0.1.27",
|
|
26
|
-
"@opensumi/ide-components": "3.5.1-next-
|
|
27
|
-
"@opensumi/ide-core-browser": "3.5.1-next-
|
|
28
|
-
"@opensumi/ide-core-common": "3.5.1-next-
|
|
29
|
-
"@opensumi/ide-editor": "3.5.1-next-
|
|
30
|
-
"@opensumi/ide-explorer": "3.5.1-next-
|
|
31
|
-
"@opensumi/ide-file-service": "3.5.1-next-
|
|
32
|
-
"@opensumi/ide-main-layout": "3.5.1-next-
|
|
33
|
-
"@opensumi/ide-monaco": "3.5.1-next-
|
|
34
|
-
"@opensumi/ide-outline": "3.5.1-next-
|
|
35
|
-
"@opensumi/ide-overlay": "3.5.1-next-
|
|
36
|
-
"@opensumi/ide-theme": "3.5.1-next-
|
|
26
|
+
"@opensumi/ide-components": "3.5.1-next-1732847732.0",
|
|
27
|
+
"@opensumi/ide-core-browser": "3.5.1-next-1732847732.0",
|
|
28
|
+
"@opensumi/ide-core-common": "3.5.1-next-1732847732.0",
|
|
29
|
+
"@opensumi/ide-editor": "3.5.1-next-1732847732.0",
|
|
30
|
+
"@opensumi/ide-explorer": "3.5.1-next-1732847732.0",
|
|
31
|
+
"@opensumi/ide-file-service": "3.5.1-next-1732847732.0",
|
|
32
|
+
"@opensumi/ide-main-layout": "3.5.1-next-1732847732.0",
|
|
33
|
+
"@opensumi/ide-monaco": "3.5.1-next-1732847732.0",
|
|
34
|
+
"@opensumi/ide-outline": "3.5.1-next-1732847732.0",
|
|
35
|
+
"@opensumi/ide-overlay": "3.5.1-next-1732847732.0",
|
|
36
|
+
"@opensumi/ide-theme": "3.5.1-next-1732847732.0",
|
|
37
37
|
"@opensumi/monaco-editor-core": "0.47.0-patch.15",
|
|
38
38
|
"antd": "^5.21.4"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "fc4ad0d13ee8e3b0553fff08c7831719e88003b2"
|
|
41
41
|
}
|
package/src/browser/index.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Injectable, Provider } from '@opensumi/di';
|
|
|
2
2
|
import { BrowserModule } from '@opensumi/ide-core-browser';
|
|
3
3
|
import { INotebookService } from '@opensumi/ide-editor';
|
|
4
4
|
|
|
5
|
-
import { KernelPanelContribution } from './kernel-panel/kernel.panel.contribution';
|
|
6
5
|
import { LibroKeybindContribution } from './libro-keybind-contribution';
|
|
7
6
|
import { LibroCommandContribution } from './libro.command';
|
|
8
7
|
import { LibroContribution } from './libro.contribution';
|
|
@@ -33,6 +32,5 @@ export class NotebookModule extends BrowserModule {
|
|
|
33
32
|
useClass: NotebookServiceOverride,
|
|
34
33
|
override: true,
|
|
35
34
|
},
|
|
36
|
-
KernelPanelContribution,
|
|
37
35
|
];
|
|
38
36
|
}
|
|
@@ -13,7 +13,7 @@ import { ContentLoaderType, OpensumiInjector } from '../mana';
|
|
|
13
13
|
export class LibroOpensumiContentContribution implements ContentContribution {
|
|
14
14
|
@inject(OpensumiInjector) injector: Injector;
|
|
15
15
|
|
|
16
|
-
canHandle = (options) => options.loadType === ContentLoaderType ? 100 : 1;
|
|
16
|
+
canHandle = (options) => (options.loadType === ContentLoaderType ? 100 : 1);
|
|
17
17
|
async loadContent(options: NotebookOption, model: LibroJupyterModel) {
|
|
18
18
|
const fileServiceClient: IFileServiceClient = this.injector.get(IFileServiceClient);
|
|
19
19
|
const messageService = this.injector.get(IMessageService);
|
|
@@ -33,7 +33,8 @@ export class LibroOpensumiContentContribution implements ContentContribution {
|
|
|
33
33
|
}
|
|
34
34
|
const uri = new URI(options.resource.toString());
|
|
35
35
|
const currentFileContents: IContentsModel = {
|
|
36
|
-
name: uri.path.
|
|
36
|
+
name: uri.path.base,
|
|
37
|
+
// TODO: should be relative path to notebook root, notebook root may not be same as ide root, and jupyter provide no api to get root dir
|
|
37
38
|
path: uri.path.toString(),
|
|
38
39
|
last_modified: stat?.lastModification.toString() || new Date().toJSON(),
|
|
39
40
|
created: stat?.createTime?.toString() || new Date().toJSON(),
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
import { LibroSearchToggleCommand, LibroService,
|
|
1
|
+
import { LibroSearchToggleCommand, LibroService, NotebookCommands } from '@difizen/libro-jupyter/noeditor';
|
|
2
2
|
import { Container, CommandRegistry as LibroCommandRegistry } from '@difizen/mana-app';
|
|
3
3
|
|
|
4
4
|
import { Autowired } from '@opensumi/di';
|
|
5
5
|
import {
|
|
6
6
|
ClientAppContribution,
|
|
7
|
+
CommandContribution,
|
|
7
8
|
CommandRegistry,
|
|
8
9
|
Domain,
|
|
9
10
|
IContextKeyService,
|
|
11
|
+
KeybindingContribution,
|
|
10
12
|
KeybindingRegistry,
|
|
11
13
|
KeybindingScope,
|
|
14
|
+
MaybePromise,
|
|
12
15
|
} from '@opensumi/ide-core-browser';
|
|
13
16
|
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
14
17
|
|
|
15
18
|
import { LIBRO_COMPONENTS_SCHEME_ID } from './libro.protocol';
|
|
16
19
|
import { ManaContainer } from './mana';
|
|
17
20
|
|
|
18
|
-
@Domain(ClientAppContribution)
|
|
19
|
-
export class LibroKeybindContribution implements ClientAppContribution {
|
|
21
|
+
@Domain(ClientAppContribution, KeybindingContribution, CommandContribution)
|
|
22
|
+
export class LibroKeybindContribution implements ClientAppContribution, KeybindingContribution, CommandContribution {
|
|
20
23
|
@Autowired(IContextKeyService) contextKeyService: IContextKeyService;
|
|
21
|
-
@Autowired(KeybindingRegistry) keybindingRegistry: KeybindingRegistry;
|
|
22
24
|
@Autowired(WorkbenchEditorService)
|
|
23
25
|
workbenchEditorService: WorkbenchEditorService;
|
|
24
26
|
@Autowired(CommandRegistry)
|
|
@@ -26,17 +28,12 @@ export class LibroKeybindContribution implements ClientAppContribution {
|
|
|
26
28
|
@Autowired(ManaContainer)
|
|
27
29
|
private readonly manaContainer: Container;
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
initialize(): MaybePromise<void> {
|
|
30
32
|
this.registerContextKey();
|
|
31
|
-
this.registerCommand();
|
|
32
|
-
this.registerKeybind();
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
registerContextKey() {
|
|
36
|
-
const notebookFocusContext = this.contextKeyService.createKey<boolean>(
|
|
37
|
-
'libroNotebookFocused',
|
|
38
|
-
this.hasActiveNotebook(),
|
|
39
|
-
);
|
|
36
|
+
const notebookFocusContext = this.contextKeyService.createKey<boolean>('libroNotebookFocused', false);
|
|
40
37
|
|
|
41
38
|
this.workbenchEditorService.onActiveResourceChange((e) => {
|
|
42
39
|
if (e?.uri?.path.ext === `.${LIBRO_COMPONENTS_SCHEME_ID}`) {
|
|
@@ -55,45 +52,41 @@ export class LibroKeybindContribution implements ClientAppContribution {
|
|
|
55
52
|
return this.manaContainer.get(LibroCommandRegistry);
|
|
56
53
|
}
|
|
57
54
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
registerCommand() {
|
|
63
|
-
this.commandRegistry.registerCommand(NotebookCommands['EnterCommandMode'], {
|
|
55
|
+
registerCommands(commands: CommandRegistry) {
|
|
56
|
+
commands.registerCommand(NotebookCommands['EnterCommandMode'], {
|
|
64
57
|
execute: () => {
|
|
65
58
|
this.libroCommandRegistry.executeCommand(NotebookCommands['EnterCommandMode'].id);
|
|
66
59
|
},
|
|
67
60
|
});
|
|
68
|
-
|
|
61
|
+
commands.registerCommand(NotebookCommands['RunCell'], {
|
|
69
62
|
execute: () => {
|
|
70
63
|
this.libroCommandRegistry.executeCommand(NotebookCommands['RunCell'].id);
|
|
71
64
|
},
|
|
72
65
|
});
|
|
73
|
-
|
|
66
|
+
commands.registerCommand(NotebookCommands['RunCellAndSelectNext'], {
|
|
74
67
|
execute: () => {
|
|
75
68
|
this.libroCommandRegistry.executeCommand(NotebookCommands['RunCellAndSelectNext'].id);
|
|
76
69
|
},
|
|
77
70
|
});
|
|
78
|
-
|
|
71
|
+
commands.registerCommand(NotebookCommands['RunCellAndInsertBelow'], {
|
|
79
72
|
execute: () => {
|
|
80
73
|
this.libroCommandRegistry.executeCommand(NotebookCommands['RunCellAndInsertBelow'].id);
|
|
81
74
|
},
|
|
82
75
|
});
|
|
83
|
-
|
|
76
|
+
commands.registerCommand(NotebookCommands['SplitCellAntCursor'], {
|
|
84
77
|
execute: () => {
|
|
85
78
|
this.libroCommandRegistry.executeCommand(NotebookCommands['SplitCellAntCursor'].id);
|
|
86
79
|
},
|
|
87
80
|
});
|
|
88
|
-
|
|
81
|
+
commands.registerCommand(LibroSearchToggleCommand.ShowLibroSearch, {
|
|
89
82
|
execute: () => {
|
|
90
83
|
this.libroCommandRegistry.executeCommand(LibroSearchToggleCommand.ShowLibroSearch.id);
|
|
91
84
|
},
|
|
92
85
|
});
|
|
93
86
|
}
|
|
94
87
|
|
|
95
|
-
|
|
96
|
-
|
|
88
|
+
registerKeybindings(keybindings: KeybindingRegistry): void {
|
|
89
|
+
keybindings.registerKeybindings(
|
|
97
90
|
[
|
|
98
91
|
{
|
|
99
92
|
keybinding: 'f1',
|
|
@@ -15,6 +15,8 @@ import {
|
|
|
15
15
|
ClientAppContribution,
|
|
16
16
|
CommandContribution,
|
|
17
17
|
type CommandRegistry,
|
|
18
|
+
ComponentContribution,
|
|
19
|
+
ComponentRegistry,
|
|
18
20
|
Disposable,
|
|
19
21
|
Domain,
|
|
20
22
|
IClientApp,
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
OpenerContribution,
|
|
23
25
|
Schemes,
|
|
24
26
|
URI,
|
|
27
|
+
localize,
|
|
25
28
|
} from '@opensumi/ide-core-browser';
|
|
26
29
|
import { message } from '@opensumi/ide-core-browser/lib/components';
|
|
27
30
|
import {
|
|
@@ -36,7 +39,7 @@ import { IEditorDocumentModelContentRegistry } from '@opensumi/ide-editor/lib/br
|
|
|
36
39
|
import { IconService } from '@opensumi/ide-theme/lib/browser';
|
|
37
40
|
import { IThemeService, IconType } from '@opensumi/ide-theme/lib/common';
|
|
38
41
|
|
|
39
|
-
import { initKernelPanelColorToken } from './kernel-panel';
|
|
42
|
+
import { KERNEL_PANEL_ID, KernelPanel, initKernelPanelColorToken } from './kernel-panel';
|
|
40
43
|
import { LibroOpensumiModule } from './libro';
|
|
41
44
|
import { LibroOpener } from './libro-opener';
|
|
42
45
|
import { initLibroColorToken } from './libro.color.tokens';
|
|
@@ -46,6 +49,9 @@ import { ManaContainer, initLibroOpensumi, manaContainer } from './mana/index';
|
|
|
46
49
|
import { NotebookDocumentContentProvider } from './notebook-document-content-provider';
|
|
47
50
|
import { NotebookServiceOverride } from './notebook.service';
|
|
48
51
|
import { initTocPanelColorToken } from './toc';
|
|
52
|
+
import { LibroVariableModule } from './variables/libro-variable-module';
|
|
53
|
+
import { VariablePanel } from './variables/variable-panel';
|
|
54
|
+
import { VARIABLE_ID } from './variables/variable-protocol';
|
|
49
55
|
|
|
50
56
|
const LIBRO_COMPONENTS_VIEW_COMMAND = {
|
|
51
57
|
id: 'opensumi-libro',
|
|
@@ -56,7 +62,7 @@ const LayoutWrapper: React.FC<React.PropsWithChildren> = ({ children }) => {
|
|
|
56
62
|
return (
|
|
57
63
|
<ManaComponents.Application
|
|
58
64
|
context={{ container: manaContainer }}
|
|
59
|
-
modules={[ManaAppPreset, LibroJupyterNoEditorModule, LibroTOCModule, LibroOpensumiModule]}
|
|
65
|
+
modules={[ManaAppPreset, LibroJupyterNoEditorModule, LibroTOCModule, LibroOpensumiModule, LibroVariableModule]}
|
|
60
66
|
renderChildren
|
|
61
67
|
onReady={() => setIsReady(true)}
|
|
62
68
|
>
|
|
@@ -65,12 +71,15 @@ const LayoutWrapper: React.FC<React.PropsWithChildren> = ({ children }) => {
|
|
|
65
71
|
);
|
|
66
72
|
};
|
|
67
73
|
|
|
74
|
+
export const NOTE_BOOK_PANEL_ID = 'notebook-panel';
|
|
75
|
+
|
|
68
76
|
@Domain(
|
|
69
77
|
ClientAppContribution,
|
|
70
78
|
BrowserEditorContribution,
|
|
71
79
|
ClientAppContextContribution,
|
|
72
80
|
CommandContribution,
|
|
73
81
|
OpenerContribution,
|
|
82
|
+
ComponentContribution,
|
|
74
83
|
)
|
|
75
84
|
export class LibroContribution
|
|
76
85
|
extends Disposable
|
|
@@ -79,7 +88,8 @@ export class LibroContribution
|
|
|
79
88
|
BrowserEditorContribution,
|
|
80
89
|
ClientAppContextContribution,
|
|
81
90
|
CommandContribution,
|
|
82
|
-
OpenerContribution
|
|
91
|
+
OpenerContribution,
|
|
92
|
+
ComponentContribution
|
|
83
93
|
{
|
|
84
94
|
@Autowired(ManaContainer)
|
|
85
95
|
private readonly manaContainer: Container;
|
|
@@ -115,6 +125,40 @@ export class LibroContribution
|
|
|
115
125
|
initLibroOpensumi(app.injector, manaContainer);
|
|
116
126
|
}
|
|
117
127
|
|
|
128
|
+
registerComponent(registry: ComponentRegistry) {
|
|
129
|
+
const iconClass = this.iconService.fromIcon(
|
|
130
|
+
'',
|
|
131
|
+
{
|
|
132
|
+
dark: 'https://mdn.alipayobjects.com/huamei_rm3rgy/afts/img/A*tFyaRbqux_4AAAAAAAAAAAAADr2GAQ/original',
|
|
133
|
+
light: 'https://mdn.alipayobjects.com/huamei_rm3rgy/afts/img/A*ebL7T4dWefUAAAAAAAAAAAAADr2GAQ/original',
|
|
134
|
+
},
|
|
135
|
+
IconType.Background,
|
|
136
|
+
);
|
|
137
|
+
registry.register(
|
|
138
|
+
'@opensumi/ide-notebook',
|
|
139
|
+
[
|
|
140
|
+
{
|
|
141
|
+
id: KERNEL_PANEL_ID,
|
|
142
|
+
name: localize('notebook.kernel.panel.title'),
|
|
143
|
+
component: KernelPanel,
|
|
144
|
+
priority: 0,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
id: VARIABLE_ID,
|
|
148
|
+
name: localize('notebook.variable.panel.title'),
|
|
149
|
+
weight: 2,
|
|
150
|
+
priority: 1,
|
|
151
|
+
component: VariablePanel,
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
{
|
|
155
|
+
activateKeyBinding: 'ctrlcmd+shift+k',
|
|
156
|
+
containerId: NOTE_BOOK_PANEL_ID,
|
|
157
|
+
iconClass,
|
|
158
|
+
},
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
118
162
|
registerClientAppContext(Layout: React.FC, injector: Injector): React.FC {
|
|
119
163
|
initLibroColorToken();
|
|
120
164
|
initKernelPanelColorToken();
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
.libro-variable-content {
|
|
2
|
+
height: calc(100% - 40px);
|
|
3
|
+
|
|
4
|
+
.libro-variable-list {
|
|
5
|
+
height: 100%;
|
|
6
|
+
overflow-y: auto;
|
|
7
|
+
|
|
8
|
+
.ant-list-item {
|
|
9
|
+
padding: 4px 12px 0;
|
|
10
|
+
border-bottom: none;
|
|
11
|
+
|
|
12
|
+
&:hover {
|
|
13
|
+
border-radius: 6px;
|
|
14
|
+
background-color: var(--mana-libro-variable-background-hover-color);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ant-list-item-meta {
|
|
18
|
+
border-bottom: 1px solid var(--mana-libro-variable-border-color);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ant-list-item-meta-title {
|
|
22
|
+
color: var(--mana-libro-variable-title-color);
|
|
23
|
+
|
|
24
|
+
.libro-variable-title {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: space-between;
|
|
28
|
+
|
|
29
|
+
.libro-variable-type-tag {
|
|
30
|
+
font-size: 10px;
|
|
31
|
+
margin-left: 8px;
|
|
32
|
+
color: var(--mana-libro-variable-tag-text-color);
|
|
33
|
+
background-color: var(--mana-libro-variable-tag-background-color);
|
|
34
|
+
border-radius: 4px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.libro-variable-extra {
|
|
38
|
+
color: var(--mana-libro-variable-icon-color);
|
|
39
|
+
transform: rotate(90deg);
|
|
40
|
+
|
|
41
|
+
:hover {
|
|
42
|
+
color: #1890ff;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.libro-variable-name {
|
|
49
|
+
color: var(--mana-libro-variable-name-color);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ant-list-item-meta-description {
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
color: var(--mana-libro-variable-description-color);
|
|
56
|
+
text-overflow: ellipsis;
|
|
57
|
+
white-space: nowrap;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.libro-variable-search {
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
padding: 4px 12px 8px;
|
|
66
|
+
|
|
67
|
+
&-input {
|
|
68
|
+
background: var(--mana-libro-variable-search-background-color);
|
|
69
|
+
border: none;
|
|
70
|
+
border-radius: 6px;
|
|
71
|
+
height: 28px;
|
|
72
|
+
|
|
73
|
+
input {
|
|
74
|
+
color: var(--mana-libro-variable-title-color);
|
|
75
|
+
background: transparent;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ant-input-prefix {
|
|
79
|
+
color: var(--mana-libro-variable-icon-color);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&-extra {
|
|
84
|
+
margin-left: 8px;
|
|
85
|
+
color: var(--mana-libro-variable-icon-color);
|
|
86
|
+
|
|
87
|
+
:hover {
|
|
88
|
+
color: #1890ff;
|
|
89
|
+
cursor: pointer;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.libro-variable-empty {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
height: 100%;
|
|
101
|
+
margin: unset !important;
|
|
102
|
+
}
|