@opensumi/ide-terminal-next 2.12.1-next-079c1930
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 +89 -0
- package/lib/browser/component/resize.delegate.d.ts +14 -0
- package/lib/browser/component/resize.delegate.d.ts.map +1 -0
- package/lib/browser/component/resize.delegate.js +47 -0
- package/lib/browser/component/resize.delegate.js.map +1 -0
- package/lib/browser/component/resize.module.less +55 -0
- package/lib/browser/component/resize.view.d.ts +16 -0
- package/lib/browser/component/resize.view.d.ts.map +1 -0
- package/lib/browser/component/resize.view.js +40 -0
- package/lib/browser/component/resize.view.js.map +1 -0
- package/lib/browser/component/tab.item.d.ts +7 -0
- package/lib/browser/component/tab.item.d.ts.map +1 -0
- package/lib/browser/component/tab.item.js +61 -0
- package/lib/browser/component/tab.item.js.map +1 -0
- package/lib/browser/component/tab.module.less +112 -0
- package/lib/browser/component/tab.view.d.ts +4 -0
- package/lib/browser/component/tab.view.d.ts.map +1 -0
- package/lib/browser/component/tab.view.js +30 -0
- package/lib/browser/component/tab.view.js.map +1 -0
- package/lib/browser/component/terminal.module.less +69 -0
- package/lib/browser/component/terminal.select.d.ts +4 -0
- package/lib/browser/component/terminal.select.d.ts.map +1 -0
- package/lib/browser/component/terminal.select.js +21 -0
- package/lib/browser/component/terminal.select.js.map +1 -0
- package/lib/browser/component/terminal.variable.d.ts +8 -0
- package/lib/browser/component/terminal.variable.d.ts.map +1 -0
- package/lib/browser/component/terminal.variable.js +44 -0
- package/lib/browser/component/terminal.variable.js.map +1 -0
- package/lib/browser/component/terminal.view.d.ts +5 -0
- package/lib/browser/component/terminal.view.d.ts.map +1 -0
- package/lib/browser/component/terminal.view.js +68 -0
- package/lib/browser/component/terminal.view.js.map +1 -0
- package/lib/browser/component/terminal.widget.d.ts +10 -0
- package/lib/browser/component/terminal.widget.d.ts.map +1 -0
- package/lib/browser/component/terminal.widget.js +51 -0
- package/lib/browser/component/terminal.widget.js.map +1 -0
- package/lib/browser/component/variable.module.less +15 -0
- package/lib/browser/contribution/index.d.ts +7 -0
- package/lib/browser/contribution/index.d.ts.map +1 -0
- package/lib/browser/contribution/index.js +10 -0
- package/lib/browser/contribution/index.js.map +1 -0
- package/lib/browser/contribution/terminal.command.d.ts +20 -0
- package/lib/browser/contribution/terminal.command.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.command.js +215 -0
- package/lib/browser/contribution/terminal.command.js.map +1 -0
- package/lib/browser/contribution/terminal.keybinding.d.ts +5 -0
- package/lib/browser/contribution/terminal.keybinding.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.keybinding.js +55 -0
- package/lib/browser/contribution/terminal.keybinding.js.map +1 -0
- package/lib/browser/contribution/terminal.lifecycle.d.ts +15 -0
- package/lib/browser/contribution/terminal.lifecycle.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.lifecycle.js +47 -0
- package/lib/browser/contribution/terminal.lifecycle.js.map +1 -0
- package/lib/browser/contribution/terminal.menu.d.ts +19 -0
- package/lib/browser/contribution/terminal.menu.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.menu.js +144 -0
- package/lib/browser/contribution/terminal.menu.js.map +1 -0
- package/lib/browser/contribution/terminal.network.d.ts +11 -0
- package/lib/browser/contribution/terminal.network.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.network.js +44 -0
- package/lib/browser/contribution/terminal.network.js.map +1 -0
- package/lib/browser/contribution/terminal.view.d.ts +7 -0
- package/lib/browser/contribution/terminal.view.d.ts.map +1 -0
- package/lib/browser/contribution/terminal.view.js +55 -0
- package/lib/browser/contribution/terminal.view.js.map +1 -0
- package/lib/browser/index.d.ts +10 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +105 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/links/base.d.ts +8 -0
- package/lib/browser/links/base.d.ts.map +1 -0
- package/lib/browser/links/base.js +13 -0
- package/lib/browser/links/base.js.map +1 -0
- package/lib/browser/links/external-link-provider-adapter.d.ts +18 -0
- package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
- package/lib/browser/links/external-link-provider-adapter.js +56 -0
- package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
- package/lib/browser/links/helpers.d.ts +7 -0
- package/lib/browser/links/helpers.d.ts.map +1 -0
- package/lib/browser/links/helpers.js +129 -0
- package/lib/browser/links/helpers.js.map +1 -0
- package/lib/browser/links/link-manager.d.ts +61 -0
- package/lib/browser/links/link-manager.d.ts.map +1 -0
- package/lib/browser/links/link-manager.js +252 -0
- package/lib/browser/links/link-manager.js.map +1 -0
- package/lib/browser/links/link.d.ts +24 -0
- package/lib/browser/links/link.d.ts.map +1 -0
- package/lib/browser/links/link.js +92 -0
- package/lib/browser/links/link.js.map +1 -0
- package/lib/browser/links/protocol-link-provider.d.ts +11 -0
- package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
- package/lib/browser/links/protocol-link-provider.js +53 -0
- package/lib/browser/links/protocol-link-provider.js.map +1 -0
- package/lib/browser/links/validated-local-link-provider.d.ts +31 -0
- package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
- package/lib/browser/links/validated-local-link-provider.js +137 -0
- package/lib/browser/links/validated-local-link-provider.js.map +1 -0
- package/lib/browser/terminal.addon.d.ts +42 -0
- package/lib/browser/terminal.addon.d.ts.map +1 -0
- package/lib/browser/terminal.addon.js +169 -0
- package/lib/browser/terminal.addon.js.map +1 -0
- package/lib/browser/terminal.api.d.ts +34 -0
- package/lib/browser/terminal.api.d.ts.map +1 -0
- package/lib/browser/terminal.api.js +132 -0
- package/lib/browser/terminal.api.js.map +1 -0
- package/lib/browser/terminal.client.d.ts +114 -0
- package/lib/browser/terminal.client.d.ts.map +1 -0
- package/lib/browser/terminal.client.js +518 -0
- package/lib/browser/terminal.client.js.map +1 -0
- package/lib/browser/terminal.color.d.ts +20 -0
- package/lib/browser/terminal.color.d.ts.map +1 -0
- package/lib/browser/terminal.color.js +172 -0
- package/lib/browser/terminal.color.js.map +1 -0
- package/lib/browser/terminal.context-key.d.ts +10 -0
- package/lib/browser/terminal.context-key.d.ts.map +1 -0
- package/lib/browser/terminal.context-key.js +28 -0
- package/lib/browser/terminal.context-key.js.map +1 -0
- package/lib/browser/terminal.context-menu.d.ts +15 -0
- package/lib/browser/terminal.context-menu.d.ts.map +1 -0
- package/lib/browser/terminal.context-menu.js +75 -0
- package/lib/browser/terminal.context-menu.js.map +1 -0
- package/lib/browser/terminal.controller.d.ts +68 -0
- package/lib/browser/terminal.controller.d.ts.map +1 -0
- package/lib/browser/terminal.controller.js +367 -0
- package/lib/browser/terminal.controller.js.map +1 -0
- package/lib/browser/terminal.environment.service.d.ts +27 -0
- package/lib/browser/terminal.environment.service.d.ts.map +1 -0
- package/lib/browser/terminal.environment.service.js +144 -0
- package/lib/browser/terminal.environment.service.js.map +1 -0
- package/lib/browser/terminal.error.d.ts +10 -0
- package/lib/browser/terminal.error.d.ts.map +1 -0
- package/lib/browser/terminal.error.js +58 -0
- package/lib/browser/terminal.error.js.map +1 -0
- package/lib/browser/terminal.ext.host.proxy.d.ts +58 -0
- package/lib/browser/terminal.ext.host.proxy.d.ts.map +1 -0
- package/lib/browser/terminal.ext.host.proxy.js +104 -0
- package/lib/browser/terminal.ext.host.proxy.js.map +1 -0
- package/lib/browser/terminal.input.d.ts +6 -0
- package/lib/browser/terminal.input.d.ts.map +1 -0
- package/lib/browser/terminal.input.js +32 -0
- package/lib/browser/terminal.input.js.map +1 -0
- package/lib/browser/terminal.network.d.ts +32 -0
- package/lib/browser/terminal.network.d.ts.map +1 -0
- package/lib/browser/terminal.network.js +150 -0
- package/lib/browser/terminal.network.js.map +1 -0
- package/lib/browser/terminal.preference.d.ts +26 -0
- package/lib/browser/terminal.preference.d.ts.map +1 -0
- package/lib/browser/terminal.preference.js +80 -0
- package/lib/browser/terminal.preference.js.map +1 -0
- package/lib/browser/terminal.render.d.ts +13 -0
- package/lib/browser/terminal.render.d.ts.map +1 -0
- package/lib/browser/terminal.render.js +25 -0
- package/lib/browser/terminal.render.js.map +1 -0
- package/lib/browser/terminal.restore.d.ts +10 -0
- package/lib/browser/terminal.restore.d.ts.map +1 -0
- package/lib/browser/terminal.restore.js +41 -0
- package/lib/browser/terminal.restore.js.map +1 -0
- package/lib/browser/terminal.search.d.ts +15 -0
- package/lib/browser/terminal.search.d.ts.map +1 -0
- package/lib/browser/terminal.search.js +53 -0
- package/lib/browser/terminal.search.js.map +1 -0
- package/lib/browser/terminal.service.d.ts +60 -0
- package/lib/browser/terminal.service.d.ts.map +1 -0
- package/lib/browser/terminal.service.js +212 -0
- package/lib/browser/terminal.service.js.map +1 -0
- package/lib/browser/terminal.theme.d.ts +7 -0
- package/lib/browser/terminal.theme.d.ts.map +1 -0
- package/lib/browser/terminal.theme.js +50 -0
- package/lib/browser/terminal.theme.js.map +1 -0
- package/lib/browser/terminal.view.d.ts +99 -0
- package/lib/browser/terminal.view.d.ts.map +1 -0
- package/lib/browser/terminal.view.js +358 -0
- package/lib/browser/terminal.view.js.map +1 -0
- package/lib/common/api.d.ts +20 -0
- package/lib/common/api.d.ts.map +1 -0
- package/lib/common/api.js +5 -0
- package/lib/common/api.js.map +1 -0
- package/lib/common/client.d.ts +163 -0
- package/lib/common/client.d.ts.map +1 -0
- package/lib/common/client.js +5 -0
- package/lib/common/client.js.map +1 -0
- package/lib/common/commands.d.ts +92 -0
- package/lib/common/commands.d.ts.map +1 -0
- package/lib/common/commands.js +97 -0
- package/lib/common/commands.js.map +1 -0
- package/lib/common/controller.d.ts +86 -0
- package/lib/common/controller.d.ts.map +1 -0
- package/lib/common/controller.js +7 -0
- package/lib/common/controller.js.map +1 -0
- package/lib/common/environmentVariable.d.ts +118 -0
- package/lib/common/environmentVariable.d.ts.map +1 -0
- package/lib/common/environmentVariable.js +27 -0
- package/lib/common/environmentVariable.js.map +1 -0
- package/lib/common/environmentVariableCollection.d.ts +10 -0
- package/lib/common/environmentVariableCollection.d.ts.map +1 -0
- package/lib/common/environmentVariableCollection.js +136 -0
- package/lib/common/environmentVariableCollection.js.map +1 -0
- package/lib/common/error.d.ts +30 -0
- package/lib/common/error.d.ts.map +1 -0
- package/lib/common/error.js +5 -0
- package/lib/common/error.js.map +1 -0
- package/lib/common/extension.d.ts +108 -0
- package/lib/common/extension.d.ts.map +1 -0
- package/lib/common/extension.js +52 -0
- package/lib/common/extension.js.map +1 -0
- package/lib/common/index.d.ts +17 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +21 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/link-computer.d.ts +56 -0
- package/lib/common/link-computer.d.ts.map +1 -0
- package/lib/common/link-computer.js +273 -0
- package/lib/common/link-computer.js.map +1 -0
- package/lib/common/menu.d.ts +5 -0
- package/lib/common/menu.d.ts.map +1 -0
- package/lib/common/menu.js +9 -0
- package/lib/common/menu.js.map +1 -0
- package/lib/common/network.d.ts +48 -0
- package/lib/common/network.d.ts.map +1 -0
- package/lib/common/network.js +10 -0
- package/lib/common/network.js.map +1 -0
- package/lib/common/preference.d.ts +33 -0
- package/lib/common/preference.d.ts.map +1 -0
- package/lib/common/preference.js +18 -0
- package/lib/common/preference.js.map +1 -0
- package/lib/common/pty.d.ts +205 -0
- package/lib/common/pty.d.ts.map +1 -0
- package/lib/common/pty.js +8 -0
- package/lib/common/pty.js.map +1 -0
- package/lib/common/render.d.ts +24 -0
- package/lib/common/render.d.ts.map +1 -0
- package/lib/common/render.js +10 -0
- package/lib/common/render.js.map +1 -0
- package/lib/common/resize.d.ts +39 -0
- package/lib/common/resize.d.ts.map +1 -0
- package/lib/common/resize.js +3 -0
- package/lib/common/resize.js.map +1 -0
- package/lib/common/restore.d.ts +6 -0
- package/lib/common/restore.d.ts.map +1 -0
- package/lib/common/restore.js +5 -0
- package/lib/common/restore.js.map +1 -0
- package/lib/common/service.d.ts +88 -0
- package/lib/common/service.d.ts.map +1 -0
- package/lib/common/service.js +6 -0
- package/lib/common/service.js.map +1 -0
- package/lib/common/shell.d.ts +10 -0
- package/lib/common/shell.d.ts.map +1 -0
- package/lib/common/shell.js +14 -0
- package/lib/common/shell.js.map +1 -0
- package/lib/common/theme.d.ts +6 -0
- package/lib/common/theme.d.ts.map +1 -0
- package/lib/common/theme.js +5 -0
- package/lib/common/theme.js.map +1 -0
- package/lib/common/utils.d.ts +4 -0
- package/lib/common/utils.d.ts.map +1 -0
- package/lib/common/utils.js +21 -0
- package/lib/common/utils.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/node/index.d.ts +10 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +35 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/pty.d.ts +11 -0
- package/lib/node/pty.d.ts.map +1 -0
- package/lib/node/pty.js +54 -0
- package/lib/node/pty.js.map +1 -0
- package/lib/node/shell.d.ts +3 -0
- package/lib/node/shell.d.ts.map +1 -0
- package/lib/node/shell.js +28 -0
- package/lib/node/shell.js.map +1 -0
- package/lib/node/terminal.service.client.d.ts +34 -0
- package/lib/node/terminal.service.client.d.ts.map +1 -0
- package/lib/node/terminal.service.client.js +111 -0
- package/lib/node/terminal.service.client.js.map +1 -0
- package/lib/node/terminal.service.d.ts +28 -0
- package/lib/node/terminal.service.d.ts.map +1 -0
- package/lib/node/terminal.service.js +136 -0
- package/lib/node/terminal.service.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# 终端
|
|
2
|
+
|
|
3
|
+
## 实现方式
|
|
4
|
+
|
|
5
|
+
实现 src/common/term.ts 文件中的 ITerminalService 类型,并在 src/browser/index.ts 中替换默认的 service 类型。
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
export interface ITerminalService {
|
|
9
|
+
/**
|
|
10
|
+
* 集成方自定义会话唯一标识的函数
|
|
11
|
+
*/
|
|
12
|
+
makeId(): string;
|
|
13
|
+
/**
|
|
14
|
+
* 集成方自定义写入到 localStorage 的键值的函数
|
|
15
|
+
*/
|
|
16
|
+
restore(): string;
|
|
17
|
+
/**
|
|
18
|
+
* 当关闭 IDE 的时候,允许集成方额外向每一个会话标识写入一个字符串字段,
|
|
19
|
+
* 信息内容由集成方决定
|
|
20
|
+
*
|
|
21
|
+
* @param sessionId 会话唯一标识
|
|
22
|
+
*/
|
|
23
|
+
meta(sessionId: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Xterm 终端的构造选项
|
|
26
|
+
*/
|
|
27
|
+
getOptions(): ITerminalOptions;
|
|
28
|
+
/**
|
|
29
|
+
* 用于获取特定会话的相关信息,包括进程 id 以及进程描述的 name,
|
|
30
|
+
* 这个函数允许返回为空
|
|
31
|
+
*
|
|
32
|
+
* @param sessionId 会话唯一标识
|
|
33
|
+
*/
|
|
34
|
+
intro(sessionId: string): { pid: number, name: string } | undefined;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param id 会话唯一标识
|
|
38
|
+
* @param message 发送的字符串信息
|
|
39
|
+
*/
|
|
40
|
+
sendText(id: string, message: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @param sessionId 会话唯一标识
|
|
44
|
+
* @param term 返回的 Xterm 终端实例
|
|
45
|
+
* @param restore 是否是恢复一个终端
|
|
46
|
+
* @param meta 恢复终端所需要的额外字段
|
|
47
|
+
* @param attachMethod 将 websocket 连接和 xterm 连接起来的函数
|
|
48
|
+
* @param options 创建一个新终端的进程选项
|
|
49
|
+
*/
|
|
50
|
+
attach(sessionId: string, term: Terminal, restore: boolean, meta: string, attachMethod: (s: WebSocket) => void, options?: TerminalOptions): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
*
|
|
53
|
+
* @param sessionId 会话唯一标识
|
|
54
|
+
* @param cols resize 的列数
|
|
55
|
+
* @param rows resize 的行数
|
|
56
|
+
*/
|
|
57
|
+
resize(sessionId: string, cols: number, rows: number): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* 销毁一个终端进程
|
|
60
|
+
*
|
|
61
|
+
* @param sessionId 会话唯一标识
|
|
62
|
+
*/
|
|
63
|
+
disposeById(sessionId: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* 异步向后端获取一个会话的进程 id
|
|
66
|
+
*
|
|
67
|
+
* @param sessionId 会话唯一标识
|
|
68
|
+
*/
|
|
69
|
+
getProcessId(sessionId: string): Promise<number>;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 报错处理的事件
|
|
73
|
+
*
|
|
74
|
+
* @param handler
|
|
75
|
+
*/
|
|
76
|
+
onError(handler: (error: ITerminalError) => void): void;
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 外部和内部 API
|
|
81
|
+
|
|
82
|
+
对于 common 中默认导出的 api 认为为外部 api,而对于 common 中没有默认导出的类型则认为为内部 api,内部 api 依然可以通过子名称获取到类型进行覆盖或者使用,但是内部 api 的任何 api 修改不作为 bk,不推荐直接使用内部 api。
|
|
83
|
+
|
|
84
|
+
## 接下来
|
|
85
|
+
|
|
86
|
+
* [ ] 终端首次初始化使用对比的外层 dom 节点需要可指定,这里可能需要使用 core 内部 api 手动计算
|
|
87
|
+
* [ ] 终端 Singleton 模式
|
|
88
|
+
* [ ] 终端后端 Pty 代码优化,需要支持开发时重连
|
|
89
|
+
* [ ] Vim 显示优化
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IWidget } from '../../common/resize';
|
|
3
|
+
export interface IResizeDelegateProps {
|
|
4
|
+
start: () => void;
|
|
5
|
+
stop: () => void;
|
|
6
|
+
left: IWidget | null;
|
|
7
|
+
self: IWidget;
|
|
8
|
+
right: IWidget | null;
|
|
9
|
+
last: boolean;
|
|
10
|
+
wholeWidth: number;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: (props: IResizeDelegateProps) => JSX.Element;
|
|
13
|
+
export default _default;
|
|
14
|
+
//# sourceMappingURL=resize.delegate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.delegate.d.ts","sourceRoot":"","sources":["../../../src/browser/component/resize.delegate.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;gCAMsB,oBAAoB;AAA3C,wBAwDE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
5
|
+
const resize_module_less_1 = (0, tslib_1.__importDefault)(require("./resize.module.less"));
|
|
6
|
+
// todo: 将这些变量放到一个实例中管理
|
|
7
|
+
let startX = 0;
|
|
8
|
+
let original = null;
|
|
9
|
+
exports.default = (props) => {
|
|
10
|
+
const { start, stop, self, left, right, wholeWidth, last } = props;
|
|
11
|
+
const onMouseDown = (event) => {
|
|
12
|
+
startX = event.clientX;
|
|
13
|
+
original = self;
|
|
14
|
+
start();
|
|
15
|
+
};
|
|
16
|
+
const onMouseMove = (event) => {
|
|
17
|
+
if (!startX) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const endX = event.clientX;
|
|
21
|
+
const move = (endX - startX) / wholeWidth * 100;
|
|
22
|
+
startX = endX;
|
|
23
|
+
if (move < 0) {
|
|
24
|
+
self && self.increase(move);
|
|
25
|
+
right && right.increase(-move);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (original) {
|
|
29
|
+
if (original === left) {
|
|
30
|
+
self && self.increase(-move);
|
|
31
|
+
left && left.increase(move);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const onMouseUp = (_) => {
|
|
37
|
+
startX = 0;
|
|
38
|
+
original = null;
|
|
39
|
+
self.resize();
|
|
40
|
+
left && left.resize();
|
|
41
|
+
right && right.resize();
|
|
42
|
+
stop();
|
|
43
|
+
};
|
|
44
|
+
return (react_1.default.createElement("div", { className: resize_module_less_1.default.resizeDelegetContainer, onMouseUp: onMouseUp, onMouseMove: onMouseMove }, !last &&
|
|
45
|
+
react_1.default.createElement("div", { className: resize_module_less_1.default.resizeDelegateBar, onMouseDown: onMouseDown, onMouseUp: onMouseUp })));
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=resize.delegate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.delegate.js","sourceRoot":"","sources":["../../../src/browser/component/resize.delegate.tsx"],"names":[],"mappings":";;;AAAA,+DAA0B;AAG1B,2FAA0C;AAY1C,uBAAuB;AACvB,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,QAAQ,GAAmB,IAAI,CAAC;AAEpC,kBAAe,CAAC,KAA2B,EAAE,EAAE;IAC7C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;QAC9C,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QACvB,QAAQ,GAAG,IAAI,CAAC;QAChB,KAAK,EAAE,CAAC;IACV,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;QAC9C,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,KAAK,CAAC;SACd;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;QAChD,MAAM,GAAG,IAAI,CAAC;QAEd,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,QAAQ,EAAE;gBACZ,IAAI,QAAQ,KAAK,IAAI,EAAE;oBACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC7B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC7B;aACF;SACF;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;QACxC,MAAM,GAAG,CAAC,CAAC;QACX,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,OAAO,CACL,uCACE,SAAS,EAAG,4BAAM,CAAC,sBAAsB,EACzC,SAAS,EAAG,SAAS,EACrB,WAAW,EAAG,WAAW,IAGvB,CAAC,IAAI;QACL,uCACE,SAAS,EAAG,4BAAM,CAAC,iBAAiB,EACpC,WAAW,EAAG,WAAW,EACzB,SAAS,EAAG,SAAS,GAChB,CAEL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@import '~@opensumi/ide-core-browser/lib/style/variable.less';
|
|
2
|
+
|
|
3
|
+
.resizeWrapper {
|
|
4
|
+
width: 100%;
|
|
5
|
+
height: 100%;
|
|
6
|
+
user-select: none;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.resizePanel {
|
|
10
|
+
position: relative;
|
|
11
|
+
top: 0;
|
|
12
|
+
left: 0;
|
|
13
|
+
height: 100%;
|
|
14
|
+
width: 100%;
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: flex-end;
|
|
17
|
+
|
|
18
|
+
.resizeItem {
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100%;
|
|
21
|
+
overflow: hidden;
|
|
22
|
+
padding: 0px 2px 0px 10px;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.resizeDelegate {
|
|
27
|
+
position: absolute;
|
|
28
|
+
width: 100%;
|
|
29
|
+
height: 100%;
|
|
30
|
+
display: flex;
|
|
31
|
+
pointer-events: all;
|
|
32
|
+
z-index: 1;
|
|
33
|
+
|
|
34
|
+
.resizeHandler {
|
|
35
|
+
width: 100%;
|
|
36
|
+
height: 100%;
|
|
37
|
+
|
|
38
|
+
.resizeDelegetContainer {
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 100%;
|
|
41
|
+
pointer-events: inherit;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.resizeDelegateBar {
|
|
45
|
+
float: right;
|
|
46
|
+
width: 1px;
|
|
47
|
+
height: 100%;
|
|
48
|
+
cursor: ew-resize;
|
|
49
|
+
transform: translateX(1px);
|
|
50
|
+
pointer-events: all;
|
|
51
|
+
background: var(--terminal-foreground);
|
|
52
|
+
opacity: 0.35;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IWidget, IWidgetGroup } from '../../common/resize';
|
|
3
|
+
export declare enum ResizeDirection {
|
|
4
|
+
vertical = 0,
|
|
5
|
+
horizontal = 1
|
|
6
|
+
}
|
|
7
|
+
export interface IResizeViewProps {
|
|
8
|
+
direction: ResizeDirection;
|
|
9
|
+
useFlex: boolean;
|
|
10
|
+
shadow: boolean;
|
|
11
|
+
group: IWidgetGroup;
|
|
12
|
+
draw: (widget: IWidget) => JSX.Element;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: React.FunctionComponent<IResizeViewProps>;
|
|
15
|
+
export default _default;
|
|
16
|
+
//# sourceMappingURL=resize.view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.view.d.ts","sourceRoot":"","sources":["../../../src/browser/component/resize.view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAI5D,oBAAY,eAAe;IACzB,QAAQ,IAAA;IACR,UAAU,IAAA;CACX;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;CACxC;;AAED,wBAwEG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResizeDirection = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
|
+
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
7
|
+
const resize_delegate_1 = (0, tslib_1.__importDefault)(require("./resize.delegate"));
|
|
8
|
+
const resize_module_less_1 = (0, tslib_1.__importDefault)(require("./resize.module.less"));
|
|
9
|
+
var ResizeDirection;
|
|
10
|
+
(function (ResizeDirection) {
|
|
11
|
+
ResizeDirection[ResizeDirection["vertical"] = 0] = "vertical";
|
|
12
|
+
ResizeDirection[ResizeDirection["horizontal"] = 1] = "horizontal";
|
|
13
|
+
})(ResizeDirection = exports.ResizeDirection || (exports.ResizeDirection = {}));
|
|
14
|
+
exports.default = (0, mobx_react_lite_1.observer)((props) => {
|
|
15
|
+
const { group, shadow } = props;
|
|
16
|
+
const [event, setEvent] = react_1.default.useState(false);
|
|
17
|
+
const [wholeWidth, setWholeWidth] = react_1.default.useState(Infinity);
|
|
18
|
+
const whole = react_1.default.createRef();
|
|
19
|
+
react_1.default.useEffect(() => {
|
|
20
|
+
if (whole.current && (whole.current.clientHeight !== wholeWidth)) {
|
|
21
|
+
setWholeWidth(whole.current.clientWidth);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return (react_1.default.createElement("div", { className: resize_module_less_1.default.resizeWrapper, ref: whole },
|
|
25
|
+
react_1.default.createElement("div", { style: {
|
|
26
|
+
pointerEvents: event ? 'all' : 'none',
|
|
27
|
+
}, className: resize_module_less_1.default.resizeDelegate }, group && group.widgets.map((widget, index) => {
|
|
28
|
+
const left = index - 1 > -1 ? group.widgets[index - 1] : null;
|
|
29
|
+
const self = group.widgets[index];
|
|
30
|
+
const right = index + 1 < group.widgets.length ? group.widgets[index + 1] : null;
|
|
31
|
+
return (react_1.default.createElement("div", { key: `resize-item-${index}`, style: { width: `${widget.shadowDynamic}%` }, className: resize_module_less_1.default.resizeHandler },
|
|
32
|
+
react_1.default.createElement(resize_delegate_1.default, { wholeWidth: wholeWidth, start: () => setEvent(true), stop: () => setEvent(false), self: self, left: left, right: right, last: index === (group.widgets.length - 1) })));
|
|
33
|
+
})),
|
|
34
|
+
react_1.default.createElement("div", { style: {
|
|
35
|
+
pointerEvents: !event ? 'all' : 'none',
|
|
36
|
+
}, className: resize_module_less_1.default.resizePanel }, group && group.widgets.map((widget) => {
|
|
37
|
+
return (react_1.default.createElement("div", { key: widget.id, style: { width: `${shadow ? widget.dynamic : widget.shadowDynamic}%` }, className: resize_module_less_1.default.resizeItem }, props.draw(widget)));
|
|
38
|
+
}))));
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=resize.view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize.view.js","sourceRoot":"","sources":["../../../src/browser/component/resize.view.tsx"],"names":[],"mappings":";;;;AAAA,+DAA0B;AAC1B,qDAA2C;AAC3C,qFAA+C;AAG/C,2FAA0C;AAE1C,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,6DAAQ,CAAA;IACR,iEAAU,CAAA;AACZ,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;AAUD,kBAAe,IAAA,0BAAQ,EAAC,CAAC,KAAuB,EAAE,EAAE;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAK,CAAC,SAAS,EAAkB,CAAC;IAEhD,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,KAAK,UAAU,CAAC,EAAE;YAChE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC1C;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,uCACE,SAAS,EAAG,4BAAM,CAAC,aAAa,EAChC,GAAG,EAAG,KAAK;QAEX,uCACE,KAAK,EAAG;gBACN,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;aACtC,EACD,SAAS,EAAG,4BAAM,CAAC,cAAc,IAG/B,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,OAAO,CACL,uCACE,GAAG,EAAG,eAAe,KAAK,EAAE,EAC5B,KAAK,EAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,GAAG,EAAE,EAC7C,SAAS,EAAG,4BAAM,CAAC,aAAa;gBAEhC,8BAAC,yBAAc,IACb,UAAU,EAAG,UAAU,EACvB,KAAK,EAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B,IAAI,EAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5B,IAAI,EAAG,IAAI,EACX,IAAI,EAAG,IAAI,EACX,KAAK,EAAG,KAAK,EACb,IAAI,EAAG,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAC3C,CACE,CACP,CAAC;QACJ,CAAC,CAAC,CAEA;QACN,uCACE,KAAK,EAAG;gBACN,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;aACvC,EACD,SAAS,EAAG,4BAAM,CAAC,WAAW,IAG5B,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,OAAO,CACL,uCACE,GAAG,EAAG,MAAM,CAAC,EAAE,EACf,KAAK,EAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,EACvE,SAAS,EAAG,4BAAM,CAAC,UAAU,IAG3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAEhB,CACP,CAAC;QACJ,CAAC,CAAC,CAEA,CACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ItemProps } from '../../common';
|
|
3
|
+
export declare function renderInfoItem(props: ItemProps): JSX.Element;
|
|
4
|
+
export declare function renderAddItem(props: ItemProps): JSX.Element;
|
|
5
|
+
declare const _default: (props: ItemProps) => JSX.Element | null;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=tab.item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.item.d.ts","sourceRoot":"","sources":["../../../src/browser/component/tab.item.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAY,MAAM,cAAc,CAAC;AAKnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,eAyD9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,eAY7C;gCAEsB,SAAS;AAAhC,wBAWE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderAddItem = exports.renderInfoItem = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
|
+
const classnames_1 = (0, tslib_1.__importDefault)(require("classnames"));
|
|
7
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
8
|
+
const common_1 = require("../../common");
|
|
9
|
+
const debouce = require("lodash.debounce");
|
|
10
|
+
const tab_module_less_1 = (0, tslib_1.__importDefault)(require("./tab.module.less"));
|
|
11
|
+
function renderInfoItem(props) {
|
|
12
|
+
const handleSelect = debouce(() => props.onClick && props.onClick(), 20);
|
|
13
|
+
const handleClose = debouce(() => props.onClose && props.onClose(), 20);
|
|
14
|
+
const handleOnKeyDown = (e) => {
|
|
15
|
+
if (e.key === 'Enter' && props.onInputEnter && props.id) {
|
|
16
|
+
props.onInputEnter(props.id, e.target.value);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const ref = react_1.default.useRef(null);
|
|
20
|
+
react_1.default.useEffect(() => {
|
|
21
|
+
var _a;
|
|
22
|
+
// 刚刚选中,滚一下
|
|
23
|
+
if (props.selected) {
|
|
24
|
+
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
|
|
25
|
+
}
|
|
26
|
+
}, [props.selected]);
|
|
27
|
+
return (react_1.default.createElement("div", { ref: ref, className: (0, classnames_1.default)({
|
|
28
|
+
[tab_module_less_1.default.item_container]: true,
|
|
29
|
+
[tab_module_less_1.default.item_selected]: !!props.selected,
|
|
30
|
+
}), onClick: () => handleSelect(), onContextMenu: (event) => props.onContextMenu && props.onContextMenu(event) },
|
|
31
|
+
props.editable ?
|
|
32
|
+
react_1.default.createElement("input", { autoFocus: true, ref: (ele) => ele && ele.select(), className: tab_module_less_1.default.item_info_input, defaultValue: props.name, onClick: (e) => e.stopPropagation(), onBlur: () => (props.onInputBlur && props.id) && props.onInputBlur(props.id), onKeyDown: (e) => handleOnKeyDown(e) }) :
|
|
33
|
+
react_1.default.createElement("div", { id: props.id, className: tab_module_less_1.default.item_info_name, title: props.name }, props.name),
|
|
34
|
+
props.editable ?
|
|
35
|
+
react_1.default.createElement("div", null) :
|
|
36
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)([(0, ide_core_browser_1.getIcon)('close'), tab_module_less_1.default.close_icon]), onClick: (event) => {
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
handleClose();
|
|
39
|
+
} })));
|
|
40
|
+
}
|
|
41
|
+
exports.renderInfoItem = renderInfoItem;
|
|
42
|
+
function renderAddItem(props) {
|
|
43
|
+
const handleAdd = debouce(() => props.onClick && props.onClick(), 20);
|
|
44
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
45
|
+
[(0, ide_core_browser_1.getIcon)('plus')]: true,
|
|
46
|
+
[tab_module_less_1.default.item_add]: true,
|
|
47
|
+
}), onClick: () => handleAdd() }));
|
|
48
|
+
}
|
|
49
|
+
exports.renderAddItem = renderAddItem;
|
|
50
|
+
exports.default = (props) => {
|
|
51
|
+
const type = props.type || common_1.ItemType.info;
|
|
52
|
+
switch (type) {
|
|
53
|
+
case common_1.ItemType.info:
|
|
54
|
+
return props.provider.infoItemRender(props);
|
|
55
|
+
case common_1.ItemType.add:
|
|
56
|
+
return props.provider.addItemRender(props);
|
|
57
|
+
default:
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=tab.item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.item.js","sourceRoot":"","sources":["../../../src/browser/component/tab.item.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
.view_container {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex: 1;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
font-size: 12px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.tabs {
|
|
9
|
+
display: flex;
|
|
10
|
+
:first-child {
|
|
11
|
+
&.item_container {
|
|
12
|
+
border-left: 1px solid var(--kt-panelTab-border);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.tabs::-webkit-scrollbar {
|
|
18
|
+
display: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.button {
|
|
22
|
+
flex: 1;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.item_container {
|
|
26
|
+
padding: 0px 12px 0px 12px;
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
user-select: none;
|
|
29
|
+
height: 28px;
|
|
30
|
+
display: flex;
|
|
31
|
+
color: var(--kt-panelTab-inactiveForeground);
|
|
32
|
+
background-color: var(--kt-panelTab-inactiveBackground);
|
|
33
|
+
border-right: 1px solid var(--kt-panelTab-border);
|
|
34
|
+
max-width: 800px;
|
|
35
|
+
min-width: 105px;
|
|
36
|
+
align-items: center;
|
|
37
|
+
position: relative;
|
|
38
|
+
:last-child {
|
|
39
|
+
transition: opacity 0.2s ease-in-out;
|
|
40
|
+
opacity: 0;
|
|
41
|
+
line-height: 24px;
|
|
42
|
+
border-right: 0;
|
|
43
|
+
}
|
|
44
|
+
&::before {
|
|
45
|
+
content: '';
|
|
46
|
+
position: absolute;
|
|
47
|
+
left: 0;
|
|
48
|
+
bottom: 0;
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: 1px;
|
|
51
|
+
background-color: var(--kt-panelTab-border);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.item_container:hover {
|
|
56
|
+
:last-child {
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.item_info_name {
|
|
62
|
+
flex: 1;
|
|
63
|
+
margin-right: 8px;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
text-overflow: ellipsis;
|
|
66
|
+
white-space: nowrap;
|
|
67
|
+
line-height: 20px;
|
|
68
|
+
height: 20px;
|
|
69
|
+
position: relative;
|
|
70
|
+
text-indent: 1px;
|
|
71
|
+
max-width: 160px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.item_info_input {
|
|
75
|
+
flex: 1;
|
|
76
|
+
text-indent: 0px;
|
|
77
|
+
text-align: left;
|
|
78
|
+
border: none;
|
|
79
|
+
outline: none;
|
|
80
|
+
height: 20px;
|
|
81
|
+
line-height: 20px;
|
|
82
|
+
font-size: 12px;
|
|
83
|
+
color: inherit;
|
|
84
|
+
background-color: inherit;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.item_selected {
|
|
88
|
+
color: var(--kt-panelTab-activeForeground);
|
|
89
|
+
background-color: var(--kt-panelTab-activeBackground);
|
|
90
|
+
position: relative;
|
|
91
|
+
&::before {
|
|
92
|
+
content: '';
|
|
93
|
+
position: absolute;
|
|
94
|
+
left: 0;
|
|
95
|
+
bottom: -1px;
|
|
96
|
+
width: 100%;
|
|
97
|
+
height: 1px;
|
|
98
|
+
background-color: var(--kt-panelTab-activeBackground);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.item_add {
|
|
103
|
+
display: inline-block;
|
|
104
|
+
padding: 0 6px;
|
|
105
|
+
line-height: 28px;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
user-select: none;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.close_icon {
|
|
111
|
+
color: var(--kt-panelTabActionIcon-foreground);
|
|
112
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.view.d.ts","sourceRoot":"","sources":["../../../src/browser/component/tab.view.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;;AAS1B,wBA6CG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
5
|
+
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const common_1 = require("../../common");
|
|
8
|
+
const tab_item_1 = (0, tslib_1.__importDefault)(require("./tab.item"));
|
|
9
|
+
const terminal_context_menu_1 = require("../terminal.context-menu");
|
|
10
|
+
const tab_module_less_1 = (0, tslib_1.__importDefault)(require("./tab.module.less"));
|
|
11
|
+
exports.default = (0, mobx_react_lite_1.observer)(() => {
|
|
12
|
+
const view = (0, ide_core_browser_1.useInjectable)(common_1.ITerminalGroupViewService);
|
|
13
|
+
const provider = (0, ide_core_browser_1.useInjectable)(common_1.ITerminalRenderProvider);
|
|
14
|
+
const menuService = (0, ide_core_browser_1.useInjectable)(terminal_context_menu_1.TerminalContextMenuService);
|
|
15
|
+
return (react_1.default.createElement("div", { className: tab_module_less_1.default.view_container },
|
|
16
|
+
react_1.default.createElement("div", { className: tab_module_less_1.default.tabs }, view.groups.map((group, index) => {
|
|
17
|
+
if (!group) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return (react_1.default.createElement(tab_item_1.default, { key: group.id, id: group.id, editable: group.editable, name: group.snapshot || 'init...', selected: view.currentGroup && view.currentGroup.id === group.id, onInputBlur: () => group.unedit(), onInputEnter: (_, name) => group.rename(name), onClick: () => view.selectGroup(index), onClose: () => view.removeGroup(index), onContextMenu: (event) => menuService.onTabContextMenu(event, index), provider: provider }));
|
|
21
|
+
})),
|
|
22
|
+
react_1.default.createElement("div", { className: tab_module_less_1.default.button },
|
|
23
|
+
react_1.default.createElement(tab_item_1.default, { type: common_1.ItemType.add, onClick: () => {
|
|
24
|
+
const index = view.createGroup();
|
|
25
|
+
const group = view.getGroup(index);
|
|
26
|
+
view.createWidget(group);
|
|
27
|
+
view.selectGroup(index);
|
|
28
|
+
}, provider: provider }))));
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=tab.view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.view.js","sourceRoot":"","sources":["../../../src/browser/component/tab.view.tsx"],"names":[],"mappings":";;;AAAA,+DAA0B;AAC1B,qDAA2C;AAC3C,iEAA2D;AAC3D,yCAA4F;AAC5F,uEAAiC;AACjC,oEAAsE;AAEtE,qFAAuC;AAEvC,kBAAe,IAAA,0BAAQ,EAAC,GAAG,EAAE;IAC3B,MAAM,IAAI,GAAG,IAAA,gCAAa,EAA4B,kCAAyB,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAA0B,gCAAuB,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAA,gCAAa,EAA6B,kDAA0B,CAAC,CAAC;IAE1F,OAAO,CACL,uCAAK,SAAS,EAAG,yBAAM,CAAC,cAAc;QACpC,uCAAK,SAAS,EAAG,yBAAM,CAAC,IAAI,IAExB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO;aACR;YACD,OAAO,CACL,8BAAC,kBAAO,IACN,GAAG,EAAG,KAAK,CAAC,EAAE,EACd,EAAE,EAAG,KAAK,CAAC,EAAE,EACb,QAAQ,EAAG,KAAK,CAAC,QAAQ,EACzB,IAAI,EAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,EAClC,QAAQ,EAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EACjE,WAAW,EAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAClC,YAAY,EAAG,CAAC,CAAS,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9D,OAAO,EAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACvC,OAAO,EAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACvC,aAAa,EAAG,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EACrE,QAAQ,EAAG,QAAQ,GACV,CACZ,CAAC;QACJ,CAAC,CAAC,CAEA;QACN,uCAAK,SAAS,EAAG,yBAAM,CAAC,MAAM;YAC5B,8BAAC,kBAAO,IACN,IAAI,EAAG,iBAAQ,CAAC,GAAG,EACnB,OAAO,EAAG,GAAG,EAAE;oBACb,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC,EACD,QAAQ,EAAG,QAAQ,GACnB,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@import "~@opensumi/ide-components/lib/style/mixins.less";
|
|
2
|
+
|
|
3
|
+
.terminalWrapper {
|
|
4
|
+
height: 100%;
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.terminalContainer {
|
|
9
|
+
height: 100%;
|
|
10
|
+
width: 100%;
|
|
11
|
+
position: relative;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.terminalInstance {
|
|
15
|
+
height: 100%;
|
|
16
|
+
width: 100%;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.group {
|
|
20
|
+
height: 100%;
|
|
21
|
+
width: 100%;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.terminalCover {
|
|
25
|
+
position: relative;
|
|
26
|
+
height: 100%;
|
|
27
|
+
width: 100%;
|
|
28
|
+
background: var(--terminal-background);
|
|
29
|
+
opacity: 0.8;
|
|
30
|
+
z-index: 2;
|
|
31
|
+
display: flex;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
align-items: center;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.terminalContent {
|
|
38
|
+
height: 100%;
|
|
39
|
+
width: 100%;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.terminalSearch {
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
align-items: center;
|
|
46
|
+
position: absolute;
|
|
47
|
+
z-index: 999;
|
|
48
|
+
right: 16px;
|
|
49
|
+
.overlay-shadow();
|
|
50
|
+
background: var(--kt-panelTitle-background);
|
|
51
|
+
|
|
52
|
+
input {
|
|
53
|
+
background: var(--kt-panelTitle-background);
|
|
54
|
+
border: none;
|
|
55
|
+
outline: none;
|
|
56
|
+
padding: 3px 0px 3px 8px;
|
|
57
|
+
font-size: 12px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
div {
|
|
61
|
+
padding: 0px 6px;
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.terminalFake {
|
|
67
|
+
position: absolute;
|
|
68
|
+
z-index: -999;
|
|
69
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.select.d.ts","sourceRoot":"","sources":["../../../src/browser/component/terminal.select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;;AAO1B,wBAsBG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
5
|
+
const mobx_react_lite_1 = require("mobx-react-lite");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const common_1 = require("../../common");
|
|
8
|
+
const terminal_module_less_1 = (0, tslib_1.__importDefault)(require("./terminal.module.less"));
|
|
9
|
+
exports.default = (0, mobx_react_lite_1.observer)(() => {
|
|
10
|
+
const view = (0, ide_core_browser_1.useInjectable)(common_1.ITerminalGroupViewService);
|
|
11
|
+
const onChange = (event) => {
|
|
12
|
+
const index = event.target.value;
|
|
13
|
+
view.selectGroup(parseInt(index, 10));
|
|
14
|
+
};
|
|
15
|
+
const index = view.currentGroupIndex;
|
|
16
|
+
return (react_1.default.createElement("div", { className: terminal_module_less_1.default.toolbarSelect },
|
|
17
|
+
react_1.default.createElement("select", { value: index || 0, onChange: onChange }, (view.groups || []).map((group, index) => {
|
|
18
|
+
return react_1.default.createElement("option", { key: `${group}-${index}`, value: index }, `${index + 1}: ${group.snapshot}`);
|
|
19
|
+
}))));
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=terminal.select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.select.js","sourceRoot":"","sources":["../../../src/browser/component/terminal.select.tsx"],"names":[],"mappings":";;;AAAA,+DAA0B;AAC1B,qDAA2C;AAC3C,iEAA2D;AAC3D,yCAAyD;AAEzD,+FAA4C;AAE5C,kBAAe,IAAA,0BAAQ,EAAC,GAAG,EAAE;IAE3B,MAAM,IAAI,GAAG,IAAA,gCAAa,EAA4B,kCAAyB,CAAC,CAAC;IAEjF,MAAM,QAAQ,GAAG,CAAC,KAA2C,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAErC,OAAO,CACL,uCAAK,SAAS,EAAE,8BAAM,CAAC,aAAa;QAClC,0CAAQ,KAAK,EAAG,KAAK,IAAI,CAAC,EAAG,QAAQ,EAAG,QAAQ,IAE5C,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,OAAO,0CAAQ,GAAG,EAAG,GAAG,KAAK,IAAI,KAAK,EAAE,EAAG,KAAK,EAAG,KAAK,IAAK,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAW,CAAC;QAC5G,CAAC,CAAC,CAEG,CACL,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IMergedEnvironmentVariableCollectionDiff } from '../../common/environmentVariable';
|
|
3
|
+
interface ITerminalVariableProps {
|
|
4
|
+
diff: IMergedEnvironmentVariableCollectionDiff;
|
|
5
|
+
}
|
|
6
|
+
export declare const TerminalVariable: ({ diff }: ITerminalVariableProps) => JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=terminal.variable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.variable.d.ts","sourceRoot":"","sources":["../../../src/browser/component/terminal.variable.tsx"],"names":[],"mappings":";AAEA,OAAO,EAA6C,wCAAwC,EAAoB,MAAM,kCAAkC,CAAC;AAIzJ,UAAU,sBAAsB;IAC9B,IAAI,EAAE,wCAAwC,CAAC;CAChD;AAeD,eAAO,MAAM,gBAAgB,aAAc,sBAAsB,gBA2ChE,CAAC"}
|