UNPKG

rsuite

Version:

A suite of react components

38 lines (37 loc) 1.16 kB
'use client'; /** * * Safe chained function * * Will only create a new function if needed, * otherwise will pass back existing functions or null. * * Largely copied directly from: * https://github.com/react-bootstrap/react-bootstrap/blob/master/src/utils/createChainedFunction.js * * @param {function} functions to chain * @returns {function|undefined} */ export function createChainedFunction() { for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } return funcs.filter(function (f) { return f !== null && typeof f !== 'undefined'; }).reduce(function (acc, f) { if (typeof f !== 'function') { throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.'); } if (acc === undefined) { return f; } 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); f.apply(this, args); }; }, undefined); } export default createChainedFunction;