UNPKG

vue-app-sdk

Version:
39 lines (38 loc) 1.16 kB
import apply from "./_apply.js"; import createCtor from "./_createCtor.js"; import createHybrid from "./_createHybrid.js"; import createRecurry from "./_createRecurry.js"; import getHolder from "./_getHolder.js"; import replaceHolders from "./_replaceHolders.js"; import root from "./_root.js"; function createCurry(func, bitmask, arity) { var Ctor = createCtor(func); function wrapper() { var length = arguments.length, args = Array(length), index = length, placeholder = getHolder(wrapper); while (index--) { args[index] = arguments[index]; } var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); length -= holders.length; if (length < arity) { return createRecurry( func, bitmask, createHybrid, wrapper.placeholder, void 0, args, holders, void 0, void 0, arity - length ); } var fn = this && this !== root && this instanceof wrapper ? Ctor : func; return apply(fn, this, args); } return wrapper; } export { createCurry as default };