@jswork/next-tree-walk
Version:
Tree data walker.
81 lines (78 loc) • 2.29 kB
JavaScript
/*!
* name: @jswork/next-tree-walk
* description: Tree data walker.
* homepage: https://js.work
* version: 1.0.7
* date: 2023-08-06 22:46:25
* license: MIT
*/
;
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = void 0;
var _next = _interopRequireDefault(require('@jswork/next'));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
function _typeof(obj) {
'@babel/helpers - typeof';
return (
(_typeof =
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
? function (obj) {
return typeof obj;
}
: function (obj) {
return obj &&
'function' == typeof Symbol &&
obj.constructor === Symbol &&
obj !== Symbol.prototype
? 'symbol'
: typeof obj;
}),
_typeof(obj)
);
}
var FUNC = 'function';
var defaults = {
template: _next['default'].noop,
callback: _next['default'].stubValue,
itemsKey: 'children'
};
_next['default'].treeWalk = function (inItems, inOptions) {
var options = _next['default'].mix(null, defaults, inOptions);
var itemsKey = options.itemsKey;
var itemsGetter =
_typeof(itemsKey) === FUNC
? itemsKey
: function (_, item) {
return _next['default'].get(item, itemsKey);
};
var walk = function walk(items, level, parent) {
var depth = level + 1;
return items.map(function (item, index) {
var children = itemsGetter(index, item, items);
var cb = function cb() {
return walk(children, depth, parent);
};
var independent = !(children && children.length);
var callback = independent ? _next['default'].noop : cb;
var target = options.callback({
item: item,
index: index,
parent: parent,
children: children,
independent: independent,
depth: depth
});
return options.template.call(this, target, callback);
});
};
return walk(inItems, -1, null);
};
if (typeof module !== 'undefined' && module.exports && typeof wx === 'undefined') {
module.exports = _next['default'].treeWalk;
}
var _default = _next['default'].treeWalk;
exports['default'] = _default;