diff options
author | Sam Potts <sam@potts.es> | 2017-11-14 17:27:40 +0100 |
---|---|---|
committer | Sam Potts <sam@potts.es> | 2017-11-14 17:27:40 +0100 |
commit | c64b8f69403b0287f55f25dc533b41cb8d34075d (patch) | |
tree | 7f7212c63d7d52d9bd086ebdb21353ff8e2c3c39 /src/js/plugins/vimeo.js | |
parent | 022b436c3f51d6a1a9bdf29ff9d34325389ecc82 (diff) | |
download | plyr-c64b8f69403b0287f55f25dc533b41cb8d34075d.tar.lz plyr-c64b8f69403b0287f55f25dc533b41cb8d34075d.tar.xz plyr-c64b8f69403b0287f55f25dc533b41cb8d34075d.zip |
Started on error handling, Safari icon fix
Diffstat (limited to 'src/js/plugins/vimeo.js')
-rw-r--r-- | src/js/plugins/vimeo.js | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index 18ef1d38..f567bc32 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -37,7 +37,8 @@ const vimeo = { setAspectRatio(input) { const ratio = utils.is.string(input) ? input.split(':') : this.config.ratio.split(':'); const padding = 100 / ratio[0] * ratio[1]; - const offset = (300 - padding) / 6; + const height = 200; + const offset = (height - padding) / (height / 50); this.elements.wrapper.style.paddingBottom = `${padding}%`; this.media.style.transform = `translateY(-${offset}%)`; }, @@ -70,23 +71,27 @@ const vimeo = { // https://github.com/vimeo/player.js player.embed = new window.Vimeo.Player(iframe); + player.media.paused = true; + player.media.currentTime = 0; + // Create a faux HTML5 API using the Vimeo API player.media.play = () => { - player.embed.play(); - player.media.paused = false; + player.embed.play().then(() => { + player.media.paused = false; + }); }; player.media.pause = () => { - player.embed.pause(); - player.media.paused = true; + player.embed.pause().then(() => { + player.media.paused = true; + }); }; player.media.stop = () => { - player.embed.stop(); - player.media.paused = true; + player.embed.stop().then(() => { + player.media.paused = true; + player.currentTime = 0; + }); }; - player.media.paused = true; - player.media.currentTime = 0; - // Seeking let { currentTime } = player.media; Object.defineProperty(player.media, 'currentTime', { @@ -121,9 +126,10 @@ const vimeo = { return speed; }, set(input) { - speed = input; - player.embed.setPlaybackRate(input); - utils.dispatchEvent.call(player, player.media, 'ratechange'); + player.embed.setPlaybackRate(input).then(() => { + speed = input; + utils.dispatchEvent.call(player, player.media, 'ratechange'); + }); }, }); @@ -134,9 +140,10 @@ const vimeo = { return volume; }, set(input) { - volume = input; - player.embed.setVolume(input); - utils.dispatchEvent.call(player, player.media, 'volumechange'); + player.embed.setVolume(input).then(() => { + volume = input; + utils.dispatchEvent.call(player, player.media, 'volumechange'); + }); }, }); @@ -148,9 +155,11 @@ const vimeo = { }, set(input) { const toggle = utils.is.boolean(input) ? input : false; - muted = toggle; - player.embed.setVolume(toggle ? 0 : player.config.volume); - utils.dispatchEvent.call(player, player.media, 'volumechange'); + + player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => { + muted = toggle; + utils.dispatchEvent.call(player, player.media, 'volumechange'); + }); }, }); @@ -161,8 +170,11 @@ const vimeo = { return loop; }, set(input) { - loop = utils.is.boolean(input) ? input : player.config.loop.active; - player.embed.setLoop(loop); + const toggle = utils.is.boolean(input) ? input : player.config.loop.active; + + player.embed.setLoop(toggle).then(() => { + loop = toggle; + }); }, }); @@ -269,6 +281,11 @@ const vimeo = { utils.dispatchEvent.call(player, player.media, 'ended'); }); + player.embed.on('error', detail => { + player.media.error = detail; + utils.dispatchEvent.call(player, player.media, 'error'); + }); + // Rebuild UI window.setTimeout(() => ui.build.call(player), 0); }, |