summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--animism-align/frontend/app/utils/vendor/vimeo/index.js99
-rw-r--r--animism-align/frontend/app/views/viewer/nav/eflux.css6
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.parent.js1
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js15
-rw-r--r--animism-align/frontend/app/views/viewer/player/player.fullscreen.css2
-rw-r--r--animism-align/frontend/app/views/viewer/player/player.fullscreen.js4
6 files changed, 79 insertions, 48 deletions
diff --git a/animism-align/frontend/app/utils/vendor/vimeo/index.js b/animism-align/frontend/app/utils/vendor/vimeo/index.js
index 68363e3..ffa374c 100644
--- a/animism-align/frontend/app/utils/vendor/vimeo/index.js
+++ b/animism-align/frontend/app/utils/vendor/vimeo/index.js
@@ -1,28 +1,29 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import Player from '@vimeo/player';
-import eventNames from './eventNames';
+import React from 'react'
+import PropTypes from 'prop-types'
+import Player from '@vimeo/player'
+import eventNames from './eventNames'
+import oktween from 'app/utils/oktween'
class Vimeo extends React.Component {
constructor(props) {
- super(props);
+ super(props)
- this.refContainer = this.refContainer.bind(this);
+ this.refContainer = this.refContainer.bind(this)
}
componentDidMount() {
- this.createPlayer();
+ this.createPlayer()
}
componentDidUpdate(prevProps) {
// eslint-disable-next-line react/destructuring-assignment
- const changes = Object.keys(this.props).filter((name) => this.props[name] !== prevProps[name]);
+ const changes = Object.keys(this.props).filter((name) => this.props[name] !== prevProps[name])
- this.updateProps(changes);
+ this.updateProps(changes)
}
componentWillUnmount() {
- this.player.destroy();
+ this.player.destroy()
}
/**
@@ -45,7 +46,7 @@ class Vimeo extends React.Component {
muted: this.props.muted,
background: this.props.background,
responsive: this.props.responsive,
- };
+ }
/* eslint-enable react/destructuring-assignment */
}
@@ -53,34 +54,35 @@ class Vimeo extends React.Component {
* @private
*/
updateProps(propNames) {
- const { player } = this;
+ const { player } = this
propNames.forEach((name) => {
// eslint-disable-next-line react/destructuring-assignment
- const value = this.props[name];
+ const value = this.props[name]
switch (name) {
case 'autopause':
- player.setAutopause(value);
- break;
+ player.setAutopause(value)
+ break
case 'color':
- player.setColor(value);
- break;
+ player.setColor(value)
+ break
case 'loop':
- player.setLoop(value);
- break;
+ player.setLoop(value)
+ break
case 'volume':
- player.setVolume(value);
- break;
+ player.setVolume(value)
+ break
case 'paused':
player.getPaused().then((paused) => {
if (value && !paused) {
- return player.pause();
+ return player.pause()
}
if (!value && paused) {
- return player.play();
+ return player.play()
}
- return null;
- });
- break;
+ return null
+ })
+ break
+
case 'seek':
player.setCurrentTime(value).then(function(seconds) {
}).catch(function(error) {
@@ -92,31 +94,56 @@ class Vimeo extends React.Component {
// some other error occurred
break
}
- });
+ })
+ player.element[name] = value
+ break
+
case 'width':
+ player.element[name] = value
+ break
case 'height':
- player.element[name] = value;
- break;
+ player.element[name] = value
+ break
+
+ case 'fadeOut':
+ if (this.props.muted || !value || this.fadeOutTween) return
+ console.log('fade out audio')
+ this.fadeOutTween = oktween.add({
+ from: { volume: 1.0 },
+ to: { volume: 0.0 },
+ duration: value,
+ easing: oktween.easing.quad_in_out,
+ update: obj => {
+ console.log(obj.volume)
+ player.setVolume(obj.volume)
+ },
+ finished: () => {
+ player.setVolume(0.0)
+ this.fadeOutTween = null
+ }
+ })
+ break
+
case 'video':
if (value) {
- const { start } = this.props;
- const loaded = player.loadVideo(value);
+ const { start } = this.props
+ const loaded = player.loadVideo(value)
// Set the start time only when loading a new video.
// It seems like this has to be done after the video has loaded, else it just starts at
// the beginning!
if (typeof start === 'number') {
loaded.then(() => {
- player.setCurrentTime(start);
- });
+ player.setCurrentTime(start)
+ })
}
} else {
- player.unload();
+ player.unload()
}
- break;
+ break
default:
// Nothing
}
- });
+ })
}
/**
diff --git a/animism-align/frontend/app/views/viewer/nav/eflux.css b/animism-align/frontend/app/views/viewer/nav/eflux.css
index 65e9db2..d62a3af 100644
--- a/animism-align/frontend/app/views/viewer/nav/eflux.css
+++ b/animism-align/frontend/app/views/viewer/nav/eflux.css
@@ -88,21 +88,21 @@
}
.growl-tooltip.tooltip-eflux {
left: 1.8rem;
- top: 4rem;
+ top: 5rem;
transition: opacity 0.2s, transform 0.2s;
transform: translateZ(0) translateY(1rem);
opacity: 0;
}
.growl-tooltip.tooltip-play {
right: 6.5rem;
- top: 4rem;
+ top: 6rem;
transition: opacity 0.2s, transform 0.2s;
transform: translateZ(0) translateY(1rem);
opacity: 0;
}
.growl-tooltip.tooltip-transcript {
right: 2.2rem;
- top: 4rem;
+ top: 6rem;
transition: opacity 0.2s, transform 0.2s;
transform: translateZ(0) translateY(1rem);
opacity: 0;
diff --git a/animism-align/frontend/app/views/viewer/nav/nav.parent.js b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
index 554f5bd..0c17c7d 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js
+++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
@@ -15,7 +15,6 @@ class NavParent extends Component {
}
constructor(props){
super(props)
- this.suppressHover = false
this.handleMouseMove = this.handleMouseMove.bind(this)
this.handleMouseEnter = this.handleMouseEnter.bind(this)
this.handleMouseLeave = this.handleMouseLeave.bind(this)
diff --git a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
index adbc22a..84cf59e 100644
--- a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
+++ b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
@@ -22,6 +22,8 @@ class FullscreenVideo extends Component {
scrubbing: false,
// whether or not the video is ready and displaying an image
ready: false,
+ // trigger an audio fade-out
+ fadeOut: false,
}
constructor(props) {
super(props)
@@ -49,13 +51,13 @@ class FullscreenVideo extends Component {
this.setState({ seek })
}
// if we started leaving the element...
- if (this.props.isLeaving && this.props.isLeaving !== prevProps.isLeaving && element.settings.unmuted) {
- this.fadeOutAudio()
+ if (element.fadeOutDuration
+ && !this.state.fadeOut
+ && element.settings.unmuted) {
+ console.log("fade out audio", this.props.fadeOutDuration)
+ setTimeout(() => this.setState({ fadeOut: true }), 0)
}
}
- fadeOutAudio() {
- console.log("fade out audio", this.props.fadeOutDuration)
- }
handlePlay() {
this.setState({ ready: true })
}
@@ -77,7 +79,7 @@ class FullscreenVideo extends Component {
render() {
const { element, media, transitionDuration, play_ts, playing } = this.props
- const { duration, seconds, ready } = this.state
+ const { duration, seconds, ready, fadeOut } = this.state
const { color } = element
const item = media.lookup[element.settings.media_id]
const style = {
@@ -109,6 +111,7 @@ class FullscreenVideo extends Component {
responsive={true}
controls={false}
byline={false}
+ fadeOut={fadeOut && this.props.fadeOutDuration}
onPlay={this.handlePlay}
onPause={this.handlePause}
onTimeUpdate={this.handleTimeUpdate}
diff --git a/animism-align/frontend/app/views/viewer/player/player.fullscreen.css b/animism-align/frontend/app/views/viewer/player/player.fullscreen.css
index a3fcd68..28e90c0 100644
--- a/animism-align/frontend/app/views/viewer/player/player.fullscreen.css
+++ b/animism-align/frontend/app/views/viewer/player/player.fullscreen.css
@@ -70,7 +70,7 @@ iframe {
pointer-events: none;
width: 100%;
height: calc(100vh) !important;
- padding: 0 0 3rem 0;
+ padding: 3rem 0 3rem 0;
transition: opacity 0.5s;
}
diff --git a/animism-align/frontend/app/views/viewer/player/player.fullscreen.js b/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
index 4da9a3b..076b7ac 100644
--- a/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
+++ b/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
@@ -107,8 +107,10 @@ class PlayerFullscreen extends Component {
const FullscreenComponent = fullscreenComponents[type]
fadeInDuration *= 1000
fadeOutDuration *= 1000
- if (!isEntering && !isLeaving) {
+ if (!isEntering) {
fadeInDuration = 0
+ }
+ if (!isLeaving) {
fadeOutDuration = 0
}
const transitionDuration = (isEntering ? fadeInDuration : fadeOutDuration) + 'ms'