@electerm/electerm-react 1.40.20 → 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.
Files changed (96) hide show
  1. package/client/common/constants.js +57 -7
  2. package/client/common/new-terminal.js +2 -2
  3. package/client/components/auth/login.jsx +34 -57
  4. package/client/components/batch-op/batch-op.jsx +12 -11
  5. package/client/components/bookmark-form/index.jsx +2 -2
  6. package/client/components/bookmark-form/ssh-form.jsx +4 -1
  7. package/client/components/bookmark-form/tree-delete.jsx +5 -5
  8. package/client/components/context-menu/boomarks.jsx +8 -12
  9. package/client/components/context-menu/context-menu.jsx +10 -10
  10. package/client/components/context-menu/history.jsx +21 -24
  11. package/client/components/context-menu/menu-btn.jsx +11 -11
  12. package/client/components/context-menu/tabs.jsx +15 -19
  13. package/client/components/context-menu/zoom.jsx +25 -29
  14. package/client/components/footer/footer-entry.jsx +56 -56
  15. package/client/components/icons/split-icons.jsx +77 -0
  16. package/client/components/layout/layout-alg.js +260 -0
  17. package/client/components/layout/layout-item.jsx +26 -0
  18. package/client/components/layout/layout.jsx +167 -0
  19. package/client/components/layout/layout.styl +5 -0
  20. package/client/components/layout/layouts.jsx +71 -0
  21. package/client/components/layout/session-size-alg.js +31 -0
  22. package/client/components/main/main.jsx +183 -109
  23. package/client/components/main/wrapper.styl +2 -4
  24. package/client/components/profile/profile-list.jsx +1 -3
  25. package/client/components/profile/profile-transport-mod.jsx +1 -1
  26. package/client/components/profile/profile-transport.jsx +6 -9
  27. package/client/components/quick-commands/quick-command-transport.jsx +6 -9
  28. package/client/components/quick-commands/quick-commands-box.jsx +144 -153
  29. package/client/components/quick-commands/quick-commands-select.jsx +10 -3
  30. package/client/components/rdp/rdp-session.jsx +3 -23
  31. package/client/components/rdp/resolution-edit.jsx +40 -42
  32. package/client/components/session/session.jsx +62 -317
  33. package/client/components/session/session.styl +1 -5
  34. package/client/components/session/sessions.jsx +99 -105
  35. package/client/components/setting-panel/bookmark-tree-list.jsx +1 -1
  36. package/client/components/setting-panel/setting-common.jsx +6 -4
  37. package/client/components/setting-panel/setting-modal.jsx +31 -31
  38. package/client/components/setting-panel/start-session-select.jsx +4 -4
  39. package/client/components/setting-panel/tab-settings.jsx +27 -5
  40. package/client/components/setting-sync/data-import.jsx +36 -39
  41. package/client/components/setting-sync/setting-sync-form.jsx +9 -9
  42. package/client/components/setting-sync/setting-sync.jsx +50 -52
  43. package/client/components/sftp/address-bookmark.jsx +57 -58
  44. package/client/components/sftp/confirm-modal-store.jsx +34 -40
  45. package/client/components/sftp/file-item.jsx +14 -3
  46. package/client/components/sftp/file-mode-modal.jsx +3 -0
  47. package/client/components/sftp/list-table-ui.jsx +4 -4
  48. package/client/components/sftp/sftp-entry.jsx +2 -2
  49. package/client/components/sftp/transfer-conflict-store.jsx +13 -17
  50. package/client/components/sftp/transport-action-store.jsx +38 -31
  51. package/client/components/sftp/transports-action-store.jsx +3 -3
  52. package/client/components/sftp/transports-ui-store.jsx +18 -23
  53. package/client/components/shortcuts/shortcut-handler.js +1 -0
  54. package/client/components/shortcuts/shortcuts.jsx +9 -12
  55. package/client/components/side-panel-r/right-side-panel.styl +40 -0
  56. package/client/components/side-panel-r/side-panel-r.jsx +102 -0
  57. package/client/components/sidebar/bookmark-select.jsx +40 -40
  58. package/client/components/sidebar/bookmark.jsx +63 -65
  59. package/client/components/sidebar/history.jsx +53 -50
  60. package/client/components/sidebar/index.jsx +195 -184
  61. package/client/components/sidebar/info-modal.jsx +202 -202
  62. package/client/components/sidebar/sidebar.styl +8 -2
  63. package/client/components/sidebar/transfer-history-modal.jsx +95 -100
  64. package/client/components/sidebar/transfer-list-control.jsx +2 -2
  65. package/client/components/sidebar/transfer-list.jsx +45 -42
  66. package/client/components/sidebar/transfer-modal.jsx +49 -52
  67. package/client/components/sidebar/transport-ui.jsx +1 -1
  68. package/client/components/tabs/index.jsx +261 -49
  69. package/client/components/tabs/tab.jsx +60 -65
  70. package/client/components/tabs/tabs.styl +6 -1
  71. package/client/components/tabs/window-control.jsx +46 -48
  72. package/client/components/terminal/index.jsx +101 -104
  73. package/client/components/terminal/term-search.jsx +26 -24
  74. package/client/components/terminal-info/run-cmd.jsx +0 -25
  75. package/client/components/terminal-info/terminal-info.jsx +60 -0
  76. package/client/components/terminal-info/terminal-info.styl +1 -1
  77. package/client/components/tree-list/bookmark-transport.jsx +8 -9
  78. package/client/components/tree-list/tree-list.jsx +36 -26
  79. package/client/components/vnc/vnc-session.jsx +1 -6
  80. package/client/store/common.js +1 -1
  81. package/client/store/event.js +2 -2
  82. package/client/store/index.js +21 -32
  83. package/client/store/init-state.js +15 -3
  84. package/client/store/load-data.js +1 -1
  85. package/client/store/quick-command.js +4 -4
  86. package/client/store/session.js +1 -1
  87. package/client/store/setting.js +9 -5
  88. package/client/store/system-menu.js +1 -10
  89. package/client/store/tab.js +66 -1
  90. package/client/store/transfer-list.js +5 -6
  91. package/client/store/watch.js +11 -6
  92. package/package.json +1 -1
  93. package/client/components/common/react-subx.jsx +0 -1
  94. package/client/components/common/resize-wrap.jsx +0 -222
  95. package/client/components/common/resize-wrap.styl +0 -9
  96. 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,5 @@
