react-terminal-viewer-cicd 2.1.1 → 3.0.0-beta.2
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 +11 -11
- package/dist/esm/Addon/EventEmiter.d.ts +1 -1
- package/dist/esm/Addon/HighlightAddon.d.ts +1 -1
- package/dist/esm/Addon/SearchAddon.d.ts +1 -1
- package/dist/esm/Addon/WorkerLog/LogWorker.js +1 -1
- package/dist/esm/Addon/WorkerLog/Logs.js +0 -2
- package/dist/esm/Addon/useAddon.d.ts +5 -5
- package/dist/esm/Addon/useAddon.js +1 -1
- package/dist/esm/Hooks/useDebounceInput.js +1 -1
- package/dist/esm/Hooks/useLocalStore.js +1 -1
- package/dist/esm/TerminalViewer/index.d.ts +4 -4
- package/dist/esm/TerminalViewer/index.js +4 -4
- package/dist/esm/TerminalViewerBody/index.d.ts +8 -8
- package/dist/esm/TerminalViewerBody/index.js +7 -7
- package/dist/esm/TerminalViewerVirtualDom/ReactVirtualized.d.ts +71 -0
- package/dist/esm/TerminalViewerVirtualDom/ReactVirtualized.js +309 -0
- package/dist/esm/TerminalViewerVirtualDom/ReactVirtuoso.d.ts +67 -0
- package/dist/esm/TerminalViewerVirtualDom/ReactVirtuoso.js +271 -0
- package/dist/esm/TerminalViewerVirtualDom/index.d.ts +1 -70
- package/dist/esm/TerminalViewerVirtualDom/index.js +2 -308
- package/dist/esm/TerminalViewerVirtualDom/virtualized.less +68 -0
- package/dist/esm/TerminalViewerVirtualDom/{index.less → virtuoso.less} +0 -1
- package/dist/esm/__mocks__/react-virtualized.js +14 -0
- package/dist/esm/__mocks__/styleMock.js +1 -0
- package/dist/esm/index.d.ts +4 -5
- package/dist/esm/index.js +4 -5
- package/dist/esm/mock/index.d.ts +3 -0
- package/dist/esm/mock/index.js +3 -0
- package/dist/esm/types.d.ts +4 -4
- package/dist/worker/.dumi/tmp/core/defineApp.d.ts +22 -0
- package/dist/worker/.dumi/tmp/core/exportStaticRuntimePlugin.d.ts +1 -0
- package/dist/worker/.dumi/tmp/core/helmet.d.ts +3 -0
- package/dist/worker/.dumi/tmp/core/helmetContext.d.ts +1 -0
- package/dist/worker/.dumi/tmp/core/history.d.ts +5 -0
- package/dist/worker/.dumi/tmp/core/historyIntelli.d.ts +50 -0
- package/dist/worker/.dumi/tmp/core/plugin.d.ts +8 -0
- package/dist/worker/.dumi/tmp/core/pluginConfig.d.ts +341 -0
- package/dist/worker/.dumi/tmp/core/route.d.ts +83 -0
- package/dist/worker/.dumi/tmp/core/terminal.d.ts +14 -0
- package/dist/worker/.dumi/tmp/dumi/exports.d.ts +3 -0
- package/dist/worker/.dumi/tmp/dumi/locales/config.d.ts +106 -0
- package/dist/worker/.dumi/tmp/dumi/locales/runtime.d.ts +2 -0
- package/dist/worker/.dumi/tmp/dumi/meta/atoms.d.ts +1 -0
- package/dist/worker/.dumi/tmp/dumi/meta/exports.d.ts +31 -0
- package/dist/worker/.dumi/tmp/dumi/meta/index.d.ts +39 -0
- package/dist/worker/.dumi/tmp/dumi/meta/runtime.d.ts +3 -0
- package/dist/worker/.dumi/tmp/dumi/meta/tabs.d.ts +1 -0
- package/dist/worker/.dumi/tmp/dumi/theme/ContextWrapper.d.ts +2 -0
- package/dist/worker/.dumi/tmp/exports.d.ts +10 -0
- package/dist/worker/.dumi/tmp/plugin-html2sketch/index.d.ts +1 -0
- package/dist/worker/.dumi/tmp/testBrowser.d.ts +8 -0
- package/dist/worker/.dumirc.d.ts +2 -0
- package/dist/worker/Addon/EventEmiter.d.ts +1 -1
- package/dist/worker/Addon/HighlightAddon.d.ts +1 -1
- package/dist/worker/Addon/SearchAddon.d.ts +1 -1
- package/dist/worker/Addon/useAddon.d.ts +4 -4
- package/dist/worker/TerminalViewer/index.d.ts +1 -1
- package/dist/worker/TerminalViewerBody/index.d.ts +5 -5
- package/dist/worker/index.d.ts +1 -1
- package/dist/worker/log.worker.js +1 -1
- package/dist/worker/log.worker.js.map +1 -1
- package/dist/worker/mock/index.d.ts +3 -0
- package/dist/worker/src/Addon/EventEmiter.d.ts +18 -0
- package/dist/worker/src/Addon/HighlightAddon.d.ts +26 -0
- package/dist/worker/src/Addon/LineNumberAddon.d.ts +39 -0
- package/dist/worker/src/Addon/SearchAddon.d.ts +140 -0
- package/dist/worker/src/Addon/WorkerLog/GlobalContext.d.ts +10 -0
- package/dist/worker/src/Addon/WorkerLog/LimitMap.d.ts +14 -0
- package/dist/worker/src/Addon/WorkerLog/LogWorker.d.ts +2 -0
- package/dist/worker/src/Addon/WorkerLog/Logs.d.ts +21 -0
- package/dist/worker/src/Addon/WorkerLog/Mark.d.ts +36 -0
- package/dist/worker/src/Addon/WorkerLog/Searcher.d.ts +16 -0
- package/dist/worker/src/Addon/WorkerLog/WebWokerServer.d.ts +10 -0
- package/dist/worker/src/Addon/WorkerLog/WebWorkerClient.d.ts +13 -0
- package/dist/worker/src/Addon/WorkerLog/log.worker.d.ts +1 -0
- package/dist/worker/src/Addon/WorkerLog/types.d.ts +18 -0
- package/dist/worker/src/Addon/useAddon.d.ts +9 -0
- package/dist/worker/src/Hooks/useBatchProcess.d.ts +2 -0
- package/dist/worker/src/Hooks/useCache.d.ts +31 -0
- package/dist/worker/src/Hooks/useDebounceInput.d.ts +3 -0
- package/dist/worker/src/Hooks/useLocalStore.d.ts +2 -0
- package/dist/worker/src/Hooks/useRemote.d.ts +30 -0
- package/dist/worker/src/Hooks/useRemote.test.d.ts +1 -0
- package/dist/worker/src/Hooks/useThrottle.d.ts +2 -0
- package/dist/worker/src/Hooks/useWorkerLogs.d.ts +9 -0
- package/dist/worker/src/TerminalViewer/index.d.ts +185 -0
- package/dist/worker/src/TerminalViewer/index.test.d.ts +1 -0
- package/dist/worker/src/TerminalViewerBody/index.d.ts +87 -0
- package/dist/worker/src/TerminalViewerBody/index.test.d.ts +1 -0
- package/dist/worker/src/TerminalViewerHeader/index.d.ts +88 -0
- package/dist/worker/src/TerminalViewerToolBar/index.d.ts +46 -0
- package/dist/worker/src/TerminalViewerVirtualDom/ReactVirtualized.d.ts +71 -0
- package/dist/worker/src/TerminalViewerVirtualDom/ReactVirtuoso.d.ts +67 -0
- package/dist/worker/src/TerminalViewerVirtualDom/index.d.ts +2 -0
- package/dist/worker/src/index.d.ts +8 -0
- package/dist/worker/src/mock/index.d.ts +15 -0
- package/dist/worker/src/types.d.ts +30 -0
- package/dist/worker/types.d.ts +4 -4
- package/package.json +27 -17
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { ITerminalOptions } from '@xterm/xterm';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { IHighlightOptions } from '../Addon/HighlightAddon';
|
|
4
|
+
import type { ISearchOptions } from '../Addon/SearchAddon';
|
|
5
|
+
import type { ICacheOptions } from '../Hooks/useCache';
|
|
6
|
+
import type { IRemoteOptions } from '../Hooks/useRemote';
|
|
7
|
+
import { ExtraOptions, LogAfterProps, TerminalRef } from '../types';
|
|
8
|
+
import './index.less';
|
|
9
|
+
export interface TerminalViewerProps {
|
|
10
|
+
/**
|
|
11
|
+
* @description.zh-CN 指定 TerminalViewer 挂载的节点,并在容器内展现,false 为挂载在当前位置
|
|
12
|
+
* @default 当前位置
|
|
13
|
+
*/
|
|
14
|
+
ref?: TerminalRef;
|
|
15
|
+
/**
|
|
16
|
+
* @description.zh-CN 是否自动拉伸填充容器宽高
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
fit?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
*@description.zh-CN 是否开启自动滚动到底部
|
|
22
|
+
*@default true
|
|
23
|
+
*/
|
|
24
|
+
autoScroll?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @description.zh-CN 自动滚动到某一行,开启后自动滚动到底部失效
|
|
27
|
+
*/
|
|
28
|
+
scrollToRow?: number;
|
|
29
|
+
/**
|
|
30
|
+
* @description.zh-CN 是否支持刷新
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
33
|
+
refreshable?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @description.zh-CN 搜索框 placeholder
|
|
36
|
+
*/
|
|
37
|
+
searchPlaceholder?: string;
|
|
38
|
+
/**
|
|
39
|
+
* @description.zh-CN 默认全屏显示
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
defaultFullScreen?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* @description.zh-CN 自定义日志头部, null 为不显示默认头部
|
|
45
|
+
*/
|
|
46
|
+
header?: React.ReactNode;
|
|
47
|
+
/**
|
|
48
|
+
* @description.zh-CN 搜索框前的内容
|
|
49
|
+
*/
|
|
50
|
+
inputAddonBefore?: React.ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* @description.zh-CN 搜索框后的内容
|
|
53
|
+
*/
|
|
54
|
+
inputAddonAfter?: React.ReactNode;
|
|
55
|
+
/**
|
|
56
|
+
* @description.zh-CN toolbar 自定义工具栏
|
|
57
|
+
*/
|
|
58
|
+
toolbar?: React.ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* @description.zh-CN 是否显示全屏图标
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
63
|
+
showFullScreen?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* @description.zh-CN 自定义空文本显示
|
|
66
|
+
*/
|
|
67
|
+
empty?: React.ReactNode;
|
|
68
|
+
/**
|
|
69
|
+
* @description.zh-CN 外层样式类名
|
|
70
|
+
*/
|
|
71
|
+
className?: string;
|
|
72
|
+
/**
|
|
73
|
+
* @description.zh-CN 可用于设置外层容器样式
|
|
74
|
+
*/
|
|
75
|
+
style?: object;
|
|
76
|
+
/**
|
|
77
|
+
* @description.zh-CN 用于渲染日志的默认数据,如 "echo 1\r\necho2"
|
|
78
|
+
* @default ''
|
|
79
|
+
*/
|
|
80
|
+
defaultData?: string;
|
|
81
|
+
/**
|
|
82
|
+
* @description.zh-CN 默认打开的标签
|
|
83
|
+
* @default 0
|
|
84
|
+
*/
|
|
85
|
+
defaultTabIndex?: number;
|
|
86
|
+
/**
|
|
87
|
+
* @description.zh-CN 激活的标签, 如果同时设置了 defaultTabIndex 则以此属性为准
|
|
88
|
+
* @default 0
|
|
89
|
+
*/
|
|
90
|
+
activeTabIndex?: number;
|
|
91
|
+
/**
|
|
92
|
+
* @description.zh-CN 设置日志后置标签,仅在开启虚拟 DOM 生效
|
|
93
|
+
*/
|
|
94
|
+
logAfter?: React.FunctionComponent<LogAfterProps> | React.ComponentClass<LogAfterProps>;
|
|
95
|
+
/**
|
|
96
|
+
* @description.zh-CN 多标签配置选项
|
|
97
|
+
*/
|
|
98
|
+
tabs?: {
|
|
99
|
+
key: string | number;
|
|
100
|
+
title?: React.ReactNode;
|
|
101
|
+
defaultData?: string;
|
|
102
|
+
remoteOptions?: IRemoteOptions;
|
|
103
|
+
cacheOptions?: ICacheOptions;
|
|
104
|
+
}[];
|
|
105
|
+
/**
|
|
106
|
+
*@description.zh-CN 自定义图标
|
|
107
|
+
*/
|
|
108
|
+
icons?: {
|
|
109
|
+
search?: React.ReactNode;
|
|
110
|
+
up?: React.ReactNode;
|
|
111
|
+
down?: React.ReactNode;
|
|
112
|
+
clear?: React.ReactNode;
|
|
113
|
+
top?: React.ReactNode;
|
|
114
|
+
bottom?: React.ReactNode;
|
|
115
|
+
fullScreen?: React.ReactNode;
|
|
116
|
+
fullScreenExit?: React.ReactNode;
|
|
117
|
+
refresh?: React.ReactNode;
|
|
118
|
+
loading?: React.ReactNode;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* @description.zh-CN 是否支持渲染超链接
|
|
122
|
+
* @default true
|
|
123
|
+
*/
|
|
124
|
+
webLinksSupport?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* @description.zh-CN 是否使用 canvas 渲染, 开启 canvas 会有更好的性能但可能会遇到更多的问题
|
|
127
|
+
* @default false
|
|
128
|
+
*/
|
|
129
|
+
canvasSupport?: boolean;
|
|
130
|
+
/**
|
|
131
|
+
* @description.zh-CN 是否使用自研虚拟 DOM 内核,开启后 terminalOptions, canvasSupport, webLinksSupport 不可用
|
|
132
|
+
* @default false
|
|
133
|
+
*/
|
|
134
|
+
virtualDomSupport?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* @description.zh-CN 日志 web worker 路径, 需配合 CopyPlugin 使用且仅在开启 virtualDomSupport 为 true 时有效
|
|
137
|
+
|
|
138
|
+
* @default "/worker"
|
|
139
|
+
*/
|
|
140
|
+
workerPath?: string;
|
|
141
|
+
/**
|
|
142
|
+
* @description.zh-CN 远程加载配置
|
|
143
|
+
*
|
|
144
|
+
*/
|
|
145
|
+
remoteOptions?: IRemoteOptions;
|
|
146
|
+
/**
|
|
147
|
+
* @description.zh-CN 缓存全局配置,仅在配置远程加载后有效,如 `expires: 60 * 1000` 表示自动清理已过期一分钟的缓存
|
|
148
|
+
*/
|
|
149
|
+
cacheOptions?: ICacheOptions;
|
|
150
|
+
/**
|
|
151
|
+
* @description.zh-CN xterm 搜索选项
|
|
152
|
+
*/
|
|
153
|
+
searchOptions?: ISearchOptions;
|
|
154
|
+
/**
|
|
155
|
+
* @description.zh-CN 高亮选项
|
|
156
|
+
*/
|
|
157
|
+
highlightOptions?: IHighlightOptions[];
|
|
158
|
+
/**
|
|
159
|
+
* @description.zh-CN xtem.js 配置, https://github.com/xtermjs/xterm.js
|
|
160
|
+
*/
|
|
161
|
+
terminalOptions?: ITerminalOptions;
|
|
162
|
+
/**
|
|
163
|
+
* @description.zh-CN 额外的功能选项 { showLineNumber 仅 虚拟 DOM 模式支持}
|
|
164
|
+
*/
|
|
165
|
+
extraOptions?: ExtraOptions;
|
|
166
|
+
/**
|
|
167
|
+
* @description.zh-CN 指定 TerminalViewer 挂载的节点,并在容器内展现,开启全屏后无效, false 为挂载在当前位置
|
|
168
|
+
* @default 当前节点
|
|
169
|
+
*/
|
|
170
|
+
getContainer?: string | HTMLElement | (() => HTMLElement | null);
|
|
171
|
+
/**
|
|
172
|
+
* @description.zh-CN 点击 tab 标题后回调函数
|
|
173
|
+
*/
|
|
174
|
+
onTitleChange?: (index: number) => void;
|
|
175
|
+
/**
|
|
176
|
+
* @description.zh-CN 加载状态变更回调函数
|
|
177
|
+
*/
|
|
178
|
+
onLoading?: (bool: boolean) => void;
|
|
179
|
+
/**
|
|
180
|
+
* @description.zh-CN 刷新后的回调函数
|
|
181
|
+
*/
|
|
182
|
+
onRefresh?: () => void;
|
|
183
|
+
}
|
|
184
|
+
declare const TerminalViewer: React.ForwardRefExoticComponent<Omit<TerminalViewerProps, "ref"> & React.RefAttributes<TerminalRef | undefined>>;
|
|
185
|
+
export default TerminalViewer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CanvasAddon } from '@xterm/addon-canvas';
|
|
2
|
+
import { FitAddon } from '@xterm/addon-fit';
|
|
3
|
+
import { WebLinksAddon } from '@xterm/addon-web-links';
|
|
4
|
+
import { ITerminalOptions, Terminal } from '@xterm/xterm';
|
|
5
|
+
import '@xterm/xterm/css/xterm.css';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { IHighlightOptions } from '../Addon/HighlightAddon';
|
|
8
|
+
import { HighlightAddon } from '../Addon/HighlightAddon';
|
|
9
|
+
import { SearchAddon } from '../Addon/SearchAddon';
|
|
10
|
+
import type { AddonType } from '../Addon/useAddon';
|
|
11
|
+
import type { ICacheOptions } from '../Hooks/useCache';
|
|
12
|
+
import type { IRemoteOptions } from '../Hooks/useRemote';
|
|
13
|
+
import { TerminalRef } from '../types';
|
|
14
|
+
import './index.less';
|
|
15
|
+
export interface TerminalExposedRef {
|
|
16
|
+
terminal?: Terminal | undefined;
|
|
17
|
+
addons?: {
|
|
18
|
+
search?: SearchAddon | undefined;
|
|
19
|
+
fit?: FitAddon | undefined;
|
|
20
|
+
webLinks?: WebLinksAddon | undefined;
|
|
21
|
+
highlight?: HighlightAddon | undefined;
|
|
22
|
+
canvas?: CanvasAddon | undefined;
|
|
23
|
+
};
|
|
24
|
+
refresh?: (() => void) | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface TerminalViewerBodyProps {
|
|
27
|
+
/**
|
|
28
|
+
* @description.zh-CN 是否自动拉伸填充容器宽高
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
fit?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
*@description.zh-CN 是否开启自动滚动到底部
|
|
34
|
+
*@default true
|
|
35
|
+
*/
|
|
36
|
+
autoScroll?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @description.zh-CN 外层样式类名
|
|
39
|
+
*/
|
|
40
|
+
className?: string;
|
|
41
|
+
/**
|
|
42
|
+
* @description.zh-CN 自定义空文本显示
|
|
43
|
+
*/
|
|
44
|
+
empty?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* @description.zh-CN 是否支持渲染超链接
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
webLinksSupport?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* @description.zh-CN 是否使用 canvas 渲染
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
canvasSupport?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* @description.zh-CN 远程搜索选配置
|
|
57
|
+
*
|
|
58
|
+
*/
|
|
59
|
+
remoteOptions?: IRemoteOptions;
|
|
60
|
+
/**
|
|
61
|
+
* @description.zh-CN 缓存配置,仅在配置远程加载后有效,如 `expires: 60 * 1000` 表示自动清理已过期一分钟的缓存
|
|
62
|
+
*/
|
|
63
|
+
cacheOptions?: ICacheOptions;
|
|
64
|
+
/**
|
|
65
|
+
* @description.zh-CN 高亮选项
|
|
66
|
+
*/
|
|
67
|
+
highlightOptions?: IHighlightOptions[];
|
|
68
|
+
/**
|
|
69
|
+
* @description.zh-CN xtem.js 配置, https://github.com/xtermjs/xterm.js
|
|
70
|
+
*/
|
|
71
|
+
terminalOptions?: ITerminalOptions;
|
|
72
|
+
/**
|
|
73
|
+
* @description.zh-CN 用于渲染日志的默认数据,如 "echo 1\r\necho2"
|
|
74
|
+
* @default '''
|
|
75
|
+
*/
|
|
76
|
+
defaultData?: string;
|
|
77
|
+
/**
|
|
78
|
+
* @description.zh-CN 插件加载成功后的回调
|
|
79
|
+
*/
|
|
80
|
+
onAddonReady?: (instance: Terminal, addon: AddonType) => void;
|
|
81
|
+
/**
|
|
82
|
+
* @description.zh-CN 加载状态变更后的回调
|
|
83
|
+
*/
|
|
84
|
+
onLoading?: (loading: boolean) => void;
|
|
85
|
+
}
|
|
86
|
+
declare const TerminalViewerBody: React.ForwardRefExoticComponent<TerminalViewerBodyProps & React.RefAttributes<TerminalRef | undefined>>;
|
|
87
|
+
export default TerminalViewerBody;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.less';
|
|
3
|
+
export interface TerminalViewerHeaderProps {
|
|
4
|
+
/**
|
|
5
|
+
* @description.zh-CN 搜索框 placeholder
|
|
6
|
+
* @default 请输入
|
|
7
|
+
*/
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/**
|
|
10
|
+
* @description.zh-CN 搜索框默认内容
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
defaultValue?: string;
|
|
14
|
+
/**
|
|
15
|
+
* @description.zh-CN 是否支持清除搜索框
|
|
16
|
+
* @default true
|
|
17
|
+
*/
|
|
18
|
+
clearable?: string;
|
|
19
|
+
/**
|
|
20
|
+
* @description.zh-CN 是否支持刷新
|
|
21
|
+
*/
|
|
22
|
+
refreshable?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* @description.zh-CN 是否处于加载状态
|
|
25
|
+
*/
|
|
26
|
+
loading?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @description.zh-CN 搜索结果
|
|
29
|
+
*/
|
|
30
|
+
searchResult?: {
|
|
31
|
+
resultIndex: number;
|
|
32
|
+
resultCount: number;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* @description.zh-CN 激活的标题
|
|
36
|
+
* @default 0;
|
|
37
|
+
*/
|
|
38
|
+
activeTitleIndex?: number;
|
|
39
|
+
/**
|
|
40
|
+
* @description.zh-CN Tab 标题
|
|
41
|
+
*/
|
|
42
|
+
titles?: React.ReactNode[] | number[];
|
|
43
|
+
/**
|
|
44
|
+
* @description.zh-CN 搜索框前的内容
|
|
45
|
+
*/
|
|
46
|
+
inputAddonBefore?: React.ReactNode;
|
|
47
|
+
/**
|
|
48
|
+
* @description.zh-CN 搜索框后的内容
|
|
49
|
+
*/
|
|
50
|
+
inputAddonAfter?: React.ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
*@description.zh-CN 自定义图标
|
|
53
|
+
*/
|
|
54
|
+
icons?: {
|
|
55
|
+
search?: React.ReactNode;
|
|
56
|
+
up?: React.ReactNode;
|
|
57
|
+
down?: React.ReactNode;
|
|
58
|
+
clear?: React.ReactNode;
|
|
59
|
+
refresh?: React.ReactNode;
|
|
60
|
+
loading?: React.ReactNode;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* @description.zh-CN 点击下一个按钮回调
|
|
64
|
+
*/
|
|
65
|
+
onSearchPrev?: (value: string) => void;
|
|
66
|
+
/**
|
|
67
|
+
* @description.zh-CN 点击上一个按钮回调
|
|
68
|
+
*/
|
|
69
|
+
onSearchNext?: (value: string) => void;
|
|
70
|
+
/**
|
|
71
|
+
* @description.zh-CN 搜索框文本变更回调函数
|
|
72
|
+
*/
|
|
73
|
+
onSearchChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
74
|
+
/**
|
|
75
|
+
* @description.zh-CN 清空文本框后回调函数
|
|
76
|
+
*/
|
|
77
|
+
onSearchClear?: (e: React.SyntheticEvent<HTMLElement>) => void;
|
|
78
|
+
/**
|
|
79
|
+
* @description.zh-CN 点击 Tab 标题后回调函数
|
|
80
|
+
*/
|
|
81
|
+
onTitleChange?: (index: number) => void;
|
|
82
|
+
/**
|
|
83
|
+
*@description.zh-CN 点击刷新按钮后的回调
|
|
84
|
+
*/
|
|
85
|
+
onRefresh?: (e: React.SyntheticEvent<HTMLSpanElement>) => void;
|
|
86
|
+
}
|
|
87
|
+
declare const TerminalViewerHeader: React.FC<TerminalViewerHeaderProps>;
|
|
88
|
+
export default TerminalViewerHeader;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './index.less';
|
|
3
|
+
interface TerminalViewerToolBarProps {
|
|
4
|
+
/**
|
|
5
|
+
* @description.zh-CN 外层容器样式类名
|
|
6
|
+
*/
|
|
7
|
+
className?: string;
|
|
8
|
+
/**
|
|
9
|
+
* @description.zh-CN 外层容器样式
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
style?: object;
|
|
13
|
+
/**
|
|
14
|
+
*@description.zh-CN 自定义图标
|
|
15
|
+
*/
|
|
16
|
+
icons?: {
|
|
17
|
+
top?: React.ReactNode;
|
|
18
|
+
bottom?: React.ReactNode;
|
|
19
|
+
fullScreen?: React.ReactNode;
|
|
20
|
+
fullScreenExit?: React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @description.zh-CN 是否为全屏模式
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
fullScreen?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @description.zh-CN 是否显示全屏图标
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
showFullScreen?: boolean;
|
|
32
|
+
/** *
|
|
33
|
+
* @description.zh.CN 点击滚动到顶部按钮的回调
|
|
34
|
+
*/
|
|
35
|
+
onScrollTop?: (e: React.SyntheticEvent<HTMLDivElement>) => void;
|
|
36
|
+
/**
|
|
37
|
+
* @description.zh.CN 点击滚动到底部按钮的回调
|
|
38
|
+
*/
|
|
39
|
+
onScrollBottom?: (e: React.SyntheticEvent<HTMLDivElement>) => void;
|
|
40
|
+
/**
|
|
41
|
+
* @description.zh.CN 点击全屏/取消全屏按钮的回调
|
|
42
|
+
*/
|
|
43
|
+
onFullScreen?: (e: React.SyntheticEvent<HTMLDivElement>) => void;
|
|
44
|
+
}
|
|
45
|
+
declare const TerminalViewerToolBar: React.FC<TerminalViewerToolBarProps>;
|
|
46
|
+
export default TerminalViewerToolBar;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ListRowProps } from 'react-virtualized';
|
|
3
|
+
import { IHighlightOptions } from '../Addon/HighlightAddon';
|
|
4
|
+
import type { SearcherRef } from '../Addon/WorkerLog/types';
|
|
5
|
+
import type { ICacheOptions } from '../Hooks/useCache';
|
|
6
|
+
import type { IRemoteOptions } from '../Hooks/useRemote';
|
|
7
|
+
import { ExtraOptions, LogAfterProps, TerminalRef, VirtualDomTerminal } from '../types';
|
|
8
|
+
import './virtualized.less';
|
|
9
|
+
export interface TerminalViewerVirtualDomProps {
|
|
10
|
+
/**
|
|
11
|
+
* @description.zh-CN 是否自动拉伸填充容器宽高
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
fit?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @description.zh-CN 外层样式类名
|
|
17
|
+
*/
|
|
18
|
+
className?: string;
|
|
19
|
+
/**
|
|
20
|
+
* @description.zh-CN 自定义空文本显示
|
|
21
|
+
*/
|
|
22
|
+
empty?: React.ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
*@description.zh-CN 是否开启自动滚动到底部
|
|
25
|
+
*@default true
|
|
26
|
+
*/
|
|
27
|
+
autoScroll?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* @description.zh-CN 自动滚动到某一行,开启后自动滚动到底部失效
|
|
30
|
+
*/
|
|
31
|
+
scrollToRow?: number;
|
|
32
|
+
/**
|
|
33
|
+
* @description.zh-CN 设置日志后置标签,仅在开启虚拟 DOM 生效
|
|
34
|
+
*/
|
|
35
|
+
logAfter?: React.FunctionComponent<LogAfterProps> | React.ComponentClass<LogAfterProps>;
|
|
36
|
+
/**
|
|
37
|
+
* @description.zh-CN 用于渲染日志的默认数据,如 "echo 1\r\necho2"
|
|
38
|
+
* @default '''
|
|
39
|
+
*/
|
|
40
|
+
defaultData?: string;
|
|
41
|
+
/**
|
|
42
|
+
* @description.zh-CN 远程搜索配置
|
|
43
|
+
*
|
|
44
|
+
*/
|
|
45
|
+
remoteOptions?: IRemoteOptions;
|
|
46
|
+
/**
|
|
47
|
+
* @description.zh-CN 缓存配置,仅在配置远程加载后有效,如 `expires: 60 * 1000` 表示自动清理已过期一分钟的缓存
|
|
48
|
+
*/
|
|
49
|
+
cacheOptions?: ICacheOptions;
|
|
50
|
+
/**
|
|
51
|
+
* @description.zh-CN 高亮选项
|
|
52
|
+
*/
|
|
53
|
+
highlightOptions?: IHighlightOptions[];
|
|
54
|
+
/**
|
|
55
|
+
* @description.zh-CN 额外的功能选项 { showLineNumber 仅 虚拟 DOM 模式支持}
|
|
56
|
+
*/
|
|
57
|
+
extraOptions?: ExtraOptions;
|
|
58
|
+
/**
|
|
59
|
+
* @description.zh-CN 插件加载成功后的回调
|
|
60
|
+
*/
|
|
61
|
+
onAddonReady?: (instance?: VirtualDomTerminal, addon?: SearcherRef) => void;
|
|
62
|
+
/**
|
|
63
|
+
* @description.zh-CN 加载状态变更后的回调
|
|
64
|
+
*/
|
|
65
|
+
onLoading?: (loading: boolean) => void;
|
|
66
|
+
}
|
|
67
|
+
export type RowRenderProps = ListRowProps & {
|
|
68
|
+
style: object;
|
|
69
|
+
};
|
|
70
|
+
declare const ReactVirtualized: React.ForwardRefExoticComponent<TerminalViewerVirtualDomProps & React.RefAttributes<TerminalRef | undefined>>;
|
|
71
|
+
export default ReactVirtualized;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IHighlightOptions } from '../Addon/HighlightAddon';
|
|
3
|
+
import type { SearcherRef } from '../Addon/WorkerLog/types';
|
|
4
|
+
import type { ICacheOptions } from '../Hooks/useCache';
|
|
5
|
+
import type { IRemoteOptions } from '../Hooks/useRemote';
|
|
6
|
+
import { ExtraOptions, LogAfterProps, TerminalRef, VirtualDomTerminal } from '../types';
|
|
7
|
+
import './virtuoso.less';
|
|
8
|
+
export interface TerminalViewerVirtualDomProps {
|
|
9
|
+
/**
|
|
10
|
+
* @description.zh-CN 是否自动拉伸填充容器宽高
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
fit?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* @description.zh-CN 外层样式类名
|
|
16
|
+
*/
|
|
17
|
+
className?: string;
|
|
18
|
+
/**
|
|
19
|
+
* @description.zh-CN 自定义空文本显示
|
|
20
|
+
*/
|
|
21
|
+
empty?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
*@description.zh-CN 是否开启自动滚动到底部
|
|
24
|
+
*@default true
|
|
25
|
+
*/
|
|
26
|
+
autoScroll?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* @description.zh-CN 自动滚动到某一行,开启后自动滚动到底部失效
|
|
29
|
+
*/
|
|
30
|
+
scrollToRow?: number;
|
|
31
|
+
/**
|
|
32
|
+
* @description.zh-CN 设置日志后置标签,仅在开启虚拟 DOM 生效
|
|
33
|
+
*/
|
|
34
|
+
logAfter?: React.FunctionComponent<LogAfterProps> | React.ComponentClass<LogAfterProps>;
|
|
35
|
+
/**
|
|
36
|
+
* @description.zh-CN 用于渲染日志的默认数据,如 "echo 1\r\necho2"
|
|
37
|
+
* @default '''
|
|
38
|
+
*/
|
|
39
|
+
defaultData?: string;
|
|
40
|
+
/**
|
|
41
|
+
* @description.zh-CN 远程搜索配置
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
remoteOptions?: IRemoteOptions;
|
|
45
|
+
/**
|
|
46
|
+
* @description.zh-CN 缓存配置,仅在配置远程加载后有效,如 `expires: 60 * 1000` 表示自动清理已过期一分钟的缓存
|
|
47
|
+
*/
|
|
48
|
+
cacheOptions?: ICacheOptions;
|
|
49
|
+
/**
|
|
50
|
+
* @description.zh-CN 高亮选项
|
|
51
|
+
*/
|
|
52
|
+
highlightOptions?: IHighlightOptions[];
|
|
53
|
+
/**
|
|
54
|
+
* @description.zh-CN 额外的功能选项 { showLineNumber 仅 虚拟 DOM 模式支持}
|
|
55
|
+
*/
|
|
56
|
+
extraOptions?: ExtraOptions;
|
|
57
|
+
/**
|
|
58
|
+
* @description.zh-CN 插件加载成功后的回调
|
|
59
|
+
*/
|
|
60
|
+
onAddonReady?: (instance?: VirtualDomTerminal, addon?: SearcherRef) => void;
|
|
61
|
+
/**
|
|
62
|
+
* @description.zh-CN 加载状态变更后的回调
|
|
63
|
+
*/
|
|
64
|
+
onLoading?: (loading: boolean) => void;
|
|
65
|
+
}
|
|
66
|
+
declare const ReactVirtuoso: React.ForwardRefExoticComponent<TerminalViewerVirtualDomProps & React.RefAttributes<TerminalRef | undefined>>;
|
|
67
|
+
export default ReactVirtuoso;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ITerminalOptions, Terminal } from '@xterm/xterm';
|
|
2
|
+
import TerminalViewer from './TerminalViewer';
|
|
3
|
+
import TerminalViewerBody from './TerminalViewerBody';
|
|
4
|
+
import TerminalViewerHeader from './TerminalViewerHeader';
|
|
5
|
+
import TerminalViewerToolBar from './TerminalViewerToolBar';
|
|
6
|
+
import TerminalViewerVirtualDom from './TerminalViewerVirtualDom';
|
|
7
|
+
export { ITerminalOptions, Terminal, TerminalViewerBody, TerminalViewerHeader, TerminalViewerToolBar, TerminalViewerVirtualDom, };
|
|
8
|
+
export default TerminalViewer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function loadTest(): string;
|
|
2
|
+
export declare function loadAdvancedTest(): string;
|
|
3
|
+
export declare function loadCustomHighLightTest(random?: boolean): string;
|
|
4
|
+
export declare function fetchCustomHighLightTest(start?: number): Promise<unknown>;
|
|
5
|
+
export declare function remoteFetch(key?: number): Promise<unknown>;
|
|
6
|
+
export declare function cacheFetch(key?: number): Promise<unknown>;
|
|
7
|
+
declare const _default: {
|
|
8
|
+
loadTest: typeof loadTest;
|
|
9
|
+
loadAdvancedTest: typeof loadAdvancedTest;
|
|
10
|
+
loadCustomHighLightTest: typeof loadCustomHighLightTest;
|
|
11
|
+
fetchCustomHighLightTest: typeof fetchCustomHighLightTest;
|
|
12
|
+
remoteFetch: typeof remoteFetch;
|
|
13
|
+
cacheFetch: typeof cacheFetch;
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CanvasAddon } from '@xterm/addon-canvas';
|
|
2
|
+
import { FitAddon } from '@xterm/addon-fit';
|
|
3
|
+
import { WebLinksAddon } from '@xterm/addon-web-links';
|
|
4
|
+
import { Terminal } from '@xterm/xterm';
|
|
5
|
+
import { HighlightAddon } from './Addon/HighlightAddon';
|
|
6
|
+
import { SearchAddon } from './Addon/SearchAddon';
|
|
7
|
+
import type { SearcherRef } from './Addon/WorkerLog/types';
|
|
8
|
+
export interface ExtraOptions {
|
|
9
|
+
showLineNumber?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface VirtualDomTerminal {
|
|
12
|
+
scrollToTop: () => void;
|
|
13
|
+
scrollToBottom: () => void;
|
|
14
|
+
}
|
|
15
|
+
export interface TerminalRef {
|
|
16
|
+
el?: HTMLDivElement | null;
|
|
17
|
+
refresh: () => void;
|
|
18
|
+
addons?: {
|
|
19
|
+
search?: () => SearchAddon | SearcherRef | undefined;
|
|
20
|
+
fit?: () => FitAddon | undefined;
|
|
21
|
+
webLinks?: () => WebLinksAddon | undefined;
|
|
22
|
+
highlight?: () => HighlightAddon | undefined;
|
|
23
|
+
canvas?: () => CanvasAddon | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
terminal?: () => Terminal | VirtualDomTerminal | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface LogAfterProps {
|
|
28
|
+
index: number;
|
|
29
|
+
content: string;
|
|
30
|
+
}
|
package/dist/worker/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Terminal } from 'xterm';
|
|
2
|
-
import { FitAddon } from 'xterm
|
|
3
|
-
import { WebLinksAddon } from 'xterm
|
|
4
|
-
import { CanvasAddon } from 'xterm
|
|
1
|
+
import { Terminal } from '@xterm/xterm';
|
|
2
|
+
import { FitAddon } from '@xterm/addon-fit';
|
|
3
|
+
import { WebLinksAddon } from '@xterm/addon-web-links';
|
|
4
|
+
import { CanvasAddon } from '@xterm/addon-canvas';
|
|
5
5
|
import { HighlightAddon } from './Addon/HighlightAddon';
|
|
6
6
|
import { SearchAddon } from './Addon/SearchAddon';
|
|
7
7
|
import type { SearcherRef } from './Addon/WorkerLog/types';
|