vdom-thunk
Version:
A thunk optimization for virtual-dom
33 lines (26 loc) • 789 B
JavaScript
var shallowEq = require('./shallow-eq');
var Thunk = require('./immutable-thunk');
module.exports = createPartial;
function createPartial(eq) {
return function partial(fn) {
var args = copyOver(arguments, 1);
var firstArg = args[0];
var key;
var eqArgs = eq || shallowEq;
if (typeof firstArg === 'object' && firstArg !== null) {
if ('key' in firstArg) {
key = firstArg.key;
} else if ('id' in firstArg) {
key = firstArg.id;
}
}
return new Thunk(fn, args, key, eqArgs);
};
}
function copyOver(list, offset) {
var newList = [];
for (var i = list.length - 1; i >= offset; i--) {
newList[i - offset] = list[i];
}
return newList;
}