@electerm/electerm-react 1.40.18 → 1.50.21
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/client/common/constants.js +57 -7
- package/client/common/new-terminal.js +2 -2
- package/client/components/auth/login.jsx +34 -57
- package/client/components/batch-op/batch-op.jsx +12 -11
- package/client/components/bookmark-form/index.jsx +2 -2
- package/client/components/bookmark-form/ssh-form.jsx +4 -1
- package/client/components/bookmark-form/tree-delete.jsx +5 -5
- package/client/components/context-menu/boomarks.jsx +8 -12
- package/client/components/context-menu/context-menu.jsx +10 -10
- package/client/components/context-menu/history.jsx +21 -24
- package/client/components/context-menu/menu-btn.jsx +11 -11
- package/client/components/context-menu/tabs.jsx +15 -19
- package/client/components/context-menu/zoom.jsx +25 -29
- package/client/components/footer/footer-entry.jsx +56 -56
- package/client/components/icons/split-icons.jsx +77 -0
- package/client/components/layout/layout-alg.js +260 -0
- package/client/components/layout/layout-item.jsx +26 -0
- package/client/components/layout/layout.jsx +167 -0
- package/client/components/layout/layout.styl +5 -0
- package/client/components/layout/layouts.jsx +71 -0
- package/client/components/layout/session-size-alg.js +31 -0
- package/client/components/main/main.jsx +183 -109
- package/client/components/main/wrapper.styl +2 -4
- package/client/components/profile/profile-list.jsx +1 -3
- package/client/components/profile/profile-transport-mod.jsx +1 -1
- package/client/components/profile/profile-transport.jsx +6 -9
- package/client/components/quick-commands/quick-command-transport.jsx +6 -9
- package/client/components/quick-commands/quick-commands-box.jsx +144 -153
- package/client/components/quick-commands/quick-commands-select.jsx +10 -3
- package/client/components/rdp/rdp-session.jsx +3 -23
- package/client/components/rdp/resolution-edit.jsx +40 -42
- package/client/components/session/session.jsx +62 -317
- package/client/components/session/session.styl +1 -5
- package/client/components/session/sessions.jsx +99 -105
- package/client/components/setting-panel/bookmark-tree-list.jsx +1 -1
- package/client/components/setting-panel/setting-common.jsx +6 -4
- package/client/components/setting-panel/setting-modal.jsx +31 -31
- package/client/components/setting-panel/start-session-select.jsx +4 -4
- package/client/components/setting-panel/tab-settings.jsx +27 -5
- package/client/components/setting-sync/data-import.jsx +36 -39
- package/client/components/setting-sync/setting-sync-form.jsx +9 -9
- package/client/components/setting-sync/setting-sync.jsx +50 -52
- package/client/components/sftp/address-bookmark.jsx +57 -58
- package/client/components/sftp/confirm-modal-store.jsx +34 -40
- package/client/components/sftp/file-item.jsx +14 -3
- package/client/components/sftp/file-mode-modal.jsx +3 -0
- package/client/components/sftp/list-table-ui.jsx +4 -4
- package/client/components/sftp/sftp-entry.jsx +2 -2
- package/client/components/sftp/transfer-conflict-store.jsx +13 -17
- package/client/components/sftp/transport-action-store.jsx +38 -31
- package/client/components/sftp/transports-action-store.jsx +3 -3
- package/client/components/sftp/transports-ui-store.jsx +18 -23
- package/client/components/shortcuts/shortcut-handler.js +1 -0
- package/client/components/shortcuts/shortcuts.jsx +9 -12
- package/client/components/side-panel-r/right-side-panel.styl +40 -0
- package/client/components/side-panel-r/side-panel-r.jsx +102 -0
- package/client/components/sidebar/bookmark-select.jsx +40 -40
- package/client/components/sidebar/bookmark.jsx +63 -65
- package/client/components/sidebar/history.jsx +53 -50
- package/client/components/sidebar/index.jsx +195 -184
- package/client/components/sidebar/info-modal.jsx +202 -202
- package/client/components/sidebar/sidebar.styl +8 -2
- package/client/components/sidebar/transfer-history-modal.jsx +95 -100
- package/client/components/sidebar/transfer-list-control.jsx +2 -2
- package/client/components/sidebar/transfer-list.jsx +45 -42
- package/client/components/sidebar/transfer-modal.jsx +49 -52
- package/client/components/sidebar/transport-ui.jsx +1 -1
- package/client/components/tabs/index.jsx +261 -49
- package/client/components/tabs/tab.jsx +60 -65
- package/client/components/tabs/tabs.styl +6 -1
- package/client/components/tabs/window-control.jsx +46 -48
- package/client/components/terminal/index.jsx +101 -104
- package/client/components/terminal/term-search.jsx +26 -24
- package/client/components/terminal-info/run-cmd.jsx +0 -25
- package/client/components/terminal-info/terminal-info.jsx +60 -0
- package/client/components/terminal-info/terminal-info.styl +1 -1
- package/client/components/tree-list/bookmark-transport.jsx +8 -9
- package/client/components/tree-list/tree-list.jsx +36 -26
- package/client/components/vnc/vnc-session.jsx +1 -6
- package/client/store/common.js +1 -1
- package/client/store/event.js +2 -2
- package/client/store/index.js +21 -32
- package/client/store/init-state.js +15 -3
- package/client/store/load-data.js +1 -1
- package/client/store/quick-command.js +4 -4
- package/client/store/session.js +1 -1
- package/client/store/setting.js +9 -5
- package/client/store/sync.js +16 -9
- package/client/store/system-menu.js +1 -10
- package/client/store/tab.js +66 -1
- package/client/store/transfer-list.js +5 -6
- package/client/store/watch.js +11 -6
- package/package.json +1 -1
- package/client/components/common/react-subx.jsx +0 -1
- package/client/components/common/resize-wrap.jsx +0 -222
- package/client/components/common/resize-wrap.styl +0 -9
- package/client/components/terminal-info/content.jsx +0 -152
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { auto } from 'manate/react'
|
|
2
|
+
import Layouts from './layouts'
|
|
3
|
+
import Sessions from '../session/sessions'
|
|
4
|
+
import {
|
|
5
|
+
splitConfig,
|
|
6
|
+
quickCommandBoxHeight,
|
|
7
|
+
footerHeight
|
|
8
|
+
} from '../../common/constants'
|
|
9
|
+
import layoutAlg from './layout-alg'
|
|
10
|
+
import calcSessionSize from './session-size-alg'
|
|
11
|
+
import TermSearch from '../terminal/term-search'
|
|
12
|
+
import Footer from '../footer/footer-entry'
|
|
13
|
+
import QuickCommandsFooterBox from '../quick-commands/quick-commands-box'
|
|
14
|
+
import { pick } from 'lodash-es'
|
|
15
|
+
import './layout.styl'
|
|
16
|
+
|
|
17
|
+
export default auto(function Layout (props) {
|
|
18
|
+
const handleMousedown = (e) => {
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const calcLayoutStyle = () => {
|
|
23
|
+
const {
|
|
24
|
+
width,
|
|
25
|
+
height,
|
|
26
|
+
pinnedQuickCommandBar,
|
|
27
|
+
// tabsHeight,
|
|
28
|
+
leftSidebarWidth,
|
|
29
|
+
// infoPanelPinned,
|
|
30
|
+
pinned,
|
|
31
|
+
rightPanelVisible,
|
|
32
|
+
rightPanelPinned,
|
|
33
|
+
rightPanelWidth,
|
|
34
|
+
resizeTrigger
|
|
35
|
+
} = props.store
|
|
36
|
+
const h = height - footerHeight - (pinnedQuickCommandBar ? quickCommandBoxHeight : 0) + resizeTrigger
|
|
37
|
+
const l = pinned ? 43 + leftSidebarWidth : 43
|
|
38
|
+
const r = rightPanelVisible && rightPanelPinned ? rightPanelWidth : 0
|
|
39
|
+
return {
|
|
40
|
+
height: h,
|
|
41
|
+
top: 0,
|
|
42
|
+
left: l,
|
|
43
|
+
width: width - l - r
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const buildLayoutStyles = () => {
|
|
48
|
+
const {
|
|
49
|
+
layout,
|
|
50
|
+
height,
|
|
51
|
+
width,
|
|
52
|
+
pinnedQuickCommandBar,
|
|
53
|
+
leftSidebarWidth,
|
|
54
|
+
infoPanelPinned,
|
|
55
|
+
pinned,
|
|
56
|
+
rightSidebarWidth
|
|
57
|
+
} = props.store
|
|
58
|
+
const l = pinned ? leftSidebarWidth : 0
|
|
59
|
+
const r = infoPanelPinned ? rightSidebarWidth : 0
|
|
60
|
+
const w = width - l - r - 42
|
|
61
|
+
const h = height - footerHeight - (pinnedQuickCommandBar ? quickCommandBoxHeight : 0)
|
|
62
|
+
return layoutAlg(layout, w, h)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function renderSessions (conf, layout) {
|
|
66
|
+
const {
|
|
67
|
+
width,
|
|
68
|
+
height
|
|
69
|
+
} = calcLayoutStyle()
|
|
70
|
+
const {
|
|
71
|
+
store
|
|
72
|
+
} = props
|
|
73
|
+
const { tabs } = store
|
|
74
|
+
const tabsBatch = {}
|
|
75
|
+
for (const tab of tabs) {
|
|
76
|
+
const { batch } = tab
|
|
77
|
+
if (!tabsBatch[batch]) {
|
|
78
|
+
tabsBatch[batch] = []
|
|
79
|
+
}
|
|
80
|
+
tabsBatch[batch].push(tab)
|
|
81
|
+
}
|
|
82
|
+
return calcSessionSize(layout, width, height).map((v, i) => {
|
|
83
|
+
const sessProps = {
|
|
84
|
+
batch: i,
|
|
85
|
+
layout,
|
|
86
|
+
...v,
|
|
87
|
+
tabs: tabsBatch[i],
|
|
88
|
+
...pick(store, [
|
|
89
|
+
'isMaximized',
|
|
90
|
+
'config',
|
|
91
|
+
'resolutions',
|
|
92
|
+
'hideDelKeyTip',
|
|
93
|
+
'fileOperation',
|
|
94
|
+
'file',
|
|
95
|
+
'pinnedQuickCommandBar',
|
|
96
|
+
'tabsHeight',
|
|
97
|
+
'appPath',
|
|
98
|
+
'leftSidebarWidth',
|
|
99
|
+
'pinned',
|
|
100
|
+
'openedSideBar'
|
|
101
|
+
])
|
|
102
|
+
}
|
|
103
|
+
return (
|
|
104
|
+
<Sessions
|
|
105
|
+
key={'sess' + i}
|
|
106
|
+
{...sessProps}
|
|
107
|
+
/>
|
|
108
|
+
)
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const { store } = props
|
|
113
|
+
const {
|
|
114
|
+
layout, config, currentTab
|
|
115
|
+
} = store
|
|
116
|
+
const conf = splitConfig[layout]
|
|
117
|
+
const layoutProps = {
|
|
118
|
+
layout,
|
|
119
|
+
...buildLayoutStyles(conf, layout),
|
|
120
|
+
layoutStyle: calcLayoutStyle(),
|
|
121
|
+
handleMousedown
|
|
122
|
+
}
|
|
123
|
+
const termProps = {
|
|
124
|
+
currentTab,
|
|
125
|
+
config,
|
|
126
|
+
...pick(store, [
|
|
127
|
+
'currentTabId',
|
|
128
|
+
'termSearchOpen',
|
|
129
|
+
'termSearch',
|
|
130
|
+
'termSearchOptions',
|
|
131
|
+
'termSearchMatchCount',
|
|
132
|
+
'termSearchMatchIndex'
|
|
133
|
+
])
|
|
134
|
+
}
|
|
135
|
+
const footerProps = {
|
|
136
|
+
store,
|
|
137
|
+
currentTab
|
|
138
|
+
}
|
|
139
|
+
const qmProps = pick(store, [
|
|
140
|
+
'quickCommandTags',
|
|
141
|
+
'qmSortByFrequency',
|
|
142
|
+
'openQuickCommandBar',
|
|
143
|
+
'pinnedQuickCommandBar',
|
|
144
|
+
'qmSortByFrequency',
|
|
145
|
+
'inActiveTerminal',
|
|
146
|
+
'leftSidebarWidth',
|
|
147
|
+
'openedSideBar',
|
|
148
|
+
'currentQuickCommands'
|
|
149
|
+
])
|
|
150
|
+
return [
|
|
151
|
+
<Layouts {...layoutProps} key='layouts'>
|
|
152
|
+
{renderSessions(conf, layout)}
|
|
153
|
+
</Layouts>,
|
|
154
|
+
<TermSearch
|
|
155
|
+
key='TermSearch'
|
|
156
|
+
{...termProps}
|
|
157
|
+
/>,
|
|
158
|
+
<QuickCommandsFooterBox
|
|
159
|
+
key='QuickCommandsFooterBox'
|
|
160
|
+
{...qmProps}
|
|
161
|
+
/>,
|
|
162
|
+
<Footer
|
|
163
|
+
key='Footer'
|
|
164
|
+
{...footerProps}
|
|
165
|
+
/>
|
|
166
|
+
]
|
|
167
|
+
})
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { memo } from 'react'
|
|
2
|
+
import {
|
|
3
|
+
splitConfig
|
|
4
|
+
} from '../../common/constants'
|
|
5
|
+
import LayoutItem from './layout-item'
|
|
6
|
+
|
|
7
|
+
function pixed (style) {
|
|
8
|
+
return Object.keys(style).reduce((prev, k) => {
|
|
9
|
+
const v = style[k]
|
|
10
|
+
return {
|
|
11
|
+
...prev,
|
|
12
|
+
[k]: isNaN(v) ? v : v + 'px'
|
|
13
|
+
}
|
|
14
|
+
}, {})
|
|
15
|
+
}
|
|
16
|
+
export default memo(function LayoutWrap (props) {
|
|
17
|
+
const {
|
|
18
|
+
children,
|
|
19
|
+
layout,
|
|
20
|
+
wrapStyles,
|
|
21
|
+
handleStyles,
|
|
22
|
+
layoutStyle,
|
|
23
|
+
handleMousedown
|
|
24
|
+
} = props
|
|
25
|
+
const {
|
|
26
|
+
children: childrenCount,
|
|
27
|
+
handle: handleCount
|
|
28
|
+
} = splitConfig[layout]
|
|
29
|
+
const wrapStyle = {
|
|
30
|
+
className: 'layout-wrap layout-wrap-' + layout,
|
|
31
|
+
style: pixed(layoutStyle)
|
|
32
|
+
}
|
|
33
|
+
return (
|
|
34
|
+
<div {...wrapStyle}>
|
|
35
|
+
{
|
|
36
|
+
new Array(childrenCount).fill(0).map((v, i) => {
|
|
37
|
+
const itemProps = {
|
|
38
|
+
i,
|
|
39
|
+
style: pixed(wrapStyles[i]),
|
|
40
|
+
className: 'layout-item v' + (i + 1)
|
|
41
|
+
}
|
|
42
|
+
return (
|
|
43
|
+
<LayoutItem
|
|
44
|
+
key={i + 'layout-item'}
|
|
45
|
+
{...itemProps}
|
|
46
|
+
>
|
|
47
|
+
{children[i] || null}
|
|
48
|
+
</LayoutItem>
|
|
49
|
+
)
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
{
|
|
53
|
+
new Array(handleCount).fill(0).map((v, i) => {
|
|
54
|
+
const itemProps = {
|
|
55
|
+
className: 'layout-handle h' + (i + 1),
|
|
56
|
+
'data-layout': layout,
|
|
57
|
+
'data-index': i,
|
|
58
|
+
style: handleStyles[i],
|
|
59
|
+
onMouseDown: handleMousedown
|
|
60
|
+
}
|
|
61
|
+
return (
|
|
62
|
+
<div
|
|
63
|
+
key={i + 'layout-handle'}
|
|
64
|
+
{...itemProps}
|
|
65
|
+
/>
|
|
66
|
+
)
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
</div>
|
|
70
|
+
)
|
|
71
|
+
})
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const layoutConfigs = {
|
|
2
|
+
c1: { cols: 1, rows: 1 },
|
|
3
|
+
c2: { cols: 2, rows: 1 },
|
|
4
|
+
c3: { cols: 3, rows: 1 },
|
|
5
|
+
r2: { cols: 1, rows: 2 },
|
|
6
|
+
r3: { cols: 1, rows: 3 },
|
|
7
|
+
c2x2: { cols: 2, rows: 2 },
|
|
8
|
+
c1r2: { cols: 2, rows: 2, special: 'right', length: 3 },
|
|
9
|
+
r1c2: { cols: 2, rows: 2, special: 'bottom', length: 3 }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default function calcSessionSize (layout, w, h) {
|
|
13
|
+
const { cols, rows, special, length = cols * rows } = layoutConfigs[layout] || layoutConfigs.c1
|
|
14
|
+
const spacing = 0
|
|
15
|
+
|
|
16
|
+
const sessionWidth = (w - (cols - 1) * spacing) / cols
|
|
17
|
+
const sessionHeight = (h - (rows - 1) * spacing) / rows
|
|
18
|
+
|
|
19
|
+
const sessions = new Array(length).fill(0).map((_, i) => ({
|
|
20
|
+
width: sessionWidth,
|
|
21
|
+
height: sessionHeight
|
|
22
|
+
}))
|
|
23
|
+
|
|
24
|
+
if (special === 'right') {
|
|
25
|
+
sessions[0].height = h
|
|
26
|
+
} else if (special === 'bottom') {
|
|
27
|
+
sessions[0].width = w
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return sessions
|
|
31
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { auto } from 'manate/react'
|
|
2
|
+
import { useEffect } from 'react'
|
|
3
|
+
import Layout from '../layout/layout'
|
|
3
4
|
import ContextMenu from '../context-menu/context-menu'
|
|
4
5
|
import FileInfoModal from '../sftp/file-props-modal'
|
|
5
6
|
import FileModeModal from '../sftp/file-mode-modal'
|
|
@@ -20,16 +21,20 @@ import classnames from 'classnames'
|
|
|
20
21
|
import ShortcutControl from '../shortcuts/shortcut-control.jsx'
|
|
21
22
|
import { isMac, isWin } from '../../common/constants'
|
|
22
23
|
import TermFullscreenControl from './term-fullscreen-control'
|
|
24
|
+
import TerminalInfo from '../terminal-info/terminal-info'
|
|
23
25
|
import { LoadingUI } from './loading'
|
|
24
26
|
import { ConfigProvider, notification } from 'antd'
|
|
27
|
+
import InfoModal from '../sidebar/info-modal.jsx'
|
|
28
|
+
import RightSidePanel from '../side-panel-r/side-panel-r'
|
|
29
|
+
import { pick } from 'lodash-es'
|
|
25
30
|
import './wrapper.styl'
|
|
26
31
|
|
|
27
|
-
export default
|
|
28
|
-
|
|
32
|
+
export default auto(function Index (props) {
|
|
33
|
+
useEffect(() => {
|
|
29
34
|
notification.config({
|
|
30
35
|
placement: 'bottomRight'
|
|
31
36
|
})
|
|
32
|
-
const { store } =
|
|
37
|
+
const { store } = props
|
|
33
38
|
window.addEventListener('resize', store.onResize)
|
|
34
39
|
store.onResize()
|
|
35
40
|
store.initStoreEvents()
|
|
@@ -63,113 +68,182 @@ export default class Index extends Component {
|
|
|
63
68
|
store.initData()
|
|
64
69
|
store.checkForDbUpgrade()
|
|
65
70
|
window.pre.runGlobalAsync('registerDeepLink')
|
|
66
|
-
}
|
|
71
|
+
}, [])
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
themeConfig: store.getUiThemeConfig()
|
|
110
|
-
}
|
|
111
|
-
const outerProps = {
|
|
112
|
-
style: {
|
|
113
|
-
opacity: config.opacity
|
|
73
|
+
const { store } = props
|
|
74
|
+
const {
|
|
75
|
+
configLoaded,
|
|
76
|
+
config,
|
|
77
|
+
terminalFullScreen,
|
|
78
|
+
pinned,
|
|
79
|
+
isSencondInstance,
|
|
80
|
+
pinnedQuickCommandBar,
|
|
81
|
+
wsInited,
|
|
82
|
+
upgradeInfo,
|
|
83
|
+
installSrc,
|
|
84
|
+
fileTransfers,
|
|
85
|
+
uiThemeConfig,
|
|
86
|
+
transferHistory,
|
|
87
|
+
transferToConfirm,
|
|
88
|
+
openResolutionEdit
|
|
89
|
+
} = store
|
|
90
|
+
const cls = classnames({
|
|
91
|
+
loaded: configLoaded,
|
|
92
|
+
'not-webapp': !window.et.isWebApp,
|
|
93
|
+
'system-ui': store.config.useSystemTitleBar,
|
|
94
|
+
'not-system-ui': !store.config.useSystemTitleBar,
|
|
95
|
+
'is-mac': isMac,
|
|
96
|
+
'not-mac': !isMac,
|
|
97
|
+
'is-win': isWin,
|
|
98
|
+
pinned,
|
|
99
|
+
'qm-pinned': pinnedQuickCommandBar,
|
|
100
|
+
'term-fullscreen': terminalFullScreen,
|
|
101
|
+
'is-main': !isSencondInstance
|
|
102
|
+
})
|
|
103
|
+
const ext1 = {
|
|
104
|
+
className: cls
|
|
105
|
+
}
|
|
106
|
+
const cpConf = config
|
|
107
|
+
const confsCss = Object
|
|
108
|
+
.keys((cpConf))
|
|
109
|
+
.filter(d => d.startsWith('terminalBackground'))
|
|
110
|
+
.reduce((p, k) => {
|
|
111
|
+
return {
|
|
112
|
+
...p,
|
|
113
|
+
[k]: cpConf[k]
|
|
114
114
|
}
|
|
115
|
+
}, {})
|
|
116
|
+
const themeProps = {
|
|
117
|
+
themeConfig: store.getUiThemeConfig()
|
|
118
|
+
}
|
|
119
|
+
const outerProps = {
|
|
120
|
+
style: {
|
|
121
|
+
opacity: config.opacity
|
|
115
122
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
123
|
+
}
|
|
124
|
+
const sidebarProps = {
|
|
125
|
+
...pick(store, [
|
|
126
|
+
'activeItemId',
|
|
127
|
+
'history',
|
|
128
|
+
'showModal',
|
|
129
|
+
'showInfoModal',
|
|
130
|
+
'openedSideBar',
|
|
131
|
+
'height',
|
|
132
|
+
'settingTab',
|
|
133
|
+
'settingItem',
|
|
134
|
+
'isSyncingSetting',
|
|
135
|
+
'leftSidebarWidth',
|
|
136
|
+
'transferTab'
|
|
137
|
+
]),
|
|
138
|
+
fileTransfers,
|
|
139
|
+
transferHistory,
|
|
140
|
+
upgradeInfo,
|
|
141
|
+
pinned
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const infoModalProps = {
|
|
145
|
+
...pick(store, [
|
|
146
|
+
'infoModalTab',
|
|
147
|
+
'showInfoModal',
|
|
148
|
+
'commandLineHelp'
|
|
149
|
+
]),
|
|
150
|
+
installSrc,
|
|
151
|
+
upgradeInfo
|
|
152
|
+
}
|
|
153
|
+
const conflictStoreProps = {
|
|
154
|
+
fileTransfers,
|
|
155
|
+
_fileTransfers: store._fileTransfers
|
|
156
|
+
}
|
|
157
|
+
const batchOpProps = {
|
|
158
|
+
transferHistory,
|
|
159
|
+
showModal: store.showModal,
|
|
160
|
+
innerWidth: store.innerWidth
|
|
161
|
+
}
|
|
162
|
+
const resProps = {
|
|
163
|
+
resolutions: store.resolutions,
|
|
164
|
+
openResolutionEdit
|
|
165
|
+
}
|
|
166
|
+
const contextMenuProps = {
|
|
167
|
+
...pick(store, [
|
|
168
|
+
'history'
|
|
169
|
+
]),
|
|
170
|
+
tabs: store.getTabs(),
|
|
171
|
+
config
|
|
172
|
+
}
|
|
173
|
+
const rightPanelProps = {
|
|
174
|
+
rightPanelVisible: store.rightPanelVisible,
|
|
175
|
+
rightPanelPinned: store.rightPanelPinned,
|
|
176
|
+
rightPanelWidth: store.rightPanelWidth
|
|
177
|
+
}
|
|
178
|
+
const terminalInfoProps = {
|
|
179
|
+
...store.terminalInfoProps,
|
|
180
|
+
...pick(
|
|
181
|
+
config,
|
|
182
|
+
['host', 'port', 'saveTerminalLogToFile', 'terminalInfos']
|
|
183
|
+
),
|
|
184
|
+
...pick(store, [
|
|
185
|
+
'appPath'
|
|
186
|
+
])
|
|
187
|
+
}
|
|
188
|
+
return (
|
|
189
|
+
<ConfigProvider
|
|
190
|
+
theme={uiThemeConfig}
|
|
191
|
+
>
|
|
192
|
+
<div {...ext1}>
|
|
193
|
+
<ShortcutControl config={config} />
|
|
194
|
+
<LoadingUI
|
|
195
|
+
wsInited={wsInited}
|
|
196
|
+
/>
|
|
197
|
+
<TermFullscreenControl
|
|
198
|
+
terminalFullScreen={terminalFullScreen}
|
|
199
|
+
/>
|
|
200
|
+
<CssOverwrite
|
|
201
|
+
{...confsCss}
|
|
202
|
+
wsInited={wsInited}
|
|
203
|
+
/>
|
|
204
|
+
<TerminalInteractive />
|
|
205
|
+
<UiTheme
|
|
206
|
+
{...themeProps}
|
|
207
|
+
buildTheme={store.buildTheme}
|
|
208
|
+
/>
|
|
209
|
+
<CustomCss customCss={config.customCss} />
|
|
210
|
+
<TextEditor customCss={cpConf.customCss} />
|
|
211
|
+
<UpdateCheck
|
|
212
|
+
skipVersion={cpConf.skipVersion}
|
|
213
|
+
upgradeInfo={upgradeInfo}
|
|
214
|
+
installSrc={installSrc}
|
|
215
|
+
/>
|
|
216
|
+
<FileInfoModal />
|
|
217
|
+
<FileModeModal />
|
|
218
|
+
<SettingModal store={store} />
|
|
219
|
+
<BatchOp {...batchOpProps} />
|
|
220
|
+
<div
|
|
221
|
+
id='outside-context'
|
|
222
|
+
{...outerProps}
|
|
223
|
+
>
|
|
224
|
+
<Sidebar {...sidebarProps} />
|
|
225
|
+
<Layout
|
|
167
226
|
store={store}
|
|
168
|
-
_fileTransfers={store._fileTransfers}
|
|
169
227
|
/>
|
|
170
|
-
<Resolutions store={store} />
|
|
171
228
|
</div>
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
229
|
+
<ContextMenu {...contextMenuProps} />
|
|
230
|
+
<ConfirmModalStore
|
|
231
|
+
transferToConfirm={transferToConfirm}
|
|
232
|
+
/>
|
|
233
|
+
<TransferConflictStore
|
|
234
|
+
{...conflictStoreProps}
|
|
235
|
+
transferToConfirm={transferToConfirm}
|
|
236
|
+
/>
|
|
237
|
+
<TransportsActionStore
|
|
238
|
+
{...conflictStoreProps}
|
|
239
|
+
config={config}
|
|
240
|
+
/>
|
|
241
|
+
<Resolutions {...resProps} />
|
|
242
|
+
<InfoModal {...infoModalProps} />
|
|
243
|
+
<RightSidePanel {...rightPanelProps}>
|
|
244
|
+
<TerminalInfo {...terminalInfoProps} />
|
|
245
|
+
</RightSidePanel>
|
|
246
|
+
</div>
|
|
247
|
+
</ConfigProvider>
|
|
248
|
+
)
|
|
249
|
+
})
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import ProfileTransportMod from './profile-transport-mod'
|
|
2
|
-
import { Component } from '../common/react-subx'
|
|
3
2
|
|
|
4
|
-
export default
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
)
|
|
11
|
-
}
|
|
3
|
+
export default function ProfileTransport () {
|
|
4
|
+
return (
|
|
5
|
+
<div className='pd1b'>
|
|
6
|
+
<ProfileTransportMod store={window.store} />
|
|
7
|
+
</div>
|
|
8
|
+
)
|
|
12
9
|
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import QmTransportMod from './quick-command-transport-mod'
|
|
2
|
-
import { Component } from '../common/react-subx'
|
|
3
2
|
|
|
4
|
-
export default
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
)
|
|
11
|
-
}
|
|
3
|
+
export default function QmTransport () {
|
|
4
|
+
return (
|
|
5
|
+
<div className='pd1b'>
|
|
6
|
+
<QmTransportMod store={window.store} />
|
|
7
|
+
</div>
|
|
8
|
+
)
|
|
12
9
|
}
|