Housekeeping

This commit is contained in:
Sam Potts 2019-03-16 11:57:15 +11:00
parent 4c3bf25b8a
commit 5b7a025d26
19 changed files with 625 additions and 493 deletions

89
demo/dist/demo.js vendored
View File

@ -5883,7 +5883,7 @@ typeof navigator === "object" && (function () {
list.appendChild(menuItem); list.appendChild(menuItem);
}, },
// Format a time for display // Format a time for display
formatTime: function formatTime$$1() { formatTime: function formatTime$1() {
var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@ -6003,8 +6003,8 @@ typeof navigator === "object" && (function () {
range.setAttribute('aria-valuenow', this.currentTime); range.setAttribute('aria-valuenow', this.currentTime);
var currentTime = controls.formatTime(this.currentTime); var currentTime = controls.formatTime(this.currentTime);
var duration = controls.formatTime(this.duration); var duration = controls.formatTime(this.duration);
var format$$1 = i18n.get('seekLabel', this.config); var format = i18n.get('seekLabel', this.config);
range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration)); range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));
} else if (matches$1(range, this.config.selectors.inputs.volume)) { } else if (matches$1(range, this.config.selectors.inputs.volume)) {
var percent = range.value * 100; var percent = range.value * 100;
range.setAttribute('aria-valuenow', percent); range.setAttribute('aria-valuenow', percent);
@ -8236,13 +8236,13 @@ typeof navigator === "object" && (function () {
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
toggleControls: function toggleControls(force) { toggleControls: function toggleControls(force) {
var controls$$1 = this.elements.controls; var controls = this.elements.controls;
if (controls$$1 && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls$$1.pressed || controls$$1.hover || recentTouchSeek)); this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek));
} }
} }
}; };
@ -8548,11 +8548,11 @@ typeof navigator === "object" && (function () {
on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {
var controls$$1 = elements.controls; // Remove button states for fullscreen var controls = elements.controls; // Remove button states for fullscreen
if (controls$$1 && event.type === 'enterfullscreen') { if (controls && event.type === 'enterfullscreen') {
controls$$1.pressed = false; controls.pressed = false;
controls$$1.hover = false; controls.hover = false;
} // Show, then hide after a timeout unless another control event occurs } // Show, then hide after a timeout unless another control event occurs
@ -8807,7 +8807,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "controls", key: "controls",
value: function controls$$1() { value: function controls$1() {
var _this3 = this; var _this3 = this;
var player = this.player; var player = this.player;
@ -9170,16 +9170,23 @@ typeof navigator === "object" && (function () {
maxTries = (args.numRetries || 0) + 1, maxTries = (args.numRetries || 0) + 1,
beforeCallbackFn = args.before || devnull, beforeCallbackFn = args.before || devnull,
pathStripped = path.replace(/^(css|img)!/, ''), pathStripped = path.replace(/^(css|img)!/, ''),
isCss, isLegacyIECss,
e; e;
numTries = numTries || 0; numTries = numTries || 0;
if (/(^css!|\.css$)/.test(path)) { if (/(^css!|\.css$)/.test(path)) {
isCss = true; // css // css
e = doc.createElement('link'); e = doc.createElement('link');
e.rel = 'stylesheet'; e.rel = 'stylesheet';
e.href = pathStripped; //.replace(/^css!/, ''); // remove "css!" prefix e.href = pathStripped; // tag IE9+
isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)
if (isLegacyIECss && e.relList) {
isLegacyIECss = 0;
e.rel = 'preload';
e.as = 'style';
}
} else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) {
// image // image
e = doc.createElement('img'); e = doc.createElement('img');
@ -9192,10 +9199,10 @@ typeof navigator === "object" && (function () {
} }
e.onload = e.onerror = e.onbeforeload = function (ev) { e.onload = e.onerror = e.onbeforeload = function (ev) {
var result = ev.type[0]; // Note: The following code isolates IE using `hideFocus` and treats empty var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror
// stylesheets as failures to get around lack of onerror support // support in IE9-11
if (isCss && 'hideFocus' in e) { if (isLegacyIECss) {
try { try {
if (!e.sheet.cssText.length) result = 'e'; if (!e.sheet.cssText.length) result = 'e';
} catch (x) { } catch (x) {
@ -9213,6 +9220,9 @@ typeof navigator === "object" && (function () {
if (numTries < maxTries) { if (numTries < maxTries) {
return loadFile(path, callbackFn, args, numTries); return loadFile(path, callbackFn, args, numTries);
} }
} else if (e.rel == 'preload' && e.as == 'style') {
// activate preloaded stylesheets
return e.rel = 'stylesheet'; // jshint ignore:line
} // execute callback } // execute callback
@ -9278,15 +9288,26 @@ typeof navigator === "object" && (function () {
} else { } else {
bundleIdCache[bundleId] = true; bundleIdCache[bundleId] = true;
} }
} // load scripts }
function loadFn(resolve, reject) {
loadFiles(paths, function (pathsNotFound) {
// execute callbacks
executeCallbacks(args, pathsNotFound); // resolve Promise
if (resolve) {
executeCallbacks({
success: resolve,
error: reject
}, pathsNotFound);
} // publish bundle load event
loadFiles(paths, function (pathsNotFound) { publish(bundleId, pathsNotFound);
// execute callbacks }, args);
executeCallbacks(args, pathsNotFound); // publish bundle load event }
publish(bundleId, pathsNotFound); if (args.returnPromise) return new Promise(loadFn);else loadFn();
}, args);
} }
/** /**
* Execute callbacks when dependencies have been satisfied. * Execute callbacks when dependencies have been satisfied.
@ -9392,7 +9413,7 @@ typeof navigator === "object" && (function () {
} }
}, },
// API Ready // API Ready
ready: function ready$$1() { ready: function ready() {
var _this2 = this; var _this2 = this;
var player = this; var player = this;
@ -9771,7 +9792,7 @@ typeof navigator === "object" && (function () {
} }
}, },
// API ready // API ready
ready: function ready$$1() { ready: function ready() {
var player = this; // Ignore already setup (race condition) var player = this; // Ignore already setup (race condition)
var currentId = player.media.getAttribute('id'); var currentId = player.media.getAttribute('id');
@ -9799,8 +9820,8 @@ typeof navigator === "object" && (function () {
}); });
player.media = replaceElement(container, player.media); // Id to poster wrapper player.media = replaceElement(container, player.media); // Id to poster wrapper
var posterSrc = function posterSrc(format$$1) { var posterSrc = function posterSrc(format) {
return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format$$1, "default.jpg"); return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg");
}; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
@ -10193,7 +10214,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "ready", key: "ready",
value: function ready$$1() { value: function ready() {
var _this3 = this; var _this3 = this;
// Start ticking our safety timer. If the whole advertisement // Start ticking our safety timer. If the whole advertisement
@ -10677,7 +10698,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on(event, callback) {
if (!is$1.array(this.events[event])) { if (!is$1.array(this.events[event])) {
this.events[event] = []; this.events[event] = [];
} }
@ -12025,7 +12046,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on$1(event, callback) {
on.call(this, this.elements.container, event, callback); on.call(this, this.elements.container, event, callback);
} }
/** /**
@ -12036,7 +12057,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "once", key: "once",
value: function once$$1(event, callback) { value: function once$1(event, callback) {
once.call(this, this.elements.container, event, callback); once.call(this, this.elements.container, event, callback);
} }
/** /**
@ -12047,7 +12068,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "off", key: "off",
value: function off$$1(event, callback) { value: function off$1(event, callback) {
off(this.elements.container, event, callback); off(this.elements.container, event, callback);
} }
/** /**
@ -12706,7 +12727,7 @@ typeof navigator === "object" && (function () {
}, { }, {
key: "loadSprite", key: "loadSprite",
value: function loadSprite$$1(url, id) { value: function loadSprite$1(url, id) {
return loadSprite(url, id); return loadSprite(url, id);
} }
/** /**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

95
dist/plyr.js vendored
View File

@ -1,8 +1,8 @@
typeof navigator === "object" && (function (global, factory) { typeof navigator === "object" && (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define('Plyr', factory) : typeof define === 'function' && define.amd ? define('Plyr', factory) :
(global.Plyr = factory()); (global = global || self, global.Plyr = factory());
}(this, (function () { 'use strict'; }(this, function () { 'use strict';
function _classCallCheck(instance, Constructor) { function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) { if (!(instance instanceof Constructor)) {
@ -2033,7 +2033,7 @@ typeof navigator === "object" && (function (global, factory) {
list.appendChild(menuItem); list.appendChild(menuItem);
}, },
// Format a time for display // Format a time for display
formatTime: function formatTime$$1() { formatTime: function formatTime$1() {
var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@ -2153,8 +2153,8 @@ typeof navigator === "object" && (function (global, factory) {
range.setAttribute('aria-valuenow', this.currentTime); range.setAttribute('aria-valuenow', this.currentTime);
var currentTime = controls.formatTime(this.currentTime); var currentTime = controls.formatTime(this.currentTime);
var duration = controls.formatTime(this.duration); var duration = controls.formatTime(this.duration);
var format$$1 = i18n.get('seekLabel', this.config); var format = i18n.get('seekLabel', this.config);
range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration)); range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));
} else if (matches$1(range, this.config.selectors.inputs.volume)) { } else if (matches$1(range, this.config.selectors.inputs.volume)) {
var percent = range.value * 100; var percent = range.value * 100;
range.setAttribute('aria-valuenow', percent); range.setAttribute('aria-valuenow', percent);
@ -4386,13 +4386,13 @@ typeof navigator === "object" && (function (global, factory) {
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
toggleControls: function toggleControls(force) { toggleControls: function toggleControls(force) {
var controls$$1 = this.elements.controls; var controls = this.elements.controls;
if (controls$$1 && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls$$1.pressed || controls$$1.hover || recentTouchSeek)); this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek));
} }
} }
}; };
@ -4698,11 +4698,11 @@ typeof navigator === "object" && (function (global, factory) {
on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {
var controls$$1 = elements.controls; // Remove button states for fullscreen var controls = elements.controls; // Remove button states for fullscreen
if (controls$$1 && event.type === 'enterfullscreen') { if (controls && event.type === 'enterfullscreen') {
controls$$1.pressed = false; controls.pressed = false;
controls$$1.hover = false; controls.hover = false;
} // Show, then hide after a timeout unless another control event occurs } // Show, then hide after a timeout unless another control event occurs
@ -4957,7 +4957,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "controls", key: "controls",
value: function controls$$1() { value: function controls$1() {
var _this3 = this; var _this3 = this;
var player = this.player; var player = this.player;
@ -5326,16 +5326,23 @@ typeof navigator === "object" && (function (global, factory) {
maxTries = (args.numRetries || 0) + 1, maxTries = (args.numRetries || 0) + 1,
beforeCallbackFn = args.before || devnull, beforeCallbackFn = args.before || devnull,
pathStripped = path.replace(/^(css|img)!/, ''), pathStripped = path.replace(/^(css|img)!/, ''),
isCss, isLegacyIECss,
e; e;
numTries = numTries || 0; numTries = numTries || 0;
if (/(^css!|\.css$)/.test(path)) { if (/(^css!|\.css$)/.test(path)) {
isCss = true; // css // css
e = doc.createElement('link'); e = doc.createElement('link');
e.rel = 'stylesheet'; e.rel = 'stylesheet';
e.href = pathStripped; //.replace(/^css!/, ''); // remove "css!" prefix e.href = pathStripped; // tag IE9+
isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)
if (isLegacyIECss && e.relList) {
isLegacyIECss = 0;
e.rel = 'preload';
e.as = 'style';
}
} else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) {
// image // image
e = doc.createElement('img'); e = doc.createElement('img');
@ -5348,10 +5355,10 @@ typeof navigator === "object" && (function (global, factory) {
} }
e.onload = e.onerror = e.onbeforeload = function (ev) { e.onload = e.onerror = e.onbeforeload = function (ev) {
var result = ev.type[0]; // Note: The following code isolates IE using `hideFocus` and treats empty var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror
// stylesheets as failures to get around lack of onerror support // support in IE9-11
if (isCss && 'hideFocus' in e) { if (isLegacyIECss) {
try { try {
if (!e.sheet.cssText.length) result = 'e'; if (!e.sheet.cssText.length) result = 'e';
} catch (x) { } catch (x) {
@ -5369,6 +5376,9 @@ typeof navigator === "object" && (function (global, factory) {
if (numTries < maxTries) { if (numTries < maxTries) {
return loadFile(path, callbackFn, args, numTries); return loadFile(path, callbackFn, args, numTries);
} }
} else if (e.rel == 'preload' && e.as == 'style') {
// activate preloaded stylesheets
return e.rel = 'stylesheet'; // jshint ignore:line
} // execute callback } // execute callback
@ -5434,15 +5444,26 @@ typeof navigator === "object" && (function (global, factory) {
} else { } else {
bundleIdCache[bundleId] = true; bundleIdCache[bundleId] = true;
} }
} // load scripts }
function loadFn(resolve, reject) {
loadFiles(paths, function (pathsNotFound) {
// execute callbacks
executeCallbacks(args, pathsNotFound); // resolve Promise
if (resolve) {
executeCallbacks({
success: resolve,
error: reject
}, pathsNotFound);
} // publish bundle load event
loadFiles(paths, function (pathsNotFound) { publish(bundleId, pathsNotFound);
// execute callbacks }, args);
executeCallbacks(args, pathsNotFound); // publish bundle load event }
publish(bundleId, pathsNotFound); if (args.returnPromise) return new Promise(loadFn);else loadFn();
}, args);
} }
/** /**
* Execute callbacks when dependencies have been satisfied. * Execute callbacks when dependencies have been satisfied.
@ -5548,7 +5569,7 @@ typeof navigator === "object" && (function (global, factory) {
} }
}, },
// API Ready // API Ready
ready: function ready$$1() { ready: function ready() {
var _this2 = this; var _this2 = this;
var player = this; var player = this;
@ -5927,7 +5948,7 @@ typeof navigator === "object" && (function (global, factory) {
} }
}, },
// API ready // API ready
ready: function ready$$1() { ready: function ready() {
var player = this; // Ignore already setup (race condition) var player = this; // Ignore already setup (race condition)
var currentId = player.media.getAttribute('id'); var currentId = player.media.getAttribute('id');
@ -5955,8 +5976,8 @@ typeof navigator === "object" && (function (global, factory) {
}); });
player.media = replaceElement(container, player.media); // Id to poster wrapper player.media = replaceElement(container, player.media); // Id to poster wrapper
var posterSrc = function posterSrc(format$$1) { var posterSrc = function posterSrc(format) {
return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format$$1, "default.jpg"); return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg");
}; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
@ -6349,7 +6370,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "ready", key: "ready",
value: function ready$$1() { value: function ready() {
var _this3 = this; var _this3 = this;
// Start ticking our safety timer. If the whole advertisement // Start ticking our safety timer. If the whole advertisement
@ -6833,7 +6854,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on(event, callback) {
if (!is$1.array(this.events[event])) { if (!is$1.array(this.events[event])) {
this.events[event] = []; this.events[event] = [];
} }
@ -8181,7 +8202,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on$1(event, callback) {
on.call(this, this.elements.container, event, callback); on.call(this, this.elements.container, event, callback);
} }
/** /**
@ -8192,7 +8213,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "once", key: "once",
value: function once$$1(event, callback) { value: function once$1(event, callback) {
once.call(this, this.elements.container, event, callback); once.call(this, this.elements.container, event, callback);
} }
/** /**
@ -8203,7 +8224,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "off", key: "off",
value: function off$$1(event, callback) { value: function off$1(event, callback) {
off(this.elements.container, event, callback); off(this.elements.container, event, callback);
} }
/** /**
@ -8862,7 +8883,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "loadSprite", key: "loadSprite",
value: function loadSprite$$1(url, id) { value: function loadSprite$1(url, id) {
return loadSprite(url, id); return loadSprite(url, id);
} }
/** /**
@ -8902,4 +8923,4 @@ typeof navigator === "object" && (function (global, factory) {
return Plyr; return Plyr;
}))); }));

2
dist/plyr.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/plyr.min.mjs vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

89
dist/plyr.mjs vendored
View File

@ -2027,7 +2027,7 @@ var controls = {
list.appendChild(menuItem); list.appendChild(menuItem);
}, },
// Format a time for display // Format a time for display
formatTime: function formatTime$$1() { formatTime: function formatTime$1() {
var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@ -2147,8 +2147,8 @@ var controls = {
range.setAttribute('aria-valuenow', this.currentTime); range.setAttribute('aria-valuenow', this.currentTime);
var currentTime = controls.formatTime(this.currentTime); var currentTime = controls.formatTime(this.currentTime);
var duration = controls.formatTime(this.duration); var duration = controls.formatTime(this.duration);
var format$$1 = i18n.get('seekLabel', this.config); var format = i18n.get('seekLabel', this.config);
range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration)); range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));
} else if (matches$1(range, this.config.selectors.inputs.volume)) { } else if (matches$1(range, this.config.selectors.inputs.volume)) {
var percent = range.value * 100; var percent = range.value * 100;
range.setAttribute('aria-valuenow', percent); range.setAttribute('aria-valuenow', percent);
@ -4380,13 +4380,13 @@ var ui = {
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
toggleControls: function toggleControls(force) { toggleControls: function toggleControls(force) {
var controls$$1 = this.elements.controls; var controls = this.elements.controls;
if (controls$$1 && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls$$1.pressed || controls$$1.hover || recentTouchSeek)); this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek));
} }
} }
}; };
@ -4692,11 +4692,11 @@ function () {
on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {
var controls$$1 = elements.controls; // Remove button states for fullscreen var controls = elements.controls; // Remove button states for fullscreen
if (controls$$1 && event.type === 'enterfullscreen') { if (controls && event.type === 'enterfullscreen') {
controls$$1.pressed = false; controls.pressed = false;
controls$$1.hover = false; controls.hover = false;
} // Show, then hide after a timeout unless another control event occurs } // Show, then hide after a timeout unless another control event occurs
@ -4951,7 +4951,7 @@ function () {
}, { }, {
key: "controls", key: "controls",
value: function controls$$1() { value: function controls$1() {
var _this3 = this; var _this3 = this;
var player = this.player; var player = this.player;
@ -5320,16 +5320,23 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
maxTries = (args.numRetries || 0) + 1, maxTries = (args.numRetries || 0) + 1,
beforeCallbackFn = args.before || devnull, beforeCallbackFn = args.before || devnull,
pathStripped = path.replace(/^(css|img)!/, ''), pathStripped = path.replace(/^(css|img)!/, ''),
isCss, isLegacyIECss,
e; e;
numTries = numTries || 0; numTries = numTries || 0;
if (/(^css!|\.css$)/.test(path)) { if (/(^css!|\.css$)/.test(path)) {
isCss = true; // css // css
e = doc.createElement('link'); e = doc.createElement('link');
e.rel = 'stylesheet'; e.rel = 'stylesheet';
e.href = pathStripped; //.replace(/^css!/, ''); // remove "css!" prefix e.href = pathStripped; // tag IE9+
isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)
if (isLegacyIECss && e.relList) {
isLegacyIECss = 0;
e.rel = 'preload';
e.as = 'style';
}
} else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) {
// image // image
e = doc.createElement('img'); e = doc.createElement('img');
@ -5342,10 +5349,10 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
} }
e.onload = e.onerror = e.onbeforeload = function (ev) { e.onload = e.onerror = e.onbeforeload = function (ev) {
var result = ev.type[0]; // Note: The following code isolates IE using `hideFocus` and treats empty var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror
// stylesheets as failures to get around lack of onerror support // support in IE9-11
if (isCss && 'hideFocus' in e) { if (isLegacyIECss) {
try { try {
if (!e.sheet.cssText.length) result = 'e'; if (!e.sheet.cssText.length) result = 'e';
} catch (x) { } catch (x) {
@ -5363,6 +5370,9 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
if (numTries < maxTries) { if (numTries < maxTries) {
return loadFile(path, callbackFn, args, numTries); return loadFile(path, callbackFn, args, numTries);
} }
} else if (e.rel == 'preload' && e.as == 'style') {
// activate preloaded stylesheets
return e.rel = 'stylesheet'; // jshint ignore:line
} // execute callback } // execute callback
@ -5428,15 +5438,26 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
} else { } else {
bundleIdCache[bundleId] = true; bundleIdCache[bundleId] = true;
} }
} // load scripts }
function loadFn(resolve, reject) {
loadFiles(paths, function (pathsNotFound) {
// execute callbacks
executeCallbacks(args, pathsNotFound); // resolve Promise
if (resolve) {
executeCallbacks({
success: resolve,
error: reject
}, pathsNotFound);
} // publish bundle load event
loadFiles(paths, function (pathsNotFound) { publish(bundleId, pathsNotFound);
// execute callbacks }, args);
executeCallbacks(args, pathsNotFound); // publish bundle load event }
publish(bundleId, pathsNotFound); if (args.returnPromise) return new Promise(loadFn);else loadFn();
}, args);
} }
/** /**
* Execute callbacks when dependencies have been satisfied. * Execute callbacks when dependencies have been satisfied.
@ -5542,7 +5563,7 @@ var vimeo = {
} }
}, },
// API Ready // API Ready
ready: function ready$$1() { ready: function ready() {
var _this2 = this; var _this2 = this;
var player = this; var player = this;
@ -5921,7 +5942,7 @@ var youtube = {
} }
}, },
// API ready // API ready
ready: function ready$$1() { ready: function ready() {
var player = this; // Ignore already setup (race condition) var player = this; // Ignore already setup (race condition)
var currentId = player.media.getAttribute('id'); var currentId = player.media.getAttribute('id');
@ -5949,8 +5970,8 @@ var youtube = {
}); });
player.media = replaceElement(container, player.media); // Id to poster wrapper player.media = replaceElement(container, player.media); // Id to poster wrapper
var posterSrc = function posterSrc(format$$1) { var posterSrc = function posterSrc(format) {
return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format$$1, "default.jpg"); return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg");
}; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
@ -6343,7 +6364,7 @@ function () {
}, { }, {
key: "ready", key: "ready",
value: function ready$$1() { value: function ready() {
var _this3 = this; var _this3 = this;
// Start ticking our safety timer. If the whole advertisement // Start ticking our safety timer. If the whole advertisement
@ -6827,7 +6848,7 @@ function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on(event, callback) {
if (!is$1.array(this.events[event])) { if (!is$1.array(this.events[event])) {
this.events[event] = []; this.events[event] = [];
} }
@ -8175,7 +8196,7 @@ function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on$1(event, callback) {
on.call(this, this.elements.container, event, callback); on.call(this, this.elements.container, event, callback);
} }
/** /**
@ -8186,7 +8207,7 @@ function () {
}, { }, {
key: "once", key: "once",
value: function once$$1(event, callback) { value: function once$1(event, callback) {
once.call(this, this.elements.container, event, callback); once.call(this, this.elements.container, event, callback);
} }
/** /**
@ -8197,7 +8218,7 @@ function () {
}, { }, {
key: "off", key: "off",
value: function off$$1(event, callback) { value: function off$1(event, callback) {
off(this.elements.container, event, callback); off(this.elements.container, event, callback);
} }
/** /**
@ -8856,7 +8877,7 @@ function () {
}, { }, {
key: "loadSprite", key: "loadSprite",
value: function loadSprite$$1(url, id) { value: function loadSprite$1(url, id) {
return loadSprite(url, id); return loadSprite(url, id);
} }
/** /**

View File

@ -1,8 +1,8 @@
typeof navigator === "object" && (function (global, factory) { typeof navigator === "object" && (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define('Plyr', factory) : typeof define === 'function' && define.amd ? define('Plyr', factory) :
(global.Plyr = factory()); (global = global || self, global.Plyr = factory());
}(this, (function () { 'use strict'; }(this, function () { 'use strict';
// Polyfill for creating CustomEvents on IE9/10/11 // Polyfill for creating CustomEvents on IE9/10/11
// code pulled from: // code pulled from:
@ -1763,7 +1763,7 @@ typeof navigator === "object" && (function (global, factory) {
}; };
var deserializeParam = function deserializeParam(value) { var deserializeParam = function deserializeParam(value) {
return decodeURIComponent(value).replace(/\+/g, ' '); return decodeURIComponent(String(value).replace(/\+/g, ' '));
}; };
var polyfillURLSearchParams = function polyfillURLSearchParams() { var polyfillURLSearchParams = function polyfillURLSearchParams() {
@ -1891,11 +1891,11 @@ typeof navigator === "object" && (function (global, factory) {
global.URLSearchParams = URLSearchParams; global.URLSearchParams = URLSearchParams;
}; };
if (!('URLSearchParams' in global) || new URLSearchParams('?a=1').toString() !== 'a=1') { if (!('URLSearchParams' in global) || new global.URLSearchParams('?a=1').toString() !== 'a=1') {
polyfillURLSearchParams(); polyfillURLSearchParams();
} }
var proto = URLSearchParams.prototype; var proto = global.URLSearchParams.prototype;
if (typeof proto.sort !== 'function') { if (typeof proto.sort !== 'function') {
proto.sort = function () { proto.sort = function () {
@ -1971,7 +1971,7 @@ typeof navigator === "object" && (function (global, factory) {
*/ */
var checkIfURLIsSupported = function checkIfURLIsSupported() { var checkIfURLIsSupported = function checkIfURLIsSupported() {
try { try {
var u = new URL('b', 'http://a'); var u = new global.URL('b', 'http://a');
u.pathname = 'c%20d'; u.pathname = 'c%20d';
return u.href === 'http://a/c%20d' && u.searchParams; return u.href === 'http://a/c%20d' && u.searchParams;
} catch (e) { } catch (e) {
@ -2017,7 +2017,7 @@ typeof navigator === "object" && (function (global, factory) {
value: anchorElement value: anchorElement
}); // create a linked searchParams which reflect its changes on URL }); // create a linked searchParams which reflect its changes on URL
var searchParams = new URLSearchParams(this.search); var searchParams = new global.URLSearchParams(this.search);
var enableSearchUpdate = true; var enableSearchUpdate = true;
var enableSearchParamsUpdate = true; var enableSearchParamsUpdate = true;
@ -2642,7 +2642,7 @@ typeof navigator === "object" && (function (global, factory) {
var arrayFind = _arrayMethods(5); var arrayFind = _arrayMethods(5);
var arrayFindIndex = _arrayMethods(6); var arrayFindIndex = _arrayMethods(6);
var id$2 = 0; var id$1 = 0;
// fallback for uncaught frozen keys // fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) { var uncaughtFrozenStore = function (that) {
@ -2683,7 +2683,7 @@ typeof navigator === "object" && (function (global, factory) {
var C = wrapper(function (that, iterable) { var C = wrapper(function (that, iterable) {
_anInstance(that, C, NAME, '_i'); _anInstance(that, C, NAME, '_i');
that._t = NAME; // collection type that._t = NAME; // collection type
that._i = id$2++; // collection id that._i = id$1++; // collection id
that._l = undefined; // leak store for uncaught frozen objects that._l = undefined; // leak store for uncaught frozen objects
if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that);
}); });
@ -5421,7 +5421,7 @@ typeof navigator === "object" && (function (global, factory) {
list.appendChild(menuItem); list.appendChild(menuItem);
}, },
// Format a time for display // Format a time for display
formatTime: function formatTime$$1() { formatTime: function formatTime$1() {
var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@ -5541,8 +5541,8 @@ typeof navigator === "object" && (function (global, factory) {
range.setAttribute('aria-valuenow', this.currentTime); range.setAttribute('aria-valuenow', this.currentTime);
var currentTime = controls.formatTime(this.currentTime); var currentTime = controls.formatTime(this.currentTime);
var duration = controls.formatTime(this.duration); var duration = controls.formatTime(this.duration);
var format$$1 = i18n.get('seekLabel', this.config); var format = i18n.get('seekLabel', this.config);
range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration)); range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));
} else if (matches$1(range, this.config.selectors.inputs.volume)) { } else if (matches$1(range, this.config.selectors.inputs.volume)) {
var percent = range.value * 100; var percent = range.value * 100;
range.setAttribute('aria-valuenow', percent); range.setAttribute('aria-valuenow', percent);
@ -7784,13 +7784,13 @@ typeof navigator === "object" && (function (global, factory) {
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
toggleControls: function toggleControls(force) { toggleControls: function toggleControls(force) {
var controls$$1 = this.elements.controls; var controls = this.elements.controls;
if (controls$$1 && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls$$1.pressed || controls$$1.hover || recentTouchSeek)); this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek));
} }
} }
}; };
@ -8096,11 +8096,11 @@ typeof navigator === "object" && (function (global, factory) {
on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {
var controls$$1 = elements.controls; // Remove button states for fullscreen var controls = elements.controls; // Remove button states for fullscreen
if (controls$$1 && event.type === 'enterfullscreen') { if (controls && event.type === 'enterfullscreen') {
controls$$1.pressed = false; controls.pressed = false;
controls$$1.hover = false; controls.hover = false;
} // Show, then hide after a timeout unless another control event occurs } // Show, then hide after a timeout unless another control event occurs
@ -8355,7 +8355,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "controls", key: "controls",
value: function controls$$1() { value: function controls$1() {
var _this3 = this; var _this3 = this;
var player = this.player; var player = this.player;
@ -8718,16 +8718,23 @@ typeof navigator === "object" && (function (global, factory) {
maxTries = (args.numRetries || 0) + 1, maxTries = (args.numRetries || 0) + 1,
beforeCallbackFn = args.before || devnull, beforeCallbackFn = args.before || devnull,
pathStripped = path.replace(/^(css|img)!/, ''), pathStripped = path.replace(/^(css|img)!/, ''),
isCss, isLegacyIECss,
e; e;
numTries = numTries || 0; numTries = numTries || 0;
if (/(^css!|\.css$)/.test(path)) { if (/(^css!|\.css$)/.test(path)) {
isCss = true; // css // css
e = doc.createElement('link'); e = doc.createElement('link');
e.rel = 'stylesheet'; e.rel = 'stylesheet';
e.href = pathStripped; //.replace(/^css!/, ''); // remove "css!" prefix e.href = pathStripped; // tag IE9+
isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)
if (isLegacyIECss && e.relList) {
isLegacyIECss = 0;
e.rel = 'preload';
e.as = 'style';
}
} else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) {
// image // image
e = doc.createElement('img'); e = doc.createElement('img');
@ -8740,10 +8747,10 @@ typeof navigator === "object" && (function (global, factory) {
} }
e.onload = e.onerror = e.onbeforeload = function (ev) { e.onload = e.onerror = e.onbeforeload = function (ev) {
var result = ev.type[0]; // Note: The following code isolates IE using `hideFocus` and treats empty var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror
// stylesheets as failures to get around lack of onerror support // support in IE9-11
if (isCss && 'hideFocus' in e) { if (isLegacyIECss) {
try { try {
if (!e.sheet.cssText.length) result = 'e'; if (!e.sheet.cssText.length) result = 'e';
} catch (x) { } catch (x) {
@ -8761,6 +8768,9 @@ typeof navigator === "object" && (function (global, factory) {
if (numTries < maxTries) { if (numTries < maxTries) {
return loadFile(path, callbackFn, args, numTries); return loadFile(path, callbackFn, args, numTries);
} }
} else if (e.rel == 'preload' && e.as == 'style') {
// activate preloaded stylesheets
return e.rel = 'stylesheet'; // jshint ignore:line
} // execute callback } // execute callback
@ -8826,15 +8836,26 @@ typeof navigator === "object" && (function (global, factory) {
} else { } else {
bundleIdCache[bundleId] = true; bundleIdCache[bundleId] = true;
} }
} // load scripts }
function loadFn(resolve, reject) {
loadFiles(paths, function (pathsNotFound) {
// execute callbacks
executeCallbacks(args, pathsNotFound); // resolve Promise
if (resolve) {
executeCallbacks({
success: resolve,
error: reject
}, pathsNotFound);
} // publish bundle load event
loadFiles(paths, function (pathsNotFound) { publish(bundleId, pathsNotFound);
// execute callbacks }, args);
executeCallbacks(args, pathsNotFound); // publish bundle load event }
publish(bundleId, pathsNotFound); if (args.returnPromise) return new Promise(loadFn);else loadFn();
}, args);
} }
/** /**
* Execute callbacks when dependencies have been satisfied. * Execute callbacks when dependencies have been satisfied.
@ -8939,7 +8960,7 @@ typeof navigator === "object" && (function (global, factory) {
} }
}, },
// API Ready // API Ready
ready: function ready$$1() { ready: function ready() {
var _this2 = this; var _this2 = this;
var player = this; var player = this;
@ -9316,7 +9337,7 @@ typeof navigator === "object" && (function (global, factory) {
} }
}, },
// API ready // API ready
ready: function ready$$1() { ready: function ready() {
var player = this; // Ignore already setup (race condition) var player = this; // Ignore already setup (race condition)
var currentId = player.media.getAttribute('id'); var currentId = player.media.getAttribute('id');
@ -9344,8 +9365,8 @@ typeof navigator === "object" && (function (global, factory) {
}); });
player.media = replaceElement(container, player.media); // Id to poster wrapper player.media = replaceElement(container, player.media); // Id to poster wrapper
var posterSrc = function posterSrc(format$$1) { var posterSrc = function posterSrc(format) {
return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format$$1, "default.jpg"); return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg");
}; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
@ -9737,7 +9758,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "ready", key: "ready",
value: function ready$$1() { value: function ready() {
var _this3 = this; var _this3 = this;
// Start ticking our safety timer. If the whole advertisement // Start ticking our safety timer. If the whole advertisement
@ -10221,7 +10242,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on(event, callback) {
if (!is$2.array(this.events[event])) { if (!is$2.array(this.events[event])) {
this.events[event] = []; this.events[event] = [];
} }
@ -11583,7 +11604,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on$1(event, callback) {
on.call(this, this.elements.container, event, callback); on.call(this, this.elements.container, event, callback);
} }
/** /**
@ -11594,7 +11615,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "once", key: "once",
value: function once$$1(event, callback) { value: function once$1(event, callback) {
once.call(this, this.elements.container, event, callback); once.call(this, this.elements.container, event, callback);
} }
/** /**
@ -11605,7 +11626,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "off", key: "off",
value: function off$$1(event, callback) { value: function off$1(event, callback) {
off(this.elements.container, event, callback); off(this.elements.container, event, callback);
} }
/** /**
@ -12264,7 +12285,7 @@ typeof navigator === "object" && (function (global, factory) {
}, { }, {
key: "loadSprite", key: "loadSprite",
value: function loadSprite$$1(url, id) { value: function loadSprite$1(url, id) {
return loadSprite(url, id); return loadSprite(url, id);
} }
/** /**
@ -12306,4 +12327,4 @@ typeof navigator === "object" && (function (global, factory) {
return Plyr; return Plyr;
}))); }));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1757,7 +1757,7 @@ _setToStringTag(_global.JSON, 'JSON', true);
}; };
var deserializeParam = function deserializeParam(value) { var deserializeParam = function deserializeParam(value) {
return decodeURIComponent(value).replace(/\+/g, ' '); return decodeURIComponent(String(value).replace(/\+/g, ' '));
}; };
var polyfillURLSearchParams = function polyfillURLSearchParams() { var polyfillURLSearchParams = function polyfillURLSearchParams() {
@ -1885,11 +1885,11 @@ _setToStringTag(_global.JSON, 'JSON', true);
global.URLSearchParams = URLSearchParams; global.URLSearchParams = URLSearchParams;
}; };
if (!('URLSearchParams' in global) || new URLSearchParams('?a=1').toString() !== 'a=1') { if (!('URLSearchParams' in global) || new global.URLSearchParams('?a=1').toString() !== 'a=1') {
polyfillURLSearchParams(); polyfillURLSearchParams();
} }
var proto = URLSearchParams.prototype; var proto = global.URLSearchParams.prototype;
if (typeof proto.sort !== 'function') { if (typeof proto.sort !== 'function') {
proto.sort = function () { proto.sort = function () {
@ -1965,7 +1965,7 @@ _setToStringTag(_global.JSON, 'JSON', true);
*/ */
var checkIfURLIsSupported = function checkIfURLIsSupported() { var checkIfURLIsSupported = function checkIfURLIsSupported() {
try { try {
var u = new URL('b', 'http://a'); var u = new global.URL('b', 'http://a');
u.pathname = 'c%20d'; u.pathname = 'c%20d';
return u.href === 'http://a/c%20d' && u.searchParams; return u.href === 'http://a/c%20d' && u.searchParams;
} catch (e) { } catch (e) {
@ -2011,7 +2011,7 @@ _setToStringTag(_global.JSON, 'JSON', true);
value: anchorElement value: anchorElement
}); // create a linked searchParams which reflect its changes on URL }); // create a linked searchParams which reflect its changes on URL
var searchParams = new URLSearchParams(this.search); var searchParams = new global.URLSearchParams(this.search);
var enableSearchUpdate = true; var enableSearchUpdate = true;
var enableSearchParamsUpdate = true; var enableSearchParamsUpdate = true;
@ -2636,7 +2636,7 @@ var getWeak = _meta.getWeak;
var arrayFind = _arrayMethods(5); var arrayFind = _arrayMethods(5);
var arrayFindIndex = _arrayMethods(6); var arrayFindIndex = _arrayMethods(6);
var id$2 = 0; var id$1 = 0;
// fallback for uncaught frozen keys // fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) { var uncaughtFrozenStore = function (that) {
@ -2677,7 +2677,7 @@ var _collectionWeak = {
var C = wrapper(function (that, iterable) { var C = wrapper(function (that, iterable) {
_anInstance(that, C, NAME, '_i'); _anInstance(that, C, NAME, '_i');
that._t = NAME; // collection type that._t = NAME; // collection type
that._i = id$2++; // collection id that._i = id$1++; // collection id
that._l = undefined; // leak store for uncaught frozen objects that._l = undefined; // leak store for uncaught frozen objects
if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that);
}); });
@ -5415,7 +5415,7 @@ var controls = {
list.appendChild(menuItem); list.appendChild(menuItem);
}, },
// Format a time for display // Format a time for display
formatTime: function formatTime$$1() { formatTime: function formatTime$1() {
var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@ -5535,8 +5535,8 @@ var controls = {
range.setAttribute('aria-valuenow', this.currentTime); range.setAttribute('aria-valuenow', this.currentTime);
var currentTime = controls.formatTime(this.currentTime); var currentTime = controls.formatTime(this.currentTime);
var duration = controls.formatTime(this.duration); var duration = controls.formatTime(this.duration);
var format$$1 = i18n.get('seekLabel', this.config); var format = i18n.get('seekLabel', this.config);
range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration)); range.setAttribute('aria-valuetext', format.replace('{currentTime}', currentTime).replace('{duration}', duration));
} else if (matches$1(range, this.config.selectors.inputs.volume)) { } else if (matches$1(range, this.config.selectors.inputs.volume)) {
var percent = range.value * 100; var percent = range.value * 100;
range.setAttribute('aria-valuenow', percent); range.setAttribute('aria-valuenow', percent);
@ -7778,13 +7778,13 @@ var ui = {
}, },
// Toggle controls based on state and `force` argument // Toggle controls based on state and `force` argument
toggleControls: function toggleControls(force) { toggleControls: function toggleControls(force) {
var controls$$1 = this.elements.controls; var controls = this.elements.controls;
if (controls$$1 && this.config.hideControls) { if (controls && this.config.hideControls) {
// Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)
var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide var recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide
this.toggleControls(Boolean(force || this.loading || this.paused || controls$$1.pressed || controls$$1.hover || recentTouchSeek)); this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover || recentTouchSeek));
} }
} }
}; };
@ -8090,11 +8090,11 @@ function () {
on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {
var controls$$1 = elements.controls; // Remove button states for fullscreen var controls = elements.controls; // Remove button states for fullscreen
if (controls$$1 && event.type === 'enterfullscreen') { if (controls && event.type === 'enterfullscreen') {
controls$$1.pressed = false; controls.pressed = false;
controls$$1.hover = false; controls.hover = false;
} // Show, then hide after a timeout unless another control event occurs } // Show, then hide after a timeout unless another control event occurs
@ -8349,7 +8349,7 @@ function () {
}, { }, {
key: "controls", key: "controls",
value: function controls$$1() { value: function controls$1() {
var _this3 = this; var _this3 = this;
var player = this.player; var player = this.player;
@ -8712,16 +8712,23 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
maxTries = (args.numRetries || 0) + 1, maxTries = (args.numRetries || 0) + 1,
beforeCallbackFn = args.before || devnull, beforeCallbackFn = args.before || devnull,
pathStripped = path.replace(/^(css|img)!/, ''), pathStripped = path.replace(/^(css|img)!/, ''),
isCss, isLegacyIECss,
e; e;
numTries = numTries || 0; numTries = numTries || 0;
if (/(^css!|\.css$)/.test(path)) { if (/(^css!|\.css$)/.test(path)) {
isCss = true; // css // css
e = doc.createElement('link'); e = doc.createElement('link');
e.rel = 'stylesheet'; e.rel = 'stylesheet';
e.href = pathStripped; //.replace(/^css!/, ''); // remove "css!" prefix e.href = pathStripped; // tag IE9+
isLegacyIECss = 'hideFocus' in e; // use preload in IE Edge (to detect load errors)
if (isLegacyIECss && e.relList) {
isLegacyIECss = 0;
e.rel = 'preload';
e.as = 'style';
}
} else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) { } else if (/(^img!|\.(png|gif|jpg|svg)$)/.test(path)) {
// image // image
e = doc.createElement('img'); e = doc.createElement('img');
@ -8734,10 +8741,10 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
} }
e.onload = e.onerror = e.onbeforeload = function (ev) { e.onload = e.onerror = e.onbeforeload = function (ev) {
var result = ev.type[0]; // Note: The following code isolates IE using `hideFocus` and treats empty var result = ev.type[0]; // treat empty stylesheets as failures to get around lack of onerror
// stylesheets as failures to get around lack of onerror support // support in IE9-11
if (isCss && 'hideFocus' in e) { if (isLegacyIECss) {
try { try {
if (!e.sheet.cssText.length) result = 'e'; if (!e.sheet.cssText.length) result = 'e';
} catch (x) { } catch (x) {
@ -8755,6 +8762,9 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
if (numTries < maxTries) { if (numTries < maxTries) {
return loadFile(path, callbackFn, args, numTries); return loadFile(path, callbackFn, args, numTries);
} }
} else if (e.rel == 'preload' && e.as == 'style') {
// activate preloaded stylesheets
return e.rel = 'stylesheet'; // jshint ignore:line
} // execute callback } // execute callback
@ -8820,15 +8830,26 @@ var loadjs_umd = createCommonjsModule(function (module, exports) {
} else { } else {
bundleIdCache[bundleId] = true; bundleIdCache[bundleId] = true;
} }
} // load scripts }
function loadFn(resolve, reject) {
loadFiles(paths, function (pathsNotFound) {
// execute callbacks
executeCallbacks(args, pathsNotFound); // resolve Promise
if (resolve) {
executeCallbacks({
success: resolve,
error: reject
}, pathsNotFound);
} // publish bundle load event
loadFiles(paths, function (pathsNotFound) { publish(bundleId, pathsNotFound);
// execute callbacks }, args);
executeCallbacks(args, pathsNotFound); // publish bundle load event }
publish(bundleId, pathsNotFound); if (args.returnPromise) return new Promise(loadFn);else loadFn();
}, args);
} }
/** /**
* Execute callbacks when dependencies have been satisfied. * Execute callbacks when dependencies have been satisfied.
@ -8933,7 +8954,7 @@ var vimeo = {
} }
}, },
// API Ready // API Ready
ready: function ready$$1() { ready: function ready() {
var _this2 = this; var _this2 = this;
var player = this; var player = this;
@ -9310,7 +9331,7 @@ var youtube = {
} }
}, },
// API ready // API ready
ready: function ready$$1() { ready: function ready() {
var player = this; // Ignore already setup (race condition) var player = this; // Ignore already setup (race condition)
var currentId = player.media.getAttribute('id'); var currentId = player.media.getAttribute('id');
@ -9338,8 +9359,8 @@ var youtube = {
}); });
player.media = replaceElement(container, player.media); // Id to poster wrapper player.media = replaceElement(container, player.media); // Id to poster wrapper
var posterSrc = function posterSrc(format$$1) { var posterSrc = function posterSrc(format) {
return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format$$1, "default.jpg"); return "https://img.youtube.com/vi/".concat(videoId, "/").concat(format, "default.jpg");
}; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide) }; // Check thumbnail images in order of quality, but reject fallback thumbnails (120px wide)
@ -9731,7 +9752,7 @@ function () {
}, { }, {
key: "ready", key: "ready",
value: function ready$$1() { value: function ready() {
var _this3 = this; var _this3 = this;
// Start ticking our safety timer. If the whole advertisement // Start ticking our safety timer. If the whole advertisement
@ -10215,7 +10236,7 @@ function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on(event, callback) {
if (!is$2.array(this.events[event])) { if (!is$2.array(this.events[event])) {
this.events[event] = []; this.events[event] = [];
} }
@ -11577,7 +11598,7 @@ function () {
}, { }, {
key: "on", key: "on",
value: function on$$1(event, callback) { value: function on$1(event, callback) {
on.call(this, this.elements.container, event, callback); on.call(this, this.elements.container, event, callback);
} }
/** /**
@ -11588,7 +11609,7 @@ function () {
}, { }, {
key: "once", key: "once",
value: function once$$1(event, callback) { value: function once$1(event, callback) {
once.call(this, this.elements.container, event, callback); once.call(this, this.elements.container, event, callback);
} }
/** /**
@ -11599,7 +11620,7 @@ function () {
}, { }, {
key: "off", key: "off",
value: function off$$1(event, callback) { value: function off$1(event, callback) {
off(this.elements.container, event, callback); off(this.elements.container, event, callback);
} }
/** /**
@ -12258,7 +12279,7 @@ function () {
}, { }, {
key: "loadSprite", key: "loadSprite",
value: function loadSprite$$1(url, id) { value: function loadSprite$1(url, id) {
return loadSprite(url, id); return loadSprite(url, id);
} }
/** /**

View File

@ -35,15 +35,15 @@
"deploy": "yarn lint && gulp deploy" "deploy": "yarn lint && gulp deploy"
}, },
"devDependencies": { "devDependencies": {
"ansi-colors": "^3.2.3", "ansi-colors": "^3.2.4",
"aws-sdk": "^2.409.0", "aws-sdk": "^2.422.0",
"@babel/core": "^7.3.3", "@babel/core": "^7.3.4",
"@babel/preset-env": "^7.3.1", "@babel/preset-env": "^7.3.4",
"babel-eslint": "^10.0.1", "babel-eslint": "^10.0.1",
"del": "^3.0.0", "del": "^4.0.0",
"eslint": "^5.14.1", "eslint": "^5.15.2",
"eslint-config-airbnb-base": "^13.1.0", "eslint-config-airbnb-base": "^13.1.0",
"eslint-config-prettier": "^4.0.0", "eslint-config-prettier": "^4.1.0",
"eslint-plugin-import": "^2.16.0", "eslint-plugin-import": "^2.16.0",
"fancy-log": "^1.3.3", "fancy-log": "^1.3.3",
"fastly-purge": "^1.0.1", "fastly-purge": "^1.0.1",
@ -51,7 +51,7 @@
"gulp": "^4.0.0", "gulp": "^4.0.0",
"gulp-autoprefixer": "^6.0.0", "gulp-autoprefixer": "^6.0.0",
"gulp-awspublish": "^4.0.0", "gulp-awspublish": "^4.0.0",
"gulp-better-rollup": "^3.4.0", "gulp-better-rollup": "^4.0.1",
"gulp-clean-css": "^4.0.0", "gulp-clean-css": "^4.0.0",
"gulp-filter": "^5.1.0", "gulp-filter": "^5.1.0",
"gulp-header": "^2.0.7", "gulp-header": "^2.0.7",
@ -70,7 +70,8 @@
"prettier-eslint": "^8.8.2", "prettier-eslint": "^8.8.2",
"prettier-stylelint": "^0.4.2", "prettier-stylelint": "^0.4.2",
"remark-cli": "^6.0.1", "remark-cli": "^6.0.1",
"remark-validate-links": "^8.0.0", "remark-validate-links": "^8.0.1",
"rollup": "^1.6.0",
"rollup-plugin-babel": "^4.3.2", "rollup-plugin-babel": "^4.3.2",
"rollup-plugin-commonjs": "^9.2.1", "rollup-plugin-commonjs": "^9.2.1",
"rollup-plugin-node-resolve": "^4.0.1", "rollup-plugin-node-resolve": "^4.0.1",
@ -78,17 +79,17 @@
"stylelint-config-prettier": "^5.0.0", "stylelint-config-prettier": "^5.0.0",
"stylelint-config-recommended": "^2.1.0", "stylelint-config-recommended": "^2.1.0",
"stylelint-config-sass-guidelines": "^5.3.0", "stylelint-config-sass-guidelines": "^5.3.0",
"stylelint-order": "^2.0.0", "stylelint-order": "^2.1.0",
"stylelint-scss": "^3.5.4", "stylelint-scss": "^3.5.4",
"stylelint-selector-bem-pattern": "^2.0.0", "stylelint-selector-bem-pattern": "^2.0.0",
"through2": "^3.0.0" "through2": "^3.0.1"
}, },
"dependencies": { "dependencies": {
"core-js": "^2.6.5", "core-js": "^2.6.5",
"custom-event-polyfill": "^1.0.6", "custom-event-polyfill": "^1.0.6",
"loadjs": "^3.5.5", "loadjs": "^3.6.0",
"rangetouch": "^2.0.0", "rangetouch": "^2.0.0",
"raven-js": "^3.27.0", "raven-js": "^3.27.0",
"url-polyfill": "^1.1.3" "url-polyfill": "^1.1.5"
} }
} }

View File

@ -5,6 +5,10 @@
} }
], ],
"settings": { "settings": {
"search.exclude": {
"**/node_modules": true,
"**/dist": true
},
// Linting // Linting
"stylelint.enable": true, "stylelint.enable": true,
"css.validate": false, "css.validate": false,

View File

@ -296,7 +296,7 @@ Note the single quotes encapsulating the JSON and double quotes on the object ke
| `ratio` | String | `16:9` | The aspect ratio you want to use for embedded players. | | `ratio` | String | `16:9` | The aspect ratio you want to use for embedded players. |
| `storage` | Object | `{ enabled: true, key: 'plyr' }` | `enabled`: Allow use of local storage to store user settings. `key`: The key name to use. | | `storage` | Object | `{ enabled: true, key: 'plyr' }` | `enabled`: Allow use of local storage to store user settings. `key`: The key name to use. |
| `speed` | Object | `{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }` | `selected`: The default speed for playback. `options`: Options to display in the menu. Most browsers will refuse to play slower than 0.5. | | `speed` | Object | `{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }` | `selected`: The default speed for playback. `options`: Options to display in the menu. Most browsers will refuse to play slower than 0.5. |
| `quality` | Object | `{ default: 'default', options: ['hd2160', 'hd1440', 'hd1080', 'hd720', 'large', 'medium', 'small', 'tiny', 'default'] }` | Currently only supported by YouTube. `default` is the default quality level, determined by YouTube. `options` are the options to display. | | `quality` | Object | `{ default: 576, options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240] }` | `default` is the default quality level (if it exists in your sources). `options` are the options to display. This is used to filter the available sources. |
| `loop` | Object | `{ active: false }` | `active`: Whether to loop the current video. If the `loop` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true This is an object to support future functionality. | | `loop` | Object | `{ active: false }` | `active`: Whether to loop the current video. If the `loop` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true This is an object to support future functionality. |
| `ads` | Object | `{ enabled: false, publisherId: '' }` | `enabled`: Whether to enable advertisements. `publisherId`: Your unique [vi.ai](https://vi.ai/publisher-video-monetization/?aid=plyrio) publisher ID. | | `ads` | Object | `{ enabled: false, publisherId: '' }` | `enabled`: Whether to enable advertisements. `publisherId`: Your unique [vi.ai](https://vi.ai/publisher-video-monetization/?aid=plyrio) publisher ID. |
| `urls` | Object | See source. | If you wish to override any API URLs then you can do so here. You can also set a custom download URL for the download button. | | `urls` | Object | See source. | If you wish to override any API URLs then you can do so here. You can also set a custom download URL for the download button. |

580
yarn.lock

File diff suppressed because it is too large Load Diff