/** @packageDocumentation * @module Picker */ import * as _ from "lodash"; import { BeEvent } from "@bentley/bentleyjs-core"; import { IModelConnection, Viewport } from "@bentley/imodeljs-frontend"; import { NodeKey, NodePathElement, RegisteredRuleset } from "@bentley/presentation-common"; import { IPresentationTreeDataProvider } from "@bentley/presentation-components"; import { DelayLoadedTreeNodeItem, PageOptions, TreeDataChangesListener, TreeNodeItem } from "@bentley/ui-components"; import { CheckBoxInfo } from "@bentley/ui-core"; import { ListItem } from "../ListPicker"; /** @internal */ export declare type TreeNodePromise = Promise; /** @internal */ export declare type TreeNodeArrayPromise = Promise; /** * Model Group used by [[ModelSelectorWidget]] * @internal */ export interface ModelGroup { /** Identifier for group as a member of [[Groups]] */ id: Groups; /** [[ModelSelectorDataProvider]] to populate [[CategoryModelTree]] */ dataProvider: ModelSelectorDataProvider; /** Label for group name */ label: string; /** Models or categories related to group as [[ListItem]] */ items: ListItem[]; /** Method to enable passed in models or categories */ setEnabled: (item: ListItem[], enabled: boolean) => void; } /** * Group types available for [[ModelSelectorWidget]] picker * @internal */ export declare enum Groups { Models = 0, Categories = 1 } /** * Properties for the [[ModelSelectorWidget]] component * @internal */ export interface ModelSelectorWidgetProps { /** [[IModelConnection]] for current iModel */ iModelConnection: IModelConnection; /** Flag for accommodating all viewports */ allViewports?: boolean; /** Active viewport */ activeView?: Viewport; } /** * State for the [[ModelSelectorWidget]] component * @internal */ export interface ModelSelectorWidgetState { activeGroup?: ModelGroup; activeRuleset?: RegisteredRuleset; activeView?: Viewport; } /** * Information used for filtering in [[CategoryModelTree]] * @internal */ export interface FilterInfo { filter?: string; filtering?: boolean; activeMatchIndex?: number; matchesCount?: number; } /** * Properties for the [[CategoryModelTree]] component * @internal */ export interface CategoryModelTreeProps { /** [[IModelConnection]] for current iModel */ iModelConnection: IModelConnection; /** Active group to display in tree */ activeGroup: ModelGroup; /** Active viewport */ activeView?: Viewport; } /** * State for the [[CategoryModelTree]] component * @internal */ export interface CategoryModelTreeState { activeGroup: ModelGroup; checkboxInfo: (node: TreeNodeItem) => CheckBoxInfo | Promise; isLoading: boolean; isOptionsOpened: boolean; filterInfo?: FilterInfo; showSearchBox: boolean; } /** * Implementation of a PresentationTreeDataProvider that manages model and category * data in [[CategoryModelTree]] * @internal */ export declare class ModelSelectorDataProvider implements IPresentationTreeDataProvider { private _baseProvider; /** @internal */ constructor(imodel: IModelConnection, rulesetId: string); dispose(): void; /** Id of the ruleset used by this data provider */ get rulesetId(): string; /** [[IModelConnection]] used by this data provider */ get imodel(): IModelConnection; /** Listener for tree node changes */ onTreeNodeChanged: BeEvent; /** * Returns a [[NodeKey]] from given [[TreeNodeItem]]. * **Warning:** the `node` must be created by this data provider. */ getNodeKey(node: TreeNodeItem): NodeKey; /** * Returns filtered node paths. * @param filter Filter. * @returns Filtered NodePaths */ getFilteredNodePaths: (filter: string) => Promise; /** * Provides count for number of nodes under parent node * @param parentNode Node to count children for */ getNodesCount: ((parentNode?: TreeNodeItem | undefined) => Promise) & _.MemoizedFunction; /** * Modifies and returns nodes to be displayed. * @param parentNode The parent node for all nodes to be returned * @param pageOptions Paging options * @returns TreeNodeItems to be displayed */ getNodes: (parentNode?: TreeNodeItem | undefined, pageOptions?: PageOptions | undefined) => TreeNodeArrayPromise; loadHierarchy(): Promise; } //# sourceMappingURL=ModelSelectorDefinitions.d.ts.map