diff options
Diffstat (limited to 'animism-align')
| -rw-r--r-- | animism-align/frontend/app/views/viewer/player/player.container.js | 41 | ||||
| -rw-r--r-- | animism-align/frontend/app/views/viewer/viewer.container.js | 32 |
2 files changed, 40 insertions, 33 deletions
diff --git a/animism-align/frontend/app/views/viewer/player/player.container.js b/animism-align/frontend/app/views/viewer/player/player.container.js index a2f999d..f783b9b 100644 --- a/animism-align/frontend/app/views/viewer/player/player.container.js +++ b/animism-align/frontend/app/views/viewer/player/player.container.js @@ -2,16 +2,55 @@ import React, { Component } from 'react' import { connect } from 'react-redux' import actions from 'app/actions' -import { floatInRange } from 'app/utils' +import { floatInRange, clamp } from 'app/utils' import PlayerTranscript from './player.transcript' import PlayerFullscreen from './player.fullscreen' class PlayerContainer extends Component { + constructor(props) { + super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) + } componentDidMount() { // console.log(this.props.sections) const { sections } = this.props actions.viewer.setCurrentSection(sections[0], sections[1]) + document.addEventListener('keydown', this.handleKeyDown) + } + componentWillUnmount() { + document.removeEventListener('keydown', this.handleKeyDown) + } + + handleKeyDown(e) { + if (document.activeElement !== document.body) { + return + } + const { currentSection, audio } = this.props + const { play_ts } = audio + let start_ts = 0 + let end_ts = 0 + if (currentSection) { + start_ts = currentSection.start_ts + end_ts = currentSection.end_ts + } + // 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.seek(clamp(play_ts - 5.0, start_ts, end_ts)) + break + case 39: // right + case 40: // down + e.preventDefault() + actions.audio.seek(clamp(play_ts + 5.0, start_ts, end_ts)) + break + } } componentDidUpdate(prevProps) { diff --git a/animism-align/frontend/app/views/viewer/viewer.container.js b/animism-align/frontend/app/views/viewer/viewer.container.js index 522f8bc..f91adb3 100644 --- a/animism-align/frontend/app/views/viewer/viewer.container.js +++ b/animism-align/frontend/app/views/viewer/viewer.container.js @@ -29,38 +29,6 @@ import Checklist from './checklist/checklist.container' import VitrineModal from './modals/modals.vitrine' 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() { const { loaded, viewer } = this.props if (!loaded) { |
