import type { GuidString, Id64Arg, Id64Array, Id64Set, Id64String } from "@itwin/core-bentley"; import type { Viewport } from "@itwin/core-frontend"; import type { GroupingHierarchyNode, HierarchyFilteringPath } from "@itwin/presentation-hierarchies"; import type { ECClassHierarchyInspector } from "@itwin/presentation-shared"; import type { HierarchyVisibilityHandler, HierarchyVisibilityHandlerOverridableMethod, VisibilityStatus } from "../../common/UseHierarchyVisibility.js"; import type { ModelsTreeIdsCache } from "./ModelsTreeIdsCache.js"; /** @beta */ interface GetCategoryVisibilityStatusProps { categoryIds: Id64Arg; modelId: Id64String; } /** @beta */ interface ChangeCategoryVisibilityStateProps extends GetCategoryVisibilityStatusProps { on: boolean; } /** @beta */ interface GetGeometricElementVisibilityStatusProps { elementId: Id64String; modelId: Id64String; categoryId: Id64String; } /** @beta */ interface ChangeGeometricElementsDisplayStateProps { elementIds: Id64Set; modelId: Id64String; categoryId: Id64String; on: boolean; } /** @beta */ interface ChangeModelVisibilityStateProps { ids: Id64Arg; on: boolean; } /** * Functionality of Models tree visibility handler that can be overridden. * Each callback is provided original implementation and reference to a `HierarchyVisibilityHandler`. * @beta */ export interface ModelsTreeVisibilityHandlerOverrides { getSubjectNodeVisibility?: HierarchyVisibilityHandlerOverridableMethod<(props: { ids: Id64Array; }) => Promise>; getModelDisplayStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { ids: Id64Arg; }) => Promise>; getCategoryDisplayStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: GetCategoryVisibilityStatusProps) => Promise>; getElementGroupingNodeDisplayStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { node: GroupingHierarchyNode; }) => Promise>; getElementDisplayStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: GetGeometricElementVisibilityStatusProps) => Promise>; changeSubjectNodeState?: HierarchyVisibilityHandlerOverridableMethod<(props: { ids: Id64Array; on: boolean; }) => Promise>; changeModelState?: HierarchyVisibilityHandlerOverridableMethod<(props: ChangeModelVisibilityStateProps) => Promise>; changeCategoryState?: HierarchyVisibilityHandlerOverridableMethod<(props: ChangeCategoryVisibilityStateProps) => Promise>; changeElementGroupingNodeState?: HierarchyVisibilityHandlerOverridableMethod<(props: { node: GroupingHierarchyNode; on: boolean; }) => Promise>; changeElementsState?: HierarchyVisibilityHandlerOverridableMethod<(props: ChangeGeometricElementsDisplayStateProps) => Promise>; } /** * Props for `createModelsTreeVisibilityHandler`. * @internal */ export interface ModelsTreeVisibilityHandlerProps { viewport: Viewport; idsCache: ModelsTreeIdsCache; imodelAccess: ECClassHierarchyInspector; overrides?: ModelsTreeVisibilityHandlerOverrides; filteredPaths?: HierarchyFilteringPath[]; componentId?: GuidString; } /** * Creates an instance if `ModelsTreeVisibilityHandler`. * @internal */ export declare function createModelsTreeVisibilityHandler(props: ModelsTreeVisibilityHandlerProps): HierarchyVisibilityHandler & Disposable; /** * Enables display of all given models. Also enables display of all categories and clears always and * never drawn lists in the viewport. * * @param componentId Optional unique id of the component that consumes this function. * It can be any string, as long as it is not shared across different components. * @public */ export declare function showAllModels(models: string[], viewport: Viewport, componentId?: GuidString): Promise; /** * Disables display of all given models. * @public */ export declare function hideAllModels(models: string[], viewport: Viewport): Promise; /** * Inverts display of all given models. * @public */ export declare function invertAllModels(models: string[], viewport: Viewport): Promise; /** * Based on the value of `enable` argument, either enables or disables display of given models. * @public */ export declare function toggleModels(models: string[], enable: boolean, viewport: Viewport): Promise; /** * Checks if all given models are displayed in given viewport. * @public */ export declare function areAllModelsVisible(models: string[], viewport: Viewport): boolean; export {}; //# sourceMappingURL=ModelsTreeVisibilityHandler.d.ts.map