basant307/AI_Governance_Project
048
1import apply from './_apply.js';2import createCtor from './_createCtor.js';3import root from './_root.js';4 5/** Used to compose bitmasks for function metadata. */6var WRAP_BIND_FLAG = 1;7 8/**9 * Creates a function that wraps `func` to invoke it with the `this` binding10 * of `thisArg` and `partials` prepended to the arguments it receives.11 *12 * @private13 * @param {Function} func The function to wrap.14 * @param {number} bitmask The bitmask flags. See `createWrap` for more details.15 * @param {*} thisArg The `this` binding of `func`.16 * @param {Array} partials The arguments to prepend to those provided to17 * the new function.18 * @returns {Function} Returns the new wrapped function.19 */20function createPartial(func, bitmask, thisArg, partials) {21 var isBind = bitmask & WRAP_BIND_FLAG,22 Ctor = createCtor(func);23 24 function wrapper() {25 var argsIndex = -1,26 argsLength = arguments.length,27 leftIndex = -1,28 leftLength = partials.length,29 args = Array(leftLength + argsLength),30 fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;31 32 while (++leftIndex < leftLength) {33 args[leftIndex] = partials[leftIndex];34 }35 while (argsLength--) {36 args[leftIndex++] = arguments[++argsIndex];37 }38 return apply(fn, isBind ? thisArg : this, args);39 }40 return wrapper;41}42 43export default createPartial;44 