vue-app-sdk
Version:
63 lines (62 loc) • 2.52 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const _composeArgs = require("./_composeArgs.cjs");
const _composeArgsRight = require("./_composeArgsRight.cjs");
const _countHolders = require("./_countHolders.cjs");
const _createCtor = require("./_createCtor.cjs");
const _createRecurry = require("./_createRecurry.cjs");
const _getHolder = require("./_getHolder.cjs");
const _reorder = require("./_reorder.cjs");
const _replaceHolders = require("./_replaceHolders.cjs");
const _root = require("./_root.cjs");
var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_ARY_FLAG = 128, WRAP_FLIP_FLAG = 512;
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? void 0 : _createCtor.default(func);
function wrapper() {
var length = arguments.length, args = Array(length), index = length;
while (index--) {
args[index] = arguments[index];
}
if (isCurried) {
var placeholder = _getHolder.default(wrapper), holdersCount = _countHolders.default(args, placeholder);
}
if (partials) {
args = _composeArgs.default(args, partials, holders, isCurried);
}
if (partialsRight) {
args = _composeArgsRight.default(args, partialsRight, holdersRight, isCurried);
}
length -= holdersCount;
if (isCurried && length < arity) {
var newHolders = _replaceHolders.default(args, placeholder);
return _createRecurry.default(
func,
bitmask,
createHybrid,
wrapper.placeholder,
thisArg,
args,
newHolders,
argPos,
ary,
arity - length
);
}
var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;
length = args.length;
if (argPos) {
args = _reorder.default(args, argPos);
} else if (isFlip && length > 1) {
args.reverse();
}
if (isAry && ary < length) {
args.length = ary;
}
if (this && this !== _root.default && this instanceof wrapper) {
fn = Ctor || _createCtor.default(fn);
}
return fn.apply(thisBinding, args);
}
return wrapper;
}
exports.default = createHybrid;