vue-app-sdk
Version:
39 lines (38 loc) • 1.16 kB
JavaScript
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
};