@itwin/tree-widget-react 4.0.0-alpha.25 → 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 +2 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +75 -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 +3 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.js.map +1 -1
- 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 -10
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js +180 -88
- 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 +1 -3
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js +2 -4
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js.map +1 -1
- 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 +4 -8
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js +154 -78
- 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 +2 -1
- package/lib/esm/tree-widget-react/components/trees/index.js +2 -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 +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +56 -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/UseModelsTree.d.ts +5 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +25 -12
- 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 -10
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js +179 -72
- 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 -0
- package/lib/esm/tree-widget-react-internal.js +1 -0
- package/lib/esm/tree-widget-react-internal.js.map +1 -1
- package/package.json +77 -82
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsTreeVisibilityHandler.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.ts"],"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 { concat, defer, from, map, merge, mergeMap, of } from \"rxjs\";\nimport { assert, Guid, Id64 } from \"@itwin/core-bentley\";\nimport { HierarchyVisibilityHandlerImpl } from \"../../../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport { fromWithRelease } from \"../../../common/internal/Utils.js\";\nimport { mergeVisibilityStatuses } from \"../../../common/internal/VisibilityUtils.js\";\nimport { ModelsTreeNode } from \"../../ModelsTreeNode.js\";\nimport { ModelsTreeVisibilityHelper } from \"./ModelsTreeVisibilityHelper.js\";\nimport { createModelsSearchResultsTree } from \"./SearchResultsTree.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { Id64Arg } from \"@itwin/core-bentley\";\nimport type { GroupingHierarchyNode, HierarchyNode, HierarchySearchPath } from \"@itwin/presentation-hierarchies\";\nimport type { ECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport type { AlwaysAndNeverDrawnElementInfo } from \"../../../common/internal/AlwaysAndNeverDrawnElementInfo.js\";\nimport type { SearchResultsTree } from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\nimport type {\n BaseIdsCache,\n BaseTreeVisibilityHandlerOverrides,\n TreeSpecificVisibilityHandler,\n} from \"../../../common/internal/visibility/BaseVisibilityHelper.js\";\nimport type { TreeWidgetViewport } from \"../../../common/TreeWidgetViewport.js\";\nimport type {\n HierarchyVisibilityHandlerOverridableMethod,\n HierarchyVisibilityOverrideHandler,\n VisibilityStatus,\n} from \"../../../common/UseHierarchyVisibility.js\";\nimport type { ModelsTreeIdsCache } from \"../ModelsTreeIdsCache.js\";\nimport type { ModelsTreeSearchTargets } from \"./SearchResultsTree.js\";\n\n/**\n * Functionality of Models tree visibility handler that can be overridden.\n * Each callback is provided original implementation and reference to a `HierarchyVisibilityHandler`.\n * @beta\n */\nexport interface ModelsTreeVisibilityHandlerOverrides extends BaseTreeVisibilityHandlerOverrides {\n getSubjectsVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { subjectIds: Id64Arg }) => Promise<VisibilityStatus>>;\n getElementGroupingNodeVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { node: GroupingHierarchyNode }) => Promise<VisibilityStatus>>;\n\n changeSubjectsVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { subjectIds: Id64Arg; on: boolean }) => Promise<void>>;\n changeElementGroupingNodeVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<\n (props: { node: GroupingHierarchyNode; on: boolean }) => Promise<void>\n >;\n}\n\n/** @internal */\nexport interface ModelsTreeVisibilityHandlerProps {\n idsCache: ModelsTreeIdsCache;\n viewport: TreeWidgetViewport;\n alwaysAndNeverDrawnElementInfo: AlwaysAndNeverDrawnElementInfo;\n overrideHandler: HierarchyVisibilityOverrideHandler;\n overrides?: ModelsTreeVisibilityHandlerOverrides;\n}\n\n/**\n * Handles visibility status of models tree nodes.\n *\n * It knows how to get and change visibility status of nodes created by hierarchy definition.\n * @internal\n */\nexport class ModelsTreeVisibilityHandler implements Disposable, TreeSpecificVisibilityHandler<ModelsTreeSearchTargets> {\n #visibilityHelper: ModelsTreeVisibilityHelper;\n readonly #props: ModelsTreeVisibilityHandlerProps;\n\n constructor(constructorProps: ModelsTreeVisibilityHandlerProps) {\n this.#props = constructorProps;\n // Remove after https://github.com/iTwin/viewer-components-react/issues/1421.\n // We won't need to create a custom base ids cache.\n const baseIdsCache: BaseIdsCache = {\n getCategories: (props) => this.getCategories(props),\n getElementsCount: (props) => this.getElementsCount(props),\n getModels: (props) => this.getModels(props),\n getSubCategories: (props) => this.getSubCategories(props),\n getSubModels: (props) => this.getSubModels(props),\n hasSubModel: (props) => this.#props.idsCache.hasSubModel(props),\n getAllCategories: () => this.getAllCategories(),\n };\n this.#visibilityHelper = new ModelsTreeVisibilityHelper({\n viewport: this.#props.viewport,\n idsCache: this.#props.idsCache,\n alwaysAndNeverDrawnElementInfo: this.#props.alwaysAndNeverDrawnElementInfo,\n overrideHandler: this.#props.overrideHandler,\n baseIdsCache,\n overrides: this.#props.overrides,\n });\n }\n\n public [Symbol.dispose]() {\n this.#visibilityHelper[Symbol.dispose]();\n }\n\n public changeSearchTargetsVisibilityStatus(targets: ModelsTreeSearchTargets, on: boolean): Observable<void> {\n return defer(() => {\n const { subjectIds, modelIds, categories, elements } = targets;\n const observables = new Array<Observable<void>>();\n if (subjectIds?.size) {\n observables.push(this.#visibilityHelper.changeSubjectsVisibilityStatus({ subjectIds, on }));\n }\n\n if (modelIds?.size) {\n observables.push(this.#visibilityHelper.changeModelsVisibilityStatus({ modelIds, on }));\n }\n\n if (categories?.length) {\n observables.push(\n from(categories).pipe(\n mergeMap(({ modelId, categoryIds }) =>\n this.#visibilityHelper.changeCategoriesVisibilityStatus({\n categoryIds,\n modelId,\n on,\n }),\n ),\n ),\n );\n }\n\n if (elements?.length) {\n observables.push(\n fromWithRelease({ source: elements, releaseOnCount: 50 }).pipe(\n mergeMap(({ modelId, elements: elementsMap, categoryId }) =>\n this.#visibilityHelper.changeElementsVisibilityStatus({ modelId, categoryId, elementIds: [...elementsMap.keys()], on }),\n ),\n ),\n );\n }\n\n return merge(...observables);\n });\n }\n\n public getVisibilityStatus(node: HierarchyNode): Observable<VisibilityStatus> {\n if (ModelsTreeNode.isElementClassGroupingNode(node)) {\n const result = this.#visibilityHelper.getGroupedElementsVisibilityStatus({\n categoryId: node.extendedData.categoryId,\n modelId: node.extendedData.modelId,\n elementIds: node.groupedInstanceKeys.map((key) => key.id),\n });\n return this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: { node },\n nonOverriddenResult: result,\n override: this.#props.overrides?.getElementGroupingNodeVisibilityStatus,\n });\n }\n\n if (ModelsTreeNode.isSubjectNode(node)) {\n // note: subject nodes may be merged to represent multiple subject instances\n return this.#visibilityHelper.getSubjectsVisibilityStatus({ subjectIds: node.key.instanceKeys.map((key) => key.id) });\n }\n\n if (ModelsTreeNode.isModelNode(node)) {\n return this.#visibilityHelper.getModelsVisibilityStatus({ modelIds: node.key.instanceKeys.map(({ id }) => id), type: \"GeometricModel3d\" });\n }\n\n if (ModelsTreeNode.isCategoryNode(node)) {\n return this.#visibilityHelper.getCategoriesVisibilityStatus({\n categoryIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelIds[0],\n type: \"SpatialCategory\",\n });\n }\n\n assert(ModelsTreeNode.isElementNode(node));\n return this.#visibilityHelper.getElementsVisibilityStatus({\n elementIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelId,\n categoryId: node.extendedData.categoryId,\n type: \"GeometricElement3d\",\n });\n }\n\n /** Changes visibility of the items represented by the tree node. */\n public changeVisibilityStatus(node: HierarchyNode, on: boolean): Observable<void> {\n const changeObs = defer(() => {\n if (ModelsTreeNode.isElementClassGroupingNode(node)) {\n const result = this.#visibilityHelper.changeGroupedElementsVisibilityStatus({\n categoryId: node.extendedData.categoryId,\n modelId: node.extendedData.modelId,\n elementIds: node.groupedInstanceKeys.map((key) => key.id),\n on,\n });\n return this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: { node, on },\n nonOverriddenResult: result,\n override: this.#props.overrides?.changeElementGroupingNodeVisibilityStatus,\n });\n }\n\n if (ModelsTreeNode.isSubjectNode(node)) {\n return this.#visibilityHelper.changeSubjectsVisibilityStatus({\n subjectIds: node.key.instanceKeys.map((key) => key.id),\n on,\n });\n }\n\n if (ModelsTreeNode.isModelNode(node)) {\n return this.#visibilityHelper.changeModelsVisibilityStatus({ modelIds: node.key.instanceKeys.map(({ id }) => id), on });\n }\n\n if (ModelsTreeNode.isCategoryNode(node)) {\n return this.#visibilityHelper.changeCategoriesVisibilityStatus({\n categoryIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelIds[0],\n on,\n });\n }\n\n assert(ModelsTreeNode.isElementNode(node));\n return this.#visibilityHelper.changeElementsVisibilityStatus({\n elementIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelId,\n categoryId: node.extendedData.categoryId,\n on,\n });\n });\n\n if (this.#props.viewport.isAlwaysDrawnExclusive) {\n return concat(this.#visibilityHelper.removeAlwaysDrawnExclusive(), changeObs);\n }\n return changeObs;\n }\n\n public getSearchTargetsVisibilityStatus(targets: ModelsTreeSearchTargets): Observable<VisibilityStatus> {\n return defer(() => {\n const { subjectIds, modelIds, categories, elements } = targets;\n const observables = new Array<Observable<VisibilityStatus>>();\n if (subjectIds?.size) {\n observables.push(this.#visibilityHelper.getSubjectsVisibilityStatus({ subjectIds }));\n }\n\n if (modelIds?.size) {\n observables.push(this.#visibilityHelper.getModelsVisibilityStatus({ modelIds, type: \"GeometricModel3d\" }));\n }\n\n if (categories?.length) {\n observables.push(\n from(categories).pipe(\n mergeMap(({ modelId, categoryIds }) =>\n this.#visibilityHelper.getCategoriesVisibilityStatus({\n categoryIds,\n modelId,\n type: \"SpatialCategory\",\n }),\n ),\n ),\n );\n }\n\n if (elements?.length) {\n observables.push(\n fromWithRelease({ source: elements, releaseOnCount: 50 }).pipe(\n mergeMap(({ modelId, elements: elementsMap, categoryId }) =>\n this.#visibilityHelper.getElementsVisibilityStatus({ modelId, categoryId, elementIds: [...elementsMap.keys()], type: \"GeometricElement3d\" }),\n ),\n ),\n );\n }\n\n return merge(...observables);\n }).pipe(mergeVisibilityStatuses);\n }\n\n private getCategories(props: Parameters<BaseIdsCache[\"getCategories\"]>[0]): ReturnType<BaseIdsCache[\"getCategories\"]> {\n return from(Id64.iterable(props.modelIds)).pipe(\n mergeMap((modelId) => this.#props.idsCache.getModelCategoryIds(modelId).pipe(map((categoryIds) => ({ id: modelId, spatialCategories: categoryIds })))),\n );\n }\n\n private getAllCategories(): ReturnType<BaseIdsCache[\"getAllCategories\"]> {\n return this.#props.idsCache.getAllCategories().pipe(map((categories) => ({ spatialCategories: categories })));\n }\n\n private getElementsCount(props: Parameters<BaseIdsCache[\"getElementsCount\"]>[0]): ReturnType<BaseIdsCache[\"getElementsCount\"]> {\n return this.#props.idsCache.getCategoryElementsCount(props.modelId, props.categoryId);\n }\n\n private getModels(props: Parameters<BaseIdsCache[\"getModels\"]>[0]): ReturnType<BaseIdsCache[\"getModels\"]> {\n return this.#props.idsCache.getCategoriesElementModels(props.categoryIds);\n }\n\n private getSubCategories(props: Parameters<BaseIdsCache[\"getSubCategories\"]>[0]): ReturnType<BaseIdsCache[\"getSubCategories\"]> {\n return this.#props.idsCache.getSubCategories(props.categoryId);\n }\n\n private getSubModels(props: Parameters<BaseIdsCache[\"getSubModels\"]>[0]): ReturnType<BaseIdsCache[\"getSubModels\"]> {\n if (\"modelIds\" in props) {\n return from(Id64.iterable(props.modelIds)).pipe(\n mergeMap((modelId) => {\n if (props.categoryId) {\n return this.#props.idsCache.getCategoriesModeledElements(modelId, props.categoryId).pipe(map((subModels) => ({ id: modelId, subModels })));\n }\n return this.#props.idsCache.getModelCategoryIds(modelId).pipe(\n mergeMap((categoryIds) => this.#props.idsCache.getCategoriesModeledElements(modelId, categoryIds)),\n map((subModels) => ({ id: modelId, subModels })),\n );\n }),\n );\n }\n\n if (props.modelId) {\n return from(Id64.iterable(props.categoryIds)).pipe(\n mergeMap((categoryId) =>\n this.#props.idsCache.getCategoriesModeledElements(props.modelId!, categoryId).pipe(map((subModels) => ({ id: categoryId, subModels }))),\n ),\n );\n }\n\n return this.#props.idsCache.getCategoriesElementModels(props.categoryIds).pipe(\n mergeMap(({ id, models }) => {\n if (!models) {\n return of({ id, subModels: undefined });\n }\n return from(models).pipe(\n mergeMap((modelId) => this.#props.idsCache.getCategoriesModeledElements(modelId, id)),\n map((subModels) => ({ id, subModels })),\n );\n }),\n );\n }\n}\n\n/**\n * Creates models tree visibility handler. Is used by integration and performance tests.\n * @internal\n */\nexport function createModelsTreeVisibilityHandler(props: {\n viewport: TreeWidgetViewport;\n idsCache: ModelsTreeIdsCache;\n imodelAccess: ECClassHierarchyInspector;\n overrides?: ModelsTreeVisibilityHandlerOverrides;\n searchPaths?: HierarchySearchPath[];\n}) {\n return new HierarchyVisibilityHandlerImpl<ModelsTreeSearchTargets>({\n getSearchResultsTree: (): undefined | Promise<SearchResultsTree<ModelsTreeSearchTargets>> => {\n if (!props.searchPaths) {\n return undefined;\n }\n return createModelsSearchResultsTree({\n searchPaths: props.searchPaths,\n imodelAccess: props.imodelAccess,\n });\n },\n getTreeSpecificVisibilityHandler: (info, overrideHandler) => {\n return new ModelsTreeVisibilityHandler({\n alwaysAndNeverDrawnElementInfo: info,\n idsCache: props.idsCache,\n viewport: props.viewport,\n overrideHandler,\n overrides: props.overrides,\n });\n },\n viewport: props.viewport,\n componentId: Guid.createValue(),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ModelsTreeVisibilityHandler.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.ts"],"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 { concat, defer, EMPTY, from, map, merge, mergeAll, mergeMap, of } from \"rxjs\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport { HierarchyNodeKey } from \"@itwin/presentation-hierarchies\";\nimport { createVisibilityStatus } from \"../../../common/internal/Tooltip.js\";\nimport { HierarchyVisibilityHandlerImpl } from \"../../../common/internal/useTreeHooks/UseCachedVisibility.js\";\nimport { fromWithRelease, getIdsFromChildrenTree, getParentElementsIdsPath, setDifference, setIntersection } from \"../../../common/internal/Utils.js\";\nimport { mergeVisibilityStatuses } from \"../../../common/internal/VisibilityUtils.js\";\nimport { ModelsTreeNodeInternal } from \"../ModelsTreeNodeInternal.js\";\nimport { ModelsTreeVisibilityHelper } from \"./ModelsTreeVisibilityHelper.js\";\nimport { createModelsSearchResultsTree } from \"./SearchResultsTree.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { Id64Arg, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport type { ClassGroupingNodeKey, GroupingHierarchyNode, HierarchyNode, HierarchySearchPath, InstancesNodeKey } from \"@itwin/presentation-hierarchies\";\nimport type { ECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport type { AlwaysAndNeverDrawnElementInfoCache } from \"../../../common/internal/caches/AlwaysAndNeverDrawnElementInfoCache.js\";\nimport type { CategoryId, ElementId, ModelId } from \"../../../common/internal/Types.js\";\nimport type { SearchResultsTree } from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\nimport type { BaseTreeVisibilityHandlerOverrides, TreeSpecificVisibilityHandler } from \"../../../common/internal/visibility/BaseVisibilityHelper.js\";\nimport type { TreeWidgetViewport } from \"../../../common/TreeWidgetViewport.js\";\nimport type {\n HierarchyVisibilityHandlerOverridableMethod,\n HierarchyVisibilityOverrideHandler,\n VisibilityStatus,\n} from \"../../../common/UseHierarchyVisibility.js\";\nimport type { ModelsTreeIdsCache } from \"../ModelsTreeIdsCache.js\";\nimport type { ModelsTreeSearchTargets } from \"./SearchResultsTree.js\";\n\n/**\n * Functionality of Models tree visibility handler that can be overridden.\n * Each callback is provided original implementation and reference to a `HierarchyVisibilityHandler`.\n * @beta\n */\nexport interface ModelsTreeVisibilityHandlerOverrides extends BaseTreeVisibilityHandlerOverrides {\n getSubjectsVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { subjectIds: Id64Arg }) => Promise<VisibilityStatus>>;\n getElementGroupingNodeVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { node: GroupingHierarchyNode }) => Promise<VisibilityStatus>>;\n\n changeSubjectsVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<(props: { subjectIds: Id64Arg; on: boolean }) => Promise<void>>;\n changeElementGroupingNodeVisibilityStatus?: HierarchyVisibilityHandlerOverridableMethod<\n (props: { node: GroupingHierarchyNode; on: boolean }) => Promise<void>\n >;\n}\n\n/** @internal */\nexport interface ModelsTreeVisibilityHandlerProps {\n idsCache: ModelsTreeIdsCache;\n viewport: TreeWidgetViewport;\n alwaysAndNeverDrawnElementInfo: AlwaysAndNeverDrawnElementInfoCache;\n overrideHandler: HierarchyVisibilityOverrideHandler;\n overrides?: ModelsTreeVisibilityHandlerOverrides;\n}\n\n/**\n * Handles visibility status of models tree nodes.\n *\n * It knows how to get and change visibility status of nodes created by hierarchy definition.\n * @internal\n */\nexport class ModelsTreeVisibilityHandler implements Disposable, TreeSpecificVisibilityHandler<ModelsTreeSearchTargets> {\n #visibilityHelper: ModelsTreeVisibilityHelper;\n readonly #props: ModelsTreeVisibilityHandlerProps;\n\n constructor(constructorProps: ModelsTreeVisibilityHandlerProps) {\n this.#props = constructorProps;\n this.#visibilityHelper = new ModelsTreeVisibilityHelper({\n viewport: this.#props.viewport,\n idsCache: this.#props.idsCache,\n alwaysAndNeverDrawnElementInfo: this.#props.alwaysAndNeverDrawnElementInfo,\n overrideHandler: this.#props.overrideHandler,\n baseIdsCache: this.#props.idsCache,\n overrides: this.#props.overrides,\n });\n }\n\n public [Symbol.dispose]() {\n this.#visibilityHelper[Symbol.dispose]();\n }\n\n public changeSearchTargetsVisibilityStatus(targets: ModelsTreeSearchTargets, on: boolean): Observable<void> {\n return defer(() => {\n const { subjectIds, modelIds, categories, elements } = targets;\n const observables = new Array<Observable<void>>();\n if (this.#props.viewport.viewType !== \"3d\") {\n return EMPTY;\n }\n if (subjectIds?.size) {\n observables.push(this.#visibilityHelper.changeSubjectsVisibilityStatus({ subjectIds, on }));\n }\n\n if (modelIds?.size) {\n observables.push(this.#visibilityHelper.changeModelsVisibilityStatus({ modelIds, on }));\n }\n\n if (categories?.length) {\n observables.push(\n from(categories).pipe(\n mergeMap(({ modelId, categoryIds }) =>\n this.#visibilityHelper.changeCategoriesVisibilityStatus({\n categoryIds,\n modelId,\n on,\n }),\n ),\n ),\n );\n }\n\n if (elements?.length) {\n const searchTargetElements = new Array<Id64String>();\n const elementIdsSet = new Set<Id64String>();\n const modelCategoryElementMap = new Map<`${ModelId}-${CategoryId}`, Array<ElementId>>();\n // elements is an array that stores elements grouped by:\n // 1. Their path\n // 2. Their modelId and categoryId\n // When changing visibility of elements, visibility handler does not care about the path.\n // So we can first get all elements and group them only by modelId and categoryId.\n for (const { elements: elementsMap, categoryId, modelId } of elements) {\n const key: `${ModelId}-${CategoryId}` = `${modelId}-${categoryId}`;\n let mapEntry = modelCategoryElementMap.get(key);\n if (!mapEntry) {\n mapEntry = [];\n modelCategoryElementMap.set(key, mapEntry);\n }\n for (const [elementId, { isSearchTarget }] of elementsMap) {\n mapEntry.push(elementId);\n elementIdsSet.add(elementId);\n if (isSearchTarget) {\n searchTargetElements.push(elementId);\n }\n }\n }\n observables.push(\n // Get children for search targets, since non search targets don't have all the children present in the hierarchy.\n this.#props.idsCache.getChildElementsTree({ elementIds: searchTargetElements }).pipe(\n // Need to filter out and keep only those children ids that are not part of elements that are present in search paths.\n // Elements in search paths will have their visibility changed directly: they will be provided as elementIds to changeElementsVisibilityStatus.\n map((childrenTree) => ({\n childrenNotInSearchPaths: setDifference(getIdsFromChildrenTree({ tree: childrenTree, predicate: ({ depth }) => depth > 0 }), elementIdsSet),\n childrenTree,\n })),\n mergeMap(({ childrenNotInSearchPaths, childrenTree }) =>\n fromWithRelease({ source: modelCategoryElementMap.entries(), size: modelCategoryElementMap.size, releaseOnCount: 50 }).pipe(\n mergeMap(([key, elementsInSearchPathsGroupedByModelAndCategory]) => {\n const [modelId, categoryId] = key.split(\"-\");\n const childrenIds = new Set<Id64String>();\n // A shared children tree was created, need to get the children for each element in the group.\n for (const elementId of elementsInSearchPathsGroupedByModelAndCategory) {\n const elementChildrenTree = childrenTree.get(elementId)?.children;\n if (!elementChildrenTree) {\n continue;\n }\n for (const childId of getIdsFromChildrenTree({ tree: elementChildrenTree })) {\n childrenIds.add(childId);\n }\n }\n return this.#visibilityHelper.changeElementsVisibilityStatus({\n modelId,\n categoryId,\n elementIds: elementsInSearchPathsGroupedByModelAndCategory,\n // Pass only those children that are not part of search paths.\n children: setIntersection(childrenIds, childrenNotInSearchPaths),\n on,\n });\n }),\n ),\n ),\n ),\n );\n }\n\n return merge(...observables);\n });\n }\n\n public getVisibilityStatus(node: HierarchyNode): Observable<VisibilityStatus> {\n if (this.#props.viewport.viewType !== \"3d\") {\n return of(createVisibilityStatus(\"disabled\"));\n }\n\n if (ModelsTreeNodeInternal.isElementClassGroupingNode(node)) {\n const result = this.#visibilityHelper.getGroupedElementsVisibilityStatus({\n categoryId: node.extendedData.categoryId,\n modelId: node.extendedData.modelId,\n elementIds: node.groupedInstanceKeys.map((key) => key.id),\n parentKeys: node.parentKeys,\n childrenCount: node.extendedData.childrenCount,\n categoryOfTopMostParentElement: node.extendedData.categoryOfTopMostParentElement,\n topMostParentElementId: node.extendedData.topMostParentElementId,\n });\n return this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: { node },\n nonOverriddenResult: result,\n override: this.#props.overrides?.getElementGroupingNodeVisibilityStatus,\n });\n }\n\n if (ModelsTreeNodeInternal.isSubjectNode(node)) {\n // note: subject nodes may be merged to represent multiple subject instances\n return this.#visibilityHelper.getSubjectsVisibilityStatus({ subjectIds: node.key.instanceKeys.map((key) => key.id) });\n }\n\n if (ModelsTreeNodeInternal.isModelNode(node)) {\n return this.#visibilityHelper.getModelsVisibilityStatus({ modelIds: node.key.instanceKeys.map(({ id }) => id) });\n }\n\n if (ModelsTreeNodeInternal.isCategoryNode(node)) {\n return this.#visibilityHelper.getCategoriesVisibilityStatus({\n categoryIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelIds[0],\n });\n }\n\n assert(ModelsTreeNodeInternal.isElementNode(node));\n const parentElementsIdsPath = getParentElementsIdsPath({\n parentInstanceKeys: node.parentKeys.filter((key) => HierarchyNodeKey.isInstances(key)).map((key) => key.instanceKeys),\n topMostParentElementId: node.extendedData.topMostParentElementId,\n });\n return this.#visibilityHelper.getElementsVisibilityStatus({\n elementIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelId,\n categoryId: node.extendedData.categoryId,\n parentElementsIdsPath,\n childrenCount: node.extendedData?.childrenCount,\n categoryOfTopMostParentElement: node.extendedData.categoryOfTopMostParentElement,\n });\n }\n\n /** Changes visibility of the items represented by the tree node. */\n public changeVisibilityStatus(node: HierarchyNode, on: boolean): Observable<void> {\n const changeObs = defer(() => {\n if (this.#props.viewport.viewType !== \"3d\") {\n return EMPTY;\n }\n if (ModelsTreeNodeInternal.isElementClassGroupingNode(node)) {\n const result = this.#visibilityHelper.changeGroupedElementsVisibilityStatus({\n categoryId: node.extendedData.categoryId,\n modelId: node.extendedData.modelId,\n elementIds: node.groupedInstanceKeys.map((key) => key.id),\n on,\n });\n return this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: { node, on },\n nonOverriddenResult: result,\n override: this.#props.overrides?.changeElementGroupingNodeVisibilityStatus,\n });\n }\n\n if (ModelsTreeNodeInternal.isSubjectNode(node)) {\n return this.#visibilityHelper.changeSubjectsVisibilityStatus({\n subjectIds: node.key.instanceKeys.map((key) => key.id),\n on,\n });\n }\n\n if (ModelsTreeNodeInternal.isModelNode(node)) {\n return this.#visibilityHelper.changeModelsVisibilityStatus({ modelIds: node.key.instanceKeys.map(({ id }) => id), on });\n }\n\n if (ModelsTreeNodeInternal.isCategoryNode(node)) {\n return this.#visibilityHelper.changeCategoriesVisibilityStatus({\n categoryIds: node.key.instanceKeys.map(({ id }) => id),\n modelId: node.extendedData.modelIds[0],\n on,\n });\n }\n\n assert(ModelsTreeNodeInternal.isElementNode(node));\n const elementIds = node.key.instanceKeys.map(({ id }) => id);\n return this.#props.idsCache.getChildElementsTree({ elementIds }).pipe(\n map((childrenTree): Id64Set => {\n // Children tree contains provided elementIds, they are at the root of this tree.\n // We want to skip them and only get ids of children.\n return getIdsFromChildrenTree({ tree: childrenTree, predicate: ({ depth }) => depth > 0 });\n }),\n mergeMap((children) =>\n this.#visibilityHelper.changeElementsVisibilityStatus({\n elementIds,\n modelId: node.extendedData.modelId,\n children: children.size > 0 ? children : undefined,\n categoryId: node.extendedData.categoryId,\n on,\n }),\n ),\n );\n });\n\n if (this.#props.viewport.isAlwaysDrawnExclusive) {\n return concat(this.#visibilityHelper.removeAlwaysDrawnExclusive(), changeObs);\n }\n return changeObs;\n }\n\n public getSearchTargetsVisibilityStatus(\n targets: ModelsTreeSearchTargets,\n node: HierarchyNode & {\n key: ClassGroupingNodeKey | InstancesNodeKey;\n },\n ): Observable<VisibilityStatus> {\n if (this.#props.viewport.viewType !== \"3d\") {\n return of(createVisibilityStatus(\"disabled\"));\n }\n return defer(() => {\n const { subjectIds, modelIds, categories, elements } = targets;\n const observables = new Array<Observable<VisibilityStatus>>();\n if (subjectIds?.size) {\n observables.push(this.#visibilityHelper.getSubjectsVisibilityStatus({ subjectIds }));\n }\n\n if (modelIds?.size) {\n observables.push(this.#visibilityHelper.getModelsVisibilityStatus({ modelIds }));\n }\n\n if (categories?.length) {\n observables.push(\n from(categories).pipe(\n mergeMap(({ modelId, categoryIds }) =>\n this.#visibilityHelper.getCategoriesVisibilityStatus({\n categoryIds,\n modelId,\n }),\n ),\n ),\n );\n }\n\n if (elements?.length) {\n const searchTargetElements = new Array<Id64String>();\n for (const { elements: elementsMap } of elements) {\n for (const [elementId, { isSearchTarget }] of elementsMap) {\n if (isSearchTarget) {\n searchTargetElements.push(elementId);\n }\n }\n }\n let childrenCountMapObs: Observable<Map<Id64String, number>>;\n if (ModelsTreeNodeInternal.isElementClassGroupingNode(node)) {\n const groupingNodesSearchTargets: Map<Id64String, { childrenCount: number }> | undefined = node.extendedData.searchTargets;\n const nestedSearchTargetElements = searchTargetElements.filter((searchTarget) => !groupingNodesSearchTargets?.has(searchTarget));\n // Only need to request children count for indirect children search targets.\n childrenCountMapObs = this.#props.idsCache.getAllChildElementsCount({ elementIds: nestedSearchTargetElements }).pipe(\n map((elementCountMap) => {\n // Direct children search targets already have children count stored in grouping nodes extended data.\n for (const [key, value] of node.extendedData.searchTargets ?? []) {\n elementCountMap.set(key, value.childrenCount);\n }\n return elementCountMap;\n }),\n );\n } else {\n childrenCountMapObs = this.#props.idsCache.getAllChildElementsCount({ elementIds: searchTargetElements });\n }\n observables.push(\n childrenCountMapObs.pipe(\n mergeMap((elementsChildrenCountMap) =>\n fromWithRelease({ source: elements, releaseOnCount: 50 }).pipe(\n mergeMap(({ modelId, elements: elementsMap, categoryId, pathToElements, topMostParentElementId }) => {\n const parentElementsIdsPath = topMostParentElementId\n ? getParentElementsIdsPath({\n parentInstanceKeys: pathToElements.map((instanceKey) => [instanceKey]),\n topMostParentElementId,\n })\n : [];\n let totalSearchTargetsChildrenCount = 0;\n const nonSearchTargetIds = new Array<Id64String>();\n const searchTargetIds = new Array<Id64String>();\n for (const [elementId, { isSearchTarget }] of elementsMap) {\n if (!isSearchTarget) {\n nonSearchTargetIds.push(elementId);\n continue;\n }\n searchTargetIds.push(elementId);\n const childCount = elementsChildrenCountMap.get(elementId);\n if (childCount) {\n totalSearchTargetsChildrenCount += childCount;\n }\n }\n return merge(\n searchTargetIds.length > 0\n ? this.#visibilityHelper.getElementsVisibilityStatus({\n modelId,\n categoryId,\n elementIds: searchTargetIds,\n parentElementsIdsPath,\n childrenCount: totalSearchTargetsChildrenCount,\n // Search results tree is created on search paths. Since search paths contain only categories that are directly under models\n // or at the root, categoryId can be used here here.\n categoryOfTopMostParentElement: categoryId,\n })\n : EMPTY,\n // Set childrenCount to undefined for non search targets, as some of their child elements might be filtered out.\n // Since childrenCount is set to undefined, these elements won't check child always/never drawn child elements status.\n // Child always/never drawn elements will be in search paths, and their visibility status will be handled separately.\n nonSearchTargetIds.length > 0\n ? this.#visibilityHelper.getElementsVisibilityStatus({\n modelId,\n categoryId,\n elementIds: nonSearchTargetIds,\n parentElementsIdsPath,\n childrenCount: undefined,\n // Search results tree is created on search paths. Since search paths contain only categories that are directly under models\n // or at the root, categoryId can be used here here.\n categoryOfTopMostParentElement: categoryId,\n })\n : EMPTY,\n ).pipe(mergeVisibilityStatuses());\n }),\n ),\n ),\n ),\n );\n }\n\n return from(observables).pipe(mergeAll(), mergeVisibilityStatuses());\n });\n }\n}\n\n/**\n * Creates models tree visibility handler. Is used by integration and performance tests.\n * @internal\n */\nexport function createModelsTreeVisibilityHandler(props: {\n viewport: TreeWidgetViewport;\n idsCache: ModelsTreeIdsCache;\n imodelAccess: ECClassHierarchyInspector;\n overrides?: ModelsTreeVisibilityHandlerOverrides;\n searchPaths?: HierarchySearchPath[];\n}) {\n return new HierarchyVisibilityHandlerImpl<ModelsTreeSearchTargets>({\n getSearchResultsTree: (): undefined | Promise<SearchResultsTree<ModelsTreeSearchTargets>> => {\n if (!props.searchPaths) {\n return undefined;\n }\n return createModelsSearchResultsTree({\n searchPaths: props.searchPaths,\n imodelAccess: props.imodelAccess,\n });\n },\n getTreeSpecificVisibilityHandler: (info, overrideHandler) => {\n return new ModelsTreeVisibilityHandler({\n alwaysAndNeverDrawnElementInfo: info,\n idsCache: props.idsCache,\n viewport: props.viewport,\n overrideHandler,\n overrides: props.overrides,\n });\n },\n viewport: props.viewport,\n componentId: Guid.createValue(),\n });\n}\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { HierarchyNodeKey } from "@itwin/presentation-hierarchies";
|
|
1
2
|
import { BaseVisibilityHelper } from "../../../common/internal/visibility/BaseVisibilityHelper.js";
|
|
2
3
|
import type { Observable } from "rxjs";
|
|
3
4
|
import type { Id64Arg, Id64String } from "@itwin/core-bentley";
|
|
5
|
+
import type { CategoryId, ElementId } from "../../../common/internal/Types.js";
|
|
4
6
|
import type { BaseVisibilityHelperProps } from "../../../common/internal/visibility/BaseVisibilityHelper.js";
|
|
5
7
|
import type { VisibilityStatus } from "../../../common/UseHierarchyVisibility.js";
|
|
6
8
|
import type { ModelsTreeIdsCache } from "../ModelsTreeIdsCache.js";
|
|
@@ -32,6 +34,10 @@ export declare class ModelsTreeVisibilityHelper extends BaseVisibilityHelper {
|
|
|
32
34
|
modelId: Id64String;
|
|
33
35
|
categoryId: Id64String;
|
|
34
36
|
elementIds: Id64Arg;
|
|
37
|
+
parentKeys: HierarchyNodeKey[];
|
|
38
|
+
childrenCount: number;
|
|
39
|
+
categoryOfTopMostParentElement: CategoryId;
|
|
40
|
+
topMostParentElementId?: ElementId;
|
|
35
41
|
}): Observable<VisibilityStatus>;
|
|
36
42
|
/**
|
|
37
43
|
* Changes visibility status of subjects.
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { defer,
|
|
5
|
+
import { defaultIfEmpty, defer, map, mergeMap } from "rxjs";
|
|
6
|
+
import { HierarchyNodeKey } from "@itwin/presentation-hierarchies";
|
|
6
7
|
import { createVisibilityStatus } from "../../../common/internal/Tooltip.js";
|
|
8
|
+
import { getIdsFromChildrenTree, getParentElementsIdsPath } from "../../../common/internal/Utils.js";
|
|
7
9
|
import { BaseVisibilityHelper } from "../../../common/internal/visibility/BaseVisibilityHelper.js";
|
|
8
10
|
import { mergeVisibilityStatuses } from "../../../common/internal/VisibilityUtils.js";
|
|
9
11
|
/**
|
|
@@ -26,10 +28,7 @@ export class ModelsTreeVisibilityHelper extends BaseVisibilityHelper {
|
|
|
26
28
|
getSubjectsVisibilityStatus(props) {
|
|
27
29
|
const result = defer(() => {
|
|
28
30
|
const { subjectIds } = props;
|
|
29
|
-
|
|
30
|
-
return of(createVisibilityStatus("disabled"));
|
|
31
|
-
}
|
|
32
|
-
return this.#props.idsCache.getSubjectModelIds(subjectIds).pipe(mergeMap((modelIds) => this.getModelsVisibilityStatus({ modelIds, type: "GeometricModel3d" })), mergeVisibilityStatuses);
|
|
31
|
+
return this.#props.idsCache.getSubjectModelIds(subjectIds).pipe(mergeMap((modelIds) => this.getModelsVisibilityStatus({ modelIds })), mergeVisibilityStatuses(), defaultIfEmpty(createVisibilityStatus("disabled")));
|
|
33
32
|
});
|
|
34
33
|
return this.#props.overrideHandler
|
|
35
34
|
? this.#props.overrideHandler.createVisibilityHandlerResult({
|
|
@@ -41,8 +40,21 @@ export class ModelsTreeVisibilityHelper extends BaseVisibilityHelper {
|
|
|
41
40
|
}
|
|
42
41
|
/** Gets visibility status of grouped elements */
|
|
43
42
|
getGroupedElementsVisibilityStatus(props) {
|
|
44
|
-
const { modelId, categoryId, elementIds } = props;
|
|
45
|
-
|
|
43
|
+
const { modelId, categoryId, elementIds, parentKeys, categoryOfTopMostParentElement, childrenCount, topMostParentElementId } = props;
|
|
44
|
+
const parentElementsIdsPath = topMostParentElementId
|
|
45
|
+
? getParentElementsIdsPath({
|
|
46
|
+
parentInstanceKeys: parentKeys.filter((key) => HierarchyNodeKey.isInstances(key)).map((key) => key.instanceKeys),
|
|
47
|
+
topMostParentElementId,
|
|
48
|
+
})
|
|
49
|
+
: [];
|
|
50
|
+
return this.getElementsVisibilityStatus({
|
|
51
|
+
elementIds,
|
|
52
|
+
modelId,
|
|
53
|
+
categoryId,
|
|
54
|
+
parentElementsIdsPath,
|
|
55
|
+
childrenCount,
|
|
56
|
+
categoryOfTopMostParentElement,
|
|
57
|
+
});
|
|
46
58
|
}
|
|
47
59
|
/**
|
|
48
60
|
* Changes visibility status of subjects.
|
|
@@ -65,7 +77,7 @@ export class ModelsTreeVisibilityHelper extends BaseVisibilityHelper {
|
|
|
65
77
|
/** Changes visibility of grouped elements. */
|
|
66
78
|
changeGroupedElementsVisibilityStatus(props) {
|
|
67
79
|
const { modelId, categoryId, elementIds, on } = props;
|
|
68
|
-
return this.changeElementsVisibilityStatus({ modelId, elementIds, categoryId, on });
|
|
80
|
+
return this.#props.idsCache.getChildElementsTree({ elementIds }).pipe(map((childrenTree) => getIdsFromChildrenTree({ tree: childrenTree, predicate: ({ depth }) => depth > 0 })), mergeMap((children) => this.changeElementsVisibilityStatus({ modelId, elementIds, categoryId, on, children })));
|
|
69
81
|
}
|
|
70
82
|
}
|
|
71
83
|
//# sourceMappingURL=ModelsTreeVisibilityHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsTreeVisibilityHelper.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ModelsTreeVisibilityHelper.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.ts"],"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 { defaultIfEmpty, defer, map, mergeMap } from \"rxjs\";\nimport { HierarchyNodeKey } from \"@itwin/presentation-hierarchies\";\nimport { createVisibilityStatus } from \"../../../common/internal/Tooltip.js\";\nimport { getIdsFromChildrenTree, getParentElementsIdsPath } from \"../../../common/internal/Utils.js\";\nimport { BaseVisibilityHelper } from \"../../../common/internal/visibility/BaseVisibilityHelper.js\";\nimport { mergeVisibilityStatuses } from \"../../../common/internal/VisibilityUtils.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { Id64Arg, Id64String } from \"@itwin/core-bentley\";\nimport type { CategoryId, ElementId } from \"../../../common/internal/Types.js\";\nimport type { BaseVisibilityHelperProps } from \"../../../common/internal/visibility/BaseVisibilityHelper.js\";\nimport type { VisibilityStatus } from \"../../../common/UseHierarchyVisibility.js\";\nimport type { ModelsTreeIdsCache } from \"../ModelsTreeIdsCache.js\";\nimport type { ModelsTreeVisibilityHandlerOverrides } from \"./ModelsTreeVisibilityHandler.js\";\n\n/** @internal */\nexport type ModelsTreeVisibilityHelperProps = BaseVisibilityHelperProps & {\n idsCache: ModelsTreeIdsCache;\n overrides?: ModelsTreeVisibilityHandlerOverrides;\n};\n\n/**\n * Visibility status helper for models tree.\n *\n * It extends base visibility status helper and provides methods to get and change visibility status of subjects and grouped elements.\n * @internal\n */\nexport class ModelsTreeVisibilityHelper extends BaseVisibilityHelper {\n #props: ModelsTreeVisibilityHelperProps;\n constructor(props: ModelsTreeVisibilityHelperProps) {\n super(props);\n this.#props = props;\n }\n\n /**\n * Gets visibility status of subjects.\n *\n * Determines visibility status by checking visibility status of related models.\n */\n public getSubjectsVisibilityStatus(props: { subjectIds: Id64Arg }): Observable<VisibilityStatus> {\n const result = defer(() => {\n const { subjectIds } = props;\n\n return this.#props.idsCache.getSubjectModelIds(subjectIds).pipe(\n mergeMap((modelIds) => this.getModelsVisibilityStatus({ modelIds })),\n mergeVisibilityStatuses(),\n defaultIfEmpty(createVisibilityStatus(\"disabled\")),\n );\n });\n return this.#props.overrideHandler\n ? this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: props,\n nonOverriddenResult: result,\n override: this.#props.overrides?.getSubjectsVisibilityStatus,\n })\n : result;\n }\n\n /** Gets visibility status of grouped elements */\n public getGroupedElementsVisibilityStatus(props: {\n modelId: Id64String;\n categoryId: Id64String;\n elementIds: Id64Arg;\n parentKeys: HierarchyNodeKey[];\n childrenCount: number;\n categoryOfTopMostParentElement: CategoryId;\n topMostParentElementId?: ElementId;\n }): Observable<VisibilityStatus> {\n const { modelId, categoryId, elementIds, parentKeys, categoryOfTopMostParentElement, childrenCount, topMostParentElementId } = props;\n const parentElementsIdsPath = topMostParentElementId\n ? getParentElementsIdsPath({\n parentInstanceKeys: parentKeys.filter((key) => HierarchyNodeKey.isInstances(key)).map((key) => key.instanceKeys),\n topMostParentElementId,\n })\n : [];\n return this.getElementsVisibilityStatus({\n elementIds,\n modelId,\n categoryId,\n parentElementsIdsPath,\n childrenCount,\n categoryOfTopMostParentElement,\n });\n }\n\n /**\n * Changes visibility status of subjects.\n *\n * Does this by changing visibility status of related models.\n */\n public changeSubjectsVisibilityStatus(props: { subjectIds: Id64Arg; on: boolean }): Observable<void> {\n const result = defer(() => {\n const { on, subjectIds } = props;\n return this.#props.idsCache.getSubjectModelIds(subjectIds).pipe(mergeMap((modelIds) => this.changeModelsVisibilityStatus({ modelIds, on })));\n });\n return this.#props.overrideHandler\n ? this.#props.overrideHandler.createVisibilityHandlerResult({\n overrideProps: props,\n nonOverriddenResult: result,\n override: this.#props.overrides?.changeSubjectsVisibilityStatus,\n })\n : result;\n }\n\n /** Changes visibility of grouped elements. */\n public changeGroupedElementsVisibilityStatus(props: { modelId: Id64String; categoryId: Id64String; elementIds: Id64Arg; on: boolean }): Observable<void> {\n const { modelId, categoryId, elementIds, on } = props;\n return this.#props.idsCache.getChildElementsTree({ elementIds }).pipe(\n map((childrenTree) => getIdsFromChildrenTree({ tree: childrenTree, predicate: ({ depth }) => depth > 0 })),\n mergeMap((children) => this.changeElementsVisibilityStatus({ modelId, elementIds, categoryId, on, children })),\n );\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Id64Set, Id64String } from "@itwin/core-bentley";
|
|
2
2
|
import type { HierarchySearchPath } from "@itwin/presentation-hierarchies";
|
|
3
|
-
import type { ECClassHierarchyInspector } from "@itwin/presentation-shared";
|
|
3
|
+
import type { ECClassHierarchyInspector, InstanceKey } from "@itwin/presentation-shared";
|
|
4
4
|
import type { ElementId } from "../../../common/internal/Types.js";
|
|
5
5
|
import type { SearchResultsTree } from "../../../common/internal/visibility/BaseSearchResultsTree.js";
|
|
6
6
|
/** @internal */
|
|
@@ -8,15 +8,17 @@ export interface ModelsTreeSearchTargets {
|
|
|
8
8
|
subjectIds?: Id64Set;
|
|
9
9
|
modelIds?: Id64Set;
|
|
10
10
|
categories?: Array<{
|
|
11
|
-
modelId: Id64String
|
|
11
|
+
modelId: Id64String;
|
|
12
12
|
categoryIds: Id64Set;
|
|
13
13
|
}>;
|
|
14
14
|
elements?: Array<{
|
|
15
|
+
pathToElements: InstanceKey[];
|
|
15
16
|
modelId: Id64String;
|
|
16
17
|
categoryId: Id64String;
|
|
17
18
|
elements: Map<ElementId, {
|
|
18
19
|
isSearchTarget: boolean;
|
|
19
20
|
}>;
|
|
21
|
+
topMostParentElementId?: Id64String;
|
|
20
22
|
}>;
|
|
21
23
|
}
|
|
22
24
|
/** @internal */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { assert } from "@itwin/core-bentley";
|
|
6
|
-
import { CLASS_NAME_Category, CLASS_NAME_Model, CLASS_NAME_Subject } from "../../../common/internal/ClassNameDefinitions.js";
|
|
6
|
+
import { CLASS_NAME_Category, CLASS_NAME_GeometricElement3d, CLASS_NAME_Model, CLASS_NAME_Subject } from "../../../common/internal/ClassNameDefinitions.js";
|
|
7
7
|
import { createSearchResultsTree, SearchResultsNodesHandler } from "../../../common/internal/visibility/BaseSearchResultsTree.js";
|
|
8
8
|
/** @internal */
|
|
9
9
|
export async function createModelsSearchResultsTree(props) {
|
|
@@ -25,6 +25,29 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
25
25
|
return this.convertInternalSearchTargets(searchTargets);
|
|
26
26
|
}
|
|
27
27
|
async getProcessedSearchResultsNodes() { }
|
|
28
|
+
convertInternalSearchTargetElementsRecursively(searchTargetsInternalElements, currentPath) {
|
|
29
|
+
const result = [];
|
|
30
|
+
// Internal search target elements are stored in a tree structure, need to convert that to array structure.
|
|
31
|
+
for (const [identifierAsString, entry] of searchTargetsInternalElements) {
|
|
32
|
+
const identifier = this.convertSearchResultsNodeIdentifierStringToHierarchyNodeIdentifier(identifierAsString);
|
|
33
|
+
if (entry.modelCategoryElements) {
|
|
34
|
+
for (const [modelCategoryKey, elements] of entry.modelCategoryElements) {
|
|
35
|
+
const { modelId, categoryId } = this.parseModelCategoryKey(modelCategoryKey);
|
|
36
|
+
result.push({
|
|
37
|
+
pathToElements: [...currentPath, identifier],
|
|
38
|
+
modelId,
|
|
39
|
+
categoryId,
|
|
40
|
+
elements,
|
|
41
|
+
topMostParentElementId: entry.topMostParentElementId,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (entry.children) {
|
|
46
|
+
this.convertInternalSearchTargetElementsRecursively(entry.children, [...currentPath, identifier]).forEach((childValue) => result.push(childValue));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
28
51
|
convertInternalSearchTargets(searchTargets) {
|
|
29
52
|
if (!searchTargets.categories && !searchTargets.subjectIds && !searchTargets.elements && !searchTargets.modelIds) {
|
|
30
53
|
return undefined;
|
|
@@ -35,12 +58,7 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
35
58
|
return { modelId, categoryIds };
|
|
36
59
|
})
|
|
37
60
|
: undefined,
|
|
38
|
-
elements: searchTargets.elements
|
|
39
|
-
? [...searchTargets.elements.entries()].map(([modelCategoryKey, elements]) => {
|
|
40
|
-
const { modelId, categoryId } = this.parseModelCategoryKey(modelCategoryKey);
|
|
41
|
-
return { modelId, categoryId, elements };
|
|
42
|
-
})
|
|
43
|
-
: undefined,
|
|
61
|
+
elements: searchTargets.elements ? this.convertInternalSearchTargetElementsRecursively(searchTargets.elements, []) : undefined,
|
|
44
62
|
modelIds: searchTargets.modelIds,
|
|
45
63
|
subjectIds: searchTargets.subjectIds,
|
|
46
64
|
};
|
|
@@ -78,13 +96,37 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
78
96
|
searchTargets.categories.set(node.modelId, new Set([node.id]));
|
|
79
97
|
return;
|
|
80
98
|
case "element":
|
|
99
|
+
// Internal search target elements need to have path saved in some way.
|
|
100
|
+
// For this, a tree structure is used, where keys are stringified identifiers of parent nodes depending on the hierarchy.
|
|
81
101
|
const modelCategoryKey = this.createModelCategoryKey(node.modelId, node.categoryId);
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
102
|
+
searchTargets.elements ??= new Map();
|
|
103
|
+
let entry = searchTargets.elements;
|
|
104
|
+
let topMostParentElementId;
|
|
105
|
+
for (let i = 0; i < node.pathToNode.length; ++i) {
|
|
106
|
+
if (topMostParentElementId === undefined && node.pathToNode[i].type === "element") {
|
|
107
|
+
topMostParentElementId = node.pathToNode[i].id;
|
|
108
|
+
}
|
|
109
|
+
const identifierAsString = this.convertSearchResultsNodeIdentifierToString(node.pathToNode[i]);
|
|
110
|
+
let identifierEntry = entry.get(identifierAsString);
|
|
111
|
+
// create a new entry for parent node if it does not exist
|
|
112
|
+
if (!identifierEntry) {
|
|
113
|
+
identifierEntry = { topMostParentElementId };
|
|
114
|
+
entry.set(identifierAsString, identifierEntry);
|
|
115
|
+
}
|
|
116
|
+
// last entry in the path don't need to have children
|
|
117
|
+
if (i < node.pathToNode.length - 1) {
|
|
118
|
+
identifierEntry.children ??= new Map();
|
|
119
|
+
entry = identifierEntry.children;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// Add elements who share the same path to the modelCategoryElements map
|
|
123
|
+
const elements = (identifierEntry.modelCategoryElements ??= new Map()).get(modelCategoryKey);
|
|
124
|
+
if (elements) {
|
|
125
|
+
elements.set(node.id, { isSearchTarget: node.isSearchTarget });
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
identifierEntry.modelCategoryElements.set(modelCategoryKey, new Map([[node.id, { isSearchTarget: node.isSearchTarget }]]));
|
|
129
|
+
}
|
|
88
130
|
}
|
|
89
131
|
}
|
|
90
132
|
}
|
|
@@ -96,11 +138,14 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
96
138
|
return { modelId, categoryId };
|
|
97
139
|
}
|
|
98
140
|
createSearchResultsTreeNode({ type, id, isSearchTarget, parent, }) {
|
|
141
|
+
const pathToNode = "pathToNode" in parent ? [...parent.pathToNode, { type: parent.type, id: parent.id }] : [];
|
|
99
142
|
if (type === "subject" || type === "model") {
|
|
100
143
|
return {
|
|
101
144
|
id,
|
|
102
145
|
isSearchTarget,
|
|
103
146
|
type,
|
|
147
|
+
pathToNode,
|
|
148
|
+
children: undefined,
|
|
104
149
|
};
|
|
105
150
|
}
|
|
106
151
|
if (type === "category") {
|
|
@@ -110,6 +155,7 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
110
155
|
isSearchTarget,
|
|
111
156
|
type,
|
|
112
157
|
modelId: parent.id,
|
|
158
|
+
pathToNode,
|
|
113
159
|
};
|
|
114
160
|
}
|
|
115
161
|
if ("type" in parent && parent.type === "category") {
|
|
@@ -119,6 +165,7 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
119
165
|
type,
|
|
120
166
|
modelId: parent.modelId,
|
|
121
167
|
categoryId: parent.id,
|
|
168
|
+
pathToNode,
|
|
122
169
|
};
|
|
123
170
|
}
|
|
124
171
|
if ("type" in parent && parent.type === "element") {
|
|
@@ -128,6 +175,7 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
128
175
|
type,
|
|
129
176
|
modelId: parent.modelId,
|
|
130
177
|
categoryId: parent.categoryId,
|
|
178
|
+
pathToNode,
|
|
131
179
|
};
|
|
132
180
|
}
|
|
133
181
|
throw new Error("Invalid parent node type");
|
|
@@ -144,5 +192,17 @@ class ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler {
|
|
|
144
192
|
}
|
|
145
193
|
return "element";
|
|
146
194
|
}
|
|
195
|
+
getClassName(type) {
|
|
196
|
+
switch (type) {
|
|
197
|
+
case "subject":
|
|
198
|
+
return CLASS_NAME_Subject;
|
|
199
|
+
case "model":
|
|
200
|
+
return CLASS_NAME_Model;
|
|
201
|
+
case "category":
|
|
202
|
+
return CLASS_NAME_Category;
|
|
203
|
+
default:
|
|
204
|
+
return CLASS_NAME_GeometricElement3d;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
147
207
|
}
|
|
148
208
|
//# sourceMappingURL=SearchResultsTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultsTree.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.ts"],"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 { assert } from \"@itwin/core-bentley\";\nimport { CLASS_NAME_Category, CLASS_NAME_Model, CLASS_NAME_Subject } from \"../../../common/internal/ClassNameDefinitions.js\";\nimport { createSearchResultsTree, SearchResultsNodesHandler } from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\n\nimport type { Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport type { HierarchySearchPath } from \"@itwin/presentation-hierarchies\";\nimport type { ECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport type { CategoryId, ElementId, ModelId } from \"../../../common/internal/Types.js\";\nimport type { BaseSearchResultsTreeNode, SearchResultsTree, SearchResultsTreeRootNode } from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\n\ninterface GenericSearchResultsTreeNode extends BaseSearchResultsTreeNode<GenericSearchResultsTreeNode> {\n type: \"subject\" | \"model\";\n}\n\ninterface CategorySearchResultsTreeNode extends BaseSearchResultsTreeNode<CategorySearchResultsTreeNode> {\n type: \"category\";\n modelId: Id64String;\n}\n\ninterface ElementSearchResultsTreeNode extends BaseSearchResultsTreeNode<ElementSearchResultsTreeNode> {\n type: \"element\";\n modelId: Id64String;\n categoryId: Id64String;\n}\n\ntype SearchResultsTreeNode = GenericSearchResultsTreeNode | CategorySearchResultsTreeNode | ElementSearchResultsTreeNode;\n\n/** @internal */\nexport interface ModelsTreeSearchTargets {\n subjectIds?: Id64Set;\n modelIds?: Id64Set;\n categories?: Array<{ modelId: Id64String | undefined; categoryIds: Id64Set }>;\n elements?: Array<{ modelId: Id64String; categoryId: Id64String; elements: Map<ElementId, { isSearchTarget: boolean }> }>;\n}\n\n/** @internal */\nexport async function createModelsSearchResultsTree(props: {\n imodelAccess: ECClassHierarchyInspector;\n searchPaths: HierarchySearchPath[];\n}): Promise<SearchResultsTree<ModelsTreeSearchTargets>> {\n const { imodelAccess, searchPaths } = props;\n return createSearchResultsTree({\n searchResultsNodesHandler: new ModelsTreeSearchResultsNodesHandler({ imodelAccess }),\n searchPaths,\n });\n}\n\ninterface SearchTargetsInternal {\n subjectIds?: Id64Set;\n modelIds?: Id64Set;\n categories?: Map<ModelId, Set<CategoryId>>;\n elements?: Map<ModelCategoryKey, Map<ElementId, { isSearchTarget: boolean }>>;\n}\n\ninterface ModelsTreeSearchResultsNodesHandlerProps {\n imodelAccess: ECClassHierarchyInspector;\n}\n\ntype ModelCategoryKey = `${ModelId}-${CategoryId}`;\n\nclass ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler<void, ModelsTreeSearchTargets, SearchResultsTreeNode> {\n readonly #props: ModelsTreeSearchResultsNodesHandlerProps;\n constructor(props: ModelsTreeSearchResultsNodesHandlerProps) {\n super();\n this.#props = props;\n }\n\n public convertNodesToSearchTargets(searchResultsNodes: SearchResultsTreeNode[]): ModelsTreeSearchTargets | undefined {\n const searchTargets: SearchTargetsInternal = {};\n\n searchResultsNodes.forEach((searchResultsNode) => this.collectSearchTargets(searchTargets, searchResultsNode));\n\n return this.convertInternalSearchTargets(searchTargets);\n }\n\n public async getProcessedSearchResultsNodes(): Promise<void> {}\n\n private convertInternalSearchTargets(searchTargets: SearchTargetsInternal): ModelsTreeSearchTargets | undefined {\n if (!searchTargets.categories && !searchTargets.subjectIds && !searchTargets.elements && !searchTargets.modelIds) {\n return undefined;\n }\n\n return {\n categories: searchTargets.categories\n ? [...searchTargets.categories.entries()].map(([modelId, categoryIds]) => {\n return { modelId, categoryIds };\n })\n : undefined,\n elements: searchTargets.elements\n ? [...searchTargets.elements.entries()].map(([modelCategoryKey, elements]) => {\n const { modelId, categoryId } = this.parseModelCategoryKey(modelCategoryKey);\n return { modelId, categoryId, elements };\n })\n : undefined,\n modelIds: searchTargets.modelIds,\n subjectIds: searchTargets.subjectIds,\n };\n }\n\n private collectSearchTargets(searchTargets: SearchTargetsInternal, searchResultsNode: SearchResultsTreeNode) {\n if (searchResultsNode.isSearchTarget) {\n this.addTarget(searchTargets, searchResultsNode);\n return;\n }\n\n if (searchResultsNode.type === \"element\") {\n // need to add parent ids as search target will be an element\n this.addTarget(searchTargets, searchResultsNode);\n }\n\n if (!searchResultsNode.children) {\n return;\n }\n\n for (const child of searchResultsNode.children.values()) {\n this.collectSearchTargets(searchTargets, child);\n }\n }\n\n private addTarget(searchTargets: SearchTargetsInternal, node: SearchResultsTreeNode) {\n switch (node.type) {\n case \"subject\":\n (searchTargets.subjectIds ??= new Set()).add(node.id);\n return;\n case \"model\":\n (searchTargets.modelIds ??= new Set()).add(node.id);\n return;\n case \"category\":\n const categories = (searchTargets.categories ??= new Map()).get(node.modelId);\n if (categories) {\n categories.add(node.id);\n return;\n }\n searchTargets.categories.set(node.modelId, new Set([node.id]));\n return;\n case \"element\":\n const modelCategoryKey = this.createModelCategoryKey(node.modelId, node.categoryId);\n const elements = (searchTargets.elements ??= new Map()).get(modelCategoryKey);\n if (elements) {\n elements.set(node.id, { isSearchTarget: node.isSearchTarget });\n } else {\n searchTargets.elements.set(modelCategoryKey, new Map([[node.id, { isSearchTarget: node.isSearchTarget }]]));\n }\n }\n }\n\n private createModelCategoryKey(modelId: Id64String, categoryId: Id64String): ModelCategoryKey {\n return `${modelId}-${categoryId}`;\n }\n\n private parseModelCategoryKey(key: ModelCategoryKey): { modelId: Id64String; categoryId: Id64String } {\n const [modelId, categoryId] = key.split(\"-\");\n return { modelId, categoryId };\n }\n\n public createSearchResultsTreeNode({\n type,\n id,\n isSearchTarget,\n parent,\n }: {\n type: SearchResultsTreeNode[\"type\"];\n id: string;\n isSearchTarget: boolean;\n parent: SearchResultsTreeNode | SearchResultsTreeRootNode<SearchResultsTreeNode>;\n }): SearchResultsTreeNode {\n if (type === \"subject\" || type === \"model\") {\n return {\n id,\n isSearchTarget,\n type,\n };\n }\n\n if (type === \"category\") {\n assert(\"type\" in parent && parent.type === \"model\");\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.id,\n };\n }\n\n if (\"type\" in parent && parent.type === \"category\") {\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.modelId,\n categoryId: parent.id,\n };\n }\n\n if (\"type\" in parent && parent.type === \"element\") {\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.modelId,\n categoryId: parent.categoryId,\n };\n }\n\n throw new Error(\"Invalid parent node type\");\n }\n\n public async getType(className: string): Promise<SearchResultsTreeNode[\"type\"]> {\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Subject)) {\n return \"subject\";\n }\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Model)) {\n return \"model\";\n }\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Category)) {\n return \"category\";\n }\n return \"element\";\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SearchResultsTree.js","sourceRoot":"","sources":["../../../../../../../../src/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.ts"],"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 { assert } from \"@itwin/core-bentley\";\nimport { CLASS_NAME_Category, CLASS_NAME_GeometricElement3d, CLASS_NAME_Model, CLASS_NAME_Subject } from \"../../../common/internal/ClassNameDefinitions.js\";\nimport { createSearchResultsTree, SearchResultsNodesHandler } from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\n\nimport type { Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport type { HierarchySearchPath } from \"@itwin/presentation-hierarchies\";\nimport type { ECClassHierarchyInspector, InstanceKey } from \"@itwin/presentation-shared\";\nimport type { CategoryId, ElementId, ModelId } from \"../../../common/internal/Types.js\";\nimport type {\n BaseSearchResultsTreeNode,\n SearchResultsNodeIdentifierAsString,\n SearchResultsTree,\n SearchResultsTreeRootNode,\n} from \"../../../common/internal/visibility/BaseSearchResultsTree.js\";\n\ninterface GenericSearchResultsTreeNode extends BaseSearchResultsTreeNode<GenericSearchResultsTreeNode> {\n type: \"subject\" | \"model\";\n}\n\ninterface CategorySearchResultsTreeNode extends BaseSearchResultsTreeNode<CategorySearchResultsTreeNode> {\n type: \"category\";\n modelId: Id64String;\n}\n\ninterface ElementSearchResultsTreeNode extends BaseSearchResultsTreeNode<ElementSearchResultsTreeNode> {\n type: \"element\";\n modelId: Id64String;\n categoryId: Id64String;\n}\n\ntype SearchResultsTreeNode = GenericSearchResultsTreeNode | CategorySearchResultsTreeNode | ElementSearchResultsTreeNode;\n\n/** @internal */\nexport interface ModelsTreeSearchTargets {\n subjectIds?: Id64Set;\n modelIds?: Id64Set;\n categories?: Array<{ modelId: Id64String; categoryIds: Id64Set }>;\n elements?: Array<{\n pathToElements: InstanceKey[];\n modelId: Id64String;\n categoryId: Id64String;\n elements: Map<ElementId, { isSearchTarget: boolean }>;\n topMostParentElementId?: Id64String;\n }>;\n}\n\n/** @internal */\nexport async function createModelsSearchResultsTree(props: {\n imodelAccess: ECClassHierarchyInspector;\n searchPaths: HierarchySearchPath[];\n}): Promise<SearchResultsTree<ModelsTreeSearchTargets>> {\n const { imodelAccess, searchPaths } = props;\n return createSearchResultsTree({\n searchResultsNodesHandler: new ModelsTreeSearchResultsNodesHandler({ imodelAccess }),\n searchPaths,\n });\n}\n\ntype SearchTargetsInternalElements = Map<\n SearchResultsNodeIdentifierAsString,\n {\n children?: SearchTargetsInternalElements;\n topMostParentElementId?: Id64String;\n modelCategoryElements?: Map<ModelCategoryKey, Map<ElementId, { isSearchTarget: boolean }>>;\n }\n>;\n\ninterface SearchTargetsInternal {\n subjectIds?: Id64Set;\n modelIds?: Id64Set;\n categories?: Map<ModelId, Set<CategoryId>>;\n elements?: SearchTargetsInternalElements;\n}\n\ninterface ModelsTreeSearchResultsNodesHandlerProps {\n imodelAccess: ECClassHierarchyInspector;\n}\n\ntype ModelCategoryKey = `${ModelId}-${CategoryId}`;\n\nclass ModelsTreeSearchResultsNodesHandler extends SearchResultsNodesHandler<void, ModelsTreeSearchTargets, SearchResultsTreeNode> {\n readonly #props: ModelsTreeSearchResultsNodesHandlerProps;\n constructor(props: ModelsTreeSearchResultsNodesHandlerProps) {\n super();\n this.#props = props;\n }\n\n public convertNodesToSearchTargets(searchResultsNodes: SearchResultsTreeNode[]): ModelsTreeSearchTargets | undefined {\n const searchTargets: SearchTargetsInternal = {};\n\n searchResultsNodes.forEach((searchResultsNode) => this.collectSearchTargets(searchTargets, searchResultsNode));\n\n return this.convertInternalSearchTargets(searchTargets);\n }\n\n public async getProcessedSearchResultsNodes(): Promise<void> {}\n\n private convertInternalSearchTargetElementsRecursively(\n searchTargetsInternalElements: SearchTargetsInternalElements,\n currentPath: InstanceKey[],\n ): Required<ModelsTreeSearchTargets>[\"elements\"] {\n const result: Required<ModelsTreeSearchTargets>[\"elements\"] = [];\n // Internal search target elements are stored in a tree structure, need to convert that to array structure.\n for (const [identifierAsString, entry] of searchTargetsInternalElements) {\n const identifier = this.convertSearchResultsNodeIdentifierStringToHierarchyNodeIdentifier(identifierAsString);\n if (entry.modelCategoryElements) {\n for (const [modelCategoryKey, elements] of entry.modelCategoryElements) {\n const { modelId, categoryId } = this.parseModelCategoryKey(modelCategoryKey);\n result.push({\n pathToElements: [...currentPath, identifier],\n modelId,\n categoryId,\n elements,\n topMostParentElementId: entry.topMostParentElementId,\n });\n }\n }\n if (entry.children) {\n this.convertInternalSearchTargetElementsRecursively(entry.children, [...currentPath, identifier]).forEach((childValue) => result.push(childValue));\n }\n }\n return result;\n }\n\n private convertInternalSearchTargets(searchTargets: SearchTargetsInternal): ModelsTreeSearchTargets | undefined {\n if (!searchTargets.categories && !searchTargets.subjectIds && !searchTargets.elements && !searchTargets.modelIds) {\n return undefined;\n }\n\n return {\n categories: searchTargets.categories\n ? [...searchTargets.categories.entries()].map(([modelId, categoryIds]) => {\n return { modelId, categoryIds };\n })\n : undefined,\n elements: searchTargets.elements ? this.convertInternalSearchTargetElementsRecursively(searchTargets.elements, []) : undefined,\n modelIds: searchTargets.modelIds,\n subjectIds: searchTargets.subjectIds,\n };\n }\n\n private collectSearchTargets(searchTargets: SearchTargetsInternal, searchResultsNode: SearchResultsTreeNode) {\n if (searchResultsNode.isSearchTarget) {\n this.addTarget(searchTargets, searchResultsNode);\n return;\n }\n\n if (searchResultsNode.type === \"element\") {\n // need to add parent ids as search target will be an element\n this.addTarget(searchTargets, searchResultsNode);\n }\n\n if (!searchResultsNode.children) {\n return;\n }\n\n for (const child of searchResultsNode.children.values()) {\n this.collectSearchTargets(searchTargets, child);\n }\n }\n\n private addTarget(searchTargets: SearchTargetsInternal, node: SearchResultsTreeNode) {\n switch (node.type) {\n case \"subject\":\n (searchTargets.subjectIds ??= new Set()).add(node.id);\n return;\n case \"model\":\n (searchTargets.modelIds ??= new Set()).add(node.id);\n return;\n case \"category\":\n const categories = (searchTargets.categories ??= new Map()).get(node.modelId);\n if (categories) {\n categories.add(node.id);\n return;\n }\n searchTargets.categories.set(node.modelId, new Set([node.id]));\n return;\n case \"element\":\n // Internal search target elements need to have path saved in some way.\n // For this, a tree structure is used, where keys are stringified identifiers of parent nodes depending on the hierarchy.\n const modelCategoryKey = this.createModelCategoryKey(node.modelId, node.categoryId);\n searchTargets.elements ??= new Map();\n let entry = searchTargets.elements;\n let topMostParentElementId: Id64String | undefined;\n for (let i = 0; i < node.pathToNode.length; ++i) {\n if (topMostParentElementId === undefined && node.pathToNode[i].type === \"element\") {\n topMostParentElementId = node.pathToNode[i].id;\n }\n const identifierAsString = this.convertSearchResultsNodeIdentifierToString(node.pathToNode[i]);\n let identifierEntry = entry.get(identifierAsString);\n // create a new entry for parent node if it does not exist\n if (!identifierEntry) {\n identifierEntry = { topMostParentElementId };\n entry.set(identifierAsString, identifierEntry);\n }\n // last entry in the path don't need to have children\n if (i < node.pathToNode.length - 1) {\n identifierEntry.children ??= new Map();\n entry = identifierEntry.children;\n continue;\n }\n\n // Add elements who share the same path to the modelCategoryElements map\n const elements = (identifierEntry.modelCategoryElements ??= new Map()).get(modelCategoryKey);\n if (elements) {\n elements.set(node.id, { isSearchTarget: node.isSearchTarget });\n } else {\n identifierEntry.modelCategoryElements.set(modelCategoryKey, new Map([[node.id, { isSearchTarget: node.isSearchTarget }]]));\n }\n }\n }\n }\n\n private createModelCategoryKey(modelId: Id64String, categoryId: Id64String): ModelCategoryKey {\n return `${modelId}-${categoryId}`;\n }\n\n private parseModelCategoryKey(key: ModelCategoryKey): { modelId: Id64String; categoryId: Id64String } {\n const [modelId, categoryId] = key.split(\"-\");\n return { modelId, categoryId };\n }\n\n public createSearchResultsTreeNode({\n type,\n id,\n isSearchTarget,\n parent,\n }: {\n type: SearchResultsTreeNode[\"type\"];\n id: string;\n isSearchTarget: boolean;\n parent: SearchResultsTreeNode | SearchResultsTreeRootNode<SearchResultsTreeNode>;\n }): SearchResultsTreeNode {\n const pathToNode = \"pathToNode\" in parent ? [...parent.pathToNode, { type: parent.type, id: parent.id }] : [];\n if (type === \"subject\" || type === \"model\") {\n return {\n id,\n isSearchTarget,\n type,\n pathToNode,\n children: undefined,\n };\n }\n\n if (type === \"category\") {\n assert(\"type\" in parent && parent.type === \"model\");\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.id,\n pathToNode,\n };\n }\n\n if (\"type\" in parent && parent.type === \"category\") {\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.modelId,\n categoryId: parent.id,\n pathToNode,\n };\n }\n\n if (\"type\" in parent && parent.type === \"element\") {\n return {\n id,\n isSearchTarget,\n type,\n modelId: parent.modelId,\n categoryId: parent.categoryId,\n pathToNode,\n };\n }\n\n throw new Error(\"Invalid parent node type\");\n }\n\n public async getType(className: string): Promise<SearchResultsTreeNode[\"type\"]> {\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Subject)) {\n return \"subject\";\n }\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Model)) {\n return \"model\";\n }\n if (await this.#props.imodelAccess.classDerivesFrom(className, CLASS_NAME_Category)) {\n return \"category\";\n }\n return \"element\";\n }\n\n public getClassName(type: SearchResultsTreeNode[\"type\"]): string {\n switch (type) {\n case \"subject\":\n return CLASS_NAME_Subject;\n case \"model\":\n return CLASS_NAME_Model;\n case \"category\":\n return CLASS_NAME_Category;\n default:\n return CLASS_NAME_GeometricElement3d;\n }\n }\n}\n"]}
|
|
@@ -8,4 +8,5 @@ export { createCategoriesTreeVisibilityHandler } from "./tree-widget-react/compo
|
|
|
8
8
|
export { ClassificationsTreeDefinition } from "./tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js";
|
|
9
9
|
export { ClassificationsTreeIdsCache } from "./tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js";
|
|
10
10
|
export { releaseMainThreadOnItemsCount } from "./tree-widget-react/components/trees/common/internal/Utils.js";
|
|
11
|
+
export { BaseIdsCache } from "./tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js";
|
|
11
12
|
//# sourceMappingURL=tree-widget-react-internal.d.ts.map
|
|
@@ -14,4 +14,5 @@ export { createCategoriesTreeVisibilityHandler } from "./tree-widget-react/compo
|
|
|
14
14
|
export { ClassificationsTreeDefinition } from "./tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js";
|
|
15
15
|
export { ClassificationsTreeIdsCache } from "./tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js";
|
|
16
16
|
export { releaseMainThreadOnItemsCount } from "./tree-widget-react/components/trees/common/internal/Utils.js";
|
|
17
|
+
export { BaseIdsCache } from "./tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js";
|
|
17
18
|
//# sourceMappingURL=tree-widget-react-internal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-widget-react-internal.js","sourceRoot":"","sources":["../../src/tree-widget-react-internal.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,6IAA6I;AAC7I,qHAAqH;AAErH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,8DAA8D,CAAC;AAEtG,OAAO,EACL,oBAAoB,EACpB,6BAA6B,IAAI,uCAAuC,GACzE,MAAM,0EAA0E,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iFAAiF,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,qGAAqG,CAAC;AAExJ,OAAO,EACL,wBAAwB,EACxB,6BAA6B,IAAI,2CAA2C,GAC7E,MAAM,kFAAkF,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yFAAyF,CAAC;AACjI,OAAO,EAAE,qCAAqC,EAAE,MAAM,6GAA6G,CAAC;AAEpK,OAAO,EAAE,6BAA6B,EAAE,MAAM,4FAA4F,CAAC;AAC3I,OAAO,EAAE,2BAA2B,EAAE,MAAM,mGAAmG,CAAC;AAChJ,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC","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\n// WARNING: This barrel file exports internal APIs only for use by `@itwin/presentation-backend` and `@itwin/presentation-frontend` packages.\n// They should not be used outside of these packages. These APIs may be broken or removed at any time without notice.\n\nexport { toVoidPromise, collect } from \"./tree-widget-react/components/trees/common/internal/Rxjs.js\";\n\nexport {\n ModelsTreeDefinition,\n defaultHierarchyConfiguration as defaultModelsTreeHierarchyConfiguration,\n} from \"./tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js\";\nexport { ModelsTreeIdsCache } from \"./tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js\";\nexport { createModelsTreeVisibilityHandler } from \"./tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js\";\n\nexport {\n CategoriesTreeDefinition,\n defaultHierarchyConfiguration as defaultCategoriesTreeHierarchyConfiguration,\n} from \"./tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js\";\nexport { CategoriesTreeIdsCache } from \"./tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js\";\nexport { createCategoriesTreeVisibilityHandler } from \"./tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js\";\n\nexport { ClassificationsTreeDefinition } from \"./tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js\";\nexport { ClassificationsTreeIdsCache } from \"./tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js\";\nexport { releaseMainThreadOnItemsCount } from \"./tree-widget-react/components/trees/common/internal/Utils.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"tree-widget-react-internal.js","sourceRoot":"","sources":["../../src/tree-widget-react-internal.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,6IAA6I;AAC7I,qHAAqH;AAErH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,8DAA8D,CAAC;AAEtG,OAAO,EACL,oBAAoB,EACpB,6BAA6B,IAAI,uCAAuC,GACzE,MAAM,0EAA0E,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iFAAiF,CAAC;AACrH,OAAO,EAAE,iCAAiC,EAAE,MAAM,qGAAqG,CAAC;AAExJ,OAAO,EACL,wBAAwB,EACxB,6BAA6B,IAAI,2CAA2C,GAC7E,MAAM,kFAAkF,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yFAAyF,CAAC;AACjI,OAAO,EAAE,qCAAqC,EAAE,MAAM,6GAA6G,CAAC;AAEpK,OAAO,EAAE,6BAA6B,EAAE,MAAM,4FAA4F,CAAC;AAC3I,OAAO,EAAE,2BAA2B,EAAE,MAAM,mGAAmG,CAAC;AAChJ,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAE9G,OAAO,EAAE,YAAY,EAAE,MAAM,6EAA6E,CAAC","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\n// WARNING: This barrel file exports internal APIs only for use by `@itwin/presentation-backend` and `@itwin/presentation-frontend` packages.\n// They should not be used outside of these packages. These APIs may be broken or removed at any time without notice.\n\nexport { toVoidPromise, collect } from \"./tree-widget-react/components/trees/common/internal/Rxjs.js\";\n\nexport {\n ModelsTreeDefinition,\n defaultHierarchyConfiguration as defaultModelsTreeHierarchyConfiguration,\n} from \"./tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js\";\nexport { ModelsTreeIdsCache } from \"./tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js\";\nexport { createModelsTreeVisibilityHandler } from \"./tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js\";\n\nexport {\n CategoriesTreeDefinition,\n defaultHierarchyConfiguration as defaultCategoriesTreeHierarchyConfiguration,\n} from \"./tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js\";\nexport { CategoriesTreeIdsCache } from \"./tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js\";\nexport { createCategoriesTreeVisibilityHandler } from \"./tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js\";\n\nexport { ClassificationsTreeDefinition } from \"./tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js\";\nexport { ClassificationsTreeIdsCache } from \"./tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js\";\nexport { releaseMainThreadOnItemsCount } from \"./tree-widget-react/components/trees/common/internal/Utils.js\";\n\nexport { BaseIdsCache } from \"./tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js\";\n"]}
|