summaryrefslogtreecommitdiff
path: root/animism-align/frontend/views/align/components/timeline.component.js
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/views/align/components/timeline.component.js')
-rw-r--r--animism-align/frontend/views/align/components/timeline.component.js129
1 files changed, 0 insertions, 129 deletions
diff --git a/animism-align/frontend/views/align/components/timeline.component.js b/animism-align/frontend/views/align/components/timeline.component.js
deleted file mode 100644
index 3b12cb5..0000000
--- a/animism-align/frontend/views/align/components/timeline.component.js
+++ /dev/null
@@ -1,129 +0,0 @@
-import React, { Component } from 'react'
-// import { Link } from 'react-router-dom'
-import { bindActionCreators } from 'redux'
-import { connect } from 'react-redux'
-
-import actions from '../../../actions'
-// import * as alignActions from '../align.actions'
-
-import Waveform from './waveform.component'
-import Ticks from './ticks.component'
-import Cursor from './cursor.component'
-import PlayButton from './playButton.component'
-import PlayCursor from './playCursor.component'
-
-import { ZOOM_STEPS } from '../constants'
-import { clamp } from '../../../util'
-
-class Timeline extends Component {
- constructor(props){
- super(props)
- this.handleKeydown = this.handleKeydown.bind(this)
- this.handleMouseMove = this.handleMouseMove.bind(this)
- this.handleWheel = this.handleWheel.bind(this)
- this.handleClick = this.handleClick.bind(this)
- }
- componentDidMount() {
- this.bind()
- }
- componentWillUnmount() {
- this.unbind()
- }
- bind() {
- document.addEventListener('keydown', this.handleKeydown)
- }
- unbind() {
- document.removeEventListener('keydown', this.handleKeydown)
- }
- handleKeydown(e) {
- if (document.activeElement !== document.body) {
- return
- }
- if (e.shiftKey) {
- switch (e.keyCode) {
- case 187: // plus
- actions.align.setZoom(this.props.timeline.zoom - 1)
- break
- case 189: // minus
- actions.align.setZoom(this.props.timeline.zoom + 1)
- break
- }
- } else {
- console.log(e.keyCode)
- switch (e.keyCode) {
- case 32: // spacebar
- actions.audio.toggle()
- break
- case 38: // up
- actions.audio.jump(- ZOOM_STEPS[this.props.timeline.zoom] * 0.1)
- break
- case 40: // down
- actions.audio.jump(ZOOM_STEPS[this.props.timeline.zoom] * 0.1)
- break
- }
- }
- }
- handleWheel(e) {
- let { start_ts, zoom, duration } = this.props.timeline
- let secondsPerPixel = ZOOM_STEPS[zoom] * 0.1 // 0.1 sec / step
- let widthTimeDuration = window.innerHeight * secondsPerPixel // secs per pixel
-
- start_ts = clamp(start_ts + e.deltaY * ZOOM_STEPS[zoom], 0, Math.max(0, duration - widthTimeDuration / 2))
- if (e.shiftKey) {
- if (Math.abs(e.deltaY) < 2) return
- if (e.deltaY > 0) {
- actions.align.throttledSetZoom(this.props.timeline.zoom + 1)
- } else {
- actions.align.throttledSetZoom(this.props.timeline.zoom - 1)
- }
- } else if (e.altKey) {
- actions.audio.seek(start_ts)
- } else {
- actions.align.setScrollPosition(start_ts)
- }
- }
- handleMouseMove(e) {
- const cursor_ts = positionToTime(e.pageY, this.props.timeline)
- actions.align.setCursor(cursor_ts)
- }
- handleClick(e) {
- const play_ts = positionToTime(e.pageY, this.props.timeline)
- actions.audio.seek(play_ts)
- }
- render() {
- return (
- <div
- className='timeline'
- onWheel={this.handleWheel}
- onMouseMove={this.handleMouseMove}
- >
- <Waveform onClick={this.handleClick} />
- <Ticks timeline={this.props.timeline} />
- <Cursor timeline={this.props.timeline} />
- <PlayCursor />
- <PlayButton />
- </div>
- )
- }
-}
-
-const positionToTime = (y, { start_ts, zoom, duration }) => {
- const secondsPerPixel = ZOOM_STEPS[zoom] * 0.1
- const widthTimeDuration = window.innerHeight * secondsPerPixel
-
- const timeMin = start_ts
- const timeMax = Math.min(start_ts + widthTimeDuration, duration)
- const timeWidth = timeMax - timeMin
-
- return clamp(y * secondsPerPixel + start_ts, 0, timeMax)
-}
-
-const mapStateToProps = state => ({
- timeline: state.align.timeline,
-})
-
-const mapDispatchToProps = dispatch => ({
- // alignActions: bindActionCreators({ ...alignActions }, dispatch),
-})
-
-export default connect(mapStateToProps, mapDispatchToProps)(Timeline)