/* Built-in method references for those with the same name as other `lodash` methods. */ const nativeMax = Math.max; /** * This function is like `composeArgs` except that the arguments composition * is tailored for `_.partialRight`. * * @private * @param {Array} args The provided arguments. * @param {Array} partials The arguments to append to those provided. * @param {Array} holders The `partials` placeholder indexes. * @params {boolean} [isCurried] Specify composing for a curried function. * @returns {Array} Returns the new array of composed arguments. */ function composeArgsRight(args, partials, holders, isCurried) { let argsIndex = -1; let holdersIndex = -1; let rightIndex = -1; const argsLength = args.length; const holdersLength = holders.length; const rightLength = partials.length; const rangeLength = nativeMax(argsLength - holdersLength, 0); const result = Array(rangeLength + rightLength); const isUncurried = !isCurried; while (++argsIndex < rangeLength) { result[argsIndex] = args[argsIndex]; } const offset = argsIndex; while (++rightIndex < rightLength) { result[offset + rightIndex] = partials[rightIndex]; } while (++holdersIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result[offset + holders[holdersIndex]] = args[argsIndex++]; } } return result; } export default composeArgsRight;