aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/plugins')
-rw-r--r--src/js/plugins/vimeo.js39
-rw-r--r--src/js/plugins/youtube.js21
2 files changed, 50 insertions, 10 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js
index 12632f64..34e326e7 100644
--- a/src/js/plugins/vimeo.js
+++ b/src/js/plugins/vimeo.js
@@ -77,6 +77,34 @@ const vimeo = {
player.media.paused = true;
player.media.currentTime = 0;
+ let { currentTime } = player.media;
+
+ // Seeking
+ Object.defineProperty(player.media, 'currentTime', {
+ get() {
+ return currentTime;
+ },
+ set(time) {
+ // Get current paused state
+ const { paused } = player.media;
+
+ player.warn('called');
+
+ // Set seeking flag
+ player.media.seeking = true;
+
+ // Trigger seeking
+ utils.dispatchEvent.call(player, player.media, 'seeking');
+
+ // Seek after events
+ player.embed.setCurrentTime(time);
+
+ // Restore pause state
+ if (paused) {
+ this.pause();
+ }
+ },
+ });
// Playback speed
// Not currently supported in Vimeo
@@ -88,10 +116,10 @@ const vimeo = {
});
// Rebuild UI
- ui.build.call(player);
+ window.setTimeout(() => ui.build.call(player), 0);
player.embed.getCurrentTime().then(value => {
- player.media.currentTime = value;
+ currentTime = value;
utils.dispatchEvent.call(this, this.media, 'timeupdate');
});
@@ -103,7 +131,6 @@ const vimeo = {
// Get captions
player.embed.getTextTracks().then(tracks => {
player.captions.tracks = tracks;
-
captions.setup.call(player);
});
@@ -121,10 +148,6 @@ const vimeo = {
if (utils.is.htmlElement(player.embed.element) && player.supported.ui) {
const frame = player.embed.element;
- // Fix Vimeo controls issue
- // https://github.com/sampotts/plyr/issues/697
- // frame.src = `${frame.src}&transparent=0`;
-
// Fix keyboard focus issues
// https://github.com/sampotts/plyr/issues/317
frame.setAttribute('tabindex', -1);
@@ -144,7 +167,7 @@ const vimeo = {
this.embed.on('timeupdate', data => {
this.media.seeking = false;
- this.media.currentTime = data.seconds;
+ currentTime = data.seconds;
utils.dispatchEvent.call(this, this.media, 'timeupdate');
});
diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js
index 7d5c729c..ce21433e 100644
--- a/src/js/plugins/youtube.js
+++ b/src/js/plugins/youtube.js
@@ -118,6 +118,23 @@ const youtube = {
player.media.muted = instance.isMuted();
player.media.currentTime = 0;
+ // Seeking
+ Object.defineProperty(player.media, 'currentTime', {
+ get() {
+ return Number(instance.getCurrentTime());
+ },
+ set(time) {
+ // Set seeking flag
+ player.media.seeking = true;
+
+ // Trigger seeking
+ utils.dispatchEvent.call(player, player.media, 'seeking');
+
+ // Seek after events sent
+ instance.seekTo(time);
+ },
+ });
+
// Playback speed
Object.defineProperty(player.media, 'playbackRate', {
get() {
@@ -142,7 +159,7 @@ const youtube = {
}
// Rebuild UI
- ui.build.call(player);
+ window.setTimeout(() => ui.build.call(player), 0);
utils.dispatchEvent.call(player, player.media, 'timeupdate');
utils.dispatchEvent.call(player, player.media, 'durationchange');
@@ -218,7 +235,7 @@ const youtube = {
// Poll to get playback progress
player.timers.playing = window.setInterval(() => {
- player.media.currentTime = instance.getCurrentTime();
+ // player.media.currentTime = instance.getCurrentTime();
utils.dispatchEvent.call(player, player.media, 'timeupdate');
}, 100);