xgplayer
Version:
video player
150 lines (149 loc) • 5.48 kB
JavaScript
import { toConsumableArray as _toConsumableArray } from "../_virtual/_rollupPluginBabelHelpers.js";
function callHandler(obj, handler, next) {
for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
args[_key - 3] = arguments[_key];
}
var ret = handler.call.apply(handler, [obj].concat(args));
if (!next || typeof next !== "function") {
return;
}
if (ret && ret.then) {
ret.then(function() {
for (var _len2 = arguments.length, args2 = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args2[_key2] = arguments[_key2];
}
next.call.apply(next, [obj].concat(args2));
});
} else {
next.call.apply(next, [obj].concat(args));
}
}
function hook(hookName, handler) {
var preset = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
pre: null,
next: null
};
if (!this.__hooks) {
this.__hooks = {};
}
!this.__hooks[hookName] && (this.__hooks[hookName] = null);
return function() {
var _arguments = arguments, _this = this;
if (preset.pre) {
try {
var _preset$pre;
(_preset$pre = preset.pre).call.apply(_preset$pre, [this].concat(Array.prototype.slice.call(arguments)));
} catch (e) {
e.message = "[pluginName: ".concat(this.pluginName, ":").concat(hookName, ":pre error] >> ").concat(e.message);
throw e;
}
}
if (this.__hooks && this.__hooks[hookName]) {
try {
var _this$__hooks$hookNam;
var preRet = (_this$__hooks$hookNam = this.__hooks[hookName]).call.apply(_this$__hooks$hookNam, [this, this].concat(Array.prototype.slice.call(arguments)));
if (preRet) {
if (preRet.then) {
preRet.then(function(isContinue) {
if (isContinue !== false) {
callHandler.apply(void 0, [_this, handler, preset.next].concat(_toConsumableArray(_arguments)));
}
}).catch(function(e) {
throw e;
});
} else {
callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));
}
} else if (preRet === void 0) {
callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));
}
} catch (e) {
e.message = "[pluginName: ".concat(this.pluginName, ":").concat(hookName, "] >> ").concat(e.message);
throw e;
}
} else {
callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));
}
}.bind(this);
}
function useHooks(hookName, handler) {
var __hooks = this.__hooks;
if (!__hooks) {
return;
}
if (!__hooks.hasOwnProperty(hookName)) {
console.warn("has no supported hook which name [".concat(hookName, "]"));
return false;
}
__hooks && (__hooks[hookName] = handler);
return true;
}
function removeHooks(hookName, handler) {
var __hooks = this.__hooks;
if (!__hooks) {
return;
}
delete __hooks[hookName];
}
function usePluginHooks(pluginName) {
if (!this.plugins || !this.plugins[pluginName.toLowerCase()]) {
return;
}
var plugin = this.plugins[pluginName.toLowerCase()];
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
return plugin.useHooks && plugin.useHooks.apply(plugin, args);
}
function removePluginHooks(pluginName) {
if (!this.plugins || !this.plugins[pluginName.toLowerCase()]) {
return;
}
var plugin = this.plugins[pluginName.toLowerCase()];
if (plugin) {
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
return plugin.removeHooks && plugin.removeHooks.apply(plugin, args);
}
}
function hooksDescriptor(instance) {
var presetHooks = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
instance.__hooks = {};
presetHooks && presetHooks.map(function(item) {
instance.__hooks[item] = null;
});
Object.defineProperty(instance, "hooks", {
get: function get() {
return instance.__hooks && Object.keys(instance.__hooks).map(function(key) {
if (instance.__hooks[key]) {
return key;
}
});
}
});
}
function delHooksDescriptor(instance) {
instance.__hooks = null;
}
function runHooks(obj, hookName, handler) {
for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
args[_key5 - 3] = arguments[_key5];
}
if (obj.__hooks && obj.__hooks[hookName]) {
var _obj$__hooks$hookName;
var ret = (_obj$__hooks$hookName = obj.__hooks[hookName]).call.apply(_obj$__hooks$hookName, [obj, obj].concat(args));
if (ret && ret.then) {
ret.then(function(data) {
return data === false ? null : handler.call.apply(handler, [obj, obj].concat(args));
}).catch(function(e) {
console.warn("[runHooks]".concat(hookName, " reject"), e.message);
});
} else if (ret !== false) {
return handler.call.apply(handler, [obj, obj].concat(args));
}
} else {
return handler.call.apply(handler, [obj, obj].concat(args));
}
}
export { hooksDescriptor as default, delHooksDescriptor, hook, removeHooks, removePluginHooks, runHooks, useHooks, usePluginHooks };