aboutsummaryrefslogtreecommitdiffstats
path: root/src/js
diff options
context:
space:
mode:
authorSam Potts <sam@potts.es>2018-06-21 09:06:28 +1000
committerSam Potts <sam@potts.es>2018-06-21 09:06:28 +1000
commite04b90c9c030bf5629e034f616a636245770a8d1 (patch)
treef25c0f2f50ef03714f209d94497960a710f66b0e /src/js
parent20f2ddc11db39fd19f395cf4967fb5dcbcc9d5ca (diff)
downloadplyr-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.js4
-rw-r--r--src/js/utils/is.js112
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,
+};