@flowplayer/player
Version:
video player for the future
64 lines (60 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
/**
* @public
* adds support for asynchronous plugin loading
* issue/127
*/
function define(root, // TODO type this to PlayerRoot
plugin // Only expose explicitly stated API with NoInfer
) {
// strip down internal class API
// handle cjs setups
if (typeof exports === "object" && typeof module !== "undefined")
return plugin;
if (isESM())
return plugin;
if (!("flowplayer" in root))
root.flowplayer = { extensions: [] };
const self = root.flowplayer;
if (typeof self === "function") {
self(plugin);
return plugin;
}
if (!Array.isArray(self.extensions))
self.extensions = [];
if (!~self.extensions.indexOf(plugin))
self.extensions.push(plugin);
return plugin;
}
/**
* @public
*/
function isESM() {
return document.currentScript === null;
}
/**
* @public
*/
function root() {
if (typeof window !== "undefined")
return window;
if (typeof global !== "undefined")
return global;
return {};
}
/**
* @public
*/
function modules() {
const self = root();
// naively check for existance of flowplayer umd
const mod = self.flowplayer ? self.flowplayer : { extensions: [] };
if (!Array.isArray(mod.extensions))
mod.extensions = [];
return mod;
}
exports.define = define;
exports.isESM = isESM;
exports.modules = modules;
exports.root = root;