vue-app-sdk
Version:
39 lines (38 loc) • 1.39 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const _apply = require("./_apply.cjs");
const _createCtor = require("./_createCtor.cjs");
const _createHybrid = require("./_createHybrid.cjs");
const _createRecurry = require("./_createRecurry.cjs");
const _getHolder = require("./_getHolder.cjs");
const _replaceHolders = require("./_replaceHolders.cjs");
const _root = require("./_root.cjs");
function createCurry(func, bitmask, arity) {
var Ctor = _createCtor.default(func);
function wrapper() {
var length = arguments.length, args = Array(length), index = length, placeholder = _getHolder.default(wrapper);
while (index--) {
args[index] = arguments[index];
}
var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : _replaceHolders.default(args, placeholder);
length -= holders.length;
if (length < arity) {
return _createRecurry.default(
func,
bitmask,
_createHybrid.default,
wrapper.placeholder,
void 0,
args,
holders,
void 0,
void 0,
arity - length
);
}
var fn = this && this !== _root.default && this instanceof wrapper ? Ctor : func;
return _apply.default(fn, this, args);
}
return wrapper;
}
exports.default = createCurry;