MCPcopy Index your code
hub / github.com/angular/components / createTree

Function createTree

src/aria/private/tree/tree.spec.ts:64–114  ·  view source on GitHub ↗
(treeData: TestTreeItem<V>[], treeInputs: TestTreeInputs<V>)

Source from the content-addressed store, hash-verified

62
63describe('Tree Pattern', () => {
64 function createTree<V>(treeData: TestTreeItem<V>[], treeInputs: TestTreeInputs<V>) {
65 const items = signal<TreeItemPattern<V>[]>([]);
66 const itemPatternInputsMap = new Map<string, TestTreeItemInputs<V>>();
67 const tree = new TreePattern<V>({
68 ...treeInputs,
69 items,
70 });
71
72 let nextId = 0;
73
74 function buildItems(
75 treeData: TestTreeItem<V>[],
76 parent: TreeItemPattern<V> | TreePattern<V>,
77 ): TreeItemPattern<V>[] {
78 const levelItems: TreeItemPattern<V>[] = [];
79
80 for (const node of treeData) {
81 const itemId = `treeitem-${nextId++}`;
82 const element = createTreeItemElement(itemId);
83 const itemPatternInputs: TestTreeItemInputs<V> = {
84 id: signal(itemId),
85 value: signal(node.value),
86 element: signal(element),
87 disabled: signal(node.disabled),
88 selectable: signal(node.selectable),
89 expanded: signal(node.expanded),
90 searchTerm: signal(String(node.value)),
91 parent: signal(parent),
92 hasChildren: signal((node.children ?? []).length > 0),
93 children: signal<TreeItemPattern<V>[]>([]),
94 tree: signal(tree),
95 };
96
97 const item = new TreeItemPattern(itemPatternInputs);
98 itemPatternInputsMap.set(itemId, itemPatternInputs);
99
100 items.set([...items(), item]);
101 levelItems.push(item);
102
103 const childItems = buildItems(node.children ?? [], item);
104 itemPatternInputs.children.set(childItems);
105 }
106 return levelItems;
107 }
108
109 // Build tree items recursively.
110 buildItems(treeData, tree as TreePattern<V>);
111 tree.activeItem.set(items()[0]);
112
113 return {tree, items, itemPatternInputsMap};
114 }
115
116 function getItemByValue<V>(items: TreeItemPattern<V>[], value: V) {
117 return items.find(i => i.value() === value)!;

Callers 1

tree.spec.tsFile · 0.85

Calls 3

signalFunction · 0.90
buildItemsFunction · 0.85
setMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…