@itwin/tree-widget-react 4.0.0-alpha.24 → 4.0.0-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -1
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +2 -1
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +4 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +4 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.d.ts +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +36 -47
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +4 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +4 -2
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +87 -38
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.d.ts +86 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.js +50 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.d.ts +4 -2
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +38 -23
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.d.ts +11 -21
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js +16 -168
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.d.ts +65 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.js +22 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.js +4 -4
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.d.ts +6 -12
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js +192 -127
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.d.ts +14 -5
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js +43 -24
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.d.ts +3 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.js +78 -17
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.d.ts +2 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js +4 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js +91 -114
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.d.ts +32 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js +26 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.d.ts +13 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js +62 -32
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.d.ts +12 -9
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js +42 -38
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.d.ts +15 -38
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js +59 -242
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.d.ts +29 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.js +19 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.d.ts +5 -9
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js +155 -84
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js +20 -6
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.d.ts +6 -10
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.js +104 -63
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.d.ts +7 -0
- package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.js +14 -0
- package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js +2 -2
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/Utils.js +2 -2
- package/lib/esm/tree-widget-react/components/trees/common/Utils.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.d.ts +4 -4
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.d.ts +4 -4
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +7 -5
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +5 -5
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.d.ts +20 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.js +44 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Types.d.ts +4 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Types.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.d.ts +12 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js +2 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.d.ts +17 -6
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js +58 -29
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.d.ts +8 -14
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js +22 -26
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/{AlwaysAndNeverDrawnElementInfo.d.ts → caches/AlwaysAndNeverDrawnElementInfoCache.d.ts} +15 -21
- package/lib/esm/tree-widget-react/components/trees/common/internal/{AlwaysAndNeverDrawnElementInfo.js → caches/AlwaysAndNeverDrawnElementInfoCache.js} +40 -38
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/AlwaysAndNeverDrawnElementInfoCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.d.ts +68 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js +148 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.d.ts +30 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.js +151 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.d.ts +32 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.js +106 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/{ModelCategoryElementsCountCache.d.ts → caches/ModelCategoryElementsCountCache.d.ts} +9 -2
- package/lib/esm/tree-widget-react/components/trees/common/internal/{ModelCategoryElementsCountCache.js → caches/ModelCategoryElementsCountCache.js} +17 -21
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModelCategoryElementsCountCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.d.ts +27 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.js +106 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.d.ts +23 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.js +56 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.d.ts +6 -6
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js +27 -17
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.d.ts +7 -13
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js +36 -35
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.d.ts +18 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.js +14 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.d.ts +46 -70
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js +229 -361
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +32 -19
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/index.d.ts +5 -1
- package/lib/esm/tree-widget-react/components/trees/index.js +5 -1
- package/lib/esm/tree-widget-react/components/trees/index.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.d.ts +4 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js +4 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.d.ts +7 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +36 -35
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.d.ts +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +3 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.d.ts +3 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +70 -26
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeNode.d.ts +63 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeNode.js +56 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeNode.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.d.ts +5 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +26 -13
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +11 -23
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +56 -189
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.d.ts +52 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.js +22 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.d.ts +2 -2
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.js +8 -8
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.d.ts +6 -12
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js +190 -114
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.d.ts +6 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js +20 -8
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.d.ts +4 -2
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.js +73 -13
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.js.map +1 -1
- package/lib/esm/tree-widget-react-internal.d.ts +1 -1
- package/lib/esm/tree-widget-react-internal.js +1 -1
- package/lib/esm/tree-widget-react-internal.js.map +1 -1
- package/package.json +77 -82
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.d.ts +0 -41
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js +0 -50
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.d.ts +0 -19
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.js +0 -32
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.d.ts +0 -20
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.js +0 -53
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.d.ts +0 -37
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.js +0 -54
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.js.map +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { HierarchyNode } from "@itwin/presentation-hierarchies";
|
|
2
|
+
import type { Id64Array, Id64String } from "@itwin/core-bentley";
|
|
3
|
+
import type { ClassGroupingNodeKey, GroupingHierarchyNode, InstancesNodeKey, NonGroupingHierarchyNode } from "@itwin/presentation-hierarchies";
|
|
4
|
+
/**
|
|
5
|
+
* Contains utility functions for working with Categories Tree nodes.
|
|
6
|
+
* @beta
|
|
7
|
+
*/
|
|
8
|
+
export declare namespace CategoriesTreeNode {
|
|
9
|
+
/** Checks if the given node represents a `BisCore.DefinitionContainer` element. */
|
|
10
|
+
const isDefinitionContainerNode: (node: Pick<HierarchyNode, "extendedData">) => node is NonGroupingHierarchyNode & {
|
|
11
|
+
key: InstancesNodeKey;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Checks if the given node represents a `BisCore.Category` element.
|
|
15
|
+
*
|
|
16
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
17
|
+
* - `description`: Optional description of the category
|
|
18
|
+
* - `hasSubCategories`: Indicates whether the category has sub-categories
|
|
19
|
+
* - `isCategoryOfSubModel`: Indicates that this node is located under a SubModel
|
|
20
|
+
* - `modelIds`: (only if `isCategoryOfSubModel` is true) Ids of models that this category node is contained under
|
|
21
|
+
*/
|
|
22
|
+
const isCategoryNode: (node: Pick<HierarchyNode, "extendedData">) => node is Omit<NonGroupingHierarchyNode, "extendedData"> & {
|
|
23
|
+
key: InstancesNodeKey;
|
|
24
|
+
} & {
|
|
25
|
+
extendedData: {
|
|
26
|
+
description?: string;
|
|
27
|
+
hasSubCategories?: boolean;
|
|
28
|
+
} & ({
|
|
29
|
+
isCategoryOfSubModel?: false;
|
|
30
|
+
} | {
|
|
31
|
+
/** Ids of models that this category node is contained under. */
|
|
32
|
+
modelIds: Id64Array;
|
|
33
|
+
isCategoryOfSubModel: true;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
/** Checks if the given node represents a `BisCore.Model`. */
|
|
37
|
+
const isModelNode: (node: Pick<HierarchyNode, "extendedData">) => node is NonGroupingHierarchyNode & {
|
|
38
|
+
key: InstancesNodeKey;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Checks if the given node represents a `BisCore.GeometricElement` element.
|
|
42
|
+
*
|
|
43
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
44
|
+
* - `modelId`: `Id64String` of the model containing the element
|
|
45
|
+
* - `categoryId`: `Id64String` of the category of the element
|
|
46
|
+
*/
|
|
47
|
+
const isElementNode: (node: Pick<HierarchyNode, "extendedData">) => node is Omit<NonGroupingHierarchyNode, "extendedData"> & {
|
|
48
|
+
key: InstancesNodeKey;
|
|
49
|
+
} & {
|
|
50
|
+
extendedData: {
|
|
51
|
+
modelId: Id64String;
|
|
52
|
+
categoryId: Id64String;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Checks if the given node is a class grouping node of `BisCore.GeometricElement` nodes.
|
|
57
|
+
*
|
|
58
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
59
|
+
* - `categoryId`: `Id64String` of the category of the element
|
|
60
|
+
* - `modelElementsMap`: A map of model's `Id64String` -> Set of elements' `Id64String`s contained within this grouping node
|
|
61
|
+
*/
|
|
62
|
+
const isElementClassGroupingNode: (node: Pick<HierarchyNode, "key">) => node is Omit<GroupingHierarchyNode, "extendedData"> & {
|
|
63
|
+
key: ClassGroupingNodeKey;
|
|
64
|
+
} & {
|
|
65
|
+
extendedData: {
|
|
66
|
+
categoryId: Id64String;
|
|
67
|
+
modelElementsMap: Map<Id64String, {
|
|
68
|
+
elementIds: Set<Id64String>;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Checks if the given node represents a `BisCore.SubCategory` element.
|
|
74
|
+
*
|
|
75
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
76
|
+
* - `categoryId`: `Id64String` of the parent category
|
|
77
|
+
*/
|
|
78
|
+
const isSubCategoryNode: (node: Pick<HierarchyNode, "extendedData">) => node is Omit<NonGroupingHierarchyNode, "extendedData"> & {
|
|
79
|
+
key: InstancesNodeKey;
|
|
80
|
+
} & {
|
|
81
|
+
extendedData: {
|
|
82
|
+
categoryId: Id64String;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=CategoriesTreeNode.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { HierarchyNode } from "@itwin/presentation-hierarchies";
|
|
6
|
+
/**
|
|
7
|
+
* Contains utility functions for working with Categories Tree nodes.
|
|
8
|
+
* @beta
|
|
9
|
+
*/
|
|
10
|
+
export var CategoriesTreeNode;
|
|
11
|
+
(function (CategoriesTreeNode) {
|
|
12
|
+
/** Checks if the given node represents a `BisCore.DefinitionContainer` element. */
|
|
13
|
+
CategoriesTreeNode.isDefinitionContainerNode = (node) => !!node.extendedData && "isDefinitionContainer" in node.extendedData && !!node.extendedData.isDefinitionContainer;
|
|
14
|
+
/**
|
|
15
|
+
* Checks if the given node represents a `BisCore.Category` element.
|
|
16
|
+
*
|
|
17
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
18
|
+
* - `description`: Optional description of the category
|
|
19
|
+
* - `hasSubCategories`: Indicates whether the category has sub-categories
|
|
20
|
+
* - `isCategoryOfSubModel`: Indicates that this node is located under a SubModel
|
|
21
|
+
* - `modelIds`: (only if `isCategoryOfSubModel` is true) Ids of models that this category node is contained under
|
|
22
|
+
*/
|
|
23
|
+
CategoriesTreeNode.isCategoryNode = (node) => !!node.extendedData && "isCategory" in node.extendedData && !!node.extendedData.isCategory;
|
|
24
|
+
/** Checks if the given node represents a `BisCore.Model`. */
|
|
25
|
+
CategoriesTreeNode.isModelNode = (node) => !!node.extendedData && "isModel" in node.extendedData && !!node.extendedData.isModel;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if the given node represents a `BisCore.GeometricElement` element.
|
|
28
|
+
*
|
|
29
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
30
|
+
* - `modelId`: `Id64String` of the model containing the element
|
|
31
|
+
* - `categoryId`: `Id64String` of the category of the element
|
|
32
|
+
*/
|
|
33
|
+
CategoriesTreeNode.isElementNode = (node) => !!node.extendedData && "isElement" in node.extendedData && !!node.extendedData.isElement;
|
|
34
|
+
/**
|
|
35
|
+
* Checks if the given node is a class grouping node of `BisCore.GeometricElement` nodes.
|
|
36
|
+
*
|
|
37
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
38
|
+
* - `categoryId`: `Id64String` of the category of the element
|
|
39
|
+
* - `modelElementsMap`: A map of model's `Id64String` -> Set of elements' `Id64String`s contained within this grouping node
|
|
40
|
+
*/
|
|
41
|
+
CategoriesTreeNode.isElementClassGroupingNode = (node) => HierarchyNode.isClassGroupingNode(node);
|
|
42
|
+
/**
|
|
43
|
+
* Checks if the given node represents a `BisCore.SubCategory` element.
|
|
44
|
+
*
|
|
45
|
+
* If it does, the node's `extendedData` will contain the following properties:
|
|
46
|
+
* - `categoryId`: `Id64String` of the parent category
|
|
47
|
+
*/
|
|
48
|
+
CategoriesTreeNode.isSubCategoryNode = (node) => !!node.extendedData && "isSubCategory" in node.extendedData && !!node.extendedData.isSubCategory;
|
|
49
|
+
})(CategoriesTreeNode || (CategoriesTreeNode = {}));
|
|
50
|
+
//# sourceMappingURL=CategoriesTreeNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoriesTreeNode.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAKhE;;;GAGG;AACH,MAAM,KAAW,kBAAkB,CAiFlC;AAjFD,WAAiB,kBAAkB;IACjC,mFAAmF;IACtE,4CAAyB,GAAG,CAAC,IAAyC,EAAgE,EAAE,CACnJ,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,uBAAuB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC;IAEnH;;;;;;;;OAQG;IACU,iCAAc,GAAG,CAC5B,IAAyC,EAezC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAEhG,6DAA6D;IAChD,8BAAW,GAAG,CAAC,IAAyC,EAAgE,EAAE,CACrI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IAEvF;;;;;;OAMG;IACU,gCAAa,GAAG,CAC3B,IAAyC,EAMzC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAE9F;;;;;;OAMG;IACU,6CAA0B,GAAG,CACxC,IAAgC,EAMhC,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE7C;;;;;OAKG;IACU,oCAAiB,GAAG,CAC/B,IAAyC,EAKzC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,eAAe,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACxG,CAAC,EAjFgB,kBAAkB,KAAlB,kBAAkB,QAiFlC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { HierarchyNode } from \"@itwin/presentation-hierarchies\";\n\nimport type { Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport type { ClassGroupingNodeKey, GroupingHierarchyNode, InstancesNodeKey, NonGroupingHierarchyNode } from \"@itwin/presentation-hierarchies\";\n\n/**\n * Contains utility functions for working with Categories Tree nodes.\n * @beta\n */\nexport namespace CategoriesTreeNode {\n /** Checks if the given node represents a `BisCore.DefinitionContainer` element. */\n export const isDefinitionContainerNode = (node: Pick<HierarchyNode, \"extendedData\">): node is NonGroupingHierarchyNode & { key: InstancesNodeKey } =>\n !!node.extendedData && \"isDefinitionContainer\" in node.extendedData && !!node.extendedData.isDefinitionContainer;\n\n /**\n * Checks if the given node represents a `BisCore.Category` element.\n *\n * If it does, the node's `extendedData` will contain the following properties:\n * - `description`: Optional description of the category\n * - `hasSubCategories`: Indicates whether the category has sub-categories\n * - `isCategoryOfSubModel`: Indicates that this node is located under a SubModel\n * - `modelIds`: (only if `isCategoryOfSubModel` is true) Ids of models that this category node is contained under\n */\n export const isCategoryNode = (\n node: Pick<HierarchyNode, \"extendedData\">,\n ): node is Omit<NonGroupingHierarchyNode, \"extendedData\"> & { key: InstancesNodeKey } & {\n extendedData: {\n description?: string;\n hasSubCategories?: boolean;\n } & (\n | {\n isCategoryOfSubModel?: false;\n }\n | {\n /** Ids of models that this category node is contained under. */\n modelIds: Id64Array;\n isCategoryOfSubModel: true;\n }\n );\n } => !!node.extendedData && \"isCategory\" in node.extendedData && !!node.extendedData.isCategory;\n\n /** Checks if the given node represents a `BisCore.Model`. */\n export const isModelNode = (node: Pick<HierarchyNode, \"extendedData\">): node is NonGroupingHierarchyNode & { key: InstancesNodeKey } =>\n !!node.extendedData && \"isModel\" in node.extendedData && !!node.extendedData.isModel;\n\n /**\n * Checks if the given node represents a `BisCore.GeometricElement` element.\n *\n * If it does, the node's `extendedData` will contain the following properties:\n * - `modelId`: `Id64String` of the model containing the element\n * - `categoryId`: `Id64String` of the category of the element\n */\n export const isElementNode = (\n node: Pick<HierarchyNode, \"extendedData\">,\n ): node is Omit<NonGroupingHierarchyNode, \"extendedData\"> & { key: InstancesNodeKey } & {\n extendedData: {\n modelId: Id64String;\n categoryId: Id64String;\n };\n } => !!node.extendedData && \"isElement\" in node.extendedData && !!node.extendedData.isElement;\n\n /**\n * Checks if the given node is a class grouping node of `BisCore.GeometricElement` nodes.\n *\n * If it does, the node's `extendedData` will contain the following properties:\n * - `categoryId`: `Id64String` of the category of the element\n * - `modelElementsMap`: A map of model's `Id64String` -> Set of elements' `Id64String`s contained within this grouping node\n */\n export const isElementClassGroupingNode = (\n node: Pick<HierarchyNode, \"key\">,\n ): node is Omit<GroupingHierarchyNode, \"extendedData\"> & { key: ClassGroupingNodeKey } & {\n extendedData: {\n categoryId: Id64String;\n modelElementsMap: Map<Id64String, { elementIds: Set<Id64String> }>;\n };\n } => HierarchyNode.isClassGroupingNode(node);\n\n /**\n * Checks if the given node represents a `BisCore.SubCategory` element.\n *\n * If it does, the node's `extendedData` will contain the following properties:\n * - `categoryId`: `Id64String` of the parent category\n */\n export const isSubCategoryNode = (\n node: Pick<HierarchyNode, \"extendedData\">,\n ): node is Omit<NonGroupingHierarchyNode, \"extendedData\"> & { key: InstancesNodeKey } & {\n extendedData: {\n categoryId: Id64String;\n };\n } => !!node.extendedData && \"isSubCategory\" in node.extendedData && !!node.extendedData.isSubCategory;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import type { Id64Array } from "@itwin/core-bentley";
|
|
3
|
-
import type {
|
|
3
|
+
import type { TreeNode } from "@itwin/presentation-hierarchies-react";
|
|
4
4
|
import type { CategoryInfo } from "../common/CategoriesVisibilityUtils.js";
|
|
5
5
|
import type { VisibilityTreeProps } from "../common/components/VisibilityTree.js";
|
|
6
6
|
import type { ExtendedVisibilityTreeRendererProps } from "../common/components/VisibilityTreeRenderer.js";
|
|
@@ -25,12 +25,14 @@ interface UseCategoriesTreeResult {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Custom hook to create and manage state for the categories tree.
|
|
28
|
+
*
|
|
29
|
+
* **Note:** Requires `SharedTreeContextProvider` to be present in components tree above.
|
|
28
30
|
* @beta
|
|
29
31
|
*/
|
|
30
32
|
export declare function useCategoriesTree({ searchText, activeView, onCategoriesFiltered, emptyTreeContent, hierarchyConfig, getTreeItemProps, }: UseCategoriesTreeProps): UseCategoriesTreeResult;
|
|
31
33
|
/** @beta */
|
|
32
34
|
export declare function CategoriesTreeIcon({ node }: {
|
|
33
|
-
node:
|
|
35
|
+
node: TreeNode;
|
|
34
36
|
}): import("react/jsx-runtime").JSX.Element | undefined;
|
|
35
37
|
export {};
|
|
36
38
|
//# sourceMappingURL=UseCategoriesTree.d.ts.map
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
import { useCallback, useEffect, useMemo } from "react";
|
|
6
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { createECSqlQueryExecutor } from "@itwin/presentation-core-interop";
|
|
8
8
|
import { Icon } from "@stratakit/foundations";
|
|
9
9
|
import categorySvg from "@stratakit/icons/bis-category-3d.svg";
|
|
@@ -12,9 +12,9 @@ import classSvg from "@stratakit/icons/bis-class.svg";
|
|
|
12
12
|
import definitionContainerSvg from "@stratakit/icons/bis-definitions-container.svg";
|
|
13
13
|
import elementSvg from "@stratakit/icons/bis-element.svg";
|
|
14
14
|
import { EmptyTreeContent, NoSearchMatches, SearchUnknownError, TooManySearchMatches } from "../common/components/EmptyTree.js";
|
|
15
|
+
import { useSharedTreeContextInternal } from "../common/internal/SharedTreeContextProviderInternal.js";
|
|
15
16
|
import { useGuid } from "../common/internal/useGuid.js";
|
|
16
17
|
import { useCachedVisibility } from "../common/internal/useTreeHooks/UseCachedVisibility.js";
|
|
17
|
-
import { useIdsCache } from "../common/internal/useTreeHooks/UseIdsCache.js";
|
|
18
18
|
import { getClassesByView } from "../common/internal/Utils.js";
|
|
19
19
|
import { CategoriesTreeDefinition, defaultHierarchyConfiguration } from "./CategoriesTreeDefinition.js";
|
|
20
20
|
import { CategoriesTreeIdsCache } from "./internal/CategoriesTreeIdsCache.js";
|
|
@@ -23,6 +23,8 @@ import { CategoriesTreeVisibilityHandler } from "./internal/visibility/Categorie
|
|
|
23
23
|
import { createCategoriesSearchResultsTree } from "./internal/visibility/SearchResultsTree.js";
|
|
24
24
|
/**
|
|
25
25
|
* Custom hook to create and manage state for the categories tree.
|
|
26
|
+
*
|
|
27
|
+
* **Note:** Requires `SharedTreeContextProvider` to be present in components tree above.
|
|
26
28
|
* @beta
|
|
27
29
|
*/
|
|
28
30
|
export function useCategoriesTree({ searchText, activeView, onCategoriesFiltered, emptyTreeContent, hierarchyConfig, getTreeItemProps, }) {
|
|
@@ -32,28 +34,34 @@ export function useCategoriesTree({ searchText, activeView, onCategoriesFiltered
|
|
|
32
34
|
}),
|
|
33
35
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
36
|
Object.values(hierarchyConfig ?? {}));
|
|
35
|
-
const viewType = activeView.viewType === "2d" ? "2d" : "3d";
|
|
37
|
+
const [viewType, setViewType] = useState(activeView.viewType === "2d" ? "2d" : "3d");
|
|
36
38
|
const componentId = useGuid();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
});
|
|
39
|
+
// Listen for view type changes
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
return activeView.onDisplayStyleChanged.addListener(() => {
|
|
42
|
+
setViewType(activeView.viewType === "2d" ? "2d" : "3d");
|
|
43
|
+
});
|
|
44
|
+
}, [activeView]);
|
|
45
|
+
const idsCache = useCategoriesTreeIdsCache({ imodel: activeView.iModel, activeViewType: viewType });
|
|
43
46
|
const { visibilityHandlerFactory, onSearchPathsChanged } = useCategoriesCachedVisibility({
|
|
44
47
|
activeView,
|
|
45
48
|
viewType,
|
|
46
|
-
|
|
49
|
+
idsCache,
|
|
47
50
|
componentId,
|
|
48
51
|
hierarchyConfig: hierarchyConfiguration,
|
|
49
52
|
});
|
|
50
53
|
const getHierarchyDefinition = useCallback((props) => {
|
|
51
|
-
return new CategoriesTreeDefinition({
|
|
52
|
-
|
|
54
|
+
return new CategoriesTreeDefinition({
|
|
55
|
+
...props,
|
|
56
|
+
viewType,
|
|
57
|
+
idsCache,
|
|
58
|
+
hierarchyConfig: hierarchyConfiguration,
|
|
59
|
+
});
|
|
60
|
+
}, [viewType, idsCache, hierarchyConfiguration]);
|
|
53
61
|
const { getPaths, searchError } = useSearchPaths({
|
|
54
62
|
hierarchyConfiguration,
|
|
55
63
|
searchText,
|
|
56
|
-
|
|
64
|
+
idsCache,
|
|
57
65
|
onSearchPathsChanged,
|
|
58
66
|
viewType,
|
|
59
67
|
onCategoriesFiltered,
|
|
@@ -115,43 +123,50 @@ export function CategoriesTreeIcon({ node }) {
|
|
|
115
123
|
return _jsx(Icon, { href: getIcon() });
|
|
116
124
|
}
|
|
117
125
|
function useCategoriesCachedVisibility(props) {
|
|
118
|
-
const { activeView,
|
|
126
|
+
const { activeView, idsCache, viewType, componentId } = props;
|
|
119
127
|
const { visibilityHandlerFactory, searchPaths, onSearchPathsChanged } = useCachedVisibility({
|
|
120
128
|
activeView,
|
|
121
|
-
|
|
129
|
+
idsCache,
|
|
122
130
|
createSearchResultsTree: useCallback(async (filteredTreeProps) => createSearchResultsTree({ ...filteredTreeProps, viewClasses: getClassesByView(viewType) }), [viewType]),
|
|
123
131
|
createTreeSpecificVisibilityHandler: useCallback((specificProps) => createTreeSpecificVisibilityHandler({ ...specificProps, hierarchyConfig: props.hierarchyConfig }), [props.hierarchyConfig]),
|
|
124
132
|
componentId,
|
|
125
133
|
});
|
|
126
134
|
useEffect(() => {
|
|
127
|
-
|
|
128
|
-
}, [searchPaths,
|
|
135
|
+
idsCache.clearFilteredElementsModels();
|
|
136
|
+
}, [searchPaths, idsCache]);
|
|
129
137
|
return {
|
|
130
138
|
visibilityHandlerFactory,
|
|
131
139
|
onSearchPathsChanged,
|
|
132
140
|
};
|
|
133
141
|
}
|
|
134
142
|
function createTreeSpecificVisibilityHandler(props) {
|
|
135
|
-
const { info,
|
|
143
|
+
const { info, idsCache, viewport, hierarchyConfig } = props;
|
|
136
144
|
return new CategoriesTreeVisibilityHandler({
|
|
137
145
|
alwaysAndNeverDrawnElementInfo: info,
|
|
138
|
-
idsCache
|
|
146
|
+
idsCache,
|
|
139
147
|
viewport,
|
|
140
148
|
hierarchyConfig,
|
|
141
149
|
});
|
|
142
150
|
}
|
|
143
151
|
async function createSearchResultsTree(props) {
|
|
144
|
-
const { searchPaths, imodelAccess,
|
|
152
|
+
const { searchPaths, imodelAccess, idsCache, viewClasses } = props;
|
|
145
153
|
return createCategoriesSearchResultsTree({
|
|
146
154
|
imodelAccess,
|
|
147
155
|
searchPaths,
|
|
148
|
-
idsCache
|
|
156
|
+
idsCache,
|
|
149
157
|
categoryClassName: viewClasses.categoryClass,
|
|
150
158
|
categoryElementClassName: viewClasses.elementClass,
|
|
151
159
|
categoryModelClassName: viewClasses.modelClass,
|
|
152
160
|
});
|
|
153
161
|
}
|
|
154
|
-
function
|
|
155
|
-
|
|
162
|
+
function useCategoriesTreeIdsCache({ imodel, activeViewType }) {
|
|
163
|
+
const { getBaseIdsCache, getCache } = useSharedTreeContextInternal();
|
|
164
|
+
const baseIdsCache = getBaseIdsCache({ type: activeViewType, elementClassName: getClassesByView(activeViewType).elementClass, imodel });
|
|
165
|
+
const categoriesTreeIdsCache = getCache({
|
|
166
|
+
imodel,
|
|
167
|
+
createCache: () => new CategoriesTreeIdsCache({ baseIdsCache, type: activeViewType, queryExecutor: createECSqlQueryExecutor(imodel) }),
|
|
168
|
+
cacheKey: `${activeViewType}-CategoriesTreeIdsCache`,
|
|
169
|
+
});
|
|
170
|
+
return categoriesTreeIdsCache;
|
|
156
171
|
}
|
|
157
172
|
//# sourceMappingURL=UseCategoriesTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseCategoriesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport { createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { Icon } from \"@stratakit/foundations\";\nimport categorySvg from \"@stratakit/icons/bis-category-3d.svg\";\nimport subcategorySvg from \"@stratakit/icons/bis-category-subcategory.svg\";\nimport classSvg from \"@stratakit/icons/bis-class.svg\";\nimport definitionContainerSvg from \"@stratakit/icons/bis-definitions-container.svg\";\nimport elementSvg from \"@stratakit/icons/bis-element.svg\";\nimport { EmptyTreeContent, NoSearchMatches, SearchUnknownError, TooManySearchMatches } from \"../common/components/EmptyTree.js\";\nimport { useGuid } from \"../common/internal/useGuid.js\";\nimport { useCachedVisibility } from \"../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport { useIdsCache } from \"../common/internal/useTreeHooks/UseIdsCache.js\";\nimport { getClassesByView } from \"../common/internal/Utils.js\";\nimport { CategoriesTreeDefinition, defaultHierarchyConfiguration } from \"./CategoriesTreeDefinition.js\";\nimport { CategoriesTreeIdsCache } from \"./internal/CategoriesTreeIdsCache.js\";\nimport { useSearchPaths } from \"./internal/UseSearchPaths.js\";\nimport { CategoriesTreeVisibilityHandler } from \"./internal/visibility/CategoriesTreeVisibilityHandler.js\";\nimport { createCategoriesSearchResultsTree } from \"./internal/visibility/SearchResultsTree.js\";\n\nimport type { ReactNode } from \"react\";\nimport type { GuidString, Id64Array } from \"@itwin/core-bentley\";\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { CategoryInfo } from \"../common/CategoriesVisibilityUtils.js\";\nimport type { VisibilityTreeProps } from \"../common/components/VisibilityTree.js\";\nimport type { ExtendedVisibilityTreeRendererProps } from \"../common/components/VisibilityTreeRenderer.js\";\nimport type { CreateSearchResultsTreeProps, CreateTreeSpecificVisibilityHandlerProps } from \"../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport type { CreateCacheProps } from \"../common/internal/useTreeHooks/UseIdsCache.js\";\nimport type { SearchResultsTree } from \"../common/internal/visibility/BaseSearchResultsTree.js\";\nimport type { TreeWidgetViewport } from \"../common/TreeWidgetViewport.js\";\nimport type { CategoriesTreeHierarchyConfiguration } from \"./CategoriesTreeDefinition.js\";\nimport type { CategoriesTreeSearchError } from \"./internal/UseSearchPaths.js\";\nimport type { CategoriesTreeSearchTargets } from \"./internal/visibility/SearchResultsTree.js\";\n\n/** @beta */\nexport interface UseCategoriesTreeProps {\n activeView: TreeWidgetViewport;\n onCategoriesFiltered?: (props: { categories: CategoryInfo[] | undefined; models?: Id64Array }) => void;\n searchText?: string;\n emptyTreeContent?: ReactNode;\n hierarchyConfig?: Partial<CategoriesTreeHierarchyConfiguration>;\n getTreeItemProps?: ExtendedVisibilityTreeRendererProps[\"getTreeItemProps\"];\n}\n\n/** @beta */\ninterface UseCategoriesTreeResult {\n treeProps: Pick<\n VisibilityTreeProps,\n \"treeName\" | \"getHierarchyDefinition\" | \"getSearchPaths\" | \"visibilityHandlerFactory\" | \"highlightText\" | \"emptyTreeContent\"\n >;\n getTreeItemProps: Required<ExtendedVisibilityTreeRendererProps>[\"getTreeItemProps\"];\n}\n\n/**\n * Custom hook to create and manage state for the categories tree.\n * @beta\n */\nexport function useCategoriesTree({\n searchText,\n activeView,\n onCategoriesFiltered,\n emptyTreeContent,\n hierarchyConfig,\n getTreeItemProps,\n}: UseCategoriesTreeProps): UseCategoriesTreeResult {\n const hierarchyConfiguration = useMemo<CategoriesTreeHierarchyConfiguration>(\n () => ({\n ...defaultHierarchyConfiguration,\n ...hierarchyConfig,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Object.values(hierarchyConfig ?? {}),\n );\n const viewType = activeView.viewType === \"2d\" ? \"2d\" : \"3d\";\n const componentId = useGuid();\n\n const { getCache: getCategoriesTreeIdsCache } = useIdsCache<CategoriesTreeIdsCache, { viewType: \"2d\" | \"3d\" }>({\n imodel: activeView.iModel,\n createCache,\n cacheSpecificProps: useMemo(() => ({ viewType }), [viewType]),\n componentId,\n });\n\n const { visibilityHandlerFactory, onSearchPathsChanged } = useCategoriesCachedVisibility({\n activeView,\n viewType,\n getCache: getCategoriesTreeIdsCache,\n componentId,\n hierarchyConfig: hierarchyConfiguration,\n });\n\n const getHierarchyDefinition = useCallback<VisibilityTreeProps[\"getHierarchyDefinition\"]>(\n (props) => {\n return new CategoriesTreeDefinition({ ...props, viewType, idsCache: getCategoriesTreeIdsCache(), hierarchyConfig: hierarchyConfiguration });\n },\n [viewType, getCategoriesTreeIdsCache, hierarchyConfiguration],\n );\n\n const { getPaths, searchError } = useSearchPaths({\n hierarchyConfiguration,\n searchText,\n getCategoriesTreeIdsCache,\n onSearchPathsChanged,\n viewType,\n onCategoriesFiltered,\n componentId,\n });\n\n return {\n treeProps: {\n treeName: \"categories-tree-v2\",\n getHierarchyDefinition,\n getSearchPaths: getPaths,\n visibilityHandlerFactory,\n emptyTreeContent: useMemo(() => getEmptyTreeContentComponent(searchText, searchError, emptyTreeContent), [searchText, searchError, emptyTreeContent]),\n highlightText: searchText,\n },\n getTreeItemProps: (node, rendererProps) => ({\n ...rendererProps.getTreeItemProps?.(node),\n decorations: <CategoriesTreeIcon node={node} />,\n description: node.nodeData.extendedData?.description,\n ...getTreeItemProps?.(node, rendererProps),\n }),\n };\n}\n\nfunction getEmptyTreeContentComponent(searchText?: string, error?: CategoriesTreeSearchError, emptyTreeContent?: React.ReactNode) {\n if (error) {\n if (error === \"tooManySearchMatches\") {\n return <TooManySearchMatches base={\"categoriesTree\"} />;\n }\n return <SearchUnknownError base={\"categoriesTree\"} />;\n }\n if (searchText) {\n return <NoSearchMatches base={\"categoriesTree\"} />;\n }\n if (emptyTreeContent) {\n return emptyTreeContent;\n }\n return <EmptyTreeContent icon={categorySvg} />;\n}\n\n/** @beta */\nexport function CategoriesTreeIcon({ node }: { node: PresentationHierarchyNode }) {\n if (node.nodeData.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n const getIcon = () => {\n switch (node.nodeData.extendedData!.imageId) {\n case \"icon-layers\":\n return categorySvg;\n case \"icon-layers-isolate\":\n return subcategorySvg;\n case \"icon-definition-container\":\n return definitionContainerSvg;\n case \"icon-item\":\n return elementSvg;\n case \"icon-ec-class\":\n return classSvg;\n default:\n return undefined;\n }\n };\n\n return <Icon href={getIcon()} />;\n}\n\nfunction useCategoriesCachedVisibility(props: {\n activeView: TreeWidgetViewport;\n getCache: () => CategoriesTreeIdsCache;\n viewType: \"2d\" | \"3d\";\n componentId: GuidString;\n hierarchyConfig: CategoriesTreeHierarchyConfiguration;\n}) {\n const { activeView, getCache, viewType, componentId } = props;\n const { visibilityHandlerFactory, searchPaths, onSearchPathsChanged } = useCachedVisibility<CategoriesTreeIdsCache, CategoriesTreeSearchTargets>({\n activeView,\n getCache,\n createSearchResultsTree: useCallback(\n async (filteredTreeProps: CreateSearchResultsTreeProps<CategoriesTreeIdsCache>) =>\n createSearchResultsTree({ ...filteredTreeProps, viewClasses: getClassesByView(viewType) }),\n [viewType],\n ),\n createTreeSpecificVisibilityHandler: useCallback(\n (specificProps) => createTreeSpecificVisibilityHandler({ ...specificProps, hierarchyConfig: props.hierarchyConfig }),\n [props.hierarchyConfig],\n ),\n componentId,\n });\n\n useEffect(() => {\n getCache().clearFilteredElementsModels();\n }, [searchPaths, getCache]);\n\n return {\n visibilityHandlerFactory,\n onSearchPathsChanged,\n };\n}\n\nfunction createTreeSpecificVisibilityHandler(\n props: CreateTreeSpecificVisibilityHandlerProps<CategoriesTreeIdsCache> & { hierarchyConfig: CategoriesTreeHierarchyConfiguration },\n) {\n const { info, getCache, viewport, hierarchyConfig } = props;\n return new CategoriesTreeVisibilityHandler({\n alwaysAndNeverDrawnElementInfo: info,\n idsCache: getCache(),\n viewport,\n hierarchyConfig,\n });\n}\n\nasync function createSearchResultsTree(\n props: CreateSearchResultsTreeProps<CategoriesTreeIdsCache> & { viewClasses: ReturnType<typeof getClassesByView> },\n): Promise<SearchResultsTree<CategoriesTreeSearchTargets>> {\n const { searchPaths, imodelAccess, getCache, viewClasses } = props;\n return createCategoriesSearchResultsTree({\n imodelAccess,\n searchPaths,\n idsCache: getCache(),\n categoryClassName: viewClasses.categoryClass,\n categoryElementClassName: viewClasses.elementClass,\n categoryModelClassName: viewClasses.modelClass,\n });\n}\n\nfunction createCache(props: CreateCacheProps<{ viewType: \"2d\" | \"3d\" }>) {\n return new CategoriesTreeIdsCache(createECSqlQueryExecutor(props.imodel), props.specificProps.viewType, props.componentId);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UseCategoriesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { Icon } from \"@stratakit/foundations\";\nimport categorySvg from \"@stratakit/icons/bis-category-3d.svg\";\nimport subcategorySvg from \"@stratakit/icons/bis-category-subcategory.svg\";\nimport classSvg from \"@stratakit/icons/bis-class.svg\";\nimport definitionContainerSvg from \"@stratakit/icons/bis-definitions-container.svg\";\nimport elementSvg from \"@stratakit/icons/bis-element.svg\";\nimport { EmptyTreeContent, NoSearchMatches, SearchUnknownError, TooManySearchMatches } from \"../common/components/EmptyTree.js\";\nimport { useSharedTreeContextInternal } from \"../common/internal/SharedTreeContextProviderInternal.js\";\nimport { useGuid } from \"../common/internal/useGuid.js\";\nimport { useCachedVisibility } from \"../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport { getClassesByView } from \"../common/internal/Utils.js\";\nimport { CategoriesTreeDefinition, defaultHierarchyConfiguration } from \"./CategoriesTreeDefinition.js\";\nimport { CategoriesTreeIdsCache } from \"./internal/CategoriesTreeIdsCache.js\";\nimport { useSearchPaths } from \"./internal/UseSearchPaths.js\";\nimport { CategoriesTreeVisibilityHandler } from \"./internal/visibility/CategoriesTreeVisibilityHandler.js\";\nimport { createCategoriesSearchResultsTree } from \"./internal/visibility/SearchResultsTree.js\";\n\nimport type { ReactNode } from \"react\";\nimport type { GuidString, Id64Array } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { TreeNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { CategoryInfo } from \"../common/CategoriesVisibilityUtils.js\";\nimport type { VisibilityTreeProps } from \"../common/components/VisibilityTree.js\";\nimport type { ExtendedVisibilityTreeRendererProps } from \"../common/components/VisibilityTreeRenderer.js\";\nimport type { CreateSearchResultsTreeProps, CreateTreeSpecificVisibilityHandlerProps } from \"../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport type { SearchResultsTree } from \"../common/internal/visibility/BaseSearchResultsTree.js\";\nimport type { TreeWidgetViewport } from \"../common/TreeWidgetViewport.js\";\nimport type { CategoriesTreeHierarchyConfiguration } from \"./CategoriesTreeDefinition.js\";\nimport type { CategoriesTreeSearchError } from \"./internal/UseSearchPaths.js\";\nimport type { CategoriesTreeSearchTargets } from \"./internal/visibility/SearchResultsTree.js\";\n\n/** @beta */\nexport interface UseCategoriesTreeProps {\n activeView: TreeWidgetViewport;\n onCategoriesFiltered?: (props: { categories: CategoryInfo[] | undefined; models?: Id64Array }) => void;\n searchText?: string;\n emptyTreeContent?: ReactNode;\n hierarchyConfig?: Partial<CategoriesTreeHierarchyConfiguration>;\n getTreeItemProps?: ExtendedVisibilityTreeRendererProps[\"getTreeItemProps\"];\n}\n\n/** @beta */\ninterface UseCategoriesTreeResult {\n treeProps: Pick<\n VisibilityTreeProps,\n \"treeName\" | \"getHierarchyDefinition\" | \"getSearchPaths\" | \"visibilityHandlerFactory\" | \"highlightText\" | \"emptyTreeContent\"\n >;\n getTreeItemProps: Required<ExtendedVisibilityTreeRendererProps>[\"getTreeItemProps\"];\n}\n\n/**\n * Custom hook to create and manage state for the categories tree.\n *\n * **Note:** Requires `SharedTreeContextProvider` to be present in components tree above.\n * @beta\n */\nexport function useCategoriesTree({\n searchText,\n activeView,\n onCategoriesFiltered,\n emptyTreeContent,\n hierarchyConfig,\n getTreeItemProps,\n}: UseCategoriesTreeProps): UseCategoriesTreeResult {\n const hierarchyConfiguration = useMemo<CategoriesTreeHierarchyConfiguration>(\n () => ({\n ...defaultHierarchyConfiguration,\n ...hierarchyConfig,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Object.values(hierarchyConfig ?? {}),\n );\n const [viewType, setViewType] = useState<\"2d\" | \"3d\">(activeView.viewType === \"2d\" ? \"2d\" : \"3d\");\n const componentId = useGuid();\n\n // Listen for view type changes\n useEffect(() => {\n return activeView.onDisplayStyleChanged.addListener(() => {\n setViewType(activeView.viewType === \"2d\" ? \"2d\" : \"3d\");\n });\n }, [activeView]);\n\n const idsCache = useCategoriesTreeIdsCache({ imodel: activeView.iModel, activeViewType: viewType });\n\n const { visibilityHandlerFactory, onSearchPathsChanged } = useCategoriesCachedVisibility({\n activeView,\n viewType,\n idsCache,\n componentId,\n hierarchyConfig: hierarchyConfiguration,\n });\n\n const getHierarchyDefinition = useCallback<VisibilityTreeProps[\"getHierarchyDefinition\"]>(\n (props) => {\n return new CategoriesTreeDefinition({\n ...props,\n viewType,\n idsCache,\n hierarchyConfig: hierarchyConfiguration,\n });\n },\n [viewType, idsCache, hierarchyConfiguration],\n );\n\n const { getPaths, searchError } = useSearchPaths({\n hierarchyConfiguration,\n searchText,\n idsCache,\n onSearchPathsChanged,\n viewType,\n onCategoriesFiltered,\n componentId,\n });\n\n return {\n treeProps: {\n treeName: \"categories-tree-v2\",\n getHierarchyDefinition,\n getSearchPaths: getPaths,\n visibilityHandlerFactory,\n emptyTreeContent: useMemo(() => getEmptyTreeContentComponent(searchText, searchError, emptyTreeContent), [searchText, searchError, emptyTreeContent]),\n highlightText: searchText,\n },\n getTreeItemProps: (node, rendererProps) => ({\n ...rendererProps.getTreeItemProps?.(node),\n decorations: <CategoriesTreeIcon node={node} />,\n description: node.nodeData.extendedData?.description,\n ...getTreeItemProps?.(node, rendererProps),\n }),\n };\n}\n\nfunction getEmptyTreeContentComponent(searchText?: string, error?: CategoriesTreeSearchError, emptyTreeContent?: React.ReactNode) {\n if (error) {\n if (error === \"tooManySearchMatches\") {\n return <TooManySearchMatches base={\"categoriesTree\"} />;\n }\n return <SearchUnknownError base={\"categoriesTree\"} />;\n }\n if (searchText) {\n return <NoSearchMatches base={\"categoriesTree\"} />;\n }\n if (emptyTreeContent) {\n return emptyTreeContent;\n }\n return <EmptyTreeContent icon={categorySvg} />;\n}\n\n/** @beta */\nexport function CategoriesTreeIcon({ node }: { node: TreeNode }) {\n if (node.nodeData.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n const getIcon = () => {\n switch (node.nodeData.extendedData!.imageId) {\n case \"icon-layers\":\n return categorySvg;\n case \"icon-layers-isolate\":\n return subcategorySvg;\n case \"icon-definition-container\":\n return definitionContainerSvg;\n case \"icon-item\":\n return elementSvg;\n case \"icon-ec-class\":\n return classSvg;\n default:\n return undefined;\n }\n };\n\n return <Icon href={getIcon()} />;\n}\n\nfunction useCategoriesCachedVisibility(props: {\n activeView: TreeWidgetViewport;\n idsCache: CategoriesTreeIdsCache;\n viewType: \"2d\" | \"3d\";\n componentId: GuidString;\n hierarchyConfig: CategoriesTreeHierarchyConfiguration;\n}) {\n const { activeView, idsCache, viewType, componentId } = props;\n const { visibilityHandlerFactory, searchPaths, onSearchPathsChanged } = useCachedVisibility<CategoriesTreeIdsCache, CategoriesTreeSearchTargets>({\n activeView,\n idsCache,\n createSearchResultsTree: useCallback(\n async (filteredTreeProps: CreateSearchResultsTreeProps<CategoriesTreeIdsCache>) =>\n createSearchResultsTree({ ...filteredTreeProps, viewClasses: getClassesByView(viewType) }),\n [viewType],\n ),\n createTreeSpecificVisibilityHandler: useCallback(\n (specificProps) => createTreeSpecificVisibilityHandler({ ...specificProps, hierarchyConfig: props.hierarchyConfig }),\n [props.hierarchyConfig],\n ),\n componentId,\n });\n\n useEffect(() => {\n idsCache.clearFilteredElementsModels();\n }, [searchPaths, idsCache]);\n\n return {\n visibilityHandlerFactory,\n onSearchPathsChanged,\n };\n}\n\nfunction createTreeSpecificVisibilityHandler(\n props: CreateTreeSpecificVisibilityHandlerProps<CategoriesTreeIdsCache> & {\n hierarchyConfig: CategoriesTreeHierarchyConfiguration;\n },\n) {\n const { info, idsCache, viewport, hierarchyConfig } = props;\n return new CategoriesTreeVisibilityHandler({\n alwaysAndNeverDrawnElementInfo: info,\n idsCache,\n viewport,\n hierarchyConfig,\n });\n}\n\nasync function createSearchResultsTree(\n props: CreateSearchResultsTreeProps<CategoriesTreeIdsCache> & { viewClasses: ReturnType<typeof getClassesByView> },\n): Promise<SearchResultsTree<CategoriesTreeSearchTargets>> {\n const { searchPaths, imodelAccess, idsCache, viewClasses } = props;\n return createCategoriesSearchResultsTree({\n imodelAccess,\n searchPaths,\n idsCache,\n categoryClassName: viewClasses.categoryClass,\n categoryElementClassName: viewClasses.elementClass,\n categoryModelClassName: viewClasses.modelClass,\n });\n}\n\nfunction useCategoriesTreeIdsCache({ imodel, activeViewType }: { imodel: IModelConnection; activeViewType: \"2d\" | \"3d\" }): CategoriesTreeIdsCache {\n const { getBaseIdsCache, getCache } = useSharedTreeContextInternal();\n\n const baseIdsCache = getBaseIdsCache({ type: activeViewType, elementClassName: getClassesByView(activeViewType).elementClass, imodel });\n const categoriesTreeIdsCache = getCache({\n imodel,\n createCache: () => new CategoriesTreeIdsCache({ baseIdsCache, type: activeViewType, queryExecutor: createECSqlQueryExecutor(imodel) }),\n cacheKey: `${activeViewType}-CategoriesTreeIdsCache`,\n });\n return categoriesTreeIdsCache;\n}\n"]}
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
+
import { BaseIdsCacheImpl } from "../../common/internal/caches/BaseIdsCache.js";
|
|
1
2
|
import type { Observable } from "rxjs";
|
|
2
|
-
import type {
|
|
3
|
+
import type { Id64Arg, Id64Set, Id64String } from "@itwin/core-bentley";
|
|
3
4
|
import type { LimitingECSqlQueryExecutor } from "@itwin/presentation-hierarchies";
|
|
4
5
|
import type { InstanceKey } from "@itwin/presentation-shared";
|
|
5
|
-
import type {
|
|
6
|
+
import type { BaseIdsCacheImplProps } from "../../common/internal/caches/BaseIdsCache.js";
|
|
7
|
+
import type { CategoryId, DefinitionContainerId } from "../../common/internal/Types.js";
|
|
6
8
|
/** @internal */
|
|
7
9
|
export interface CategoryInfo {
|
|
8
10
|
id: CategoryId;
|
|
9
11
|
subCategoryChildCount: number;
|
|
10
12
|
hasElements: boolean;
|
|
11
13
|
}
|
|
14
|
+
interface CategoriesTreeIdsCacheProps extends BaseIdsCacheImplProps {
|
|
15
|
+
queryExecutor: LimitingECSqlQueryExecutor;
|
|
16
|
+
type: "2d" | "3d";
|
|
17
|
+
}
|
|
12
18
|
/** @internal */
|
|
13
|
-
export declare class CategoriesTreeIdsCache
|
|
19
|
+
export declare class CategoriesTreeIdsCache extends BaseIdsCacheImpl {
|
|
14
20
|
#private;
|
|
15
|
-
constructor(
|
|
16
|
-
[Symbol.dispose](): void;
|
|
21
|
+
constructor(props: CategoriesTreeIdsCacheProps);
|
|
17
22
|
private queryFilteredElementsModels;
|
|
18
23
|
getFilteredElementsModels(filteredElementIds: Id64Arg): Observable<Map<string, string>>;
|
|
19
24
|
clearFilteredElementsModels(): void;
|
|
20
|
-
private queryElementModelCategories;
|
|
21
25
|
private queryCategories;
|
|
22
26
|
private queryIsDefinitionContainersSupported;
|
|
23
27
|
private queryDefinitionContainers;
|
|
24
|
-
private querySubCategories;
|
|
25
28
|
private getModelsCategoriesInfo;
|
|
26
|
-
private getElementModelsCategories;
|
|
27
|
-
private queryModeledElements;
|
|
28
|
-
private getModelWithCategoryModeledElements;
|
|
29
|
-
getCategoriesModeledElements(modelId: Id64String, categoryIds: Id64Arg): Observable<Id64Array>;
|
|
30
|
-
private getSubCategoriesInfo;
|
|
31
29
|
private getDefinitionContainersInfo;
|
|
32
30
|
getDirectChildDefinitionContainersAndCategories({ parentDefinitionContainerIds, includeEmpty, }: {
|
|
33
31
|
parentDefinitionContainerIds: Id64Arg;
|
|
@@ -36,13 +34,6 @@ export declare class CategoriesTreeIdsCache implements Disposable {
|
|
|
36
34
|
categories: CategoryInfo[];
|
|
37
35
|
definitionContainers: Array<DefinitionContainerId>;
|
|
38
36
|
}>;
|
|
39
|
-
getCategoriesElementModels(categoryIds: Id64Arg, includeSubModels?: boolean): Observable<{
|
|
40
|
-
id: CategoryId;
|
|
41
|
-
models: Array<ModelId> | undefined;
|
|
42
|
-
}>;
|
|
43
|
-
getModelCategoryIds(modelId: Id64String): Observable<Id64Array>;
|
|
44
|
-
getAllCategories(): Observable<Id64Set>;
|
|
45
|
-
hasSubModel(elementId: Id64String): Observable<boolean>;
|
|
46
37
|
getAllContainedCategories({ definitionContainerIds, includeEmptyCategories, }: {
|
|
47
38
|
definitionContainerIds: Id64Arg;
|
|
48
39
|
includeEmptyCategories?: boolean;
|
|
@@ -54,7 +45,6 @@ export declare class CategoriesTreeIdsCache implements Disposable {
|
|
|
54
45
|
} | {
|
|
55
46
|
subCategoryId: Id64String;
|
|
56
47
|
}): Observable<InstanceKey[]>;
|
|
57
|
-
getCategoryElementsCount(modelId: Id64String, categoryId: Id64String): Observable<number>;
|
|
58
48
|
getAllDefinitionContainersAndCategories(props?: {
|
|
59
49
|
includeEmpty?: boolean;
|
|
60
50
|
}): Observable<{
|
|
@@ -67,7 +57,7 @@ export declare class CategoriesTreeIdsCache implements Disposable {
|
|
|
67
57
|
categories: CategoryInfo[];
|
|
68
58
|
definitionContainers: Array<DefinitionContainerId>;
|
|
69
59
|
}>;
|
|
70
|
-
getSubCategories(categoryId: Id64String): Observable<Array<SubCategoryId>>;
|
|
71
60
|
getIsDefinitionContainerSupported(): Observable<boolean>;
|
|
72
61
|
}
|
|
62
|
+
export {};
|
|
73
63
|
//# sourceMappingURL=CategoriesTreeIdsCache.d.ts.map
|