aboutsummaryrefslogtreecommitdiffstats
path: root/dist/plyr.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/plyr.js')
-rw-r--r--dist/plyr.js355
1 files changed, 303 insertions, 52 deletions
diff --git a/dist/plyr.js b/dist/plyr.js
index 46ea5e24..9c10bbe8 100644
--- a/dist/plyr.js
+++ b/dist/plyr.js
@@ -330,6 +330,305 @@ var defaults = {
}
};
+var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+
+
+
+
+function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+}
+
+var loadjs_umd = createCommonjsModule(function (module, exports) {
+(function(root, factory) {
+ if (typeof undefined === 'function' && undefined.amd) {
+ undefined([], factory);
+ } else {
+ module.exports = factory();
+ }
+}(commonjsGlobal, function() {
+/**
+ * Global dependencies.
+ * @global {Object} document - DOM
+ */
+
+var devnull = function() {},
+ bundleIdCache = {},
+ bundleResultCache = {},
+ bundleCallbackQueue = {};
+
+
+/**
+ * Subscribe to bundle load event.
+ * @param {string[]} bundleIds - Bundle ids
+ * @param {Function} callbackFn - The callback function
+ */
+function subscribe(bundleIds, callbackFn) {
+ // listify
+ bundleIds = bundleIds.push ? bundleIds : [bundleIds];
+
+ var depsNotFound = [],
+ i = bundleIds.length,
+ numWaiting = i,
+ fn,
+ bundleId,
+ r,
+ q;
+
+ // define callback function
+ fn = function (bundleId, pathsNotFound) {
+ if (pathsNotFound.length) depsNotFound.push(bundleId);
+
+ numWaiting--;
+ if (!numWaiting) callbackFn(depsNotFound);
+ };
+
+ // register callback
+ while (i--) {
+ bundleId = bundleIds[i];
+
+ // execute callback if in result cache
+ r = bundleResultCache[bundleId];
+ if (r) {
+ fn(bundleId, r);
+ continue;
+ }
+
+ // add to callback queue
+ q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];
+ q.push(fn);
+ }
+}
+
+
+/**
+ * Publish bundle load event.
+ * @param {string} bundleId - Bundle id
+ * @param {string[]} pathsNotFound - List of files not found
+ */
+function publish(bundleId, pathsNotFound) {
+ // exit if id isn't defined
+ if (!bundleId) return;
+
+ var q = bundleCallbackQueue[bundleId];
+
+ // cache result
+ bundleResultCache[bundleId] = pathsNotFound;
+
+ // exit if queue is empty
+ if (!q) return;
+
+ // empty callback queue
+ while (q.length) {
+ q[0](bundleId, pathsNotFound);
+ q.splice(0, 1);
+ }
+}
+
+
+/**
+ * Execute callbacks.
+ * @param {Object or Function} args - The callback args
+ * @param {string[]} depsNotFound - List of dependencies not found
+ */
+function executeCallbacks(args, depsNotFound) {
+ // accept function as argument
+ if (args.call) args = {success: args};
+
+ // success and error callbacks
+ if (depsNotFound.length) (args.error || devnull)(depsNotFound);
+ else (args.success || devnull)(args);
+}
+
+
+/**
+ * Load individual file.
+ * @param {string} path - The file path
+ * @param {Function} callbackFn - The callback function
+ */
+function loadFile(path, callbackFn, args, numTries) {
+ var doc = document,
+ async = args.async,
+ maxTries = (args.numRetries || 0) + 1,
+ beforeCallbackFn = args.before || devnull,
+ isCss,
+ e;
+
+ numTries = numTries || 0;
+
+ if (/(^css!|\.css$)/.test(path)) {
+ isCss = true;
+
+ // css
+ e = doc.createElement('link');
+ e.rel = 'stylesheet';
+ e.href = path.replace(/^css!/, ''); // remove "css!" prefix
+ } else {
+ // javascript
+ e = doc.createElement('script');
+ e.src = path;
+ e.async = async === undefined ? true : async;
+ }
+
+ e.onload = e.onerror = e.onbeforeload = function (ev) {
+ var result = ev.type[0];
+
+ // Note: The following code isolates IE using `hideFocus` and treats empty
+ // stylesheets as failures to get around lack of onerror support
+ if (isCss && 'hideFocus' in e) {
+ try {
+ if (!e.sheet.cssText.length) result = 'e';
+ } catch (x) {
+ // sheets objects created from load errors don't allow access to
+ // `cssText`
+ result = 'e';
+ }
+ }
+
+ // handle retries in case of load failure
+ if (result == 'e') {
+ // increment counter
+ numTries += 1;
+
+ // exit function and try again
+ if (numTries < maxTries) {
+ return loadFile(path, callbackFn, args, numTries);
+ }
+ }
+
+ // execute callback
+ callbackFn(path, result, ev.defaultPrevented);
+ };
+
+ // add to document (unless callback returns `false`)
+ if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);
+}
+
+
+/**
+ * Load multiple files.
+ * @param {string[]} paths - The file paths
+ * @param {Function} callbackFn - The callback function
+ */
+function loadFiles(paths, callbackFn, args) {
+ // listify paths
+ paths = paths.push ? paths : [paths];
+
+ var numWaiting = paths.length,
+ x = numWaiting,
+ pathsNotFound = [],
+ fn,
+ i;
+
+ // define callback function
+ fn = function(path, result, defaultPrevented) {
+ // handle error
+ if (result == 'e') pathsNotFound.push(path);
+
+ // handle beforeload event. If defaultPrevented then that means the load
+ // will be blocked (ex. Ghostery/ABP on Safari)
+ if (result == 'b') {
+ if (defaultPrevented) pathsNotFound.push(path);
+ else return;
+ }
+
+ numWaiting--;
+ if (!numWaiting) callbackFn(pathsNotFound);
+ };
+
+ // load scripts
+ for (i=0; i < x; i++) loadFile(paths[i], fn, args);
+}
+
+
+/**
+ * Initiate script load and register bundle.
+ * @param {(string|string[])} paths - The file paths
+ * @param {(string|Function)} [arg1] - The bundleId or success callback
+ * @param {Function} [arg2] - The success or error callback
+ * @param {Function} [arg3] - The error callback
+ */
+function loadjs(paths, arg1, arg2) {
+ var bundleId,
+ args;
+
+ // bundleId (if string)
+ if (arg1 && arg1.trim) bundleId = arg1;
+
+ // args (default is {})
+ args = (bundleId ? arg2 : arg1) || {};
+
+ // throw error if bundle is already defined
+ if (bundleId) {
+ if (bundleId in bundleIdCache) {
+ throw "LoadJS";
+ } else {
+ bundleIdCache[bundleId] = true;
+ }
+ }
+
+ // load scripts
+ loadFiles(paths, function (pathsNotFound) {
+ // execute callbacks
+ executeCallbacks(args, pathsNotFound);
+
+ // publish bundle load event
+ publish(bundleId, pathsNotFound);
+ }, args);
+}
+
+
+/**
+ * Execute callbacks when dependencies have been satisfied.
+ * @param {(string|string[])} deps - List of bundle ids
+ * @param {Object} args - success/error arguments
+ */
+loadjs.ready = function ready(deps, args) {
+ // subscribe to bundle load event
+ subscribe(deps, function (depsNotFound) {
+ // execute callbacks
+ executeCallbacks(args, depsNotFound);
+ });
+
+ return loadjs;
+};
+
+
+/**
+ * Manually satisfy bundle dependencies.
+ * @param {string} bundleId - The bundle id
+ */
+loadjs.done = function done(bundleId) {
+ publish(bundleId, []);
+};
+
+
+/**
+ * Reset loadjs dependencies statuses
+ */
+loadjs.reset = function reset() {
+ bundleIdCache = {};
+ bundleResultCache = {};
+ bundleCallbackQueue = {};
+};
+
+
+/**
+ * Determine if bundle has already been defined
+ * @param String} bundleId - The bundle id
+ */
+loadjs.isDefined = function isDefined(bundleId) {
+ return bundleId in bundleIdCache;
+};
+
+
+// export
+return loadjs;
+
+}));
+});
+
var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
@@ -693,48 +992,10 @@ var utils = {
// Load an external script
loadScript: function loadScript(url) {
return new Promise(function (resolve, reject) {
- var current = document.querySelector('script[src="' + url + '"]');
-
- // Check script is not already referenced, if so wait for load
- if (current !== null) {
- current.callbacks = current.callbacks || [];
- current.callbacks.push(resolve);
- return;
- }
-
- // Build the element
- var element = document.createElement('script');
-
- // Callback queue
- element.callbacks = element.callbacks || [];
- element.callbacks.push(resolve);
-
- // Error queue
- element.errors = element.errors || [];
- element.errors.push(reject);
-
- // Bind callback
- element.addEventListener('load', function (event) {
- element.callbacks.forEach(function (cb) {
- return cb.call(null, event);
- });
- element.callbacks = null;
- }, false);
-
- // Bind error handling
- element.addEventListener('error', function (event) {
- element.errors.forEach(function (err) {
- return err.call(null, event);
- });
- element.errors = null;
- }, false);
-
- // Set the URL after binding callback
- element.src = url;
-
- // Inject
- var first = document.getElementsByTagName('script')[0];
- first.parentNode.insertBefore(element, first);
+ loadjs_umd(url, {
+ success: resolve,
+ error: reject
+ });
});
},
@@ -1486,7 +1747,6 @@ var utils = {
// Plyr support checks
// ==========================================================================
-// Check for feature support
var support = {
// Basic support
audio: 'canPlayType' in document.createElement('audio'),
@@ -2494,7 +2754,6 @@ var ui = {
// Plyr controls
// ==========================================================================
-// Sniff out the browser
var browser$2 = utils.getBrowser();
var controls = {
@@ -3692,7 +3951,6 @@ var controls = {
// Plyr Event Listeners
// ==========================================================================
-// Sniff out the browser
var browser$1 = utils.getBrowser();
var Listeners = function () {
@@ -5786,7 +6044,6 @@ var vimeo = {
// Plyr Media
// ==========================================================================
-// Sniff out the browser
var browser$3 = utils.getBrowser();
var media = {
@@ -6031,12 +6288,6 @@ var source = {
// License: The MIT License (MIT)
// ==========================================================================
-// Private properties
-// TODO: Use a WeakMap for private globals
-// const globals = new WeakMap();
-
-// Plyr instance
-
var Plyr = function () {
function Plyr(target, options) {
var _this = this;