rsuite-theme
Version:
The suite theme for pagurian
36 lines (26 loc) • 829 B
JavaScript
;
var iterate = require('array-iterate');
module.exports = modifierFactory;
/* Turn `callback` into a child-modifier accepting a parent.
* See `array-iterate` for more info. */
function modifierFactory(callback) {
return iteratorFactory(wrapperFactory(callback));
}
/* Turn `callback` into a `iterator' accepting a parent. */
function iteratorFactory(callback) {
return iterator;
function iterator(parent) {
var children = parent && parent.children;
if (!children) {
throw new Error('Missing children in `parent` for `modifier`');
}
return iterate(children, callback, parent);
}
}
/* Pass the context as the third argument to `callback`. */
function wrapperFactory(callback) {
return wrapper;
function wrapper(value, index) {
return callback(value, index, this);
}
}