diff options
| author | Sam Potts <sam@potts.es> | 2018-06-21 09:06:28 +1000 | 
|---|---|---|
| committer | Sam Potts <sam@potts.es> | 2018-06-21 09:06:28 +1000 | 
| commit | e04b90c9c030bf5629e034f616a636245770a8d1 (patch) | |
| tree | f25c0f2f50ef03714f209d94497960a710f66b0e /src/js | |
| parent | 20f2ddc11db39fd19f395cf4967fb5dcbcc9d5ca (diff) | |
| download | plyr-e04b90c9c030bf5629e034f616a636245770a8d1.tar.lz plyr-e04b90c9c030bf5629e034f616a636245770a8d1.tar.xz plyr-e04b90c9c030bf5629e034f616a636245770a8d1.zip | |
Ads only on HTML5 and .is cleanup
Diffstat (limited to 'src/js')
| -rw-r--r-- | src/js/plugins/ads.js | 4 | ||||
| -rw-r--r-- | src/js/utils/is.js | 112 | 
2 files changed, 57 insertions, 59 deletions
| diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index e0d49265..856772d5 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -49,7 +49,9 @@ class Ads {      }      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) +        );      }      /** diff --git a/src/js/utils/is.js b/src/js/utils/is.js index cb2c07c6..b4760da4 100644 --- a/src/js/utils/is.js +++ b/src/js/utils/is.js @@ -3,65 +3,61 @@  // ==========================================================================  const getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null); -  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 isEmpty = input => +    isNullOrUndefined(input) || +    ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) || +    (isObject(input) && !Object.keys(input).length); + +const isUrl = input => { +    // Accept a URL object +    if (instanceOf(input, window.URL)) { +        return true; +    } -const is = { -    object(input) { -        return getConstructor(input) === Object; -    }, -    number(input) { -        return getConstructor(input) === Number && !Number.isNaN(input); -    }, -    string(input) { -        return getConstructor(input) === String; -    }, -    boolean(input) { -        return getConstructor(input) === Boolean; -    }, -    function(input) { -        return getConstructor(input) === Function; -    }, -    array(input) { -        return !is.nullOrUndefined(input) && Array.isArray(input); -    }, -    weakMap(input) { -        return instanceOf(input, WeakMap); -    }, -    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) -        ); -    }, +    // Add the protocol if required +    let string = input; +    if (!input.startsWith('http://') || !input.startsWith('https://')) { +        string = `http://${input}`; +    } + +    try { +        return !isEmpty(new URL(string).hostname); +    } catch (e) { +        return false; +    }  }; -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, +}; | 
