Merge branch 'develop'
# Conflicts: # dist/plyr.js.map # dist/plyr.min.js # dist/plyr.min.js.map # dist/plyr.polyfilled.js.map # dist/plyr.polyfilled.min.js # dist/plyr.polyfilled.min.js.map
This commit is contained in:
commit
17dcb63c26
10
changelog.md
10
changelog.md
@ -1,7 +1,13 @@
|
|||||||
|
# 3.3.18
|
||||||
|
|
||||||
|
- Ads are now only supported on HTML5 videos as it violates terms of service for YouTube and Vimeo 😢
|
||||||
|
- Fix i18n defaults path on README (thanks @meyt!)
|
||||||
|
- Minor increaseVolume and decreaseVolume changes (thanks @friday!)
|
||||||
|
|
||||||
# v3.3.17
|
# v3.3.17
|
||||||
|
|
||||||
- Fix YouTube muting after seeking with the progress slider
|
- Fix YouTube muting after seeking with the progress slider (thanks @friday!)
|
||||||
- Respect preload="none" when setting quality if the media hasn't been loaded some other way
|
- Respect preload="none" when setting quality if the media hasn't been loaded some other way (thanks @friday!)
|
||||||
|
|
||||||
# v3.3.16
|
# v3.3.16
|
||||||
|
|
||||||
|
11
demo/dist/demo.js
vendored
11
demo/dist/demo.js
vendored
@ -1874,7 +1874,7 @@ typeof navigator === "object" && (function () {
|
|||||||
// webpack (using a build step causes webpack #1617). Grunt verifies that
|
// webpack (using a build step causes webpack #1617). Grunt verifies that
|
||||||
// this value matches package.json during build.
|
// this value matches package.json during build.
|
||||||
// See: https://github.com/getsentry/raven-js/issues/465
|
// See: https://github.com/getsentry/raven-js/issues/465
|
||||||
VERSION: '3.26.2',
|
VERSION: '3.26.3',
|
||||||
|
|
||||||
debug: false,
|
debug: false,
|
||||||
|
|
||||||
@ -2351,7 +2351,9 @@ typeof navigator === "object" && (function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._globalOptions.stacktrace || (options && options.stacktrace)) {
|
// Always attempt to get stacktrace if message is empty.
|
||||||
|
// It's the only way to provide any helpful information to the user.
|
||||||
|
if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {
|
||||||
// fingerprint on msg, not stack trace (legacy behavior, could be revisited)
|
// fingerprint on msg, not stack trace (legacy behavior, could be revisited)
|
||||||
data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;
|
data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;
|
||||||
|
|
||||||
@ -3508,6 +3510,11 @@ typeof navigator === "object" && (function () {
|
|||||||
options
|
options
|
||||||
);
|
);
|
||||||
|
|
||||||
|
var ex = data.exception.values[0];
|
||||||
|
if (ex.type == null && ex.value === '') {
|
||||||
|
ex.value = 'Unrecoverable error caught';
|
||||||
|
}
|
||||||
|
|
||||||
// Move mechanism from options to exception interface
|
// Move mechanism from options to exception interface
|
||||||
// We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be
|
// We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be
|
||||||
// too much
|
// too much
|
||||||
|
2
demo/dist/demo.js.map
vendored
2
demo/dist/demo.js.map
vendored
File diff suppressed because one or more lines are too long
2
demo/dist/demo.min.js
vendored
2
demo/dist/demo.min.js
vendored
File diff suppressed because one or more lines are too long
2
demo/dist/demo.min.js.map
vendored
2
demo/dist/demo.min.js.map
vendored
File diff suppressed because one or more lines are too long
178
dist/plyr.js
vendored
178
dist/plyr.js
vendored
@ -11,60 +11,92 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
var getConstructor = function getConstructor(input) {
|
var getConstructor = function getConstructor(input) {
|
||||||
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
var instanceOf = function instanceOf(input, constructor) {
|
var instanceOf = function instanceOf(input, constructor) {
|
||||||
return Boolean(input && constructor && input instanceof constructor);
|
return Boolean(input && constructor && input instanceof constructor);
|
||||||
};
|
};
|
||||||
|
var isNullOrUndefined = function isNullOrUndefined(input) {
|
||||||
|
return input === null || typeof input === 'undefined';
|
||||||
|
};
|
||||||
|
var isObject = function isObject(input) {
|
||||||
|
return getConstructor(input) === Object;
|
||||||
|
};
|
||||||
|
var isNumber = function isNumber(input) {
|
||||||
|
return getConstructor(input) === Number && !Number.isNaN(input);
|
||||||
|
};
|
||||||
|
var isString = function isString(input) {
|
||||||
|
return getConstructor(input) === String;
|
||||||
|
};
|
||||||
|
var isBoolean = function isBoolean(input) {
|
||||||
|
return getConstructor(input) === Boolean;
|
||||||
|
};
|
||||||
|
var isFunction = function isFunction(input) {
|
||||||
|
return getConstructor(input) === Function;
|
||||||
|
};
|
||||||
|
var isArray = function isArray(input) {
|
||||||
|
return Array.isArray(input);
|
||||||
|
};
|
||||||
|
var isWeakMap = function isWeakMap(input) {
|
||||||
|
return instanceOf(input, WeakMap);
|
||||||
|
};
|
||||||
|
var isNodeList = function isNodeList(input) {
|
||||||
|
return instanceOf(input, NodeList);
|
||||||
|
};
|
||||||
|
var isElement = function isElement(input) {
|
||||||
|
return instanceOf(input, Element);
|
||||||
|
};
|
||||||
|
var isTextNode = function isTextNode(input) {
|
||||||
|
return getConstructor(input) === Text;
|
||||||
|
};
|
||||||
|
var isEvent = function isEvent(input) {
|
||||||
|
return instanceOf(input, Event);
|
||||||
|
};
|
||||||
|
var isCue = function isCue(input) {
|
||||||
|
return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
||||||
|
};
|
||||||
|
var isTrack = function isTrack(input) {
|
||||||
|
return instanceOf(input, TextTrack) || !isNullOrUndefined(input) && isString(input.kind);
|
||||||
|
};
|
||||||
|
|
||||||
|
var isEmpty = function isEmpty(input) {
|
||||||
|
return isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length;
|
||||||
|
};
|
||||||
|
|
||||||
|
var isUrl = function isUrl(input) {
|
||||||
|
// Accept a URL object
|
||||||
|
if (instanceOf(input, window.URL)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the protocol if required
|
||||||
|
var string = input;
|
||||||
|
if (!input.startsWith('http://') || !input.startsWith('https://')) {
|
||||||
|
string = 'http://' + input;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return !isEmpty(new URL(string).hostname);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var is = {
|
var is = {
|
||||||
object: function object(input) {
|
nullOrUndefined: isNullOrUndefined,
|
||||||
return getConstructor(input) === Object;
|
object: isObject,
|
||||||
},
|
number: isNumber,
|
||||||
number: function number(input) {
|
string: isString,
|
||||||
return getConstructor(input) === Number && !Number.isNaN(input);
|
boolean: isBoolean,
|
||||||
},
|
function: isFunction,
|
||||||
string: function string(input) {
|
array: isArray,
|
||||||
return getConstructor(input) === String;
|
weakMap: isWeakMap,
|
||||||
},
|
nodeList: isNodeList,
|
||||||
boolean: function boolean(input) {
|
element: isElement,
|
||||||
return getConstructor(input) === Boolean;
|
textNode: isTextNode,
|
||||||
},
|
event: isEvent,
|
||||||
function: function _function(input) {
|
cue: isCue,
|
||||||
return getConstructor(input) === Function;
|
track: isTrack,
|
||||||
},
|
url: isUrl,
|
||||||
array: function array(input) {
|
empty: isEmpty
|
||||||
return !is.nullOrUndefined(input) && Array.isArray(input);
|
|
||||||
},
|
|
||||||
weakMap: function weakMap(input) {
|
|
||||||
return instanceOf(input, WeakMap);
|
|
||||||
},
|
|
||||||
nodeList: function nodeList(input) {
|
|
||||||
return instanceOf(input, NodeList);
|
|
||||||
},
|
|
||||||
element: function element(input) {
|
|
||||||
return instanceOf(input, Element);
|
|
||||||
},
|
|
||||||
textNode: function textNode(input) {
|
|
||||||
return getConstructor(input) === Text;
|
|
||||||
},
|
|
||||||
event: function event(input) {
|
|
||||||
return instanceOf(input, Event);
|
|
||||||
},
|
|
||||||
cue: function cue(input) {
|
|
||||||
return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
|
||||||
},
|
|
||||||
track: function track(input) {
|
|
||||||
return instanceOf(input, TextTrack) || !is.nullOrUndefined(input) && is.string(input.kind);
|
|
||||||
},
|
|
||||||
url: function url(input) {
|
|
||||||
return !is.nullOrUndefined(input) && /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/.test(input);
|
|
||||||
},
|
|
||||||
nullOrUndefined: function nullOrUndefined(input) {
|
|
||||||
return input === null || typeof input === 'undefined';
|
|
||||||
},
|
|
||||||
empty: function empty(input) {
|
|
||||||
return is.nullOrUndefined(input) || (is.string(input) || is.array(input) || is.nodeList(input)) && !input.length || is.object(input) && !Object.keys(input).length;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -4777,33 +4809,28 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
// Detect "natural" scroll - suppored on OS X Safari only
|
// Detect "natural" scroll - suppored on OS X Safari only
|
||||||
// Other browsers on OS X will be inverted until support improves
|
// Other browsers on OS X will be inverted until support improves
|
||||||
var inverted = event.webkitDirectionInvertedFromDevice;
|
var inverted = event.webkitDirectionInvertedFromDevice;
|
||||||
var step = 1 / 50;
|
|
||||||
var direction = 0;
|
|
||||||
|
|
||||||
// Scroll down (or up on natural) to decrease
|
// Get delta from event. Invert if `inverted` is true
|
||||||
if (event.deltaY < 0 || event.deltaX > 0) {
|
|
||||||
if (inverted) {
|
|
||||||
_this4.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
|
||||||
} else {
|
|
||||||
_this4.player.increaseVolume(step);
|
|
||||||
direction = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scroll up (or down on natural) to increase
|
var _map = [event.deltaX, -event.deltaY].map(function (value) {
|
||||||
if (event.deltaY > 0 || event.deltaX < 0) {
|
return inverted ? -value : value;
|
||||||
if (inverted) {
|
}),
|
||||||
_this4.player.increaseVolume(step);
|
_map2 = slicedToArray(_map, 2),
|
||||||
direction = 1;
|
x = _map2[0],
|
||||||
} else {
|
y = _map2[1];
|
||||||
_this4.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
// Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);
|
||||||
|
|
||||||
|
// Change the volume by 2%
|
||||||
|
_this4.player.increaseVolume(direction / 50);
|
||||||
|
|
||||||
// Don't break page scrolling at max and min
|
// Don't break page scrolling at max and min
|
||||||
if (direction === 1 && _this4.player.media.volume < 1 || direction === -1 && _this4.player.media.volume > 0) {
|
var volume = _this4.player.media.volume;
|
||||||
|
|
||||||
|
if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
}, 'volume', false);
|
}, 'volume', false);
|
||||||
@ -6742,7 +6769,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}, {
|
}, {
|
||||||
key: 'enabled',
|
key: 'enabled',
|
||||||
get: function get$$1() {
|
get: function get$$1() {
|
||||||
return this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId);
|
return this.player.isHTML5 && this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId);
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'tagUrl',
|
key: 'tagUrl',
|
||||||
@ -7299,7 +7326,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
*/
|
*/
|
||||||
value: function increaseVolume(step) {
|
value: function increaseVolume(step) {
|
||||||
var volume = this.media.muted ? 0 : this.volume;
|
var volume = this.media.muted ? 0 : this.volume;
|
||||||
this.volume = volume + (is.number(step) ? step : 1);
|
this.volume = volume + (is.number(step) ? step : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -7310,8 +7337,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}, {
|
}, {
|
||||||
key: 'decreaseVolume',
|
key: 'decreaseVolume',
|
||||||
value: function decreaseVolume(step) {
|
value: function decreaseVolume(step) {
|
||||||
var volume = this.media.muted ? 0 : this.volume;
|
this.increaseVolume(-step);
|
||||||
this.volume = volume - (is.number(step) ? step : 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
2
dist/plyr.js.map
vendored
2
dist/plyr.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.min.js
vendored
2
dist/plyr.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.min.js.map
vendored
2
dist/plyr.min.js.map
vendored
File diff suppressed because one or more lines are too long
178
dist/plyr.polyfilled.js
vendored
178
dist/plyr.polyfilled.js
vendored
@ -5397,60 +5397,92 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
var getConstructor = function getConstructor(input) {
|
var getConstructor = function getConstructor(input) {
|
||||||
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
return input !== null && typeof input !== 'undefined' ? input.constructor : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
var instanceOf = function instanceOf(input, constructor) {
|
var instanceOf = function instanceOf(input, constructor) {
|
||||||
return Boolean(input && constructor && input instanceof constructor);
|
return Boolean(input && constructor && input instanceof constructor);
|
||||||
};
|
};
|
||||||
|
var isNullOrUndefined = function isNullOrUndefined(input) {
|
||||||
|
return input === null || typeof input === 'undefined';
|
||||||
|
};
|
||||||
|
var isObject = function isObject(input) {
|
||||||
|
return getConstructor(input) === Object;
|
||||||
|
};
|
||||||
|
var isNumber = function isNumber(input) {
|
||||||
|
return getConstructor(input) === Number && !Number.isNaN(input);
|
||||||
|
};
|
||||||
|
var isString = function isString(input) {
|
||||||
|
return getConstructor(input) === String;
|
||||||
|
};
|
||||||
|
var isBoolean = function isBoolean(input) {
|
||||||
|
return getConstructor(input) === Boolean;
|
||||||
|
};
|
||||||
|
var isFunction = function isFunction(input) {
|
||||||
|
return getConstructor(input) === Function;
|
||||||
|
};
|
||||||
|
var isArray = function isArray(input) {
|
||||||
|
return Array.isArray(input);
|
||||||
|
};
|
||||||
|
var isWeakMap = function isWeakMap(input) {
|
||||||
|
return instanceOf(input, WeakMap);
|
||||||
|
};
|
||||||
|
var isNodeList = function isNodeList(input) {
|
||||||
|
return instanceOf(input, NodeList);
|
||||||
|
};
|
||||||
|
var isElement = function isElement(input) {
|
||||||
|
return instanceOf(input, Element);
|
||||||
|
};
|
||||||
|
var isTextNode = function isTextNode(input) {
|
||||||
|
return getConstructor(input) === Text;
|
||||||
|
};
|
||||||
|
var isEvent = function isEvent(input) {
|
||||||
|
return instanceOf(input, Event);
|
||||||
|
};
|
||||||
|
var isCue = function isCue(input) {
|
||||||
|
return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
||||||
|
};
|
||||||
|
var isTrack = function isTrack(input) {
|
||||||
|
return instanceOf(input, TextTrack) || !isNullOrUndefined(input) && isString(input.kind);
|
||||||
|
};
|
||||||
|
|
||||||
|
var isEmpty = function isEmpty(input) {
|
||||||
|
return isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length;
|
||||||
|
};
|
||||||
|
|
||||||
|
var isUrl = function isUrl(input) {
|
||||||
|
// Accept a URL object
|
||||||
|
if (instanceOf(input, window.URL)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the protocol if required
|
||||||
|
var string = input;
|
||||||
|
if (!input.startsWith('http://') || !input.startsWith('https://')) {
|
||||||
|
string = 'http://' + input;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return !isEmpty(new URL(string).hostname);
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var is$1 = {
|
var is$1 = {
|
||||||
object: function object(input) {
|
nullOrUndefined: isNullOrUndefined,
|
||||||
return getConstructor(input) === Object;
|
object: isObject,
|
||||||
},
|
number: isNumber,
|
||||||
number: function number(input) {
|
string: isString,
|
||||||
return getConstructor(input) === Number && !Number.isNaN(input);
|
boolean: isBoolean,
|
||||||
},
|
function: isFunction,
|
||||||
string: function string(input) {
|
array: isArray,
|
||||||
return getConstructor(input) === String;
|
weakMap: isWeakMap,
|
||||||
},
|
nodeList: isNodeList,
|
||||||
boolean: function boolean(input) {
|
element: isElement,
|
||||||
return getConstructor(input) === Boolean;
|
textNode: isTextNode,
|
||||||
},
|
event: isEvent,
|
||||||
function: function _function(input) {
|
cue: isCue,
|
||||||
return getConstructor(input) === Function;
|
track: isTrack,
|
||||||
},
|
url: isUrl,
|
||||||
array: function array(input) {
|
empty: isEmpty
|
||||||
return !is$1.nullOrUndefined(input) && Array.isArray(input);
|
|
||||||
},
|
|
||||||
weakMap: function weakMap(input) {
|
|
||||||
return instanceOf(input, WeakMap);
|
|
||||||
},
|
|
||||||
nodeList: function nodeList(input) {
|
|
||||||
return instanceOf(input, NodeList);
|
|
||||||
},
|
|
||||||
element: function element(input) {
|
|
||||||
return instanceOf(input, Element);
|
|
||||||
},
|
|
||||||
textNode: function textNode(input) {
|
|
||||||
return getConstructor(input) === Text;
|
|
||||||
},
|
|
||||||
event: function event(input) {
|
|
||||||
return instanceOf(input, Event);
|
|
||||||
},
|
|
||||||
cue: function cue(input) {
|
|
||||||
return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
|
||||||
},
|
|
||||||
track: function track(input) {
|
|
||||||
return instanceOf(input, TextTrack) || !is$1.nullOrUndefined(input) && is$1.string(input.kind);
|
|
||||||
},
|
|
||||||
url: function url(input) {
|
|
||||||
return !is$1.nullOrUndefined(input) && /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/.test(input);
|
|
||||||
},
|
|
||||||
nullOrUndefined: function nullOrUndefined(input) {
|
|
||||||
return input === null || typeof input === 'undefined';
|
|
||||||
},
|
|
||||||
empty: function empty(input) {
|
|
||||||
return is$1.nullOrUndefined(input) || (is$1.string(input) || is$1.array(input) || is$1.nodeList(input)) && !input.length || is$1.object(input) && !Object.keys(input).length;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -10163,33 +10195,28 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
// Detect "natural" scroll - suppored on OS X Safari only
|
// Detect "natural" scroll - suppored on OS X Safari only
|
||||||
// Other browsers on OS X will be inverted until support improves
|
// Other browsers on OS X will be inverted until support improves
|
||||||
var inverted = event.webkitDirectionInvertedFromDevice;
|
var inverted = event.webkitDirectionInvertedFromDevice;
|
||||||
var step = 1 / 50;
|
|
||||||
var direction = 0;
|
|
||||||
|
|
||||||
// Scroll down (or up on natural) to decrease
|
// Get delta from event. Invert if `inverted` is true
|
||||||
if (event.deltaY < 0 || event.deltaX > 0) {
|
|
||||||
if (inverted) {
|
|
||||||
_this4.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
|
||||||
} else {
|
|
||||||
_this4.player.increaseVolume(step);
|
|
||||||
direction = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scroll up (or down on natural) to increase
|
var _map = [event.deltaX, -event.deltaY].map(function (value) {
|
||||||
if (event.deltaY > 0 || event.deltaX < 0) {
|
return inverted ? -value : value;
|
||||||
if (inverted) {
|
}),
|
||||||
_this4.player.increaseVolume(step);
|
_map2 = slicedToArray(_map, 2),
|
||||||
direction = 1;
|
x = _map2[0],
|
||||||
} else {
|
y = _map2[1];
|
||||||
_this4.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
// Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);
|
||||||
|
|
||||||
|
// Change the volume by 2%
|
||||||
|
_this4.player.increaseVolume(direction / 50);
|
||||||
|
|
||||||
// Don't break page scrolling at max and min
|
// Don't break page scrolling at max and min
|
||||||
if (direction === 1 && _this4.player.media.volume < 1 || direction === -1 && _this4.player.media.volume > 0) {
|
var volume = _this4.player.media.volume;
|
||||||
|
|
||||||
|
if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
}, 'volume', false);
|
}, 'volume', false);
|
||||||
@ -12122,7 +12149,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}, {
|
}, {
|
||||||
key: 'enabled',
|
key: 'enabled',
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return this.player.isVideo && this.player.config.ads.enabled && !is$1.empty(this.publisherId);
|
return this.player.isHTML5 && this.player.isVideo && this.player.config.ads.enabled && !is$1.empty(this.publisherId);
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'tagUrl',
|
key: 'tagUrl',
|
||||||
@ -12679,7 +12706,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
*/
|
*/
|
||||||
value: function increaseVolume(step) {
|
value: function increaseVolume(step) {
|
||||||
var volume = this.media.muted ? 0 : this.volume;
|
var volume = this.media.muted ? 0 : this.volume;
|
||||||
this.volume = volume + (is$1.number(step) ? step : 1);
|
this.volume = volume + (is$1.number(step) ? step : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12690,8 +12717,7 @@ typeof navigator === "object" && (function (global, factory) {
|
|||||||
}, {
|
}, {
|
||||||
key: 'decreaseVolume',
|
key: 'decreaseVolume',
|
||||||
value: function decreaseVolume(step) {
|
value: function decreaseVolume(step) {
|
||||||
var volume = this.media.muted ? 0 : this.volume;
|
this.increaseVolume(-step);
|
||||||
this.volume = volume - (is$1.number(step) ? step : 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
2
dist/plyr.polyfilled.js.map
vendored
2
dist/plyr.polyfilled.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.polyfilled.min.js
vendored
2
dist/plyr.polyfilled.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.polyfilled.min.js.map
vendored
2
dist/plyr.polyfilled.min.js.map
vendored
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "plyr",
|
"name": "plyr",
|
||||||
"version": "3.3.17",
|
"version": "3.3.18",
|
||||||
"description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player",
|
"description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player",
|
||||||
"homepage": "https://plyr.io",
|
"homepage": "https://plyr.io",
|
||||||
"main": "./dist/plyr.js",
|
"main": "./dist/plyr.js",
|
||||||
@ -45,7 +45,7 @@
|
|||||||
"rollup-plugin-node-resolve": "^3.3.0",
|
"rollup-plugin-node-resolve": "^3.3.0",
|
||||||
"run-sequence": "^2.2.1",
|
"run-sequence": "^2.2.1",
|
||||||
"stylelint": "^9.3.0",
|
"stylelint": "^9.3.0",
|
||||||
"stylelint-config-prettier": "^3.2.0",
|
"stylelint-config-prettier": "^3.3.0",
|
||||||
"stylelint-config-recommended": "^2.1.0",
|
"stylelint-config-recommended": "^2.1.0",
|
||||||
"stylelint-config-sass-guidelines": "^5.0.0",
|
"stylelint-config-sass-guidelines": "^5.0.0",
|
||||||
"stylelint-order": "^0.8.1",
|
"stylelint-order": "^0.8.1",
|
||||||
@ -74,7 +74,7 @@
|
|||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"custom-event-polyfill": "^0.3.0",
|
"custom-event-polyfill": "^0.3.0",
|
||||||
"loadjs": "^3.5.4",
|
"loadjs": "^3.5.4",
|
||||||
"raven-js": "^3.26.2",
|
"raven-js": "^3.26.3",
|
||||||
"url-polyfill": "^1.0.13"
|
"url-polyfill": "^1.0.13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,13 +132,13 @@ See [initialising](#initialising) for more information on advanced setups.
|
|||||||
You can use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript. There's 2 versions; one with and one without [polyfills](#polyfills). My recommendation would be to manage polyfills seperately as part of your application but to make life easier you can use the polyfilled build.
|
You can use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript. There's 2 versions; one with and one without [polyfills](#polyfills). My recommendation would be to manage polyfills seperately as part of your application but to make life easier you can use the polyfilled build.
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<script src="https://cdn.plyr.io/3.3.17/plyr.js"></script>
|
<script src="https://cdn.plyr.io/3.3.18/plyr.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
...or...
|
...or...
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<script src="https://cdn.plyr.io/3.3.17/plyr.polyfilled.js"></script>
|
<script src="https://cdn.plyr.io/3.3.18/plyr.polyfilled.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
### CSS
|
### CSS
|
||||||
@ -152,13 +152,13 @@ Include the `plyr.css` stylsheet into your `<head>`
|
|||||||
If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following:
|
If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<link rel="stylesheet" href="https://cdn.plyr.io/3.3.17/plyr.css">
|
<link rel="stylesheet" href="https://cdn.plyr.io/3.3.18/plyr.css">
|
||||||
```
|
```
|
||||||
|
|
||||||
### SVG Sprite
|
### SVG Sprite
|
||||||
|
|
||||||
The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For
|
The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For
|
||||||
reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/3.3.17/plyr.svg`.
|
reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/3.3.18/plyr.svg`.
|
||||||
|
|
||||||
## Ads
|
## Ads
|
||||||
|
|
||||||
|
@ -665,36 +665,20 @@ class Listeners {
|
|||||||
// Detect "natural" scroll - suppored on OS X Safari only
|
// Detect "natural" scroll - suppored on OS X Safari only
|
||||||
// Other browsers on OS X will be inverted until support improves
|
// Other browsers on OS X will be inverted until support improves
|
||||||
const inverted = event.webkitDirectionInvertedFromDevice;
|
const inverted = event.webkitDirectionInvertedFromDevice;
|
||||||
const step = 1 / 50;
|
|
||||||
let direction = 0;
|
|
||||||
|
|
||||||
// Scroll down (or up on natural) to decrease
|
// Get delta from event. Invert if `inverted` is true
|
||||||
if (event.deltaY < 0 || event.deltaX > 0) {
|
const [x, y] = [event.deltaX, -event.deltaY]
|
||||||
if (inverted) {
|
.map(value => inverted ? -value : value);
|
||||||
this.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
|
||||||
} else {
|
|
||||||
this.player.increaseVolume(step);
|
|
||||||
direction = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scroll up (or down on natural) to increase
|
// Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)
|
||||||
if (event.deltaY > 0 || event.deltaX < 0) {
|
const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);
|
||||||
if (inverted) {
|
|
||||||
this.player.increaseVolume(step);
|
// Change the volume by 2%
|
||||||
direction = 1;
|
this.player.increaseVolume(direction / 50);
|
||||||
} else {
|
|
||||||
this.player.decreaseVolume(step);
|
|
||||||
direction = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't break page scrolling at max and min
|
// Don't break page scrolling at max and min
|
||||||
if (
|
const { volume } = this.player.media;
|
||||||
(direction === 1 && this.player.media.volume < 1) ||
|
if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {
|
||||||
(direction === -1 && this.player.media.volume > 0)
|
|
||||||
) {
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -49,7 +49,9 @@ class Ads {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get enabled() {
|
get enabled() {
|
||||||
return this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId);
|
return (
|
||||||
|
this.player.isHTML5 && this.player.isVideo && this.player.config.ads.enabled && !is.empty(this.publisherId)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// Plyr
|
// Plyr
|
||||||
// plyr.js v3.3.17
|
// plyr.js v3.3.18
|
||||||
// https://github.com/sampotts/plyr
|
// https://github.com/sampotts/plyr
|
||||||
// License: The MIT License (MIT)
|
// License: The MIT License (MIT)
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -553,7 +553,7 @@ class Plyr {
|
|||||||
*/
|
*/
|
||||||
increaseVolume(step) {
|
increaseVolume(step) {
|
||||||
const volume = this.media.muted ? 0 : this.volume;
|
const volume = this.media.muted ? 0 : this.volume;
|
||||||
this.volume = volume + (is.number(step) ? step : 1);
|
this.volume = volume + (is.number(step) ? step : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -561,8 +561,7 @@ class Plyr {
|
|||||||
* @param {boolean} step - How much to decrease by (between 0 and 1)
|
* @param {boolean} step - How much to decrease by (between 0 and 1)
|
||||||
*/
|
*/
|
||||||
decreaseVolume(step) {
|
decreaseVolume(step) {
|
||||||
const volume = this.media.muted ? 0 : this.volume;
|
this.increaseVolume(-step);
|
||||||
this.volume = volume - (is.number(step) ? step : 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// Plyr Polyfilled Build
|
// Plyr Polyfilled Build
|
||||||
// plyr.js v3.3.17
|
// plyr.js v3.3.18
|
||||||
// https://github.com/sampotts/plyr
|
// https://github.com/sampotts/plyr
|
||||||
// License: The MIT License (MIT)
|
// License: The MIT License (MIT)
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
@ -3,65 +3,61 @@
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|
||||||
const getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);
|
const getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);
|
||||||
|
|
||||||
const instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);
|
const instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);
|
||||||
|
const isNullOrUndefined = input => input === null || typeof input === 'undefined';
|
||||||
|
const isObject = input => getConstructor(input) === Object;
|
||||||
|
const isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);
|
||||||
|
const isString = input => getConstructor(input) === String;
|
||||||
|
const isBoolean = input => getConstructor(input) === Boolean;
|
||||||
|
const isFunction = input => getConstructor(input) === Function;
|
||||||
|
const isArray = input => Array.isArray(input);
|
||||||
|
const isWeakMap = input => instanceOf(input, WeakMap);
|
||||||
|
const isNodeList = input => instanceOf(input, NodeList);
|
||||||
|
const isElement = input => instanceOf(input, Element);
|
||||||
|
const isTextNode = input => getConstructor(input) === Text;
|
||||||
|
const isEvent = input => instanceOf(input, Event);
|
||||||
|
const isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
||||||
|
const isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));
|
||||||
|
|
||||||
const is = {
|
const isEmpty = input =>
|
||||||
object(input) {
|
isNullOrUndefined(input) ||
|
||||||
return getConstructor(input) === Object;
|
((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||
|
||||||
},
|
(isObject(input) && !Object.keys(input).length);
|
||||||
number(input) {
|
|
||||||
return getConstructor(input) === Number && !Number.isNaN(input);
|
const isUrl = input => {
|
||||||
},
|
// Accept a URL object
|
||||||
string(input) {
|
if (instanceOf(input, window.URL)) {
|
||||||
return getConstructor(input) === String;
|
return true;
|
||||||
},
|
}
|
||||||
boolean(input) {
|
|
||||||
return getConstructor(input) === Boolean;
|
// Add the protocol if required
|
||||||
},
|
let string = input;
|
||||||
function(input) {
|
if (!input.startsWith('http://') || !input.startsWith('https://')) {
|
||||||
return getConstructor(input) === Function;
|
string = `http://${input}`;
|
||||||
},
|
}
|
||||||
array(input) {
|
|
||||||
return !is.nullOrUndefined(input) && Array.isArray(input);
|
try {
|
||||||
},
|
return !isEmpty(new URL(string).hostname);
|
||||||
weakMap(input) {
|
} catch (e) {
|
||||||
return instanceOf(input, WeakMap);
|
return false;
|
||||||
},
|
}
|
||||||
nodeList(input) {
|
|
||||||
return instanceOf(input, NodeList);
|
|
||||||
},
|
|
||||||
element(input) {
|
|
||||||
return instanceOf(input, Element);
|
|
||||||
},
|
|
||||||
textNode(input) {
|
|
||||||
return getConstructor(input) === Text;
|
|
||||||
},
|
|
||||||
event(input) {
|
|
||||||
return instanceOf(input, Event);
|
|
||||||
},
|
|
||||||
cue(input) {
|
|
||||||
return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);
|
|
||||||
},
|
|
||||||
track(input) {
|
|
||||||
return instanceOf(input, TextTrack) || (!is.nullOrUndefined(input) && is.string(input.kind));
|
|
||||||
},
|
|
||||||
url(input) {
|
|
||||||
return (
|
|
||||||
!is.nullOrUndefined(input) &&
|
|
||||||
/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/.test(input)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
nullOrUndefined(input) {
|
|
||||||
return input === null || typeof input === 'undefined';
|
|
||||||
},
|
|
||||||
empty(input) {
|
|
||||||
return (
|
|
||||||
is.nullOrUndefined(input) ||
|
|
||||||
((is.string(input) || is.array(input) || is.nodeList(input)) && !input.length) ||
|
|
||||||
(is.object(input) && !Object.keys(input).length)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default is;
|
export default {
|
||||||
|
nullOrUndefined: isNullOrUndefined,
|
||||||
|
object: isObject,
|
||||||
|
number: isNumber,
|
||||||
|
string: isString,
|
||||||
|
boolean: isBoolean,
|
||||||
|
function: isFunction,
|
||||||
|
array: isArray,
|
||||||
|
weakMap: isWeakMap,
|
||||||
|
nodeList: isNodeList,
|
||||||
|
element: isElement,
|
||||||
|
textNode: isTextNode,
|
||||||
|
event: isEvent,
|
||||||
|
cue: isCue,
|
||||||
|
track: isTrack,
|
||||||
|
url: isUrl,
|
||||||
|
empty: isEmpty,
|
||||||
|
};
|
||||||
|
18
yarn.lock
18
yarn.lock
@ -5000,9 +5000,9 @@ randomatic@^1.1.3:
|
|||||||
is-number "^3.0.0"
|
is-number "^3.0.0"
|
||||||
kind-of "^4.0.0"
|
kind-of "^4.0.0"
|
||||||
|
|
||||||
raven-js@^3.26.2:
|
raven-js@^3.26.3:
|
||||||
version "3.26.2"
|
version "3.26.3"
|
||||||
resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.26.2.tgz#9153af2416e96ccf4e0b9cbc6c90c34dda0d7e88"
|
resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.26.3.tgz#0efb49969b5b11ab965f7b0d6da4ca102b763cb0"
|
||||||
|
|
||||||
rc@^1.0.1, rc@^1.1.6:
|
rc@^1.0.1, rc@^1.1.6:
|
||||||
version "1.2.6"
|
version "1.2.6"
|
||||||
@ -5903,9 +5903,9 @@ style-search@^0.1.0:
|
|||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
|
resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902"
|
||||||
|
|
||||||
stylelint-config-prettier@^3.2.0:
|
stylelint-config-prettier@^3.3.0:
|
||||||
version "3.2.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-3.2.0.tgz#af32b7845adeeddbf0a0bd642ace4ca1e68958e2"
|
resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-3.3.0.tgz#cc22a4b5310c1919cee77131d6e220c60a62a480"
|
||||||
dependencies:
|
dependencies:
|
||||||
stylelint "^9.1.1"
|
stylelint "^9.1.1"
|
||||||
|
|
||||||
@ -5938,9 +5938,9 @@ stylelint-scss@^2.0.0:
|
|||||||
postcss-selector-parser "^3.1.1"
|
postcss-selector-parser "^3.1.1"
|
||||||
postcss-value-parser "^3.3.0"
|
postcss-value-parser "^3.3.0"
|
||||||
|
|
||||||
stylelint-scss@^3.1.2:
|
stylelint-scss@^3.1.3:
|
||||||
version "3.1.2"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.1.2.tgz#3257c0600d197fe7642f3698944b47c91567f379"
|
resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.1.3.tgz#28f881ae298c3f5db667b10b6cf94a1a219001d6"
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash "^4.17.10"
|
lodash "^4.17.10"
|
||||||
postcss-media-query-parser "^0.2.3"
|
postcss-media-query-parser "^0.2.3"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user