/** @packageDocumentation * @module Tree */ import * as Inspire from "inspire-tree"; import { IDisposable } from "@bentley/bentleyjs-core"; import { CheckBoxInfo } from "@bentley/ui-core"; import { PageOptions } from "../../../common/PageOptions"; /** * Enum containing all events that may be emitted by [[BeInspireTree]] * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare enum BeInspireTreeEvent { ChangesApplied = "changes.applied", ChildrenLoaded = "children.loaded", DataLoaded = "data.loaded", DataLoadError = "data.loaderror", ModelLoaded = "model.loaded", NodeAdded = "node.added", NodeBlurred = "node.blurred", NodeChecked = "node.checked", NodeCollapsed = "node.collapsed", NodeDeselected = "node.deselected", NodeEdited = "node.edited", NodeExpanded = "node.expanded", NodeFocused = "node.focused", NodeHidden = "node.hidden", NodeMoved = "node.moved", NodePaginated = "node.paginated", NodeRemoved = "node.removed", NodeSelected = "node.selected", NodeShown = "node.shown", NodeUnchecked = "node.unchecked" } /** Be alias for Inspire.NodeConfig * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeNodeConfig { children?: BeInspireTreeNodeConfig[] | true; id?: string; text: string; itree?: BeInspireTreeNodeITree; } /** Be alias for Inspire.NodeConfig.ITree * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeNodeITree { icon?: string; checkboxTooltip?: string; dirtyTimestamp?: number; dirtyCounter?: number; state?: { checkboxVisible?: boolean; checkboxDisabled?: boolean; checked?: boolean; collapsed?: boolean; editable?: boolean; focused?: boolean; indeterminate?: boolean; loading?: boolean; selectable?: boolean; selected?: boolean; }; } /** Data structure for [[BeInspireTreeNodeConfig]] with our injected props * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeNodePayloadConfig extends BeInspireTreeNodeConfig { /** Node's data. May be `undefined` if this is placeholder node. */ payload?: TPayload; /** Index of the node at the parent level. Only set if this is a placeholder node. */ placeholderIndex?: number; /** Reference to the tree */ beInspireTree: BeInspireTree; } /** Type definition for all BeInspireTree nodes * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeNode extends Inspire.TreeNode, BeInspireTreeNodePayloadConfig { isDirty(): boolean; setDirty(value: boolean): void; /** @internal */ resetBeInspireOverrides(): void; } /** * Definition of a list of [[BeInspireTreeNode]] with some additional filtering methods * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeNodes extends Array> { node(id: string): BeInspireTreeNode | undefined; nodes(ids?: string[]): BeInspireTreeNodes; deepest(): BeInspireTreeNodes; flatten(): BeInspireTreeNodes; expanded(): BeInspireTreeNodes; collapsed(): BeInspireTreeNodes; selected(): BeInspireTreeNodes; visible(): BeInspireTreeNodes; } /** Array of tree node data elements * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type BeInspireTreeDataProviderRaw = TPayload[]; /** A Promise for DataProviderRaw * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type BeInspireTreeDataProviderPromise = Promise>; /** Signature for BeInspireTree data provider * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type BeInspireTreeDataProviderMethod = (parent?: TPayload) => BeInspireTreeDataProviderPromise; /** Signature for BeInspireTree data provider * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeDataProviderInterface { getNodesCount(parent?: TPayload): Promise; getNodes(parent?: TPayload, page?: PageOptions): BeInspireTreeDataProviderPromise; } /** Type definition for all BeInspireTree data providers * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type BeInspireTreeDataProvider = BeInspireTreeDataProviderRaw | BeInspireTreeDataProviderPromise | BeInspireTreeDataProviderMethod | BeInspireTreeDataProviderInterface; /** Type definition for a BeInspireTree renderer * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type BeInspireTreeRenderer = (rootNodes: Array>) => void; /** * A context which keeps [[BeInspireTree]] events muted until * it gets disposed. * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare class EventsMuteContext implements IDisposable { private _events; private _mute; private _unmute; private _emit?; private _listen?; private _triggeredEventsCount; private _didMute; private _stopListening; constructor(_events: BeInspireTreeEvent[], _mute: (events: BeInspireTreeEvent[]) => void, _unmute: (events: BeInspireTreeEvent[]) => boolean, _emit?: ((events: BeInspireTreeEvent[]) => void) | undefined, _listen?: ((events: BeInspireTreeEvent[], listener: (...values: any[]) => void) => (() => void)) | undefined, allowedEventTriggersBeforeMute?: number); private init; dispose(): void; } /** Prototype for BeInspireTreeProps.mapPayloadToInspireNodeConfig * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare type MapPayloadToInspireNodeCallback = (payload: TPayload, remapper: MapPayloadToInspireNodeCallback) => BeInspireTreeNodeConfig; /** * Configuration properties for [[BeInspireTree]] * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export interface BeInspireTreeProps { dataProvider: BeInspireTreeDataProvider; mapPayloadToInspireNodeConfig: MapPayloadToInspireNodeCallback; pageSize?: number; disposeChildrenOnCollapse?: boolean; } /** * Bentley wrapper for 'inspire-tree' * @public * @deprecated Use [ControlledTree]($ui-components) instead. Will be removed in iModel.js 3.0. */ export declare class BeInspireTree { private _tree; private _eventMutes; private _readyPromise; private _deferredLoadingHandler?; private _visibleCached?; private _suspendedRendering?; props: BeInspireTreeProps; constructor(props: BeInspireTreeProps); private onModelInvalidated; get ready(): Promise; /** * Stop emitting the specified events until the returned * [[EventsMuteContext]] object is disposed */ mute(events: BeInspireTreeEvent[]): EventsMuteContext; private doMute; private doUnmute; private doEmit; /** * Stop calling the renderer method until the returned * object is disposed. When that happens, the [[BeInspireTreeEvent.ChangesApplied]] * event is emitted if any changes in the hierarchy happened during the pause */ pauseRendering(allowedRendersBeforePause?: number): EventsMuteContext; /** * Request a new render of current model. * * @internal */ applyChanges(): void; /** Add a listener for specific event */ on(event: BeInspireTreeEvent | BeInspireTreeEvent[], listener: (...values: any[]) => void): this; /** Remove listener for specific event */ removeListener(event: BeInspireTreeEvent | BeInspireTreeEvent[], listener: (...values: any[]) => void): this; /** Remove all listeners for specific event(s) */ removeAllListeners(event?: BeInspireTreeEvent | BeInspireTreeEvent[]): void; /** Get root node with the specified id */ node(id: string): BeInspireTreeNode | undefined; /** Get root nodes with the specified ids */ nodes(ids?: string[]): BeInspireTreeNodes; /** Get flat list of all available nodes */ flatten(): BeInspireTreeNodes; /** Get a flat list of available leaf nodes */ deepest(): BeInspireTreeNodes; /** Get a flat list of expanded nodes */ expanded(): BeInspireTreeNodes; /** Get a flat list of collapsed nodes */ collapsed(): BeInspireTreeNodes; /** Get a flat list of selected nodes */ selected(): BeInspireTreeNodes; /** Get a flat list of visible nodes */ visible(): BeInspireTreeNodes; /** Reload the tree */ reload(): Promise; /** * Deselects all nodes */ deselectAll(muteEvents?: boolean): void; /** * Returns all visible nodes that are located between the two input nodes (inclusive). * Input nodes can be provided in any order. */ getVisibleNodesBetween(node1: BeInspireTreeNode, node2: BeInspireTreeNode): Array>; /** * Selects all visible nodes that are located between the two input nodes (inclusive). * Input nodes can be provided in any order. */ selectBetween(node1: BeInspireTreeNode, node2: BeInspireTreeNode, muteEvents?: boolean): Array>; private createSelectedNodePredicate; private updateSelection; /** * Deselects everything and selects only nodes that meet the `nodesToSelect` criteria */ updateTreeSelection(nodesToSelect?: string[] | ((payload: TNodePayload) => boolean), muteEvents?: boolean): void; /** * Updates selection state of provided `nodes` based on `nodesToSelect` criteria */ updateNodesSelection(nodes: BeInspireTreeNodes | Inspire.TreeNodes, nodesToSelect?: string[] | ((payload: TNodePayload) => boolean), muteEvents?: boolean): void; private updateNodeCheckboxInfo; /** * Updates checkbox states of the whole tree using the `checkboxInfo` callback function */ updateTreeCheckboxes(checkboxInfo: ((payload: TNodePayload) => CheckBoxInfo | Promise), muteEvents?: boolean): Promise; /** * Updates checkbox states of provided `nodes` based on `checkboxInfo` callback function */ updateNodesCheckboxes(nodes: BeInspireTreeNodes, checkboxInfo: ((payload: TNodePayload) => CheckBoxInfo | Promise), muteEvents?: boolean): Promise; /** @internal */ createPlaceholderNode(index: number, parent?: BeInspireTreeNode): BeInspireTreeNode; /** * Request a node at the specified index to be loaded for the given parent. Only * makes sense on a paginated tree, throws otherwise. */ requestNodeLoad(parent: BeInspireTreeNode | undefined, index: number): Promise; /** @internal */ loadNodes(): Promise; } /** @internal */ export declare const toNode: (inspireNode: Inspire.TreeNode) => BeInspireTreeNode; /** @internal */ export declare const toNodes: (inspireNodes: Inspire.TreeNodes) => BeInspireTreeNodes; //# sourceMappingURL=BeInspireTree.d.ts.map