@itwin/presentation-hierarchies
Version:
A package for creating hierarchies based on data in iTwin.js iModels.
26 lines • 1.85 kB
TypeScript
import { Observable } from "rxjs";
import { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
import { ParentHierarchyNode } from "../../HierarchyNode.js";
import { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from "../IModelHierarchyNode.js";
import { PropertiesGroupingLocalizedStrings } from "./grouping/PropertiesGrouping.js";
/** @internal */
export declare const LOGGING_NAMESPACE: string;
/** @internal */
export declare function createGroupingOperator(imodelAccess: ECSchemaProvider & ECClassHierarchyInspector, parentNode: ParentHierarchyNode | undefined, valueFormatter: IPrimitiveValueFormatter, localizedStrings: PropertiesGroupingLocalizedStrings, onNodesGrouped?: (groupingResult: GroupingHandlerResult | undefined, handler: GroupingHandler) => void, onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void, groupingHandlers?: GroupingHandler[]): (nodes: Observable<ProcessedHierarchyNode>) => Observable<ProcessedHierarchyNode>;
/** @internal */
export type ProcessedInstancesGroupingHierarchyNode = Omit<ProcessedGroupingHierarchyNode, "children"> & {
children: ProcessedInstanceHierarchyNode[];
};
/** @internal */
export interface GroupingHandlerResult {
/** Expected to be sorted by label. */
grouped: Array<ProcessedInstancesGroupingHierarchyNode>;
/** Expected to be sorted by label. */
ungrouped: ProcessedInstanceHierarchyNode[];
groupingType: GroupingType;
}
/** @internal */
export type GroupingType = "label" | "class" | "base-class" | "property";
/** @internal */
export type GroupingHandler = (nodesToGroup: ProcessedInstanceHierarchyNode[], nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[]) => Promise<GroupingHandlerResult>;
//# sourceMappingURL=Grouping.d.ts.map