import type { UmbTreeItemModel, UmbTreeRootModel } from '../types.js'; import type { UmbCreateTreeItemDataResolverArgs, UmbTreeChildrenOfRequestArgs, UmbTreeAncestorsOfRequestArgs, UmbTreeItemDataResolver, UmbTreeRootItemsRequestArgs } from './types.js'; import type { UmbApi } from '../../../../libs/extension-api/index.js'; import type { UmbRepositoryResponse, UmbRepositoryResponseWithAsObservable, UmbTargetPagedModel } from '../../repository/index.js'; import type { UmbControllerHost } from '../../../../libs/controller-api/index.js'; /** * Interface for a tree repository. * @interface UmbTreeRepository * @augments {UmbApi} * @template TreeItemType * @template TreeRootType */ export interface UmbTreeRepository extends UmbApi { /** * Requests the root of the tree. * @memberof UmbTreeRepository */ requestTreeRoot: () => Promise>; /** * Creates an item data resolver for a tree item. Implement this to resolve names and icons that cannot be * read directly off the tree item, such as variant aware document names. * @param {UmbControllerHost} host - The controller host of the consumer. * @param {UmbCreateTreeItemDataResolverArgs} [args] - Optional arguments for selecting the resolver. * @returns {UmbTreeItemDataResolver | undefined} A resolver for the item, if one is available. * @memberof UmbTreeRepository */ createTreeItemDataResolver?: (host: UmbControllerHost, args?: UmbCreateTreeItemDataResolverArgs) => UmbTreeItemDataResolver | undefined; /** * Requests the root items of the tree. * @param {UmbTreeRootItemsRequestArgs} args * @memberof UmbTreeRepository */ requestTreeRootItems: (args: TreeRootItemsRequestArgsType) => Promise, TreeItemType[]>>; /** * Requests the children of the given parent item. * @param {UmbTreeChildrenOfRequestArgs} args * @memberof UmbTreeRepository */ requestTreeItemsOf: (args: TreeChildrenOfRequestArgsType) => Promise, TreeItemType[]>>; /** * Requests the ancestors of the given item. * @param {UmbTreeAncestorsOfRequestArgs} args * @memberof UmbTreeRepository */ requestTreeItemAncestors: (args: TreeAncestorsOfRequestArgsType) => Promise>; }