@opensumi/ide-notebook 3.4.5-next-1730119322.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/README.md +33 -0
- package/lib/browser/index.d.ts +12 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +49 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.js +27 -0
- package/lib/browser/kernel-panel/collapse/collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/icon.d.ts +7 -0
- package/lib/browser/kernel-panel/collapse/icon.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/icon.js +64 -0
- package/lib/browser/kernel-panel/collapse/icon.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.d.ts +5 -0
- package/lib/browser/kernel-panel/collapse/index.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.js +66 -0
- package/lib/browser/kernel-panel/collapse/index.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/index.less +95 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.d.ts +9 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.js +41 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content-item.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.js +4 -0
- package/lib/browser/kernel-panel/collapse/kernel-collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.d.ts +10 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.d.ts.map +1 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.js +32 -0
- package/lib/browser/kernel-panel/collapse/page-collapse-content.js.map +1 -0
- package/lib/browser/kernel-panel/index.d.ts +5 -0
- package/lib/browser/kernel-panel/index.d.ts.map +1 -0
- package/lib/browser/kernel-panel/index.js +5 -0
- package/lib/browser/kernel-panel/index.js.map +1 -0
- package/lib/browser/kernel-panel/index.less +20 -0
- package/lib/browser/kernel-panel/kernel-panel-view.d.ts +4 -0
- package/lib/browser/kernel-panel/kernel-panel-view.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel-panel-view.js +72 -0
- package/lib/browser/kernel-panel/kernel-panel-view.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.d.ts +2 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.js +10 -0
- package/lib/browser/kernel-panel/kernel.panel.color.tokens.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts +7 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.js +32 -0
- package/lib/browser/kernel-panel/kernel.panel.contribution.js.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.d.ts +25 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.d.ts.map +1 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.js +7 -0
- package/lib/browser/kernel-panel/kernel.panel.protocol.js.map +1 -0
- package/lib/browser/libro/editor/editor-contribution.d.ts +13 -0
- package/lib/browser/libro/editor/editor-contribution.d.ts.map +1 -0
- package/lib/browser/libro/editor/editor-contribution.js +30 -0
- package/lib/browser/libro/editor/editor-contribution.js.map +1 -0
- package/lib/browser/libro/editor/index.less +48 -0
- package/lib/browser/libro/editor/keybind-handler.d.ts +14 -0
- package/lib/browser/libro/editor/keybind-handler.d.ts.map +1 -0
- package/lib/browser/libro/editor/keybind-handler.js +132 -0
- package/lib/browser/libro/editor/keybind-handler.js.map +1 -0
- package/lib/browser/libro/editor/module.d.ts +3 -0
- package/lib/browser/libro/editor/module.d.ts.map +1 -0
- package/lib/browser/libro/editor/module.js +22 -0
- package/lib/browser/libro/editor/module.js.map +1 -0
- package/lib/browser/libro/editor/opensumi-editor.d.ts +251 -0
- package/lib/browser/libro/editor/opensumi-editor.d.ts.map +1 -0
- package/lib/browser/libro/editor/opensumi-editor.js +567 -0
- package/lib/browser/libro/editor/opensumi-editor.js.map +1 -0
- package/lib/browser/libro/index.d.ts +4 -0
- package/lib/browser/libro/index.d.ts.map +1 -0
- package/lib/browser/libro/index.js +4 -0
- package/lib/browser/libro/index.js.map +1 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.d.ts +9 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.d.ts.map +1 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.js +71 -0
- package/lib/browser/libro/libro-opensumi-content-contribution.js.map +1 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.d.ts +10 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.d.ts.map +1 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.js +51 -0
- package/lib/browser/libro/libro-opensumi-save-content-contribution.js.map +1 -0
- package/lib/browser/libro/mana-module.d.ts +3 -0
- package/lib/browser/libro/mana-module.d.ts.map +1 -0
- package/lib/browser/libro/mana-module.js +8 -0
- package/lib/browser/libro/mana-module.js.map +1 -0
- package/lib/browser/libro-keybind-contribution.d.ts +19 -0
- package/lib/browser/libro-keybind-contribution.d.ts.map +1 -0
- package/lib/browser/libro-keybind-contribution.js +142 -0
- package/lib/browser/libro-keybind-contribution.js.map +1 -0
- package/lib/browser/libro-opener.d.ts +12 -0
- package/lib/browser/libro-opener.d.ts.map +1 -0
- package/lib/browser/libro-opener.js +83 -0
- package/lib/browser/libro-opener.js.map +1 -0
- package/lib/browser/libro.color.tokens.d.ts +2 -0
- package/lib/browser/libro.color.tokens.d.ts.map +1 -0
- package/lib/browser/libro.color.tokens.js +9 -0
- package/lib/browser/libro.color.tokens.js.map +1 -0
- package/lib/browser/libro.command.d.ts +6 -0
- package/lib/browser/libro.command.d.ts.map +1 -0
- package/lib/browser/libro.command.js +66 -0
- package/lib/browser/libro.command.js.map +1 -0
- package/lib/browser/libro.contribution.d.ts +29 -0
- package/lib/browser/libro.contribution.d.ts.map +1 -0
- package/lib/browser/libro.contribution.js +140 -0
- package/lib/browser/libro.contribution.js.map +1 -0
- package/lib/browser/libro.module.less +40 -0
- package/lib/browser/libro.protocol.d.ts +3 -0
- package/lib/browser/libro.protocol.d.ts.map +1 -0
- package/lib/browser/libro.protocol.js +3 -0
- package/lib/browser/libro.protocol.js.map +1 -0
- package/lib/browser/libro.service.d.ts +24 -0
- package/lib/browser/libro.service.d.ts.map +1 -0
- package/lib/browser/libro.service.js +68 -0
- package/lib/browser/libro.service.js.map +1 -0
- package/lib/browser/libro.view.d.ts +3 -0
- package/lib/browser/libro.view.d.ts.map +1 -0
- package/lib/browser/libro.view.js +54 -0
- package/lib/browser/libro.view.js.map +1 -0
- package/lib/browser/libro.view.tracker.d.ts +6 -0
- package/lib/browser/libro.view.tracker.d.ts.map +1 -0
- package/lib/browser/libro.view.tracker.js +28 -0
- package/lib/browser/libro.view.tracker.js.map +1 -0
- package/lib/browser/mana/index.d.ts +8 -0
- package/lib/browser/mana/index.d.ts.map +1 -0
- package/lib/browser/mana/index.js +15 -0
- package/lib/browser/mana/index.js.map +1 -0
- package/lib/browser/notebook-document-content-provider.d.ts +22 -0
- package/lib/browser/notebook-document-content-provider.d.ts.map +1 -0
- package/lib/browser/notebook-document-content-provider.js +80 -0
- package/lib/browser/notebook-document-content-provider.js.map +1 -0
- package/lib/browser/notebook.service.d.ts +27 -0
- package/lib/browser/notebook.service.d.ts.map +1 -0
- package/lib/browser/notebook.service.js +186 -0
- package/lib/browser/notebook.service.js.map +1 -0
- package/lib/browser/toc/index.d.ts +4 -0
- package/lib/browser/toc/index.d.ts.map +1 -0
- package/lib/browser/toc/index.js +4 -0
- package/lib/browser/toc/index.js.map +1 -0
- package/lib/browser/toc/toc.contribution.d.ts +6 -0
- package/lib/browser/toc/toc.contribution.d.ts.map +1 -0
- package/lib/browser/toc/toc.contribution.js +25 -0
- package/lib/browser/toc/toc.contribution.js.map +1 -0
- package/lib/browser/toc/toc.module.less +23 -0
- package/lib/browser/toc/toc.panel.color.tokens.d.ts +2 -0
- package/lib/browser/toc/toc.panel.color.tokens.d.ts.map +1 -0
- package/lib/browser/toc/toc.panel.color.tokens.js +6 -0
- package/lib/browser/toc/toc.panel.color.tokens.js.map +1 -0
- package/lib/browser/toc/toc.panel.d.ts +6 -0
- package/lib/browser/toc/toc.panel.d.ts.map +1 -0
- package/lib/browser/toc/toc.panel.js +61 -0
- package/lib/browser/toc/toc.panel.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/package.json +42 -0
- package/src/browser/index.ts +44 -0
- package/src/browser/kernel-panel/collapse/collapse-content.tsx +46 -0
- package/src/browser/kernel-panel/collapse/icon.tsx +171 -0
- package/src/browser/kernel-panel/collapse/index.less +95 -0
- package/src/browser/kernel-panel/collapse/index.tsx +111 -0
- package/src/browser/kernel-panel/collapse/kernel-collapse-content-item.tsx +77 -0
- package/src/browser/kernel-panel/collapse/kernel-collapse-content.tsx +17 -0
- package/src/browser/kernel-panel/collapse/page-collapse-content.tsx +53 -0
- package/src/browser/kernel-panel/index.less +20 -0
- package/src/browser/kernel-panel/index.ts +4 -0
- package/src/browser/kernel-panel/kernel-panel-view.tsx +104 -0
- package/src/browser/kernel-panel/kernel.panel.color.tokens.ts +39 -0
- package/src/browser/kernel-panel/kernel.panel.contribution.ts +32 -0
- package/src/browser/kernel-panel/kernel.panel.protocol.ts +24 -0
- package/src/browser/libro/editor/editor-contribution.ts +41 -0
- package/src/browser/libro/editor/index.less +48 -0
- package/src/browser/libro/editor/keybind-handler.ts +133 -0
- package/src/browser/libro/editor/module.ts +30 -0
- package/src/browser/libro/editor/opensumi-editor.ts +826 -0
- package/src/browser/libro/index.ts +3 -0
- package/src/browser/libro/libro-opensumi-content-contribution.ts +63 -0
- package/src/browser/libro/libro-opensumi-save-content-contribution.ts +43 -0
- package/src/browser/libro/mana-module.ts +9 -0
- package/src/browser/libro-keybind-contribution.ts +147 -0
- package/src/browser/libro-opener.ts +96 -0
- package/src/browser/libro.color.tokens.ts +32 -0
- package/src/browser/libro.command.ts +63 -0
- package/src/browser/libro.contribution.tsx +189 -0
- package/src/browser/libro.module.less +40 -0
- package/src/browser/libro.protocol.ts +2 -0
- package/src/browser/libro.service.ts +85 -0
- package/src/browser/libro.view.tracker.ts +18 -0
- package/src/browser/libro.view.tsx +62 -0
- package/src/browser/mana/index.ts +20 -0
- package/src/browser/notebook-document-content-provider.ts +100 -0
- package/src/browser/notebook.service.ts +195 -0
- package/src/browser/toc/index.ts +3 -0
- package/src/browser/toc/toc.contribution.ts +24 -0
- package/src/browser/toc/toc.module.less +23 -0
- package/src/browser/toc/toc.panel.color.tokens.ts +11 -0
- package/src/browser/toc/toc.panel.tsx +66 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { localize } from '@opensumi/ide-core-browser';
|
|
2
|
+
import { registerColor } from '@opensumi/ide-theme/lib/common';
|
|
3
|
+
|
|
4
|
+
export const initKernelPanelColorToken = () => {
|
|
5
|
+
registerColor(
|
|
6
|
+
'kernel.panel.collapse.header.label',
|
|
7
|
+
{ dark: '#ffffffd9', light: '#000a1ae3', hcDark: null, hcLight: null },
|
|
8
|
+
localize('kernel.panel.collapse.header.label', 'the collapse header label of kernel panel'),
|
|
9
|
+
true,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
registerColor(
|
|
13
|
+
'kernel.panel.collapse.item',
|
|
14
|
+
{ dark: '#ffffffa6', light: '#000a1ae3', hcDark: null, hcLight: null },
|
|
15
|
+
localize('kernel.panel.collapse.item', 'the collapse item color of kernel panel'),
|
|
16
|
+
true,
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
registerColor(
|
|
20
|
+
'kernel.panel.collapse.item.hover',
|
|
21
|
+
{ dark: '#ffffff14', light: '#151b2114', hcDark: null, hcLight: null },
|
|
22
|
+
localize('kernel.panel.collapse.item.hover', 'the collapse item hover color of kernel panel'),
|
|
23
|
+
true,
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
registerColor(
|
|
27
|
+
'kernel.panel.collapse.header.close.all',
|
|
28
|
+
{ dark: '#878c93', light: '#3c8dff', hcDark: null, hcLight: null },
|
|
29
|
+
localize('kernel.panel.collapse.header.close.all', 'the close all color of kernel panel'),
|
|
30
|
+
true,
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
registerColor(
|
|
34
|
+
'kernel.panel.collapse.header.close.hover',
|
|
35
|
+
{ dark: '#253944', light: '#151b2114', hcDark: null, hcLight: null },
|
|
36
|
+
localize('kernel.panel.collapse.header.close.all', 'the close all color of kernel panel'),
|
|
37
|
+
true,
|
|
38
|
+
);
|
|
39
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Autowired } from '@opensumi/di';
|
|
2
|
+
import { ComponentContribution, ComponentRegistry, Domain } from '@opensumi/ide-core-browser';
|
|
3
|
+
import { IconService } from '@opensumi/ide-theme/lib/browser';
|
|
4
|
+
import { IconType } from '@opensumi/ide-theme/lib/common';
|
|
5
|
+
|
|
6
|
+
import { KernelPanel } from './kernel-panel-view';
|
|
7
|
+
import { KERNEL_PANEL_ID } from './kernel.panel.protocol';
|
|
8
|
+
|
|
9
|
+
@Domain(ComponentContribution)
|
|
10
|
+
export class KernelPanelContribution implements ComponentContribution {
|
|
11
|
+
@Autowired(IconService)
|
|
12
|
+
protected readonly iconService: IconService;
|
|
13
|
+
|
|
14
|
+
registerComponent(registry: ComponentRegistry) {
|
|
15
|
+
const iconClass = this.iconService.fromIcon(
|
|
16
|
+
'',
|
|
17
|
+
{
|
|
18
|
+
dark: 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*ae86Sq9KTxcAAAAAAAAAAAAADiuUAQ/original',
|
|
19
|
+
light: 'https://mdn.alipayobjects.com/huamei_xt20ge/afts/img/A*fWPISIBPGfsAAAAAAAAAAAAADiuUAQ/original',
|
|
20
|
+
},
|
|
21
|
+
IconType.Background,
|
|
22
|
+
);
|
|
23
|
+
registry.register('@opensumi/ide-notebook', [], {
|
|
24
|
+
containerId: KERNEL_PANEL_ID,
|
|
25
|
+
iconClass,
|
|
26
|
+
title: '运行的终端和内核',
|
|
27
|
+
component: KernelPanel,
|
|
28
|
+
priority: 0,
|
|
29
|
+
activateKeyBinding: 'ctrlcmd+shift+k',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const KERNEL_PANEL_ID = 'kernel-panel';
|
|
2
|
+
|
|
3
|
+
export enum LibroPanelCollapseItemType {
|
|
4
|
+
PAGE = 'Page',
|
|
5
|
+
KERNEL = 'Kernel',
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface LibroPanelCollapseItem {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
shutdown?: () => Promise<void>;
|
|
12
|
+
restart?: () => Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface LibroPanelCollapseKernelItem extends LibroPanelCollapseItem {
|
|
16
|
+
notebooks: { sessionId: string; name: string; path: string }[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface Props {
|
|
20
|
+
type: LibroPanelCollapseItemType;
|
|
21
|
+
items: LibroPanelCollapseItem[] | undefined;
|
|
22
|
+
refresh: () => void;
|
|
23
|
+
shutdownAll?: () => Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CodeEditorContribution, CodeEditorFactory, LanguageSpecRegistry } from '@difizen/libro-code-editor';
|
|
2
|
+
import { EditorStateFactory } from '@difizen/libro-jupyter/noeditor';
|
|
3
|
+
import { inject, singleton } from '@difizen/mana-app';
|
|
4
|
+
|
|
5
|
+
import { Injector } from '@opensumi/di';
|
|
6
|
+
|
|
7
|
+
import { OpensumiInjector } from '../../mana';
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
LibroOpensumiEditorFactory,
|
|
11
|
+
OpensumiEditorState,
|
|
12
|
+
libroOpensumiEditorDefaultConfig,
|
|
13
|
+
stateFactory,
|
|
14
|
+
} from './opensumi-editor';
|
|
15
|
+
|
|
16
|
+
@singleton({ contrib: [CodeEditorContribution] })
|
|
17
|
+
export class LibroE2EditorContribution implements CodeEditorContribution {
|
|
18
|
+
@inject(LanguageSpecRegistry)
|
|
19
|
+
protected readonly languageSpecRegistry: LanguageSpecRegistry;
|
|
20
|
+
|
|
21
|
+
factory: CodeEditorFactory;
|
|
22
|
+
|
|
23
|
+
stateFactory: EditorStateFactory<OpensumiEditorState>;
|
|
24
|
+
|
|
25
|
+
defaultConfig = libroOpensumiEditorDefaultConfig;
|
|
26
|
+
|
|
27
|
+
constructor(
|
|
28
|
+
@inject(LibroOpensumiEditorFactory)
|
|
29
|
+
libroOpensumiEditorFactory: LibroOpensumiEditorFactory,
|
|
30
|
+
@inject(OpensumiInjector) injector: Injector,
|
|
31
|
+
) {
|
|
32
|
+
this.factory = libroOpensumiEditorFactory;
|
|
33
|
+
this.stateFactory = stateFactory(injector);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
37
|
+
canHandle(mime: string): number {
|
|
38
|
+
// 代码编辑都使用opensumi编辑器
|
|
39
|
+
return 50 + 2;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
.libro-opensumi-editor-container {
|
|
2
|
+
padding: 12px 0 18px;
|
|
3
|
+
background: var(--mana-libro-input-background) !important;
|
|
4
|
+
border-radius: 4px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.libro-opensumi-editor-container .libro-opensumi-editor .margin {
|
|
8
|
+
background-color: var(--mana-libro-input-background) !important;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.libro-opensumi-editor {
|
|
12
|
+
background: var(--mana-libro-input-background) !important;
|
|
13
|
+
|
|
14
|
+
.monaco-editor-background {
|
|
15
|
+
background-color: var(--mana-libro-input-background) !important;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.monaco-editor-background,
|
|
19
|
+
.margin {
|
|
20
|
+
background: var(--mana-libro-input-background) !important;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.findMatch {
|
|
24
|
+
background-color: var(--mana-libro-editor-search-match) !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.currentFindMatch {
|
|
28
|
+
background-color: var(--mana-libro-editor-search-currentmatch) !important;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.current-line-margin,
|
|
32
|
+
.current-line-both {
|
|
33
|
+
background: var(--mana-libro-editor-activeline-color) !important;
|
|
34
|
+
border: unset !important;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.line-numbers {
|
|
38
|
+
margin-left: 8px;
|
|
39
|
+
color: var(--mana-libro-editor-gutter-number-color) !important;
|
|
40
|
+
font-weight: 400;
|
|
41
|
+
font-size: 13px;
|
|
42
|
+
// font-family: Menlo-Regular, consolas, 'DejaVu Sans Mono', monospace !important;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.cursors-layer .cursor {
|
|
46
|
+
background-color: var(--mana-libro-editor-cursor-color);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { LibroSearchToggleCommand, LibroService, LibroView, NotebookCommands } from '@difizen/libro-jupyter/noeditor';
|
|
2
|
+
import { ApplicationContribution, CommandRegistry, inject, singleton } from '@difizen/mana-app';
|
|
3
|
+
|
|
4
|
+
import { Injector } from '@opensumi/di';
|
|
5
|
+
import {
|
|
6
|
+
IContextKeyService,
|
|
7
|
+
KeybindingRegistry,
|
|
8
|
+
KeybindingScope,
|
|
9
|
+
CommandRegistry as SumiCommandRegistry,
|
|
10
|
+
} from '@opensumi/ide-core-browser';
|
|
11
|
+
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
12
|
+
|
|
13
|
+
import { LIBRO_COMPONENTS_SCHEME_ID } from '../../libro.protocol';
|
|
14
|
+
import { OpensumiInjector } from '../../mana/index';
|
|
15
|
+
|
|
16
|
+
@singleton({ contrib: ApplicationContribution })
|
|
17
|
+
export class Keybindhandler implements ApplicationContribution {
|
|
18
|
+
@inject(OpensumiInjector) injector: Injector;
|
|
19
|
+
@inject(CommandRegistry) protected readonly commandRegistry: CommandRegistry;
|
|
20
|
+
@inject(LibroService) protected readonly libroService: LibroService;
|
|
21
|
+
|
|
22
|
+
onStart() {
|
|
23
|
+
this.registerContextKey();
|
|
24
|
+
this.registerCommand();
|
|
25
|
+
this.registerKeybind();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
registerContextKey() {
|
|
29
|
+
const contextKeyService: IContextKeyService = this.injector.get(IContextKeyService);
|
|
30
|
+
const workbenchEditorService: WorkbenchEditorService = this.injector.get(WorkbenchEditorService);
|
|
31
|
+
const notebookFocusContext = contextKeyService.createKey<boolean>('libroNotebookFocused', this.hasActiveNotebook());
|
|
32
|
+
|
|
33
|
+
workbenchEditorService.onActiveResourceChange((e) => {
|
|
34
|
+
if (e?.uri?.path.ext === `.${LIBRO_COMPONENTS_SCHEME_ID}`) {
|
|
35
|
+
notebookFocusContext.set(true);
|
|
36
|
+
} else {
|
|
37
|
+
notebookFocusContext.set(false);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
hasActiveNotebook() {
|
|
43
|
+
return this.libroService.active instanceof LibroView;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
registerCommand() {
|
|
47
|
+
const sumiCommandRegistry: SumiCommandRegistry = this.injector.get(SumiCommandRegistry);
|
|
48
|
+
sumiCommandRegistry.registerCommand(NotebookCommands['EnterCommandMode'], {
|
|
49
|
+
execute: () => {
|
|
50
|
+
this.commandRegistry.executeCommand(NotebookCommands['EnterCommandMode'].id);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
sumiCommandRegistry.registerCommand(NotebookCommands['RunCell'], {
|
|
54
|
+
execute: () => {
|
|
55
|
+
this.commandRegistry.executeCommand(NotebookCommands['RunCell'].id);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
sumiCommandRegistry.registerCommand(NotebookCommands['RunCellAndSelectNext'], {
|
|
59
|
+
execute: () => {
|
|
60
|
+
this.commandRegistry.executeCommand(NotebookCommands['RunCellAndSelectNext'].id);
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
sumiCommandRegistry.registerCommand(NotebookCommands['RunCellAndInsertBelow'], {
|
|
64
|
+
execute: () => {
|
|
65
|
+
this.commandRegistry.executeCommand(NotebookCommands['RunCellAndInsertBelow'].id);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
sumiCommandRegistry.registerCommand(NotebookCommands['SplitCellAntCursor'], {
|
|
69
|
+
execute: () => {
|
|
70
|
+
this.commandRegistry.executeCommand(NotebookCommands['SplitCellAntCursor'].id);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
sumiCommandRegistry.registerCommand(LibroSearchToggleCommand.ShowLibroSearch, {
|
|
74
|
+
execute: () => {
|
|
75
|
+
this.commandRegistry.executeCommand(LibroSearchToggleCommand.ShowLibroSearch.id);
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
registerKeybind() {
|
|
81
|
+
const keybindingService: KeybindingRegistry = this.injector.get(KeybindingRegistry);
|
|
82
|
+
keybindingService.registerKeybindings(
|
|
83
|
+
[
|
|
84
|
+
{
|
|
85
|
+
keybinding: 'f1',
|
|
86
|
+
command: '',
|
|
87
|
+
when: 'libroNotebookFocused',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
keybinding: 'f8',
|
|
91
|
+
command: '',
|
|
92
|
+
when: 'libroNotebookFocused',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
keybinding: 'f9',
|
|
96
|
+
command: '',
|
|
97
|
+
when: 'libroNotebookFocused',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
keybinding: 'esc',
|
|
101
|
+
command: NotebookCommands['EnterCommandMode'].id,
|
|
102
|
+
when: 'libroNotebookFocused && !editorHasSelection && !editorHasSelection && !editorHasMultipleSelections',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
keybinding: 'ctrlcmd+enter',
|
|
106
|
+
command: NotebookCommands['RunCell'].id,
|
|
107
|
+
when: 'libroNotebookFocused && !findWidgetVisible && !referenceSearchVisible',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
keybinding: 'shift+enter',
|
|
111
|
+
command: NotebookCommands['RunCellAndSelectNext'].id,
|
|
112
|
+
when: 'libroNotebookFocused && !findInputFocussed',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
keybinding: 'alt+enter',
|
|
116
|
+
command: NotebookCommands['RunCellAndInsertBelow'].id,
|
|
117
|
+
when: 'libroNotebookFocused && !findWidgetVisible',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
keybinding: 'ctrlcmd+shift+-',
|
|
121
|
+
command: NotebookCommands['SplitCellAntCursor'].id,
|
|
122
|
+
when: 'libroNotebookFocused && !findWidgetVisible',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
keybinding: 'ctrlcmd+f',
|
|
126
|
+
command: LibroSearchToggleCommand.ShowLibroSearch.id,
|
|
127
|
+
when: 'libroNotebookFocused',
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
KeybindingScope.USER,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CodeEditorModule } from '@difizen/libro-code-editor';
|
|
2
|
+
import { ManaModule } from '@difizen/mana-app';
|
|
3
|
+
|
|
4
|
+
import { LibroE2EditorContribution } from './editor-contribution';
|
|
5
|
+
import {
|
|
6
|
+
LibroOpensumiEditor,
|
|
7
|
+
LibroOpensumiEditorFactory,
|
|
8
|
+
LibroOpensumiEditorOptions,
|
|
9
|
+
LibroOpensumiEditorState,
|
|
10
|
+
} from './opensumi-editor';
|
|
11
|
+
|
|
12
|
+
import type { EditorState, IEditorOptions } from '@difizen/libro-code-editor';
|
|
13
|
+
|
|
14
|
+
export const LibroOpensumiEditorModule = ManaModule.create()
|
|
15
|
+
.register(LibroE2EditorContribution, LibroOpensumiEditor, {
|
|
16
|
+
token: LibroOpensumiEditorFactory,
|
|
17
|
+
useFactory: (ctx) => (options: IEditorOptions, editorState: EditorState) => {
|
|
18
|
+
const child = ctx.container.createChild();
|
|
19
|
+
child.register({
|
|
20
|
+
token: LibroOpensumiEditorOptions,
|
|
21
|
+
useValue: options,
|
|
22
|
+
});
|
|
23
|
+
child.register({
|
|
24
|
+
token: LibroOpensumiEditorState,
|
|
25
|
+
useValue: editorState,
|
|
26
|
+
});
|
|
27
|
+
return child.get(LibroOpensumiEditor);
|
|
28
|
+
},
|
|
29
|
+
})
|
|
30
|
+
.dependOn(CodeEditorModule);
|