fix https://github.com/catarak/p5.js-web-editor/issues/31, https://github.com/catarak/p5.js-web-editor/issues/22, and https://github.com/catarak/p5.js-web-editor/issues/37
This commit is contained in:
parent
93d6d8777f
commit
7cca65c566
3 changed files with 53 additions and 6 deletions
|
@ -17,6 +17,12 @@ import { getFile, getHTMLFile, getJSFiles, getCSSFiles, setSelectedFile } from '
|
||||||
import SplitPane from 'react-split-pane';
|
import SplitPane from 'react-split-pane';
|
||||||
|
|
||||||
class IDEView extends React.Component {
|
class IDEView extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this._handleConsolePaneOnDragFinished = this._handleConsolePaneOnDragFinished.bind(this);
|
||||||
|
this._handleSidebarPaneOnDragFinished = this._handleSidebarPaneOnDragFinished.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
if (this.props.params.project_id) {
|
if (this.props.params.project_id) {
|
||||||
const id = this.props.params.project_id;
|
const id = this.props.params.project_id;
|
||||||
|
@ -29,6 +35,19 @@ class IDEView extends React.Component {
|
||||||
this.autosaveInterval = setInterval(this.props.saveProject, 30000);
|
this.autosaveInterval = setInterval(this.props.saveProject, 30000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.consoleSize = this.props.ide.consoleIsExpanded ? 180 : 29;
|
||||||
|
this.sidebarSize = this.props.ide.sidebarIsExpanded ? 180 : 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUpdate(nextProps) {
|
||||||
|
if (this.props.ide.consoleIsExpanded !== nextProps.ide.consoleIsExpanded) {
|
||||||
|
this.consoleSize = nextProps.ide.consoleIsExpanded ? 180 : 29;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.props.ide.sidebarIsExpanded !== nextProps.ide.sidebarIsExpanded) {
|
||||||
|
this.sidebarSize = nextProps.ide.sidebarIsExpanded ? 180 : 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
|
@ -53,6 +72,22 @@ class IDEView extends React.Component {
|
||||||
this.autosaveInterval = null;
|
this.autosaveInterval = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_handleConsolePaneOnDragFinished() {
|
||||||
|
this.consoleSize = this.refs.consolePane.state.draggedSize;
|
||||||
|
this.refs.consolePane.setState({
|
||||||
|
resized: false,
|
||||||
|
draggedSize: undefined,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_handleSidebarPaneOnDragFinished() {
|
||||||
|
this.sidebarSize = this.refs.sidebarPane.state.draggedSize;
|
||||||
|
this.refs.sidebarPane.setState({
|
||||||
|
resized: false,
|
||||||
|
draggedSize: undefined
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className="ide">
|
<div className="ide">
|
||||||
|
@ -88,7 +123,13 @@ class IDEView extends React.Component {
|
||||||
setAutosave={this.props.setAutosave}
|
setAutosave={this.props.setAutosave}
|
||||||
/>
|
/>
|
||||||
<div className="editor-preview-container">
|
<div className="editor-preview-container">
|
||||||
<SplitPane split="vertical" defaultSize={180}>
|
<SplitPane
|
||||||
|
split="vertical"
|
||||||
|
defaultSize={this.sidebarSize}
|
||||||
|
ref="sidebarPane"
|
||||||
|
onDragFinished={this._handleSidebarPaneOnDragFinished}
|
||||||
|
allowResize={this.props.ide.sidebarIsExpanded}
|
||||||
|
>
|
||||||
<Sidebar
|
<Sidebar
|
||||||
files={this.props.files}
|
files={this.props.files}
|
||||||
setSelectedFile={this.props.setSelectedFile}
|
setSelectedFile={this.props.setSelectedFile}
|
||||||
|
@ -109,7 +150,15 @@ class IDEView extends React.Component {
|
||||||
onChange={() => (this.refs.overlay.style.display = 'block')}
|
onChange={() => (this.refs.overlay.style.display = 'block')}
|
||||||
onDragFinished={() => (this.refs.overlay.style.display = 'none')}
|
onDragFinished={() => (this.refs.overlay.style.display = 'none')}
|
||||||
>
|
>
|
||||||
<SplitPane split="horizontal" primary="second" defaultSize={29} minSize={29} ref="consolePane">
|
<SplitPane
|
||||||
|
split="horizontal"
|
||||||
|
primary="second"
|
||||||
|
defaultSize={this.consoleSize}
|
||||||
|
minSize={29}
|
||||||
|
ref="consolePane"
|
||||||
|
onDragFinished={this._handleConsolePaneOnDragFinished}
|
||||||
|
allowResize={this.props.ide.consoleIsExpanded}
|
||||||
|
>
|
||||||
<Editor
|
<Editor
|
||||||
file={this.props.selectedFile}
|
file={this.props.selectedFile}
|
||||||
updateFileContent={this.props.updateFileContent}
|
updateFileContent={this.props.updateFileContent}
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
.sidebar--contracted & {
|
.sidebar--contracted & {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar__add {
|
.sidebar__add {
|
||||||
|
|
|
@ -47,10 +47,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar {
|
.sidebar {
|
||||||
// width: #{180 / $base-font-size}rem;
|
|
||||||
// &.sidebar--contracted {
|
|
||||||
// width: #{20 / $base-font-size}rem;
|
|
||||||
// }
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue