UNPKG

1.55 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.create = void 0;
4var common_1 = require("../common");
5var TreeQuery_1 = require("../TreeQuery");
6function create(tree) {
7 var get = function (tree, parts) {
8 if (parts.length === 0) {
9 return undefined;
10 }
11 var child = tree.children.find(function (child) { return child.id === parts[0]; });
12 if (child && parts.length > 1) {
13 return get(child, parts.slice(1));
14 }
15 return child && parts.length > 1
16 ? get(child, parts.slice(1))
17 : child;
18 };
19 return {
20 from: function (child) {
21 var target = common_1.toNodeId(child);
22 if (target === tree.id) {
23 return tree.id;
24 }
25 var parts = [];
26 var match = tree.find(function (e) { return e.id === target; });
27 if (match) {
28 var query = TreeQuery_1.TreeQuery.create({ root: tree.state });
29 query.walkUp(match.id, function (e) {
30 parts.unshift(e.id);
31 if (e.id === tree.id) {
32 e.stop();
33 }
34 });
35 }
36 return parts.join('/');
37 },
38 get: function (path) {
39 var parts = path.split('/').map(function (part) { return part.trim(); });
40 return parts.length === 1 && parts[0] === tree.id ? tree : get(tree, parts.slice(1));
41 },
42 };
43}
44exports.create = create;