UNPKG

@jswork/next-tree-walk

Version:

Tree data walker.

81 lines (78 loc) 2.29 kB
/*! * 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 */ 'use strict'; 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;