1
+ @require '../../css/includes/theme-default'
2
+ .layout-wrap
3
+ .layout-item
4
+ position absolute
5
+ background main
@@ -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 { Component } from '../common/react-subx'
2
- import Sessions from '../session/sessions'
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 class Index extends Component {
28
- componentDidMount () {
32
+ export default auto(function Index (props) {
33
+ useEffect(() => {
29
34
  notification.config({
30
35
  placement: 'bottomRight'
31
36
  })
32
- const { store } = this.props
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
- render () {
69
- const { store } = this.props
70
- const {
71
- configLoaded,
72
- config,
73
- terminalFullScreen,
74
- pinned,
75
- isSencondInstance,
76
- pinnedQuickCommandBar,
77
- wsInited,
78
- upgradeInfo,
79
- installSrc,
80
- uiThemeConfig
81
- } = store
82
- const cls = classnames({
83
- loaded: configLoaded,
84
- 'not-webapp': !window.et.isWebApp,
85
- 'system-ui': store.config.useSystemTitleBar,
86
- 'not-system-ui': !store.config.useSystemTitleBar,
87
- 'is-mac': isMac,
88
- 'not-mac': !isMac,
89
- 'is-win': isWin,
90
- pinned,
91
- 'qm-pinned': pinnedQuickCommandBar,
92
- 'term-fullscreen': terminalFullScreen,
93
- 'is-main': !isSencondInstance
94
- })
95
- const ext1 = {
96
- className: cls
97
- }
98
- const cpConf = config
99
- const confsCss = Object
100
- .keys((cpConf))
101
- .filter(d => d.startsWith('terminalBackground'))
102
- .reduce((p, k) => {
103
- return {
104
- ...p,
105
- [k]: cpConf[k]
106
- }
107
- }, {})
108
- const themeProps = {
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
- return (
117
- <ConfigProvider
118
- theme={uiThemeConfig}
119
- >
120
- <div {...ext1}>
121
- <ShortcutControl config={config} />
122
- <LoadingUI
123
- wsInited={wsInited}
124
- />
125
- <TermFullscreenControl
126
- terminalFullScreen={terminalFullScreen}
127
- />
128
- <CssOverwrite
129
- {...confsCss}
130
- wsInited={wsInited}
131
- />
132
- <TerminalInteractive />
133
- <UiTheme
134
- {...themeProps}
135
- buildTheme={store.buildTheme}
136
- />
137
- <CustomCss customCss={config.customCss} />
138
- <TextEditor customCss={cpConf.customCss} />
139
- <UpdateCheck
140
- skipVersion={cpConf.skipVersion}
141
- upgradeInfo={upgradeInfo}
142
- installSrc={installSrc}
143
- />
144
- <FileInfoModal />
145
- <FileModeModal />
146
- <SettingModal store={store} />
147
- <BatchOp store={store} />
148
- <div
149
- id='outside-context'
150
- {...outerProps}
151
- >
152
- <Sidebar store={store} />
153
- <Sessions
154
- store={store}
155
- config={cpConf}
156
- />
157
- </div>
158
- <ContextMenu store={store} />
159
- <ConfirmModalStore
160
- store={store}
161
- />
162
- <TransferConflictStore
163
- store={store}
164
- _fileTransfers={store._fileTransfers}
165
- />
166
- <TransportsActionStore
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
- </ConfigProvider>
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
+ })
@@ -6,10 +6,8 @@
6
6
  white-space pre
7
7
  max-height 300px
8
8
  overflow scroll
9
- .sessions
10
- margin-left 43px
11
- .pinned .sessions
12
- margin-left 343px
9
+ // .pinned .sessions
10
+ // margin-left 343px
13
11
  .error-wrapper
14
12
  background main-light
15
13
  height 100%
@@ -60,9 +60,7 @@ export default class ProfileList extends List {
60
60
 
61
61
  renderTransport = () => {
62
62
  return (
63
- <ProfileTransport
64
- store={this.props.store}
65
- />
63
+ <ProfileTransport />
66
64
  )
67
65
  }
68
66
 
@@ -1,4 +1,4 @@
1
- import QmTransport from '../quick-commands/quick-command-transport'
1
+ import QmTransport from '../quick-commands/quick-command-transport-mod'
2
2
 
3
3
  export default class ProfileTransport extends QmTransport {
4
4
  name = 'profiles'
@@ -1,12 +1,9 @@
1
1
  import ProfileTransportMod from './profile-transport-mod'
2
- import { Component } from '../common/react-subx'
3
2
 
4
- export default class ProfileTransport extends Component {
5
- render () {
6
- return (
7
- <div className='pd1b'>
8
- <ProfileTransportMod store={this.props.store} />
9
- </div>
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 class QmTransport extends Component {
5
- render () {
6
- return (
7
- <div className='pd1b'>
8
- <QmTransportMod store={this.props.store} />
9
- </div>
10
- )
11
- }
3
+ export default function QmTransport () {
4
+ return (
5
+ <div className='pd1b'>
6
+ <QmTransportMod store={window.store} />
7
+ </div>
8
+ )
12
9
  }