in uui-core/src/data/processing/views/tree/treeState/TreeState.ts [49:98]
public async load<TFilter>({
using,
options,
dataSourceState,
}: LoadOptions<TItem, TId, TFilter>): Promise<TreeState<TItem, TId>> {
const treeStructure = this.getTreeStructure(using);
const { loadedItems, byParentId, nodeInfoById } = await FetchingHelper.load<TItem, TId, TFilter>({
tree: treeStructure,
options,
dataSourceState,
});
if (!loadedItems.length && !byParentId.size && !nodeInfoById.size) {
if (using === undefined && treeStructure !== this.getTreeStructure('visible')) {
return this.withNewTreeStructures({
using,
treeStructure,
itemsMap: this.itemsMap,
});
}
return this;
}
const itemsMap = loadedItems.length ? this.setItems(loadedItems, { on: 'load' }) : this.itemsMap;
const newByParentId = byParentId.size ? cloneMap(treeStructure.byParentId) : treeStructure.byParentId;
for (const [id, ids] of byParentId) {
newByParentId.set(id, ids);
}
const newNodeInfoById = nodeInfoById.size ? cloneMap(treeStructure.nodeInfoById) : treeStructure.nodeInfoById;
for (const [id, nodeInfo] of nodeInfoById) {
newNodeInfoById.set(id, nodeInfo);
}
let treeToUpdate: TreeStructureId = using;
if (treeToUpdate === 'visible') {
treeToUpdate = dataSourceState.search ? 'visible' : undefined;
}
return this.withNewTreeStructures({
using: treeToUpdate,
treeStructure: TreeStructure.create(
treeStructure.getParams(),
ItemsAccessor.toItemsAccessor(itemsMap),
newByParentId,
newNodeInfoById,
),
itemsMap,
});
}