@itwin/presentation-hierarchies 2.0.0-alpha.1 → 2.0.0-alpha.11
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 +356 -8
- package/README.md +4 -22
- package/lib/cjs/hierarchies/HierarchyMerge.d.ts +19 -0
- package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +1 -0
- package/lib/cjs/hierarchies/HierarchyMerge.js +43 -0
- package/lib/cjs/hierarchies/HierarchyMerge.js.map +1 -0
- package/lib/cjs/hierarchies/HierarchyNode.d.ts +17 -26
- package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNode.js +1 -21
- package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js +8 -8
- package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts +58 -33
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.js +46 -30
- package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchySearch.d.ts +169 -0
- package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -0
- package/lib/cjs/hierarchies/HierarchySearch.js +259 -0
- package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -0
- package/lib/cjs/hierarchies/Logging.d.ts +1 -1
- package/lib/cjs/hierarchies/Logging.d.ts.map +1 -1
- package/lib/cjs/hierarchies/Logging.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js +3 -3
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +30 -9
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +50 -15
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +203 -76
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +5 -5
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +102 -43
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts +35 -0
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +285 -0
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +9 -11
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +15 -6
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts +5 -5
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +1 -0
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +6 -5
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -3
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +22 -17
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.d.ts +5 -2
- package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.js +12 -1
- package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.js +3 -0
- package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.js.map +1 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts +19 -8
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +6 -5
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Partition.d.ts +2 -1
- package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts +1 -1
- package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/TapOnce.js.map +1 -1
- package/lib/cjs/presentation-hierarchies.d.ts +22 -11
- package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
- package/lib/cjs/presentation-hierarchies.js +8 -6
- package/lib/cjs/presentation-hierarchies.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyMerge.d.ts +19 -0
- package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +1 -0
- package/lib/esm/hierarchies/HierarchyMerge.js +40 -0
- package/lib/esm/hierarchies/HierarchyMerge.js.map +1 -0
- package/lib/esm/hierarchies/HierarchyNode.d.ts +17 -26
- package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.js +1 -21
- package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js +9 -9
- package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.d.ts +58 -33
- package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.js +45 -29
- package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/HierarchySearch.d.ts +169 -0
- package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -0
- package/lib/esm/hierarchies/HierarchySearch.js +254 -0
- package/lib/esm/hierarchies/HierarchySearch.js.map +1 -0
- package/lib/esm/hierarchies/Logging.d.ts +1 -1
- package/lib/esm/hierarchies/Logging.d.ts.map +1 -1
- package/lib/esm/hierarchies/Logging.js.map +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.js +3 -3
- package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +30 -9
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +50 -15
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +204 -78
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +1 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts +5 -5
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +104 -45
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts +35 -0
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js +279 -0
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts +9 -11
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js +13 -5
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/esm/hierarchies/imodel/Utils.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts +5 -5
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +1 -0
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +7 -6
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +5 -4
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +23 -18
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
- package/lib/esm/hierarchies/internal/Common.d.ts +5 -2
- package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/Common.js +11 -1
- package/lib/esm/hierarchies/internal/Common.js.map +1 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.d.ts +1 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.js +3 -0
- package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.d.ts +1 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.js.map +1 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts +19 -8
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +7 -6
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts +1 -1
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Partition.d.ts +2 -1
- package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts +1 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts +1 -1
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +1 -1
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.d.ts +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts +1 -1
- package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/TapOnce.js.map +1 -1
- package/lib/esm/presentation-hierarchies.d.ts +22 -11
- package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
- package/lib/esm/presentation-hierarchies.js +7 -6
- package/lib/esm/presentation-hierarchies.js.map +1 -1
- package/package.json +19 -19
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +0 -110
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.js +0 -215
- package/lib/cjs/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +0 -36
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js +0 -274
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts +0 -110
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.js +0 -210
- package/lib/esm/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +0 -36
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js +0 -268
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ECSQL_COLUMN_NAME_SearchClassName = exports.ECSQL_COLUMN_NAME_SearchECInstanceId = exports.SearchHierarchyDefinition = void 0;
|
|
8
|
+
exports.applyECInstanceIdsSearch = applyECInstanceIdsSearch;
|
|
9
|
+
exports.applyECInstanceIdsSelector = applyECInstanceIdsSelector;
|
|
10
|
+
const rxjs_1 = require("rxjs");
|
|
11
|
+
const presentation_shared_1 = require("@itwin/presentation-shared");
|
|
12
|
+
const HierarchyNodeIdentifier_js_1 = require("../HierarchyNodeIdentifier.js");
|
|
13
|
+
const HierarchyNodeKey_js_1 = require("../HierarchyNodeKey.js");
|
|
14
|
+
const HierarchySearch_js_1 = require("../HierarchySearch.js");
|
|
15
|
+
const IModelHierarchyDefinition_js_1 = require("../imodel/IModelHierarchyDefinition.js");
|
|
16
|
+
const IModelHierarchyNode_js_1 = require("../imodel/IModelHierarchyNode.js");
|
|
17
|
+
const NodeSelectQueryFactory_js_1 = require("../imodel/NodeSelectQueryFactory.js");
|
|
18
|
+
const TreeNodesReader_js_1 = require("../imodel/TreeNodesReader.js");
|
|
19
|
+
const Common_js_1 = require("../internal/Common.js");
|
|
20
|
+
const Partition_js_1 = require("../internal/operators/Partition.js");
|
|
21
|
+
/** @internal */
|
|
22
|
+
class SearchHierarchyDefinition {
|
|
23
|
+
_imodelAccess;
|
|
24
|
+
_source;
|
|
25
|
+
_targetPaths;
|
|
26
|
+
_nodesParser;
|
|
27
|
+
#sourceName;
|
|
28
|
+
constructor(props) {
|
|
29
|
+
this._imodelAccess = props.imodelAccess;
|
|
30
|
+
this._source = props.source;
|
|
31
|
+
this.#sourceName = props.sourceName;
|
|
32
|
+
this._targetPaths = props.targetPaths;
|
|
33
|
+
this._nodesParser = props.nodesParser ?? this._source.parseNode ?? ((row) => (0, rxjs_1.of)((0, TreeNodesReader_js_1.defaultNodesParser)(row)));
|
|
34
|
+
}
|
|
35
|
+
get preProcessNode() {
|
|
36
|
+
return (props) => (this._source.preProcessNode ? this._source.preProcessNode(props) : (0, rxjs_1.of)(props.node)).pipe((0, rxjs_1.filter)((processedNode) => {
|
|
37
|
+
if (processedNode.processingParams?.hideInHierarchy && processedNode.search?.isSearchTarget && !processedNode.search.hasSearchTargetAncestor) {
|
|
38
|
+
// we want to hide target nodes if they have `hideInHierarchy` param, but only if they're not under another search target
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
get postProcessNode() {
|
|
45
|
+
return (props) => (this._source.postProcessNode ? this._source.postProcessNode(props) : (0, rxjs_1.of)(props.node)).pipe((0, rxjs_1.map)((processedNode) => {
|
|
46
|
+
const parentKeysWithoutGroupingNodesLength = processedNode.parentKeys.filter((key) => !HierarchyNodeKey_js_1.HierarchyNodeKey.isGrouping(key)).length;
|
|
47
|
+
const parentKeysLength = processedNode.parentKeys.length;
|
|
48
|
+
const shouldAutoExpand = IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGroupingNode(processedNode)
|
|
49
|
+
? shouldAutoExpandGroupingNodeBasedOnNestedChildren({
|
|
50
|
+
directOrIndirectChildren: processedNode.children,
|
|
51
|
+
parentKeysWithoutGroupingNodesLength,
|
|
52
|
+
parentKeysLength,
|
|
53
|
+
})
|
|
54
|
+
: (processedNode.search?.isSearchTarget && !!processedNode.search.searchTargetOptions?.autoExpand) ||
|
|
55
|
+
processedNode.search?.childrenTargetPaths?.some((path) => (0, HierarchySearch_js_1.shouldAutoExpandBasedOnReveal)({
|
|
56
|
+
reveal: HierarchySearch_js_1.HierarchySearchPath.normalize(path).options?.reveal,
|
|
57
|
+
nodePositionInPath: parentKeysWithoutGroupingNodesLength,
|
|
58
|
+
nodePositionInHierarchy: parentKeysLength,
|
|
59
|
+
}));
|
|
60
|
+
if (shouldAutoExpand) {
|
|
61
|
+
Object.assign(processedNode, { autoExpand: true });
|
|
62
|
+
}
|
|
63
|
+
return processedNode;
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
get parseNode() {
|
|
67
|
+
return (props) => this._nodesParser(props).pipe((0, rxjs_1.mergeMap)((parsedNode) => {
|
|
68
|
+
const { row, parentNode, imodelKey } = props;
|
|
69
|
+
if (!row[exports.ECSQL_COLUMN_NAME_SearchECInstanceId] || !row[exports.ECSQL_COLUMN_NAME_SearchClassName]) {
|
|
70
|
+
return (0, rxjs_1.of)(parsedNode);
|
|
71
|
+
}
|
|
72
|
+
const rowInstanceKey = { className: row[exports.ECSQL_COLUMN_NAME_SearchClassName], id: row[exports.ECSQL_COLUMN_NAME_SearchECInstanceId] };
|
|
73
|
+
const searchHelper = (0, HierarchySearch_js_1.createHierarchySearchHelper)(this._targetPaths, parentNode);
|
|
74
|
+
const nodeSearchPropPossiblyPromise = searchHelper.createChildNodeProps({
|
|
75
|
+
asyncPathMatcher: (identifier) => {
|
|
76
|
+
if (identifier.id !== rowInstanceKey.id) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (!HierarchyNodeIdentifier_js_1.HierarchyNodeIdentifier.isInstanceNodeIdentifier(identifier)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
if (identifier.imodelKey && identifier.imodelKey !== imodelKey) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
if ((0, presentation_shared_1.compareFullClassNames)(identifier.className, rowInstanceKey.className) === 0) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)((0, Common_js_1.fromPossiblyPromise)(this._imodelAccess.classDerivesFrom(identifier.className, rowInstanceKey.className)), (0, Common_js_1.fromPossiblyPromise)(this._imodelAccess.classDerivesFrom(rowInstanceKey.className, identifier.className))).pipe((0, rxjs_1.filter)((classDerives) => classDerives), (0, rxjs_1.defaultIfEmpty)(false), (0, rxjs_1.take)(1)));
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return (0, Common_js_1.fromPossiblyPromise)(nodeSearchPropPossiblyPromise).pipe((0, rxjs_1.map)((nodeExtraProps) => {
|
|
92
|
+
if (nodeExtraProps?.search) {
|
|
93
|
+
parsedNode.search = nodeExtraProps.search;
|
|
94
|
+
}
|
|
95
|
+
return parsedNode;
|
|
96
|
+
}));
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
defineHierarchyLevel(props) {
|
|
100
|
+
const sourceDefinitions = this._source.defineHierarchyLevel(props);
|
|
101
|
+
const searchHelper = (0, HierarchySearch_js_1.createHierarchySearchHelper)(this._targetPaths, props.parentNode);
|
|
102
|
+
const childNodeSearchIdentifiers = searchHelper.getChildNodeSearchIdentifiers();
|
|
103
|
+
if (!childNodeSearchIdentifiers) {
|
|
104
|
+
return sourceDefinitions;
|
|
105
|
+
}
|
|
106
|
+
const [genericNodeDefinitions, instanceNodeDefinitions] = (0, Partition_js_1.partition)(sourceDefinitions.pipe((0, rxjs_1.mergeAll)()), IModelHierarchyDefinition_js_1.HierarchyNodesDefinition.isGenericNode);
|
|
107
|
+
return (0, rxjs_1.merge)(genericNodeDefinitions.pipe((0, rxjs_1.map)((definition) => {
|
|
108
|
+
if (searchHelper.hasSearchTargetAncestor ||
|
|
109
|
+
childNodeSearchIdentifiers.some((identifier) => HierarchyNodeIdentifier_js_1.HierarchyNodeIdentifier.isGenericNodeIdentifier(identifier) &&
|
|
110
|
+
(!identifier.source || identifier.source === this.#sourceName) &&
|
|
111
|
+
identifier.id === definition.node.key)) {
|
|
112
|
+
return {
|
|
113
|
+
...definition,
|
|
114
|
+
node: {
|
|
115
|
+
...definition.node,
|
|
116
|
+
...searchHelper.createChildNodeProps({ pathMatcher: ({ id }) => id === definition.node.key }),
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
}), (0, rxjs_1.filter)((def) => !!def)), instanceNodeDefinitions.pipe((0, rxjs_1.mergeMap)((definition) => {
|
|
122
|
+
if (searchHelper.hasSearchTargetAncestor) {
|
|
123
|
+
// if we have a search target ancestor, we don't need to search the definitions - we use all of them
|
|
124
|
+
return (0, rxjs_1.of)(applyECInstanceIdsSelector(definition));
|
|
125
|
+
}
|
|
126
|
+
return (0, rxjs_1.defer)(async () => {
|
|
127
|
+
const imodelAccess = this._imodelAccess;
|
|
128
|
+
const matches = new Map();
|
|
129
|
+
async function getEntries(x) {
|
|
130
|
+
let entries = matches.get(x.id);
|
|
131
|
+
if (!entries) {
|
|
132
|
+
entries = [];
|
|
133
|
+
matches.set(x.id, entries);
|
|
134
|
+
}
|
|
135
|
+
// make sure that we don't have path identifiers that only differ by class name, where
|
|
136
|
+
// class names are in the same class hierarchy, e.g.:
|
|
137
|
+
// [{ className: "bis.Element", id: "0x1" }, { className: "bis.Subject", id: "0x1" }]
|
|
138
|
+
// are actually the same instance, so we only need to keep one of them, or otherwise the query will
|
|
139
|
+
// duplicate it
|
|
140
|
+
for (const entry of entries) {
|
|
141
|
+
if ((0, presentation_shared_1.compareFullClassNames)(entry.className, x.className) === 0 ||
|
|
142
|
+
(await imodelAccess.classDerivesFrom(entry.className, x.className)) ||
|
|
143
|
+
(await imodelAccess.classDerivesFrom(x.className, entry.className))) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return entries;
|
|
148
|
+
}
|
|
149
|
+
for (const id of childNodeSearchIdentifiers) {
|
|
150
|
+
// take only identifiers that match the definition by type, source and class
|
|
151
|
+
if (!HierarchyNodeIdentifier_js_1.HierarchyNodeIdentifier.isInstanceNodeIdentifier(id)) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (id.imodelKey && id.imodelKey !== props.imodelAccess.imodelKey) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if ((0, presentation_shared_1.compareFullClassNames)(id.className, definition.fullClassName) !== 0 &&
|
|
158
|
+
!(await Promise.all([
|
|
159
|
+
imodelAccess.classDerivesFrom(id.className, definition.fullClassName),
|
|
160
|
+
imodelAccess.classDerivesFrom(definition.fullClassName, id.className),
|
|
161
|
+
]).then(([isDerivedFrom, isDerivedTo]) => isDerivedFrom || isDerivedTo))) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const entriesTargetForPathIdentifier = await getEntries(id);
|
|
165
|
+
if (entriesTargetForPathIdentifier) {
|
|
166
|
+
entriesTargetForPathIdentifier.push(id);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return Array.from(matches.values()).flat();
|
|
170
|
+
}).pipe(
|
|
171
|
+
// only take definitions that have matching path identifiers
|
|
172
|
+
(0, rxjs_1.filter)((pathIdentifiers) => pathIdentifiers.length > 0),
|
|
173
|
+
// for each definition that we're going to use, apply query-level search
|
|
174
|
+
(0, rxjs_1.map)((pathIdentifiers) => applyECInstanceIdsSearch(definition, pathIdentifiers)));
|
|
175
|
+
}))).pipe((0, rxjs_1.toArray)());
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.SearchHierarchyDefinition = SearchHierarchyDefinition;
|
|
179
|
+
/** @internal */
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
181
|
+
exports.ECSQL_COLUMN_NAME_SearchECInstanceId = "SearchECInstanceId";
|
|
182
|
+
/** @internal */
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
184
|
+
exports.ECSQL_COLUMN_NAME_SearchClassName = "SearchClassName";
|
|
185
|
+
function getClassECInstanceIds(targetInstanceKeys) {
|
|
186
|
+
const classNameECInstanceIds = new Map();
|
|
187
|
+
for (const key of targetInstanceKeys) {
|
|
188
|
+
const entry = classNameECInstanceIds.get(key.className);
|
|
189
|
+
if (entry === undefined) {
|
|
190
|
+
classNameECInstanceIds.set(key.className, [key.id]);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
entry.push(key.id);
|
|
194
|
+
}
|
|
195
|
+
return classNameECInstanceIds;
|
|
196
|
+
}
|
|
197
|
+
/** @internal */
|
|
198
|
+
function applyECInstanceIdsSearch(def, targetInstanceKeys) {
|
|
199
|
+
const instanceIdsByClass = getClassECInstanceIds(targetInstanceKeys);
|
|
200
|
+
return {
|
|
201
|
+
...def,
|
|
202
|
+
query: {
|
|
203
|
+
...def.query,
|
|
204
|
+
ctes: [
|
|
205
|
+
...(def.query.ctes ?? []),
|
|
206
|
+
`SearchInfo(ECInstanceId, SearchClassName) AS (
|
|
207
|
+
${Array.from(instanceIdsByClass)
|
|
208
|
+
.map(([className, ecInstanceIds]) => `
|
|
209
|
+
SELECT ECInstanceId, '${className}' AS SearchClassName
|
|
210
|
+
FROM ${className}
|
|
211
|
+
WHERE ECInstanceId IN (${ecInstanceIds.join(", ")})
|
|
212
|
+
`)
|
|
213
|
+
.join(" UNION ALL ")}
|
|
214
|
+
)`,
|
|
215
|
+
],
|
|
216
|
+
ecsql: `
|
|
217
|
+
SELECT
|
|
218
|
+
[q].*,
|
|
219
|
+
IdToHex([f].[ECInstanceId]) AS [${exports.ECSQL_COLUMN_NAME_SearchECInstanceId}],
|
|
220
|
+
[f].[SearchClassName] AS [${exports.ECSQL_COLUMN_NAME_SearchClassName}]
|
|
221
|
+
FROM (
|
|
222
|
+
${def.query.ecsql}
|
|
223
|
+
) [q]
|
|
224
|
+
JOIN SearchInfo [f] ON [f].[ECInstanceId] = [q].[ECInstanceId]
|
|
225
|
+
`,
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/** @internal */
|
|
230
|
+
function applyECInstanceIdsSelector(def) {
|
|
231
|
+
return {
|
|
232
|
+
...def,
|
|
233
|
+
query: {
|
|
234
|
+
...def.query,
|
|
235
|
+
ecsql: `
|
|
236
|
+
SELECT
|
|
237
|
+
[q].*,
|
|
238
|
+
IdToHex([q].[ECInstanceId]) AS [${exports.ECSQL_COLUMN_NAME_SearchECInstanceId}],
|
|
239
|
+
[q].[${NodeSelectQueryFactory_js_1.NodeSelectClauseColumnNames.FullClassName}] AS [${exports.ECSQL_COLUMN_NAME_SearchClassName}]
|
|
240
|
+
FROM (${def.query.ecsql}) [q]
|
|
241
|
+
`,
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function shouldAutoExpandGroupingNodeBasedOnNestedChildren({ directOrIndirectChildren, parentKeysLength, parentKeysWithoutGroupingNodesLength, }) {
|
|
246
|
+
for (const child of directOrIndirectChildren) {
|
|
247
|
+
if (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGroupingNode(child)) {
|
|
248
|
+
// Need to check if the same grouping node needs to be expanded, but check the indirect children instead
|
|
249
|
+
if (shouldAutoExpandGroupingNodeBasedOnNestedChildren({ directOrIndirectChildren: child.children, parentKeysLength, parentKeysWithoutGroupingNodesLength })) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
/* c8 ignore next 3 */
|
|
255
|
+
if (!child.search) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (child.search.isSearchTarget &&
|
|
259
|
+
(0, HierarchySearch_js_1.shouldAutoExpandBasedOnReveal)({
|
|
260
|
+
reveal: child.search.searchTargetOptions?.reveal,
|
|
261
|
+
nodePositionInHierarchy: parentKeysLength,
|
|
262
|
+
// Grouping node is not in search path, but we can assume that it is at the position of 1 less than `parentKeysWithoutGroupingNodesLength`
|
|
263
|
+
nodePositionInPath: parentKeysWithoutGroupingNodesLength - 1,
|
|
264
|
+
})) {
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
if (!child.search.childrenTargetPaths) {
|
|
268
|
+
/* c8 ignore next */
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
for (const path of child.search.childrenTargetPaths) {
|
|
272
|
+
if ("path" in path &&
|
|
273
|
+
(0, HierarchySearch_js_1.shouldAutoExpandBasedOnReveal)({
|
|
274
|
+
reveal: path.options?.reveal,
|
|
275
|
+
nodePositionInHierarchy: parentKeysLength,
|
|
276
|
+
// Grouping node is not in search path, but we can assume that it is at the position of 1 less than `parentKeysWithoutGroupingNodesLength`
|
|
277
|
+
nodePositionInPath: parentKeysWithoutGroupingNodesLength - 1,
|
|
278
|
+
})) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=SearchHierarchyDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchHierarchyDefinition.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/SearchHierarchyDefinition.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, filter, firstValueFrom, map, merge, mergeAll, mergeMap, of, take, toArray } from \"rxjs\";\nimport { compareFullClassNames } from \"@itwin/presentation-shared\";\nimport { HierarchyNodeIdentifier } from \"../HierarchyNodeIdentifier.js\";\nimport { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\nimport { createHierarchySearchHelper, HierarchySearchPath, shouldAutoExpandBasedOnReveal } from \"../HierarchySearch.js\";\nimport { HierarchyNodesDefinition } from \"../imodel/IModelHierarchyDefinition.js\";\nimport { ProcessedHierarchyNode } from \"../imodel/IModelHierarchyNode.js\";\nimport { NodeSelectClauseColumnNames } from \"../imodel/NodeSelectQueryFactory.js\";\nimport { defaultNodesParser } from \"../imodel/TreeNodesReader.js\";\nimport { fromPossiblyPromise } from \"../internal/Common.js\";\nimport { partition } from \"../internal/operators/Partition.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { ECClassHierarchyInspector, InstanceKey } from \"@itwin/presentation-shared\";\nimport type { IModelInstanceKey } from \"../HierarchyNodeKey.js\";\nimport type {\n DefineHierarchyLevelProps,\n GenericHierarchyNodeDefinition,\n HierarchyLevelDefinition,\n InstanceNodesQueryDefinition,\n} from \"../imodel/IModelHierarchyDefinition.js\";\nimport type { ProcessedGroupingHierarchyNode, ProcessedInstanceHierarchyNode } from \"../imodel/IModelHierarchyNode.js\";\nimport type { RxjsHierarchyDefinition, RxjsNodeParser, RxjsNodePostProcessor, RxjsNodePreProcessor } from \"../internal/RxjsHierarchyDefinition.js\";\n\ninterface SearchHierarchyDefinitionProps {\n imodelAccess: ECClassHierarchyInspector;\n source: RxjsHierarchyDefinition;\n sourceName: string;\n targetPaths: HierarchySearchPath[];\n nodesParser?: RxjsNodeParser;\n}\n\n/** @internal */\nexport class SearchHierarchyDefinition implements RxjsHierarchyDefinition {\n private _imodelAccess: ECClassHierarchyInspector;\n private _source: RxjsHierarchyDefinition;\n private _targetPaths: HierarchySearchPath[];\n private _nodesParser: RxjsNodeParser;\n #sourceName: string;\n\n public constructor(props: SearchHierarchyDefinitionProps) {\n this._imodelAccess = props.imodelAccess;\n this._source = props.source;\n this.#sourceName = props.sourceName;\n this._targetPaths = props.targetPaths;\n this._nodesParser = props.nodesParser ?? this._source.parseNode ?? ((row) => of(defaultNodesParser(row)));\n }\n\n public get preProcessNode(): RxjsNodePreProcessor {\n return (props) =>\n (this._source.preProcessNode ? this._source.preProcessNode(props) : of(props.node)).pipe(\n filter((processedNode) => {\n if (processedNode.processingParams?.hideInHierarchy && processedNode.search?.isSearchTarget && !processedNode.search.hasSearchTargetAncestor) {\n // we want to hide target nodes if they have `hideInHierarchy` param, but only if they're not under another search target\n return false;\n }\n return true;\n }),\n );\n }\n\n public get postProcessNode(): RxjsNodePostProcessor {\n return (props) =>\n (this._source.postProcessNode ? this._source.postProcessNode(props) : of(props.node)).pipe(\n map((processedNode) => {\n const parentKeysWithoutGroupingNodesLength = processedNode.parentKeys.filter((key) => !HierarchyNodeKey.isGrouping(key)).length;\n const parentKeysLength = processedNode.parentKeys.length;\n const shouldAutoExpand = ProcessedHierarchyNode.isGroupingNode(processedNode)\n ? shouldAutoExpandGroupingNodeBasedOnNestedChildren({\n directOrIndirectChildren: processedNode.children,\n parentKeysWithoutGroupingNodesLength,\n parentKeysLength,\n })\n : (processedNode.search?.isSearchTarget && !!processedNode.search.searchTargetOptions?.autoExpand) ||\n processedNode.search?.childrenTargetPaths?.some((path) =>\n shouldAutoExpandBasedOnReveal({\n reveal: HierarchySearchPath.normalize(path).options?.reveal,\n nodePositionInPath: parentKeysWithoutGroupingNodesLength,\n nodePositionInHierarchy: parentKeysLength,\n }),\n );\n if (shouldAutoExpand) {\n Object.assign(processedNode, { autoExpand: true });\n }\n\n return processedNode;\n }),\n );\n }\n\n public get parseNode(): RxjsNodeParser {\n return (props) =>\n this._nodesParser(props).pipe(\n mergeMap((parsedNode) => {\n const { row, parentNode, imodelKey } = props;\n if (!row[ECSQL_COLUMN_NAME_SearchECInstanceId] || !row[ECSQL_COLUMN_NAME_SearchClassName]) {\n return of(parsedNode);\n }\n const rowInstanceKey = { className: row[ECSQL_COLUMN_NAME_SearchClassName], id: row[ECSQL_COLUMN_NAME_SearchECInstanceId] };\n const searchHelper = createHierarchySearchHelper(this._targetPaths, parentNode);\n const nodeSearchPropPossiblyPromise = searchHelper.createChildNodeProps({\n asyncPathMatcher: (identifier): boolean | Promise<boolean> => {\n if (identifier.id !== rowInstanceKey.id) {\n return false;\n }\n if (!HierarchyNodeIdentifier.isInstanceNodeIdentifier(identifier)) {\n return false;\n }\n if (identifier.imodelKey && identifier.imodelKey !== imodelKey) {\n return false;\n }\n if (compareFullClassNames(identifier.className, rowInstanceKey.className) === 0) {\n return true;\n }\n return firstValueFrom(\n merge(\n fromPossiblyPromise(this._imodelAccess.classDerivesFrom(identifier.className, rowInstanceKey.className)),\n fromPossiblyPromise(this._imodelAccess.classDerivesFrom(rowInstanceKey.className, identifier.className)),\n ).pipe(\n filter((classDerives) => classDerives),\n defaultIfEmpty(false),\n take(1),\n ),\n );\n },\n });\n return fromPossiblyPromise(nodeSearchPropPossiblyPromise).pipe(\n map((nodeExtraProps) => {\n if (nodeExtraProps?.search) {\n parsedNode.search = nodeExtraProps.search;\n }\n return parsedNode;\n }),\n );\n }),\n );\n }\n\n public defineHierarchyLevel(props: DefineHierarchyLevelProps): Observable<HierarchyLevelDefinition> {\n const sourceDefinitions = this._source.defineHierarchyLevel(props);\n\n const searchHelper = createHierarchySearchHelper(this._targetPaths, props.parentNode);\n const childNodeSearchIdentifiers = searchHelper.getChildNodeSearchIdentifiers();\n if (!childNodeSearchIdentifiers) {\n return sourceDefinitions;\n }\n\n const [genericNodeDefinitions, instanceNodeDefinitions] = partition(sourceDefinitions.pipe(mergeAll()), HierarchyNodesDefinition.isGenericNode);\n return merge(\n genericNodeDefinitions.pipe(\n map((definition) => {\n if (\n searchHelper.hasSearchTargetAncestor ||\n childNodeSearchIdentifiers.some(\n (identifier) =>\n HierarchyNodeIdentifier.isGenericNodeIdentifier(identifier) &&\n (!identifier.source || identifier.source === this.#sourceName) &&\n identifier.id === definition.node.key,\n )\n ) {\n return {\n ...definition,\n node: {\n ...definition.node,\n ...searchHelper.createChildNodeProps({ pathMatcher: ({ id }) => id === definition.node.key }),\n },\n };\n }\n return undefined;\n }),\n filter((def): def is GenericHierarchyNodeDefinition => !!def),\n ),\n\n instanceNodeDefinitions.pipe(\n mergeMap((definition) => {\n if (searchHelper.hasSearchTargetAncestor) {\n // if we have a search target ancestor, we don't need to search the definitions - we use all of them\n return of(applyECInstanceIdsSelector(definition));\n }\n return defer(async () => {\n const imodelAccess = this._imodelAccess;\n const matches = new Map<Id64String, IModelInstanceKey[]>();\n async function getEntries(x: IModelInstanceKey) {\n let entries = matches.get(x.id);\n if (!entries) {\n entries = [];\n matches.set(x.id, entries);\n }\n // make sure that we don't have path identifiers that only differ by class name, where\n // class names are in the same class hierarchy, e.g.:\n // [{ className: \"bis.Element\", id: \"0x1\" }, { className: \"bis.Subject\", id: \"0x1\" }]\n // are actually the same instance, so we only need to keep one of them, or otherwise the query will\n // duplicate it\n for (const entry of entries) {\n if (\n compareFullClassNames(entry.className, x.className) === 0 ||\n (await imodelAccess.classDerivesFrom(entry.className, x.className)) ||\n (await imodelAccess.classDerivesFrom(x.className, entry.className))\n ) {\n return undefined;\n }\n }\n return entries;\n }\n for (const id of childNodeSearchIdentifiers) {\n // take only identifiers that match the definition by type, source and class\n if (!HierarchyNodeIdentifier.isInstanceNodeIdentifier(id)) {\n continue;\n }\n if (id.imodelKey && id.imodelKey !== props.imodelAccess.imodelKey) {\n continue;\n }\n if (\n compareFullClassNames(id.className, definition.fullClassName) !== 0 &&\n !(await Promise.all([\n imodelAccess.classDerivesFrom(id.className, definition.fullClassName),\n imodelAccess.classDerivesFrom(definition.fullClassName, id.className),\n ]).then(([isDerivedFrom, isDerivedTo]) => isDerivedFrom || isDerivedTo))\n ) {\n continue;\n }\n const entriesTargetForPathIdentifier = await getEntries(id);\n if (entriesTargetForPathIdentifier) {\n entriesTargetForPathIdentifier.push(id);\n }\n }\n return Array.from(matches.values()).flat();\n }).pipe(\n // only take definitions that have matching path identifiers\n filter((pathIdentifiers) => pathIdentifiers.length > 0),\n\n // for each definition that we're going to use, apply query-level search\n map((pathIdentifiers) => applyECInstanceIdsSearch(definition, pathIdentifiers)),\n );\n }),\n ),\n ).pipe(toArray());\n }\n}\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ECSQL_COLUMN_NAME_SearchECInstanceId = \"SearchECInstanceId\";\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ECSQL_COLUMN_NAME_SearchClassName = \"SearchClassName\";\n\nfunction getClassECInstanceIds(targetInstanceKeys: InstanceKey[]) {\n const classNameECInstanceIds = new Map<string, Id64String[]>();\n for (const key of targetInstanceKeys) {\n const entry = classNameECInstanceIds.get(key.className);\n if (entry === undefined) {\n classNameECInstanceIds.set(key.className, [key.id]);\n continue;\n }\n entry.push(key.id);\n }\n return classNameECInstanceIds;\n}\n\n/** @internal */\nexport function applyECInstanceIdsSearch(def: InstanceNodesQueryDefinition, targetInstanceKeys: InstanceKey[]): InstanceNodesQueryDefinition {\n const instanceIdsByClass = getClassECInstanceIds(targetInstanceKeys);\n return {\n ...def,\n query: {\n ...def.query,\n ctes: [\n ...(def.query.ctes ?? []),\n `SearchInfo(ECInstanceId, SearchClassName) AS (\n ${Array.from(instanceIdsByClass)\n .map(\n ([className, ecInstanceIds]) => `\n SELECT ECInstanceId, '${className}' AS SearchClassName\n FROM ${className}\n WHERE ECInstanceId IN (${ecInstanceIds.join(\", \")})\n `,\n )\n .join(\" UNION ALL \")}\n )`,\n ],\n ecsql: `\n SELECT\n [q].*,\n IdToHex([f].[ECInstanceId]) AS [${ECSQL_COLUMN_NAME_SearchECInstanceId}],\n [f].[SearchClassName] AS [${ECSQL_COLUMN_NAME_SearchClassName}]\n FROM (\n ${def.query.ecsql}\n ) [q]\n JOIN SearchInfo [f] ON [f].[ECInstanceId] = [q].[ECInstanceId]\n `,\n },\n };\n}\n\n/** @internal */\nexport function applyECInstanceIdsSelector(def: InstanceNodesQueryDefinition): InstanceNodesQueryDefinition {\n return {\n ...def,\n query: {\n ...def.query,\n ecsql: `\n SELECT\n [q].*,\n IdToHex([q].[ECInstanceId]) AS [${ECSQL_COLUMN_NAME_SearchECInstanceId}],\n [q].[${NodeSelectClauseColumnNames.FullClassName}] AS [${ECSQL_COLUMN_NAME_SearchClassName}]\n FROM (${def.query.ecsql}) [q]\n `,\n },\n };\n}\n\nfunction shouldAutoExpandGroupingNodeBasedOnNestedChildren({\n directOrIndirectChildren,\n parentKeysLength,\n parentKeysWithoutGroupingNodesLength,\n}: {\n directOrIndirectChildren: Array<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode>;\n parentKeysLength: number;\n parentKeysWithoutGroupingNodesLength: number;\n}) {\n for (const child of directOrIndirectChildren) {\n if (ProcessedHierarchyNode.isGroupingNode(child)) {\n // Need to check if the same grouping node needs to be expanded, but check the indirect children instead\n if (\n shouldAutoExpandGroupingNodeBasedOnNestedChildren({ directOrIndirectChildren: child.children, parentKeysLength, parentKeysWithoutGroupingNodesLength })\n ) {\n return true;\n }\n continue;\n }\n\n /* c8 ignore next 3 */\n if (!child.search) {\n continue;\n }\n\n if (\n child.search.isSearchTarget &&\n shouldAutoExpandBasedOnReveal({\n reveal: child.search.searchTargetOptions?.reveal,\n nodePositionInHierarchy: parentKeysLength,\n // Grouping node is not in search path, but we can assume that it is at the position of 1 less than `parentKeysWithoutGroupingNodesLength`\n nodePositionInPath: parentKeysWithoutGroupingNodesLength - 1,\n })\n ) {\n return true;\n }\n\n if (!child.search.childrenTargetPaths) {\n /* c8 ignore next */\n continue;\n }\n\n for (const path of child.search.childrenTargetPaths) {\n if (\n \"path\" in path &&\n shouldAutoExpandBasedOnReveal({\n reveal: path.options?.reveal,\n nodePositionInHierarchy: parentKeysLength,\n // Grouping node is not in search path, but we can assume that it is at the position of 1 less than `parentKeysWithoutGroupingNodesLength`\n nodePositionInPath: parentKeysWithoutGroupingNodesLength - 1,\n })\n ) {\n return true;\n }\n }\n }\n return false;\n}\n"]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { Id64String } from "@itwin/core-bentley";
|
|
3
|
-
import { ECSqlQueryDef } from "@itwin/presentation-shared";
|
|
4
|
-
import { RxjsNodeParser } from "../internal/RxjsHierarchyDefinition.js";
|
|
5
|
-
import { SourceInstanceHierarchyNode } from "./IModelHierarchyNode.js";
|
|
6
|
-
import { LimitingECSqlQueryExecutor } from "./LimitingECSqlQueryExecutor.js";
|
|
7
|
-
import { NodeSelectClauseColumnNames } from "./NodeSelectQueryFactory.js";
|
|
1
|
+
import type { Observable, ObservedValueOf } from "rxjs";
|
|
2
|
+
import type { Id64String } from "@itwin/core-bentley";
|
|
3
|
+
import type { ECSqlQueryDef, Props } from "@itwin/presentation-shared";
|
|
4
|
+
import type { RxjsNodeParser } from "../internal/RxjsHierarchyDefinition.js";
|
|
5
|
+
import type { SourceInstanceHierarchyNode } from "./IModelHierarchyNode.js";
|
|
6
|
+
import type { LimitingECSqlQueryExecutor } from "./LimitingECSqlQueryExecutor.js";
|
|
7
|
+
import type { NodeSelectClauseColumnNames } from "./NodeSelectQueryFactory.js";
|
|
8
8
|
interface ReadNodesProps {
|
|
9
9
|
queryExecutor: LimitingECSqlQueryExecutor;
|
|
10
10
|
query: ECSqlQueryDef;
|
|
11
11
|
limit?: number | "unbounded";
|
|
12
|
-
parser?: RxjsNodeParser
|
|
12
|
+
parser?: (props: Pick<Props<RxjsNodeParser>, "row">) => ReturnType<RxjsNodeParser>;
|
|
13
13
|
}
|
|
14
14
|
/** @internal */
|
|
15
15
|
export declare function readNodes(props: ReadNodesProps): Observable<SourceInstanceHierarchyNode>;
|
|
@@ -30,8 +30,6 @@ export interface RowDef {
|
|
|
30
30
|
[NodeSelectClauseColumnNames.SupportsFiltering]?: boolean;
|
|
31
31
|
}
|
|
32
32
|
/** @internal */
|
|
33
|
-
export declare
|
|
34
|
-
[columnName: string]: any;
|
|
35
|
-
}): SourceInstanceHierarchyNode;
|
|
33
|
+
export declare const defaultNodesParser: (props: Pick<Props<RxjsNodeParser>, "row">) => ObservedValueOf<ReturnType<RxjsNodeParser>>;
|
|
36
34
|
export {};
|
|
37
35
|
//# sourceMappingURL=TreeNodesReader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodesReader.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/TreeNodesReader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TreeNodesReader.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/TreeNodesReader.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAyC,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAI/E,UAAU,cAAc;IACtB,aAAa,EAAE,0BAA0B,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,UAAU,CAAC,cAAc,CAAC,CAAC;CACpF;AAED,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAiBxF;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,CAAC,2BAA2B,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IACpD,CAAC,2BAA2B,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACvD,CAAC,2BAA2B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACnD,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;IACpD,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC;IACzD,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC;IAC5D,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAChD,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC;IACpD,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;IACnD,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC;CAC3D;AAED,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,CAoBzH,CAAC"}
|
|
@@ -4,23 +4,31 @@
|
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.defaultNodesParser = void 0;
|
|
7
8
|
exports.readNodes = readNodes;
|
|
8
|
-
exports.defaultNodesParser = defaultNodesParser;
|
|
9
9
|
const rxjs_1 = require("rxjs");
|
|
10
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
10
11
|
const presentation_shared_1 = require("@itwin/presentation-shared");
|
|
11
|
-
const
|
|
12
|
+
const Common_js_1 = require("../internal/Common.js");
|
|
13
|
+
const LoggingUtils_js_1 = require("../internal/LoggingUtils.js");
|
|
14
|
+
const LOGGING_NAMESPACE = `${Common_js_1.LOGGING_NAMESPACE_INTERNAL}.QueryRows`;
|
|
12
15
|
/** @internal */
|
|
13
16
|
function readNodes(props) {
|
|
14
17
|
const { queryExecutor, query, limit } = props;
|
|
15
|
-
const parser = props
|
|
18
|
+
const parser = props.parser ?? ((row) => (0, rxjs_1.of)((0, exports.defaultNodesParser)(row)));
|
|
16
19
|
const config = {
|
|
17
20
|
rowFormat: "ECSqlPropertyNames",
|
|
21
|
+
restartToken: `readNodes/${core_bentley_1.Guid.createValue()}`,
|
|
18
22
|
...(limit !== undefined ? { limit } : undefined),
|
|
19
23
|
};
|
|
20
|
-
return (0, rxjs_1.from)(queryExecutor.createQueryReader(query, config)).pipe((0,
|
|
24
|
+
return (0, rxjs_1.from)(queryExecutor.createQueryReader(query, config)).pipe((0, LoggingUtils_js_1.log)({
|
|
25
|
+
category: LOGGING_NAMESPACE,
|
|
26
|
+
severity: "trace",
|
|
27
|
+
message: /* c8 ignore next */ (row) => JSON.stringify(row),
|
|
28
|
+
}), (0, rxjs_1.mergeMap)((row) => parser({ row })));
|
|
21
29
|
}
|
|
22
30
|
/** @internal */
|
|
23
|
-
|
|
31
|
+
const defaultNodesParser = ({ row }) => {
|
|
24
32
|
const typedRow = row;
|
|
25
33
|
const processingParams = {
|
|
26
34
|
...(typedRow.HideIfNoChildren ? { hideIfNoChildren: true } : undefined),
|
|
@@ -40,5 +48,6 @@ function defaultNodesParser(row) {
|
|
|
40
48
|
...(typedRow.ExtendedData ? { extendedData: JSON.parse(typedRow.ExtendedData) } : undefined),
|
|
41
49
|
...(Object.keys(processingParams).length > 0 ? { processingParams } : undefined),
|
|
42
50
|
};
|
|
43
|
-
}
|
|
51
|
+
};
|
|
52
|
+
exports.defaultNodesParser = defaultNodesParser;
|
|
44
53
|
//# sourceMappingURL=TreeNodesReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodesReader.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/TreeNodesReader.ts"],"names":[],"mappings":";AAAA;;;gGAGgG
|
|
1
|
+
{"version":3,"file":"TreeNodesReader.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/TreeNodesReader.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 { from, mergeMap, of } from \"rxjs\";\nimport { Guid } from \"@itwin/core-bentley\";\nimport { parseInstanceLabel } from \"@itwin/presentation-shared\";\nimport { LOGGING_NAMESPACE_INTERNAL as BASE_LOGGING_NAMESPACE } from \"../internal/Common.js\";\nimport { log } from \"../internal/LoggingUtils.js\";\n\nimport type { Observable, ObservedValueOf } from \"rxjs\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { ECSqlQueryDef, Props } from \"@itwin/presentation-shared\";\nimport type { RxjsNodeParser } from \"../internal/RxjsHierarchyDefinition.js\";\nimport type { InstanceHierarchyNodeProcessingParams, SourceInstanceHierarchyNode } from \"./IModelHierarchyNode.js\";\nimport type { LimitingECSqlQueryExecutor } from \"./LimitingECSqlQueryExecutor.js\";\nimport type { NodeSelectClauseColumnNames } from \"./NodeSelectQueryFactory.js\";\n\nconst LOGGING_NAMESPACE = `${BASE_LOGGING_NAMESPACE}.QueryRows`;\n\ninterface ReadNodesProps {\n queryExecutor: LimitingECSqlQueryExecutor;\n query: ECSqlQueryDef;\n limit?: number | \"unbounded\";\n parser?: (props: Pick<Props<RxjsNodeParser>, \"row\">) => ReturnType<RxjsNodeParser>;\n}\n\n/** @internal */\nexport function readNodes(props: ReadNodesProps): Observable<SourceInstanceHierarchyNode> {\n const { queryExecutor, query, limit } = props;\n const parser = props.parser ?? ((row) => of(defaultNodesParser(row)));\n const config: Parameters<LimitingECSqlQueryExecutor[\"createQueryReader\"]>[1] = {\n rowFormat: \"ECSqlPropertyNames\",\n restartToken: `readNodes/${Guid.createValue()}`,\n ...(limit !== undefined ? { limit } : undefined),\n };\n\n return from(queryExecutor.createQueryReader(query, config)).pipe(\n log({\n category: LOGGING_NAMESPACE,\n severity: \"trace\",\n message: /* c8 ignore next */ (row) => JSON.stringify(row),\n }),\n mergeMap((row) => parser({ row })),\n );\n}\n\n/**\n * The interface should contain a member for each `NodeSelectClauseColumnNames` value.\n * @internal\n */\nexport interface RowDef {\n [NodeSelectClauseColumnNames.FullClassName]: string;\n [NodeSelectClauseColumnNames.ECInstanceId]: Id64String;\n [NodeSelectClauseColumnNames.DisplayLabel]: string;\n [NodeSelectClauseColumnNames.HasChildren]?: boolean;\n [NodeSelectClauseColumnNames.HideIfNoChildren]?: boolean;\n [NodeSelectClauseColumnNames.HideNodeInHierarchy]?: boolean;\n [NodeSelectClauseColumnNames.Grouping]?: string;\n [NodeSelectClauseColumnNames.ExtendedData]?: string;\n [NodeSelectClauseColumnNames.AutoExpand]?: boolean;\n [NodeSelectClauseColumnNames.SupportsFiltering]?: boolean;\n}\n\n/** @internal */\nexport const defaultNodesParser: (props: Pick<Props<RxjsNodeParser>, \"row\">) => ObservedValueOf<ReturnType<RxjsNodeParser>> = ({ row }) => {\n const typedRow = row as RowDef;\n const processingParams: InstanceHierarchyNodeProcessingParams = {\n ...(typedRow.HideIfNoChildren ? { hideIfNoChildren: true } : undefined),\n ...(typedRow.HideNodeInHierarchy ? { hideInHierarchy: true } : undefined),\n ...(typedRow.Grouping ? { grouping: JSON.parse(typedRow.Grouping) } : undefined),\n };\n return {\n // don't format the label here - we're going to do that at node pre-processing step to handle both - instance and generic nodes\n label: parseInstanceLabel(typedRow.DisplayLabel),\n key: {\n type: \"instances\",\n instanceKeys: [{ className: typedRow.FullClassName.replace(\":\", \".\"), id: typedRow.ECInstanceId }],\n },\n ...(typedRow.HasChildren !== undefined ? { children: !!typedRow.HasChildren } : undefined),\n ...(typedRow.AutoExpand ? { autoExpand: true } : undefined),\n ...(typedRow.SupportsFiltering ? { supportsFiltering: true } : undefined),\n ...(typedRow.ExtendedData ? { extendedData: JSON.parse(typedRow.ExtendedData) } : undefined),\n ...(Object.keys(processingParams).length > 0 ? { processingParams } : undefined),\n };\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProcessedInstanceHierarchyNode } from "./IModelHierarchyNode.js";
|
|
1
|
+
import type { ProcessedInstanceHierarchyNode } from "./IModelHierarchyNode.js";
|
|
2
2
|
/** @internal */
|
|
3
3
|
export declare function mergeInstanceNodes(lhs: ProcessedInstanceHierarchyNode, rhs: ProcessedInstanceHierarchyNode): ProcessedInstanceHierarchyNode;
|
|
4
4
|
//# sourceMappingURL=Utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAA2E,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAwCxJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,8BAA8B,EAAE,GAAG,EAAE,8BAA8B,GAAG,8BAA8B,CAkB3I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.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 { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\n\nimport type { HierarchyNodeLabelGroupingParams, InstanceHierarchyNodeProcessingParams, ProcessedInstanceHierarchyNode } from \"./IModelHierarchyNode.js\";\n\nfunction mergeNodeHandlingParams(\n lhs: InstanceHierarchyNodeProcessingParams | undefined,\n rhs: InstanceHierarchyNodeProcessingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (!lhs && !rhs) {\n return undefined;\n }\n const params = {\n ...(lhs?.hideIfNoChildren || rhs?.hideIfNoChildren ? { hideIfNoChildren: true } : undefined),\n ...(lhs?.hideInHierarchy || rhs?.hideInHierarchy ? { hideInHierarchy: true } : undefined),\n ...mergeByLabelParams(lhs?.grouping?.byLabel, rhs?.grouping?.byLabel),\n };\n return Object.keys(params).length > 0 ? params : undefined;\n}\n\nfunction mergeByLabelParams(\n lhs: HierarchyNodeLabelGroupingParams | undefined,\n rhs: HierarchyNodeLabelGroupingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (lhs && typeof lhs === \"object\" && lhs.action === \"merge\" && rhs && typeof rhs === \"object\" && rhs.action === \"merge\" && lhs.groupId === rhs.groupId) {\n return {\n grouping: { byLabel: lhs },\n };\n }\n return undefined;\n}\n\nfunction mergeParentNodeKeys(lhsKeys: HierarchyNodeKey[], rhsKeys: HierarchyNodeKey[]): HierarchyNodeKey[] {\n const res = new Array<HierarchyNodeKey>();\n for (let i = 0; i < lhsKeys.length && i < rhsKeys.length; ++i) {\n if (!HierarchyNodeKey.equals(lhsKeys[i], rhsKeys[i])) {\n break;\n }\n res.push(lhsKeys[i]);\n }\n return res;\n}\n\n/** @internal */\nexport function mergeInstanceNodes(lhs: ProcessedInstanceHierarchyNode, rhs: ProcessedInstanceHierarchyNode): ProcessedInstanceHierarchyNode {\n assert(typeof lhs.key === typeof rhs.key);\n const mergedProcessingParams = mergeNodeHandlingParams(lhs.processingParams, rhs.processingParams);\n const mergedChildren = lhs.children === true || rhs.children === true ? true : lhs.children === false && rhs.children === false ? false : undefined;\n const mergedNode: ProcessedInstanceHierarchyNode = {\n ...lhs,\n ...rhs,\n label: lhs.label,\n key: { type: \"instances\", instanceKeys: [...lhs.key.instanceKeys, ...rhs.key.instanceKeys] },\n parentKeys: mergeParentNodeKeys(lhs.parentKeys, rhs.parentKeys),\n };\n // Remove specific properties or change their values based on lhs and rhs nodes\n mergedChildren !== undefined ? (mergedNode.children = mergedChildren) : delete mergedNode.children;\n mergedProcessingParams ? (mergedNode.processingParams = mergedProcessingParams) : delete mergedNode.processingParams;\n lhs.autoExpand || rhs.autoExpand ? (mergedNode.autoExpand = true) : delete mergedNode.autoExpand;\n lhs.extendedData || rhs.extendedData ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData }) : delete mergedNode.extendedData;\n lhs.supportsFiltering && rhs.supportsFiltering ? (mergedNode.supportsFiltering = true) : delete mergedNode.supportsFiltering;\n return mergedNode;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ProcessedHierarchyNode } from "../IModelHierarchyNode.js";
|
|
1
|
+
import type { Observable } from "rxjs";
|
|
2
|
+
import type { ProcessedHierarchyNode } from "../IModelHierarchyNode.js";
|
|
3
3
|
/** @internal */
|
|
4
4
|
export declare const LOGGING_NAMESPACE: string;
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetermineChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DetermineChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,WACrF,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAmBhG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetermineChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;
|
|
1
|
+
{"version":3,"file":"DetermineChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAmBhG,0EAoBC;AArCD,+BAA0C;AAC1C,wDAAsI;AACtI,oEAAqD;AACrD,wFAA8F;AAK9F,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,sCAA0B,CAAC,CAAC;AAE3G;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,QAA+D;IAC7G,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI,CACf,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACrH,IAAA,oDAA6B,EAAC,GAAG,CAAC,EAClC,IAAA,gBAAS,EAAC,CAAC,CAAyB,EAAsC,EAAE;YAC1E,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC;YACf,CAAC;YACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CACrB,IAAA,qBAAG,EAAC;gBACF,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,oBAAoB,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,IAAA,0CAA8B,EAAC,CAAC,CAAC,0BAA0B,eAAe,EAAE;aACnI,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAC1E,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvH,CAAC;IACJ,CAAC,CAAC;AACJ,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\nimport { concatMap, map, of } from \"rxjs\";\nimport { createNodeIdentifierForLogging, createOperatorLoggingNamespace, LOGGING_NAMESPACE_INTERNAL } from \"../../internal/Common.js\";\nimport { log } from \"../../internal/LoggingUtils.js\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { ProcessedHierarchyNode } from \"../IModelHierarchyNode.js\";\n\nconst OPERATOR_NAME = \"DetermineChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Ensures all input nodes have their children determined.\n *\n * @internal\n */\nexport function createDetermineChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n releaseMainThreadOnItemsCount(200),\n concatMap((n: ProcessedHierarchyNode): Observable<ProcessedHierarchyNode> => {\n if (n.children !== undefined) {\n return of(n);\n }\n return hasNodes(n).pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* c8 ignore next */ (hasChildrenFlag) => `${createNodeIdentifierForLogging(n)}: determined children: ${hasChildrenFlag}`,\n }),\n map((hasChildrenFlag) => Object.assign(n, { children: hasChildrenFlag })),\n );\n }),\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
|
|
3
|
-
import { ParentHierarchyNode } from "../../HierarchyNode.js";
|
|
4
|
-
import { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from "../IModelHierarchyNode.js";
|
|
5
|
-
import { PropertiesGroupingLocalizedStrings } from "./grouping/PropertiesGrouping.js";
|
|
1
|
+
import type { Observable } from "rxjs";
|
|
2
|
+
import type { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
|
|
3
|
+
import type { ParentHierarchyNode } from "../../HierarchyNode.js";
|
|
4
|
+
import type { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from "../IModelHierarchyNode.js";
|
|
5
|
+
import type { PropertiesGroupingLocalizedStrings } from "./grouping/PropertiesGrouping.js";
|
|
6
6
|
/** @internal */
|
|
7
7
|
export declare const LOGGING_NAMESPACE: string;
|
|
8
8
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grouping.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Grouping.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACxH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AACxI,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAG3F,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAI3G,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,GAAG,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,EACtG,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,8BAA8B,KAAK,IAAI,EAC9E,gBAAgB,CAAC,EAAE,eAAe,EAAE,WAEZ,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAyDhG;AAED,gBAAgB;AAChB,MAAM,MAAM,uCAAuC,GAAG,IAAI,CAAC,8BAA8B,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAA;CAAE,CAAC;AAExJ,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,OAAO,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACxD,sCAAsC;IACtC,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzE,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,KAC3D,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
|