UNPKG

@rasgo/text-tree

Version:
79 lines 2.99 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createNode = function (data, parent, config) { var getId = config.getId, transformId = config.transformId; var treeNode = { data: data, id: transformId(getId(data)), parentId: parent ? parent.id : null, children: [] }; if (parent) parent.children = __spreadArrays(parent.children, [treeNode]); return treeNode; }; exports.nodePath = function (node, tree) { var subTree = []; var parentNodeId = node.parentId; while (parentNodeId) { var parentNode = exports.findNode(parentNodeId, tree); if (!parentNode) throw Error("can't find parentNode of " + node.id); subTree.unshift(parentNode); parentNodeId = parentNode.parentId; } return subTree; }; exports.flattenNode = function (node, tree, config) { var flatIdSeparator = config.flatIdSeparator, transformId = config.transformId; var children = node.children, parentId = node.parentId, flatNode = __rest(node, ["children", "parentId"]); delete node.data; var subTree = exports.nodePath(node, tree); var ids = subTree.length > 0 ? [subTree[subTree.length - 1].id, node.id] : [node.id]; var materializedId = transformId(ids.join(flatIdSeparator)); node.id = materializedId; flatNode.id = materializedId; return flatNode; }; exports.forEachNode = function (nodes, fn) { if (!nodes) return; for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { var node = nodes_1[_i]; fn(node); if (node.children) exports.forEachNode(node.children, fn); } }; exports.findNode = function (id, tree) { for (var _i = 0, tree_1 = tree; _i < tree_1.length; _i++) { var node = tree_1[_i]; if (node.id === id) return node; if (node.children) { var found = exports.findNode(id, node.children); if (found) return found; } } return null; }; //# sourceMappingURL=tree.js.map