Doodle3D-Core/src/components/App.js

92 lines
2.2 KiB
JavaScript
Raw Normal View History

2017-11-15 00:46:02 +01:00
import React from 'react';
import PropTypes from 'proptypes';
import injectSheet from 'react-jss';
import { connect } from 'react-redux';
2017-11-15 00:53:19 +01:00
import * as actions from '../actions';
2017-11-15 00:46:02 +01:00
import Logo from './Logo.js';
import D2Panel from './D2Panel.js';
import D3Panel from './D3Panel.js';
import SketcherToolbars from './SketcherToolbars.js';
2017-11-15 15:13:49 +01:00
import Button from './Button.js';
import vlineImageURL from '../../img/vline.png';
import btnUndoImageURL from '../../img/mainmenu/btnUndo.png';
import btnRedoImageURL from '../../img/mainmenu/btnRedo.png';
import InlineIconsLoader from './InlineIconsLoader.js';
2017-11-15 00:46:02 +01:00
const styles = {
container: {
2017-11-15 15:13:49 +01:00
position: 'relative',
userSelect: 'none',
2017-11-15 00:46:02 +01:00
display: 'flex',
flexDirection: 'column',
alignItems: 'stretch',
height: '100%'
},
appContainer: {
flexGrow: 1,
display: 'flex',
alignItems: 'stretch',
overflow: 'hidden'
},
vLine: {
backgroundSize: '14px auto',
backgroundImage: `url('${vlineImageURL}')`,
width: '28px'
},
undoMenu: {
display: 'flex',
position: 'absolute',
top: 0,
left: '50%',
marginLeft: '-68px'
},
undo: {
cursor: 'pointer',
backgroundSize: '68px auto',
width: '68px',
height: '58px',
backgroundImage: `url('${btnUndoImageURL}')`
},
redo: {
cursor: 'pointer',
backgroundSize: '71px auto',
width: '71px',
height: '58px',
backgroundImage: `url('${btnRedoImageURL}')`
}
};
class App extends React.Component {
static propTypes = {
undo: PropTypes.func.isRequired,
redo: PropTypes.func.isRequired,
classes: PropTypes.objectOf(PropTypes.string)
};
render() {
const { classes, undo, redo } = this.props;
return (
<div className={classes.container}>
<InlineIconsLoader />
2017-11-15 00:46:02 +01:00
<div className={classes.appContainer}>
<D2Panel />
<div className={classes.vLine} />
<D3Panel />
</div>
<Logo />
<div className={classes.undoMenu}>
2017-11-15 15:13:49 +01:00
<Button onSelect={undo} className={classes.undo} />
<Button onSelect={redo} className={classes.redo} />
2017-11-15 00:46:02 +01:00
</div>
2017-11-15 15:13:49 +01:00
<SketcherToolbars />
2017-11-15 00:46:02 +01:00
</div>
);
}
}
export default injectSheet(styles)(connect(null, {
undo: actions.undo.undo,
redo: actions.undo.redo
})(App));