Merge pull request #1023 from friday/make-utils-static

Make utils static
This commit is contained in:
Sam Potts
2018-06-11 14:41:06 +10:00
committed by GitHub
2 changed files with 28 additions and 27 deletions

View File

@ -1133,7 +1133,7 @@ class Plyr {
} else if (utils.is.nodeList(selector)) { } else if (utils.is.nodeList(selector)) {
targets = Array.from(selector); targets = Array.from(selector);
} else if (utils.is.array(selector)) { } else if (utils.is.array(selector)) {
targets = selector.filter(i => utils.is.element(i)); targets = selector.filter(utils.is.element);
} }
if (utils.is.empty(targets)) { if (utils.is.empty(targets)) {

View File

@ -11,63 +11,64 @@ const utils = {
// Check variable types // Check variable types
is: { is: {
object(input) { object(input) {
return this.getConstructor(input) === Object; return utils.getConstructor(input) === Object;
}, },
number(input) { number(input) {
return this.getConstructor(input) === Number && !Number.isNaN(input); return utils.getConstructor(input) === Number && !Number.isNaN(input);
}, },
string(input) { string(input) {
return this.getConstructor(input) === String; return utils.getConstructor(input) === String;
}, },
boolean(input) { boolean(input) {
return this.getConstructor(input) === Boolean; return utils.getConstructor(input) === Boolean;
}, },
function(input) { function(input) {
return this.getConstructor(input) === Function; return utils.getConstructor(input) === Function;
}, },
array(input) { array(input) {
return !this.nullOrUndefined(input) && Array.isArray(input); return !utils.is.nullOrUndefined(input) && Array.isArray(input);
}, },
weakMap(input) { weakMap(input) {
return this.instanceof(input, WeakMap); return utils.is.instanceof(input, WeakMap);
}, },
nodeList(input) { nodeList(input) {
return this.instanceof(input, NodeList); return utils.is.instanceof(input, NodeList);
}, },
element(input) { element(input) {
return this.instanceof(input, Element); return utils.is.instanceof(input, Element);
}, },
textNode(input) { textNode(input) {
return this.getConstructor(input) === Text; return utils.getConstructor(input) === Text;
}, },
event(input) { event(input) {
return this.instanceof(input, Event); return utils.is.instanceof(input, Event);
}, },
cue(input) { cue(input) {
return this.instanceof(input, window.TextTrackCue) || this.instanceof(input, window.VTTCue); return utils.is.instanceof(input, window.TextTrackCue) || utils.is.instanceof(input, window.VTTCue);
}, },
track(input) { track(input) {
return this.instanceof(input, TextTrack) || (!this.nullOrUndefined(input) && this.string(input.kind)); return utils.is.instanceof(input, TextTrack) || (!utils.is.nullOrUndefined(input) && utils.is.string(input.kind));
}, },
url(input) { url(input) {
return !this.nullOrUndefined(input) && /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/.test(input); return !utils.is.nullOrUndefined(input) && /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/.test(input);
}, },
nullOrUndefined(input) { nullOrUndefined(input) {
return input === null || typeof input === 'undefined'; return input === null || typeof input === 'undefined';
}, },
empty(input) { empty(input) {
return ( return (
this.nullOrUndefined(input) || utils.is.nullOrUndefined(input) ||
((this.string(input) || this.array(input) || this.nodeList(input)) && !input.length) || ((utils.is.string(input) || utils.is.array(input) || utils.is.nodeList(input)) && !input.length) ||
(this.object(input) && !Object.keys(input).length) (utils.is.object(input) && !Object.keys(input).length)
); );
}, },
instanceof(input, constructor) { instanceof(input, constructor) {
return Boolean(input && constructor && input instanceof constructor); return Boolean(input && constructor && input instanceof constructor);
}, },
getConstructor(input) { },
return !this.nullOrUndefined(input) ? input.constructor : null;
}, getConstructor(input) {
return !utils.is.nullOrUndefined(input) ? input.constructor : null;
}, },
// Unfortunately, due to mixed support, UA sniffing is required // Unfortunately, due to mixed support, UA sniffing is required
@ -625,16 +626,16 @@ const utils = {
formatTime(time = 0, displayHours = false, inverted = false) { formatTime(time = 0, displayHours = false, inverted = false) {
// Bail if the value isn't a number // Bail if the value isn't a number
if (!utils.is.number(time)) { if (!utils.is.number(time)) {
return this.formatTime(null, displayHours, inverted); return utils.formatTime(null, displayHours, inverted);
} }
// Format time component to add leading zero // Format time component to add leading zero
const format = value => `0${value}`.slice(-2); const format = value => `0${value}`.slice(-2);
// Breakdown to hours, mins, secs // Breakdown to hours, mins, secs
let hours = this.getHours(time); let hours = utils.getHours(time);
const mins = this.getMinutes(time); const mins = utils.getMinutes(time);
const secs = this.getSeconds(time); const secs = utils.getSeconds(time);
// Do we need to display hours? // Do we need to display hours?
if (displayHours || hours > 0) { if (displayHours || hours > 0) {
@ -792,10 +793,10 @@ const utils = {
// Parse URL if needed // Parse URL if needed
if (input.startsWith('http://') || input.startsWith('https://')) { if (input.startsWith('http://') || input.startsWith('https://')) {
({ search } = this.parseUrl(input)); ({ search } = utils.parseUrl(input));
} }
if (this.is.empty(search)) { if (utils.is.empty(search)) {
return null; return null;
} }