diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-07-22 16:53:44 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-07-22 16:53:44 +0200 |
| commit | 74888b0fea12020da23ad0825d5d3e55aa6155c4 (patch) | |
| tree | a60b473afd92f68df97eaa903edd657fba3e6856 /animism-align/frontend/app/views/viewer/viewer.container.js | |
| parent | ef78bc6a084f92b4794e987b5832240d85b6479e (diff) | |
adding spot for the viewer
Diffstat (limited to 'animism-align/frontend/app/views/viewer/viewer.container.js')
| -rw-r--r-- | animism-align/frontend/app/views/viewer/viewer.container.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/animism-align/frontend/app/views/viewer/viewer.container.js b/animism-align/frontend/app/views/viewer/viewer.container.js new file mode 100644 index 0000000..ff68c4c --- /dev/null +++ b/animism-align/frontend/app/views/viewer/viewer.container.js @@ -0,0 +1,66 @@ +import React, { Component } from 'react' +import { Route } from 'react-router-dom' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import './viewer.css' + +import actions from 'app/actions' +import { Loader } from 'app/common' + +import ViewerRouter from './containers/viewer.router' + +class ViewerContainer extends Component { + constructor(props) { + super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) + } + componentDidMount() { + document.addEventListener('keydown', this.handleKeyDown) + } + componentWillUnmount() { + document.removeEventListener('keydown', this.handleKeyDown) + } + handleKeyDown(e) { + if (document.activeElement !== document.body) { + return + } + // console.log(e.keyCode) + switch (e.keyCode) { + case 32: // spacebar + e.preventDefault() + actions.audio.toggle() + break + case 37: // left + case 38: // up + e.preventDefault() + actions.audio.jump(-5.0) + break + case 39: // right + case 40: // down + e.preventDefault() + actions.audio.jump(5.0) + break + } + } + render() { + if (!this.props.loaded) { + return <div className='viewer body loading'><Loader /></div> + } + return ( + <div className='viewer body'> + <Route exact path='/viewer/:component/' component={ViewerRouter} /> + </div> + ) + } +} + +const mapStateToProps = state => ({ + loaded: !!state.annotation.lookup && !!state.paragraph.lookup && !!state.media.lookup +}) + +const mapDispatchToProps = dispatch => ({ + // alignActions: bindActionCreators({ ...alignActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(ViewerContainer) |
