23 lines
695 B
JavaScript
23 lines
695 B
JavaScript
/**
|
|
* Safe chained function.
|
|
*
|
|
* Will only create a new function if needed,
|
|
* otherwise will pass back existing functions or null.
|
|
*/
|
|
export default function createChainedFunction() {
|
|
for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
funcs[_key] = arguments[_key];
|
|
}
|
|
return funcs.reduce(function (acc, func) {
|
|
if (func == null) {
|
|
return acc;
|
|
}
|
|
return function chainedFunction() {
|
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
args[_key2] = arguments[_key2];
|
|
}
|
|
acc.apply(this, args);
|
|
func.apply(this, args);
|
|
};
|
|
}, function () {});
|
|
} |