Menu design tweaks, moved logic into plugins
This commit is contained in:
@ -77,9 +77,9 @@ const vimeo = {
|
||||
|
||||
player.media.paused = true;
|
||||
player.media.currentTime = 0;
|
||||
let { currentTime } = player.media;
|
||||
|
||||
// Seeking
|
||||
let { currentTime } = player.media;
|
||||
Object.defineProperty(player.media, 'currentTime', {
|
||||
get() {
|
||||
return currentTime;
|
||||
@ -114,14 +114,34 @@ const vimeo = {
|
||||
set() {},
|
||||
});
|
||||
|
||||
// Volume
|
||||
let { volume } = player.media;
|
||||
Object.defineProperty(player.media, 'volume', {
|
||||
get() {
|
||||
return volume;
|
||||
},
|
||||
set(input) {
|
||||
volume = input;
|
||||
player.embed.setVolume(input);
|
||||
utils.dispatchEvent.call(player, player.media, 'volumechange');
|
||||
},
|
||||
});
|
||||
|
||||
// Rebuild UI
|
||||
window.setTimeout(() => ui.build.call(player), 0);
|
||||
|
||||
// Get title
|
||||
player.embed.getVideoTitle().then(title => {
|
||||
player.config.title = title;
|
||||
});
|
||||
|
||||
// Get current time
|
||||
player.embed.getCurrentTime().then(value => {
|
||||
currentTime = value;
|
||||
utils.dispatchEvent.call(this, this.media, 'timeupdate');
|
||||
});
|
||||
|
||||
// Get duration
|
||||
player.embed.getDuration().then(value => {
|
||||
player.media.duration = value;
|
||||
utils.dispatchEvent.call(player, player.media, 'durationchange');
|
||||
|
@ -140,8 +140,19 @@ const youtube = {
|
||||
get() {
|
||||
return instance.getPlaybackRate();
|
||||
},
|
||||
set(speed) {
|
||||
instance.setPlaybackRate(speed);
|
||||
set(input) {
|
||||
instance.setPlaybackRate(input);
|
||||
},
|
||||
});
|
||||
|
||||
// Volume
|
||||
Object.defineProperty(player.media, 'volume', {
|
||||
get() {
|
||||
return instance.getVolume() / 100;
|
||||
},
|
||||
set(input) {
|
||||
instance.setVolume(input * 100);
|
||||
utils.dispatchEvent.call(player, player.media, 'volumechange');
|
||||
},
|
||||
});
|
||||
|
||||
@ -235,9 +246,8 @@ const youtube = {
|
||||
|
||||
// Poll to get playback progress
|
||||
player.timers.playing = window.setInterval(() => {
|
||||
// player.media.currentTime = instance.getCurrentTime();
|
||||
utils.dispatchEvent.call(player, player.media, 'timeupdate');
|
||||
}, 100);
|
||||
}, 50);
|
||||
|
||||
// Check duration again due to YouTube bug
|
||||
// https://github.com/sampotts/plyr/issues/374
|
||||
|
@ -320,40 +320,7 @@ class Plyr {
|
||||
targetTime = this.duration;
|
||||
}
|
||||
|
||||
// Set the current time
|
||||
// TODO: This should be included in the "adapters"
|
||||
// Embeds
|
||||
/* if (this.isEmbed) {
|
||||
// Get current paused state
|
||||
const { paused } = this.media;
|
||||
|
||||
switch (this.type) {
|
||||
case 'youtube':
|
||||
this.embed.seekTo(targetTime);
|
||||
break;
|
||||
|
||||
case 'vimeo':
|
||||
this.embed.setCurrentTime(targetTime);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Restore pause (some will play on seek)
|
||||
if (paused) {
|
||||
this.pause();
|
||||
}
|
||||
|
||||
// Set seeking flag
|
||||
this.media.seeking = true;
|
||||
|
||||
// Trigger seeking
|
||||
utils.dispatchEvent.call(this, this.media, 'seeking');
|
||||
} else {
|
||||
|
||||
} */
|
||||
|
||||
// Set
|
||||
this.media.currentTime = targetTime.toFixed(4);
|
||||
|
||||
// Logging
|
||||
@ -364,7 +331,7 @@ class Plyr {
|
||||
return Number(this.media.currentTime);
|
||||
}
|
||||
|
||||
// Get the duration (or custom if set)
|
||||
// Duration
|
||||
get duration() {
|
||||
// Faux duration set via config
|
||||
const fauxDuration = parseInt(this.config.duration, 10);
|
||||
@ -376,7 +343,7 @@ class Plyr {
|
||||
return !Number.isNaN(fauxDuration) ? fauxDuration : realDuration;
|
||||
}
|
||||
|
||||
// Set volume
|
||||
// Volume
|
||||
set volume(value) {
|
||||
let volume = value;
|
||||
const max = 1;
|
||||
@ -409,26 +376,6 @@ class Plyr {
|
||||
// Set the player volume
|
||||
this.media.volume = volume;
|
||||
|
||||
// Trigger volumechange for embeds
|
||||
// TODO: Do in adapters
|
||||
if (this.isEmbed) {
|
||||
// Set media volume
|
||||
switch (this.type) {
|
||||
case 'youtube':
|
||||
this.embed.setVolume(this.media.volume * 100);
|
||||
break;
|
||||
|
||||
case 'vimeo':
|
||||
this.embed.setVolume(this.media.volume);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
utils.dispatchEvent.call(this, this.media, 'volumechange');
|
||||
}
|
||||
|
||||
// Toggle muted state
|
||||
if (volume === 0) {
|
||||
this.toggleMute(true);
|
||||
|
@ -30,7 +30,7 @@
|
||||
animation: plyr-popup 0.2s ease;
|
||||
background: @plyr-menu-bg;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 1px 2px fade(#000, 20%);
|
||||
box-shadow: @plyr-menu-shadow;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
color: @plyr-menu-color;
|
||||
@ -117,8 +117,8 @@
|
||||
height: 1px;
|
||||
overflow: hidden;
|
||||
margin-top: ceil(@plyr-control-padding / 2);
|
||||
background: fade(#000, 15%);
|
||||
box-shadow: 0 1px 0 fade(#fff, 10%);
|
||||
background: @plyr-menu-border-color;
|
||||
box-shadow: 0 1px 0 @plyr-menu-border-shadow-color;
|
||||
}
|
||||
|
||||
&.tab-focus::after,
|
||||
|
@ -12,7 +12,7 @@
|
||||
opacity: 0;
|
||||
background: @plyr-tooltip-bg;
|
||||
border-radius: @plyr-tooltip-radius;
|
||||
box-shadow: 0 1px 2px fade(#000, 10%);
|
||||
box-shadow: @plyr-tooltip-shadow;
|
||||
color: @plyr-tooltip-color;
|
||||
font-size: @plyr-font-size-small;
|
||||
font-weight: @plyr-font-weight-normal;
|
||||
|
@ -48,11 +48,15 @@
|
||||
@plyr-tooltip-padding: (@plyr-control-spacing / 2);
|
||||
@plyr-tooltip-arrow-size: 4px;
|
||||
@plyr-tooltip-radius: 3px;
|
||||
@plyr-tooltip-shadow: 0 1px 2px fade(#000, 15%);
|
||||
|
||||
// Menus
|
||||
@plyr-menu-bg: @plyr-tooltip-bg;
|
||||
@plyr-menu-color: @plyr-tooltip-color;
|
||||
@plyr-menu-arrow-size: 6px;
|
||||
@plyr-menu-border-color: #b6c5cd;
|
||||
@plyr-menu-border-shadow-color: #fff;
|
||||
@plyr-menu-shadow: 0 1px 2px fade(#000, 15%);
|
||||
|
||||
// Progress
|
||||
@plyr-progress-loading-size: 25px;
|
||||
|
Reference in New Issue
Block a user