@opensumi/ide-editor 3.2.5-next-1725353631.0 → 3.2.5-next-1725358238.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/doc-model/editor-document-model-service.d.ts +2 -1
- package/lib/browser/doc-model/editor-document-model-service.d.ts.map +1 -1
- package/lib/browser/doc-model/editor-document-model-service.js +22 -0
- package/lib/browser/doc-model/editor-document-model-service.js.map +1 -1
- package/lib/browser/doc-model/editor-document-model.d.ts +1 -0
- package/lib/browser/doc-model/editor-document-model.d.ts.map +1 -1
- package/lib/browser/doc-model/editor-document-model.js +14 -0
- package/lib/browser/doc-model/editor-document-model.js.map +1 -1
- package/lib/browser/doc-model/saveParticipants.d.ts.map +1 -1
- package/lib/browser/doc-model/saveParticipants.js +1 -0
- package/lib/browser/doc-model/saveParticipants.js.map +1 -1
- package/lib/browser/doc-model/types.d.ts +3 -1
- package/lib/browser/doc-model/types.d.ts.map +1 -1
- package/lib/browser/doc-model/types.js.map +1 -1
- package/lib/browser/editor-scrollbar/index.module.less +1 -1
- package/lib/browser/editor.contribution.d.ts.map +1 -1
- package/lib/browser/editor.contribution.js +7 -4
- package/lib/browser/editor.contribution.js.map +1 -1
- package/lib/browser/editor.module.less +3 -11
- package/lib/browser/format/formatter-selector.d.ts.map +1 -1
- package/lib/browser/format/formatter-selector.js +6 -8
- package/lib/browser/format/formatter-selector.js.map +1 -1
- package/lib/browser/fs-resource/fs-resource.d.ts.map +1 -1
- package/lib/browser/fs-resource/fs-resource.js +5 -7
- package/lib/browser/fs-resource/fs-resource.js.map +1 -1
- package/lib/browser/hooks/useEditor.d.ts +2 -2
- package/lib/browser/hooks/useEditor.d.ts.map +1 -1
- package/lib/browser/hooks/useEditor.js +10 -11
- package/lib/browser/hooks/useEditor.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +5 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/merge-conflict/merge-conflict.model.d.ts.map +1 -1
- package/lib/browser/merge-conflict/merge-conflict.model.js +3 -4
- package/lib/browser/merge-conflict/merge-conflict.model.js.map +1 -1
- package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.service.d.ts.map +1 -1
- package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.service.js +3 -3
- package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.service.js.map +1 -1
- package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.d.ts.map +1 -1
- package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.js +3 -3
- package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.js.map +1 -1
- package/lib/browser/notebook.service.d.ts +20 -0
- package/lib/browser/notebook.service.d.ts.map +1 -0
- package/lib/browser/notebook.service.js +24 -0
- package/lib/browser/notebook.service.js.map +1 -0
- package/lib/browser/tab.view.d.ts.map +1 -1
- package/lib/browser/tab.view.js +5 -0
- package/lib/browser/tab.view.js.map +1 -1
- package/lib/browser/untitled-resource.d.ts.map +1 -1
- package/lib/browser/untitled-resource.js +5 -7
- package/lib/browser/untitled-resource.js.map +1 -1
- package/lib/browser/workbench-editor.service.d.ts.map +1 -1
- package/lib/browser/workbench-editor.service.js +12 -20
- package/lib/browser/workbench-editor.service.js.map +1 -1
- package/lib/common/editor.d.ts +47 -0
- package/lib/common/editor.d.ts.map +1 -1
- package/lib/common/editor.js.map +1 -1
- package/lib/common/index.d.ts +4 -3
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +4 -3
- package/lib/common/index.js.map +1 -1
- package/lib/common/language.d.ts +1 -0
- package/lib/common/language.d.ts.map +1 -1
- package/lib/common/notebook.d.ts +169 -0
- package/lib/common/notebook.d.ts.map +1 -0
- package/lib/common/notebook.js +26 -0
- package/lib/common/notebook.js.map +1 -0
- package/package.json +14 -14
- package/src/browser/doc-model/editor-document-model-service.ts +25 -1
- package/src/browser/doc-model/editor-document-model.ts +18 -0
- package/src/browser/doc-model/saveParticipants.ts +1 -0
- package/src/browser/doc-model/types.ts +3 -1
- package/src/browser/editor-scrollbar/index.module.less +1 -1
- package/src/browser/editor.contribution.ts +8 -3
- package/src/browser/editor.module.less +3 -11
- package/src/browser/format/formatter-selector.ts +6 -8
- package/src/browser/fs-resource/fs-resource.ts +5 -7
- package/src/browser/hooks/useEditor.ts +13 -12
- package/src/browser/index.ts +6 -0
- package/src/browser/merge-conflict/merge-conflict.model.ts +4 -5
- package/src/browser/monaco-contrib/callHierarchy/callHierarchy.service.ts +4 -2
- package/src/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.ts +5 -2
- package/src/browser/notebook.service.ts +19 -0
- package/src/browser/tab.view.tsx +5 -0
- package/src/browser/untitled-resource.ts +5 -7
- package/src/browser/workbench-editor.service.ts +13 -21
- package/src/common/editor.ts +59 -1
- package/src/common/index.ts +4 -3
- package/src/common/language.ts +1 -0
- package/src/common/notebook.ts +196 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Injectable } from '@opensumi/di';
|
|
2
|
+
import { Emitter, Event, UriComponents, WithEventBus } from '@opensumi/ide-core-browser';
|
|
3
|
+
|
|
4
|
+
import type { INotebookModelAddedData, INotebookService, NotebookDataDto, NotebookDocumentChangeDto } from './types';
|
|
5
|
+
|
|
6
|
+
@Injectable()
|
|
7
|
+
export class NotebookService extends WithEventBus implements INotebookService {
|
|
8
|
+
createNotebook: (data?: NotebookDataDto) => Promise<{ uri: UriComponents }>;
|
|
9
|
+
openNotebook: (uriComponents: UriComponents) => Promise<{ uri: UriComponents }>;
|
|
10
|
+
saveNotebook: (uriComponents: UriComponents) => Promise<boolean>;
|
|
11
|
+
protected _onDidOpenNotebookDocument = new Emitter<INotebookModelAddedData>();
|
|
12
|
+
onDidOpenNotebookDocument: Event<INotebookModelAddedData> = this._onDidOpenNotebookDocument.event;
|
|
13
|
+
protected _onDidCloseNotebookDocument = new Emitter<UriComponents>();
|
|
14
|
+
onDidCloseNotebookDocument: Event<UriComponents> = this._onDidCloseNotebookDocument.event;
|
|
15
|
+
protected _onDidSaveNotebookDocument = new Emitter<UriComponents>();
|
|
16
|
+
onDidSaveNotebookDocument: Event<UriComponents> = this._onDidSaveNotebookDocument.event;
|
|
17
|
+
protected _onDidChangeNotebookDocument = new Emitter<NotebookDocumentChangeDto>();
|
|
18
|
+
onDidChangeNotebookDocument: Event<NotebookDocumentChangeDto> = this._onDidChangeNotebookDocument.event;
|
|
19
|
+
}
|
package/src/browser/tab.view.tsx
CHANGED
|
@@ -567,6 +567,11 @@ export const EditorActions = forwardRef<HTMLDivElement, IEditorActionsProps>(
|
|
|
567
567
|
const [hasFocus, setHasFocus] = useState<boolean>(editorService.currentEditorGroup === group);
|
|
568
568
|
const [args, setArgs] = useState<[URI, IEditorGroup, MaybeNull<URI>] | undefined>(acquireArgs());
|
|
569
569
|
|
|
570
|
+
/**
|
|
571
|
+
* 集成场景下可以不展示任何菜单,可以用以下代码取消菜单注册
|
|
572
|
+
* registry.unregisterMenuId(MenuId.EditorTitle);
|
|
573
|
+
* registry.unregisterMenuId(MenuId.EditorTitleRun);
|
|
574
|
+
*/
|
|
570
575
|
const noActions = menu.getMergedMenuNodes().length === 0;
|
|
571
576
|
|
|
572
577
|
useEffect(() => {
|
|
@@ -171,8 +171,8 @@ export class UntitledSchemeResourceProvider extends WithEventBus implements IRes
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
async shouldCloseResourceWithoutConfirm(resource: IResource) {
|
|
174
|
-
const documentModelRef = this.documentModelService.
|
|
175
|
-
if (documentModelRef && documentModelRef.
|
|
174
|
+
const documentModelRef = this.documentModelService.getModelDescription(resource.uri, 'close-resource-check');
|
|
175
|
+
if (documentModelRef && documentModelRef.dirty) {
|
|
176
176
|
return true;
|
|
177
177
|
}
|
|
178
178
|
return false;
|
|
@@ -195,16 +195,14 @@ export class UntitledSchemeResourceProvider extends WithEventBus implements IRes
|
|
|
195
195
|
documentModelRef.dispose();
|
|
196
196
|
return false;
|
|
197
197
|
} else {
|
|
198
|
+
documentModelRef.dispose();
|
|
198
199
|
return true;
|
|
199
200
|
}
|
|
200
201
|
}
|
|
201
202
|
|
|
202
203
|
async shouldCloseResource(resource: IResource) {
|
|
203
|
-
const documentModelRef = this.documentModelService.
|
|
204
|
-
if (!documentModelRef || !documentModelRef.
|
|
205
|
-
if (documentModelRef) {
|
|
206
|
-
documentModelRef.dispose();
|
|
207
|
-
}
|
|
204
|
+
const documentModelRef = this.documentModelService.getModelDescription(resource.uri, 'close-resource-check');
|
|
205
|
+
if (!documentModelRef || !documentModelRef.dirty) {
|
|
208
206
|
return true;
|
|
209
207
|
}
|
|
210
208
|
// 询问用户是否保存
|
|
@@ -44,6 +44,7 @@ import {
|
|
|
44
44
|
debounce,
|
|
45
45
|
formatLocalize,
|
|
46
46
|
getDebugLogger,
|
|
47
|
+
isDefined,
|
|
47
48
|
isUndefinedOrNull,
|
|
48
49
|
localize,
|
|
49
50
|
makeRandomHexString,
|
|
@@ -435,10 +436,9 @@ export class WorkbenchEditorServiceImpl extends WithEventBus implements Workbenc
|
|
|
435
436
|
// contextKeys
|
|
436
437
|
const getLanguageFromModel = (uri: URI) => {
|
|
437
438
|
let result: string | null = null;
|
|
438
|
-
const modelRef = this.documentModelManager.
|
|
439
|
+
const modelRef = this.documentModelManager.getModelDescription(uri, 'resourceContextKey');
|
|
439
440
|
if (modelRef) {
|
|
440
|
-
result = modelRef.
|
|
441
|
-
modelRef.dispose();
|
|
441
|
+
result = modelRef.languageId;
|
|
442
442
|
}
|
|
443
443
|
return result;
|
|
444
444
|
};
|
|
@@ -717,12 +717,10 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
717
717
|
/**
|
|
718
718
|
* 当前打开的所有resource
|
|
719
719
|
*/
|
|
720
|
-
// @observable.shallow
|
|
721
720
|
resources: IResource[] = [];
|
|
722
721
|
|
|
723
722
|
resourceStatus: Map<IResource, Promise<void>> = new Map();
|
|
724
723
|
|
|
725
|
-
// @observable.ref
|
|
726
724
|
_currentResource: IResource | null;
|
|
727
725
|
|
|
728
726
|
_currentOpenType: IEditorOpenType | null;
|
|
@@ -894,12 +892,9 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
894
892
|
if (!this._resourceContext) {
|
|
895
893
|
const getLanguageFromModel = (uri: URI) => {
|
|
896
894
|
let result: string | null = null;
|
|
897
|
-
const modelRef = this.documentModelManager.
|
|
895
|
+
const modelRef = this.documentModelManager.getModelDescription(uri, 'resourceContextKey');
|
|
898
896
|
if (modelRef) {
|
|
899
|
-
|
|
900
|
-
result = modelRef.instance.languageId;
|
|
901
|
-
}
|
|
902
|
-
modelRef.dispose();
|
|
897
|
+
result = modelRef.languageId;
|
|
903
898
|
}
|
|
904
899
|
return result;
|
|
905
900
|
};
|
|
@@ -1414,6 +1409,9 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
1414
1409
|
if (options && options.label) {
|
|
1415
1410
|
resource.name = options.label;
|
|
1416
1411
|
}
|
|
1412
|
+
if (options && isDefined(options.supportsRevive)) {
|
|
1413
|
+
resource.supportsRevive = options.supportsRevive;
|
|
1414
|
+
}
|
|
1417
1415
|
let replaceResource: IResource | null = null;
|
|
1418
1416
|
if (options && options.index !== undefined && options.index < this.resources.length) {
|
|
1419
1417
|
replaceResource = this.resources[options.index];
|
|
@@ -2305,9 +2303,7 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
2305
2303
|
// 否则使用 document 进行保存 (如果有)
|
|
2306
2304
|
const docRef = this.documentModelManager.getModelReference(resource.uri);
|
|
2307
2305
|
if (docRef) {
|
|
2308
|
-
|
|
2309
|
-
await docRef.instance.save(undefined, reason);
|
|
2310
|
-
}
|
|
2306
|
+
await docRef.instance.save(undefined, reason);
|
|
2311
2307
|
docRef.dispose();
|
|
2312
2308
|
}
|
|
2313
2309
|
}
|
|
@@ -2340,11 +2336,9 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
2340
2336
|
|
|
2341
2337
|
hasDirty(): boolean {
|
|
2342
2338
|
for (const r of this.resources) {
|
|
2343
|
-
const docRef = this.documentModelManager.
|
|
2339
|
+
const docRef = this.documentModelManager.getModelDescription(r.uri);
|
|
2344
2340
|
if (docRef) {
|
|
2345
|
-
|
|
2346
|
-
docRef.dispose();
|
|
2347
|
-
if (isDirty) {
|
|
2341
|
+
if (docRef.dirty) {
|
|
2348
2342
|
return true;
|
|
2349
2343
|
}
|
|
2350
2344
|
}
|
|
@@ -2358,15 +2352,13 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup {
|
|
|
2358
2352
|
calcDirtyCount(countedUris: Set<string> = new Set<string>()): number {
|
|
2359
2353
|
let count = 0;
|
|
2360
2354
|
for (const r of this.resources) {
|
|
2361
|
-
const docRef = this.documentModelManager.
|
|
2355
|
+
const docRef = this.documentModelManager.getModelDescription(r.uri, 'calc-dirty-count');
|
|
2362
2356
|
if (countedUris.has(r.uri.toString())) {
|
|
2363
2357
|
continue;
|
|
2364
2358
|
}
|
|
2365
2359
|
countedUris.add(r.uri.toString());
|
|
2366
2360
|
if (docRef) {
|
|
2367
|
-
|
|
2368
|
-
docRef.dispose();
|
|
2369
|
-
if (isDirty) {
|
|
2361
|
+
if (docRef.dirty) {
|
|
2370
2362
|
count += 1;
|
|
2371
2363
|
}
|
|
2372
2364
|
}
|
package/src/common/editor.ts
CHANGED
|
@@ -29,10 +29,66 @@ import type { ITextModel, ITextModelUpdateOptions } from '@opensumi/monaco-edito
|
|
|
29
29
|
|
|
30
30
|
export { ShowLightbulbIconMode } from '@opensumi/ide-monaco';
|
|
31
31
|
|
|
32
|
+
export interface IEditorDocumentDescription {
|
|
33
|
+
/**
|
|
34
|
+
* 文档URI
|
|
35
|
+
*/
|
|
36
|
+
readonly uri: URI;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A unique identifier associated with this model.
|
|
40
|
+
*/
|
|
41
|
+
readonly id: string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 编码
|
|
45
|
+
*/
|
|
46
|
+
readonly encoding: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 行末结束
|
|
50
|
+
*/
|
|
51
|
+
readonly eol: EOL;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 语言Id
|
|
55
|
+
*/
|
|
56
|
+
readonly languageId: string;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 是否被修改过
|
|
60
|
+
*/
|
|
61
|
+
readonly dirty: boolean;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* 能否修改
|
|
65
|
+
*/
|
|
66
|
+
readonly readonly: boolean;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 能否保存
|
|
70
|
+
*/
|
|
71
|
+
readonly savable: boolean;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 是否永远都显示 dirty
|
|
75
|
+
*/
|
|
76
|
+
readonly alwaysDirty: boolean;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 即便是 dirty 也要被 dispose
|
|
80
|
+
*/
|
|
81
|
+
readonly disposeEvenDirty: boolean;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* 是否关闭自动保存功能
|
|
85
|
+
*/
|
|
86
|
+
readonly closeAutoSave: boolean;
|
|
87
|
+
}
|
|
88
|
+
|
|
32
89
|
/**
|
|
33
90
|
* editorDocumentModel is a wrapped concept for monaco's textModel
|
|
34
91
|
*/
|
|
35
|
-
|
|
36
92
|
export interface IEditorDocumentModel extends IDisposable {
|
|
37
93
|
/**
|
|
38
94
|
* 文档URI
|
|
@@ -636,6 +692,8 @@ export interface IResourceOpenOptions {
|
|
|
636
692
|
* 当关闭时指定 force 参数,用来跳过 shouldClose 等逻辑
|
|
637
693
|
*/
|
|
638
694
|
forceClose?: boolean;
|
|
695
|
+
|
|
696
|
+
supportsRevive?: boolean;
|
|
639
697
|
}
|
|
640
698
|
|
|
641
699
|
export interface IResourceOpenResult {
|
package/src/common/index.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export * from './components';
|
|
1
2
|
export * from './doc-cache';
|
|
2
3
|
export * from './editor';
|
|
3
|
-
export * from './resource';
|
|
4
4
|
export * from './language';
|
|
5
|
-
export * from './utils';
|
|
6
5
|
export * from './language-status';
|
|
7
|
-
export * from './
|
|
6
|
+
export * from './notebook';
|
|
7
|
+
export * from './resource';
|
|
8
|
+
export * from './utils';
|
package/src/common/language.ts
CHANGED
|
@@ -201,6 +201,7 @@ export interface LanguageFilter {
|
|
|
201
201
|
scheme?: string;
|
|
202
202
|
pattern?: string | IRelativePattern;
|
|
203
203
|
hasAccessToAllModels?: boolean;
|
|
204
|
+
notebookType?: string;
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
export type LanguageSelector = string | LanguageFilter | (string | LanguageFilter)[];
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Event, IRange, UriComponents } from '@opensumi/ide-core-common';
|
|
2
|
+
|
|
3
|
+
export enum NotebookCellsChangeType {
|
|
4
|
+
ModelChange = 1,
|
|
5
|
+
Move = 2,
|
|
6
|
+
ChangeCellLanguage = 5,
|
|
7
|
+
Initialize = 6,
|
|
8
|
+
ChangeCellMetadata = 7,
|
|
9
|
+
Output = 8,
|
|
10
|
+
OutputItem = 9,
|
|
11
|
+
ChangeCellContent = 10,
|
|
12
|
+
ChangeDocumentMetadata = 11,
|
|
13
|
+
ChangeCellInternalMetadata = 12,
|
|
14
|
+
ChangeCellMime = 13,
|
|
15
|
+
Unknown = 100,
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type NotebookCellTextModelSplice<T> = [start: number, deleteCount: number, newItems: T[]];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* [start, end]
|
|
22
|
+
*/
|
|
23
|
+
export interface ICellRange {
|
|
24
|
+
/**
|
|
25
|
+
* zero based index
|
|
26
|
+
*/
|
|
27
|
+
start: number;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* zero based index
|
|
31
|
+
*/
|
|
32
|
+
end: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export enum CellKind {
|
|
36
|
+
Markup = 1,
|
|
37
|
+
Code = 2,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface NotebookCellMetadata {
|
|
41
|
+
/**
|
|
42
|
+
* custom metadata
|
|
43
|
+
*/
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface ICellExecutionError {
|
|
48
|
+
message: string;
|
|
49
|
+
stack: string | undefined;
|
|
50
|
+
uri: UriComponents;
|
|
51
|
+
location: IRange | undefined;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export type NotebookDocumentMetadata = Record<string, unknown>;
|
|
55
|
+
export interface NotebookCellInternalMetadata {
|
|
56
|
+
executionId?: string;
|
|
57
|
+
executionOrder?: number;
|
|
58
|
+
lastRunSuccess?: boolean;
|
|
59
|
+
runStartTime?: number;
|
|
60
|
+
runStartTimeAdjustment?: number;
|
|
61
|
+
runEndTime?: number;
|
|
62
|
+
renderDuration?: { [key: string]: number };
|
|
63
|
+
error?: ICellExecutionError;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface NotebookOutputItemDto {
|
|
67
|
+
readonly mime: string;
|
|
68
|
+
readonly valueBytes: Buffer;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface NotebookOutputDto {
|
|
72
|
+
items: NotebookOutputItemDto[];
|
|
73
|
+
outputId: string;
|
|
74
|
+
metadata?: Record<string, any>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface NotebookCellDto {
|
|
78
|
+
handle: number;
|
|
79
|
+
uri: UriComponents;
|
|
80
|
+
eol: string;
|
|
81
|
+
source: string[];
|
|
82
|
+
language: string;
|
|
83
|
+
mime?: string;
|
|
84
|
+
cellKind: CellKind;
|
|
85
|
+
outputs: NotebookOutputDto[];
|
|
86
|
+
metadata?: NotebookCellMetadata;
|
|
87
|
+
internalMetadata?: NotebookCellInternalMetadata;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface NotebookCellDataDto {
|
|
91
|
+
source: string;
|
|
92
|
+
language: string;
|
|
93
|
+
mime: string | undefined;
|
|
94
|
+
cellKind: CellKind;
|
|
95
|
+
outputs: NotebookOutputDto[];
|
|
96
|
+
metadata?: NotebookCellMetadata;
|
|
97
|
+
internalMetadata?: NotebookCellInternalMetadata;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface NotebookDataDto {
|
|
101
|
+
readonly cells: NotebookCellDataDto[];
|
|
102
|
+
readonly metadata: NotebookDocumentMetadata;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface NotebookCellsChangeLanguageEvent {
|
|
106
|
+
readonly kind: NotebookCellsChangeType.ChangeCellLanguage;
|
|
107
|
+
readonly index: number;
|
|
108
|
+
readonly language: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface NotebookCellsChangeMimeEvent {
|
|
112
|
+
readonly kind: NotebookCellsChangeType.ChangeCellMime;
|
|
113
|
+
readonly index: number;
|
|
114
|
+
readonly mime: string | undefined;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface NotebookCellsChangeMetadataEvent {
|
|
118
|
+
readonly kind: NotebookCellsChangeType.ChangeCellMetadata;
|
|
119
|
+
readonly index: number;
|
|
120
|
+
readonly metadata: NotebookCellMetadata;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface NotebookCellsChangeInternalMetadataEvent {
|
|
124
|
+
readonly kind: NotebookCellsChangeType.ChangeCellInternalMetadata;
|
|
125
|
+
readonly index: number;
|
|
126
|
+
readonly internalMetadata: NotebookCellInternalMetadata;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface NotebookCellContentChangeEvent {
|
|
130
|
+
readonly kind: NotebookCellsChangeType.ChangeCellContent;
|
|
131
|
+
readonly index: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export type NotebookRawContentEventDto =
|
|
135
|
+
| {
|
|
136
|
+
readonly kind: NotebookCellsChangeType.ModelChange;
|
|
137
|
+
readonly changes: NotebookCellTextModelSplice<NotebookCellDto>[];
|
|
138
|
+
}
|
|
139
|
+
| {
|
|
140
|
+
readonly kind: NotebookCellsChangeType.Move;
|
|
141
|
+
readonly index: number;
|
|
142
|
+
readonly length: number;
|
|
143
|
+
readonly newIdx: number;
|
|
144
|
+
}
|
|
145
|
+
| {
|
|
146
|
+
readonly kind: NotebookCellsChangeType.Output;
|
|
147
|
+
readonly index: number;
|
|
148
|
+
readonly outputs: NotebookOutputDto[];
|
|
149
|
+
}
|
|
150
|
+
| {
|
|
151
|
+
readonly kind: NotebookCellsChangeType.OutputItem;
|
|
152
|
+
readonly index: number;
|
|
153
|
+
readonly outputId: string;
|
|
154
|
+
readonly outputItems: NotebookOutputItemDto[];
|
|
155
|
+
readonly append: boolean;
|
|
156
|
+
}
|
|
157
|
+
| NotebookCellsChangeLanguageEvent
|
|
158
|
+
| NotebookCellsChangeMimeEvent
|
|
159
|
+
| NotebookCellsChangeMetadataEvent
|
|
160
|
+
| NotebookCellsChangeInternalMetadataEvent
|
|
161
|
+
| NotebookCellContentChangeEvent;
|
|
162
|
+
|
|
163
|
+
export interface NotebookCellsChangedEventDto {
|
|
164
|
+
readonly rawEvents: NotebookRawContentEventDto[];
|
|
165
|
+
readonly versionId: number;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface INotebookModelAddedData {
|
|
169
|
+
uri: UriComponents;
|
|
170
|
+
versionId: number;
|
|
171
|
+
cells: NotebookCellDto[];
|
|
172
|
+
viewType: string;
|
|
173
|
+
metadata?: NotebookDocumentMetadata;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface NotebookDocumentChangeDto {
|
|
177
|
+
uri: UriComponents;
|
|
178
|
+
event: NotebookCellsChangedEventDto;
|
|
179
|
+
isDirty: boolean;
|
|
180
|
+
metadata?: NotebookDocumentMetadata;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export const INotebookService = Symbol('INotebookService');
|
|
184
|
+
|
|
185
|
+
export interface INotebookService {
|
|
186
|
+
createNotebook: (data?: NotebookDataDto) => Promise<{ uri: UriComponents }>;
|
|
187
|
+
openNotebook: (uriComponents: UriComponents) => Promise<{ uri: UriComponents }>;
|
|
188
|
+
saveNotebook: (uriComponents: UriComponents) => Promise<boolean>;
|
|
189
|
+
|
|
190
|
+
onDidOpenNotebookDocument: Event<INotebookModelAddedData>;
|
|
191
|
+
onDidCloseNotebookDocument: Event<UriComponents>;
|
|
192
|
+
onDidSaveNotebookDocument: Event<UriComponents>;
|
|
193
|
+
onDidChangeNotebookDocument: Event<NotebookDocumentChangeDto>;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export const notebookCellScheme = 'vscode-notebook-cell';
|