From 9ebc2719d31e39b822eda42c2eb3272330e9fc5d Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 6 May 2018 00:49:12 +1000 Subject: v3.3.0 --- src/js/plugins/ads.js | 9 ++++++--- src/js/plugins/vimeo.js | 27 +++++++++++++++++++++++---- src/js/plugins/youtube.js | 9 ++++++--- 3 files changed, 35 insertions(+), 10 deletions(-) (limited to 'src/js/plugins') diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index b9d9ac1c..4a3deeaa 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -6,8 +6,8 @@ /* global google */ -import utils from '../utils'; import i18n from '../i18n'; +import utils from '../utils'; class Ads { /** @@ -52,7 +52,7 @@ class Ads { // Check if the Google IMA3 SDK is loaded or load it ourselves if (!utils.is.object(window.google) || !utils.is.object(window.google.ima)) { utils - .loadScript(this.player.config.urls.googleIMA.api) + .loadScript(this.player.config.urls.googleIMA.sdk) .then(() => { this.ready(); }) @@ -160,6 +160,9 @@ class Ads { // We only overlay ads as we only support video. request.forceNonLinearFullSlot = false; + // Mute based on current state + request.setAdWillPlayMuted(!this.player.muted); + this.loader.requestAds(request); } catch (e) { this.onAdError(e); @@ -226,7 +229,7 @@ class Ads { // Get skippable state // TODO: Skip button - // this.manager.getAdSkippableState(); + // this.player.debug.warn(this.manager.getAdSkippableState()); // Set volume to match player this.manager.setVolume(this.player.volume); diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index 24003d3f..f1bc123d 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -2,10 +2,10 @@ // Vimeo plugin // ========================================================================== -import utils from './../utils'; import captions from './../captions'; import controls from './../controls'; import ui from './../ui'; +import utils from './../utils'; const vimeo = { setup() { @@ -18,7 +18,7 @@ const vimeo = { // Load the API if not already if (!utils.is.object(window.Vimeo)) { utils - .loadScript(this.config.urls.vimeo.api) + .loadScript(this.config.urls.vimeo.sdk) .then(() => { vimeo.ready.call(this); }) @@ -68,14 +68,14 @@ const vimeo = { // Get from
if needed if (utils.is.empty(source)) { - source = player.media.getAttribute(this.config.attributes.embed.id); + source = player.media.getAttribute(player.config.attributes.embed.id); } const id = utils.parseVimeoId(source); // Build an iframe const iframe = utils.createElement('iframe'); - const src = `https://player.vimeo.com/video/${id}?${params}`; + const src = utils.format(player.config.urls.vimeo.iframe, id, params); iframe.setAttribute('src', src); iframe.setAttribute('allowfullscreen', ''); iframe.setAttribute('allowtransparency', ''); @@ -86,6 +86,25 @@ const vimeo = { wrapper.appendChild(iframe); player.media = utils.replaceElement(wrapper, player.media); + // Get poster image + utils.fetch(utils.format(player.config.urls.vimeo.api, id), 'json').then(response => { + if (utils.is.empty(response)) { + return; + } + + // Get the URL for thumbnail + const url = new URL(response[0].thumbnail_large); + + // Get original image + url.pathname = `${url.pathname.split('_')[0]}.jpg`; + + // Set attribute + player.media.setAttribute('poster', url.href); + + // Update + ui.setPoster.call(player); + }); + // Setup instance // https://github.com/vimeo/player.js player.embed = new window.Vimeo.Player(iframe); diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js index 12bc2b11..4fde9319 100644 --- a/src/js/plugins/youtube.js +++ b/src/js/plugins/youtube.js @@ -2,9 +2,9 @@ // YouTube plugin // ========================================================================== -import utils from './../utils'; import controls from './../controls'; import ui from './../ui'; +import utils from './../utils'; // Standardise YouTube quality unit function mapQualityUnit(input) { @@ -77,7 +77,7 @@ const youtube = { youtube.ready.call(this); } else { // Load the API - utils.loadScript(this.config.urls.youtube.api).catch(error => { + utils.loadScript(this.config.urls.youtube.sdk).catch(error => { this.debug.warn('YouTube API failed to load', error); }); @@ -117,7 +117,7 @@ const youtube = { // Or via Google API const key = this.config.keys.google; if (utils.is.string(key) && !utils.is.empty(key)) { - const url = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${key}&fields=items(snippet(title))&part=snippet`; + const url = utils.format(this.config.urls.youtube.api, videoId, key); utils .fetch(url) @@ -161,6 +161,9 @@ const youtube = { const container = utils.createElement('div', { id }); player.media = utils.replaceElement(container, player.media); + // Set poster image + player.media.setAttribute('poster', utils.format(player.config.urls.youtube.poster, videoId)); + // Setup instance // https://developers.google.com/youtube/iframe_api_reference player.embed = new window.YT.Player(id, { -- cgit v1.2.3 From 91a4b86860f8db72dba0cec0c8cb18b93e423d85 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 6 May 2018 01:03:38 +1000 Subject: Small bug fixes --- src/js/plugins/ads.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/js/plugins') diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index 4a3deeaa..79c00ab3 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -18,7 +18,6 @@ class Ads { constructor(player) { this.player = player; this.publisherId = player.config.ads.publisherId; - this.enabled = player.isHTML5 && player.isVideo && player.config.ads.enabled && utils.is.string(this.publisherId) && this.publisherId.length; this.playing = false; this.initialized = false; this.elements = { @@ -44,6 +43,10 @@ class Ads { this.load(); } + get enabled() { + return this.player.isHTML5 && this.player.isVideo && this.player.config.ads.enabled && utils.is.string(this.publisherId) && this.publisherId.length; + } + /** * Load the IMA SDK */ -- cgit v1.2.3 From 165515009266a5dc0b625cef26cf6ba1a80bb12e Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 6 May 2018 01:32:51 +1000 Subject: v3.3.5 --- src/js/plugins/ads.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/js/plugins') diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index 79c00ab3..0246e221 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -44,7 +44,7 @@ class Ads { } get enabled() { - return this.player.isHTML5 && this.player.isVideo && this.player.config.ads.enabled && utils.is.string(this.publisherId) && this.publisherId.length; + return this.player.isVideo && this.player.config.ads.enabled && !utils.is.empty(this.publisherId); } /** -- cgit v1.2.3 From 90919411e9e2384494f4796f2c72507685e959bb Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 8 May 2018 12:57:24 +1000 Subject: Use div for poster, Vimeo fixes, Tooltip fixes --- src/js/plugins/vimeo.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/js/plugins') diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index f1bc123d..688d6ddc 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -53,6 +53,7 @@ const vimeo = { const options = { loop: player.config.loop.active, autoplay: player.autoplay, + // muted: player.muted, byline: false, portrait: false, title: false, @@ -82,7 +83,7 @@ const vimeo = { iframe.setAttribute('allow', 'autoplay'); // Inject the package - const wrapper = utils.createElement('div'); + const wrapper = utils.createElement('div', { class: player.config.classNames.embedContainer }); wrapper.appendChild(iframe); player.media = utils.replaceElement(wrapper, player.media); -- cgit v1.2.3 From bbb11e611e3d07bdbf2b77c6f12b5e5967835f82 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 8 May 2018 13:12:39 +1000 Subject: Vimeo options, docs for multiple players --- src/js/plugins/vimeo.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/js/plugins') diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index 688d6ddc..0ceb89e5 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -108,7 +108,10 @@ const vimeo = { // Setup instance // https://github.com/vimeo/player.js - player.embed = new window.Vimeo.Player(iframe); + player.embed = new window.Vimeo.Player(iframe, { + autopause: player.config.autopause, + muted: player.muted, + }); player.media.paused = true; player.media.currentTime = 0; -- cgit v1.2.3