mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
ui: scratchpad sidebar api
This commit is contained in:
1 parent
60fc805c84
commit
997b403db3
5 files changed
+38
-4
No files matched your search
@@ -0,0 +1,9 @@
|
||||
import React from 'react';
|
||||
|
||||
export default function ScratchpadSidebar({ name }) {
|
||||
const Component = window.Hydro.scratchpad?.[name];
|
||||
const [state, setState] = React.useState(0);
|
||||
if (Component) return <Component />;
|
||||
setTimeout(() => setState(state + 1), 1000);
|
||||
return <div>No registered providers.</div>;
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import Toolbar, {
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
pretestVisible: state.ui.pretest.visible,
|
||||
sidebarVisible: state.ui.sidebar.visible,
|
||||
recordsVisible: state.ui.records.visible,
|
||||
isPosting: state.ui.isPosting,
|
||||
isRunning: state.pretest.isRunning,
|
||||
@@ -183,6 +184,16 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool
|
||||
{i18n('Records')}
|
||||
</ToolbarButton>
|
||||
)}
|
||||
{/* <ToolbarButton
|
||||
activated={this.props.sidebarVisible}
|
||||
onClick={() => this.props.togglePanel('sidebar')}
|
||||
data-global-hotkey="alt+w"
|
||||
data-tooltip={`${i18n('Toggle Sidebar')} (Alt+L)`}
|
||||
>
|
||||
<Icon name="edit" />
|
||||
{' '}
|
||||
{i18n('Pretest')}
|
||||
</ToolbarButton> */}
|
||||
</Toolbar>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,8 +8,9 @@ import ScratchpadToolbar from './ScratchpadToolbarContainer';
|
||||
import ScratchpadEditor from './ScratchpadEditorContainer';
|
||||
import ScratchpadPretest from './ScratchpadPretestContainer';
|
||||
import ScratchpadRecords from './ScratchpadRecordsContainer';
|
||||
import ScratchpadSidebar from './ScratchpadSidebar';
|
||||
|
||||
function buildNestedPane([a, ...panes]) {
|
||||
function buildNestedPane([a, ...panes], mode = 'horizontal') {
|
||||
const elements = [
|
||||
a,
|
||||
...panes.filter((p) => p.props.visible),
|
||||
@@ -18,7 +19,7 @@ function buildNestedPane([a, ...panes]) {
|
||||
return elements
|
||||
.reduce((prev, curr) => (
|
||||
<SplitPane
|
||||
split="horizontal"
|
||||
split={mode}
|
||||
primary="second"
|
||||
defaultSize={curr.props.size}
|
||||
key={curr.element.key}
|
||||
@@ -63,7 +64,15 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadCont
|
||||
primary="second"
|
||||
onChange={(size) => this.handleChangeSize('main', size)}
|
||||
>
|
||||
<Dom className="scratchpad__problem" childDom={$('.problem-content').get(0)} />
|
||||
<SplitPane
|
||||
defaultSize={this.props.ui.sidebar.visible ? this.props.ui.sidebar.size : 0}
|
||||
split="vertical"
|
||||
primary="second"
|
||||
onChange={(size) => this.handleChangeSize('sidebar', size)}
|
||||
>
|
||||
<Dom className="scratchpad__problem" childDom={$('.problem-content').get(0)} />
|
||||
<ScratchpadSidebar name="debug" />
|
||||
</SplitPane>
|
||||
{buildNestedPane([
|
||||
<SplitPaneFillOverlay key="editor" className="flex-col">
|
||||
<ScratchpadToolbar />
|
||||
|
||||
@@ -11,6 +11,10 @@ export default function reducer(state = {
|
||||
: false,
|
||||
size: 200,
|
||||
},
|
||||
sidebar: {
|
||||
visible: false,
|
||||
size: 100,
|
||||
},
|
||||
records: {
|
||||
visible: UiContext.canViewRecord && localStorage.getItem('scratchpad/records') === 'true',
|
||||
size: 100,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import $ from 'jquery';
|
||||
import _ from 'lodash';
|
||||
import React from 'react';
|
||||
|
||||
import './utils/delay';
|
||||
import './utils/emulateAnchorClick';
|
||||
@@ -23,6 +24,6 @@ import './components/notification';
|
||||
import './components/nprogress';
|
||||
import './components/monaco/loader';
|
||||
|
||||
window.node_modules = { _, $ };
|
||||
window.node_modules = { _, $, React };
|
||||
window.$ = $;
|
||||
window.jQuery = $;
|
||||
Reference in new issue
Block a user