UNPKG

react-native-web-headroom

Version:
90 lines (79 loc) 2.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasChildNodes = hasChildNodes; var DEFAULT_ROOT_PATH = exports.DEFAULT_ROOT_PATH = '$'; var WILDCARD = '*'; function hasChildNodes(data, dataIterator) { return !dataIterator(data).next().done; } var wildcardPathsFromLevel = exports.wildcardPathsFromLevel = function wildcardPathsFromLevel(level) { // i is depth return Array.from({ length: level }, function (_, i) { return [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, function () { return '*'; })).join('.'); }); }; var getExpandedPaths = exports.getExpandedPaths = function getExpandedPaths(data, dataIterator, expandPaths, expandLevel) { var initialState = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var wildcardPaths = [].concat(wildcardPathsFromLevel(expandLevel)).concat(expandPaths).filter(function (path) { return typeof path === 'string'; }); // could be undefined var expandedPaths = []; wildcardPaths.forEach(function (wildcardPath) { var keyPaths = wildcardPath.split('.'); var populatePaths = function populatePaths(curData, curPath, depth) { if (depth === keyPaths.length) { expandedPaths.push(curPath); return; } var key = keyPaths[depth]; if (depth === 0) { if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) { populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1); } } else { if (key === WILDCARD) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = dataIterator(curData)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _ref2 = _step.value; var name = _ref2.name, _data = _ref2.data; if (hasChildNodes(_data, dataIterator)) { populatePaths(_data, curPath + '.' + name, depth + 1); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } else { var value = curData[key]; if (hasChildNodes(value, dataIterator)) { populatePaths(value, curPath + '.' + key, depth + 1); } } } }; populatePaths(data, '', 0); }); return expandedPaths.reduce(function (obj, path) { obj[path] = true; return obj; }, initialState); };