@itwin/presentation-hierarchies 2.0.0-alpha.2 → 2.0.0-alpha.20
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 +929 -12
- package/README.md +20 -50
- package/lib/hierarchies/HierarchyErrors.d.ts.map +1 -0
- package/lib/hierarchies/HierarchyErrors.js.map +1 -0
- package/lib/hierarchies/HierarchyMerge.d.ts +19 -0
- package/lib/hierarchies/HierarchyMerge.d.ts.map +1 -0
- package/lib/{esm/hierarchies/HierarchyProvider.js → hierarchies/HierarchyMerge.js} +5 -6
- package/lib/hierarchies/HierarchyMerge.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyNode.d.ts +21 -28
- package/lib/hierarchies/HierarchyNode.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyNode.js +19 -21
- package/lib/hierarchies/HierarchyNode.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/HierarchyNodeIdentifier.d.ts +3 -1
- package/lib/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeIdentifier.js +23 -6
- package/lib/hierarchies/HierarchyNodeIdentifier.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeKey.d.ts +5 -4
- package/lib/hierarchies/HierarchyNodeKey.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyNodeKey.js +1 -1
- package/lib/hierarchies/HierarchyNodeKey.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/HierarchyProvider.d.ts +59 -34
- package/lib/hierarchies/HierarchyProvider.d.ts.map +1 -0
- package/lib/hierarchies/HierarchyProvider.js +61 -0
- package/lib/hierarchies/HierarchyProvider.js.map +1 -0
- package/lib/hierarchies/HierarchySearch.d.ts +297 -0
- package/lib/hierarchies/HierarchySearch.d.ts.map +1 -0
- package/lib/hierarchies/HierarchySearch.js +464 -0
- package/lib/hierarchies/HierarchySearch.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/Logging.d.ts +1 -1
- package/lib/hierarchies/Logging.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/Logging.js +1 -1
- package/lib/hierarchies/Logging.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/HierarchyCache.d.ts +1 -1
- package/lib/hierarchies/imodel/HierarchyCache.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/HierarchyCache.js +4 -7
- package/lib/hierarchies/imodel/HierarchyCache.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyDefinition.d.ts +34 -11
- package/lib/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -0
- package/lib/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/IModelHierarchyNode.d.ts +5 -5
- package/lib/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -0
- package/lib/hierarchies/imodel/IModelHierarchyNode.js.map +1 -0
- package/lib/hierarchies/imodel/IModelHierarchyProvider.d.ts +136 -0
- package/lib/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -0
- package/lib/hierarchies/imodel/IModelHierarchyProvider.js +656 -0
- package/lib/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/LimitingECSqlQueryExecutor.d.ts +1 -1
- package/lib/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/LimitingECSqlQueryExecutor.js +14 -11
- package/lib/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/NodeSelectQueryFactory.d.ts +17 -12
- package/lib/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/NodeSelectQueryFactory.js +214 -139
- package/lib/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/PredicateBasedHierarchyDefinition.d.ts +7 -7
- package/lib/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/PredicateBasedHierarchyDefinition.js +3 -2
- package/lib/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -0
- package/lib/hierarchies/imodel/SearchHierarchyDefinition.d.ts +35 -0
- package/lib/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
- package/lib/hierarchies/imodel/SearchHierarchyDefinition.js +261 -0
- package/lib/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/TreeNodesReader.d.ts +10 -12
- package/lib/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/TreeNodesReader.js +12 -9
- package/lib/hierarchies/imodel/TreeNodesReader.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/Utils.d.ts +2 -1
- package/lib/hierarchies/imodel/Utils.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/Utils.js +20 -7
- package/lib/hierarchies/imodel/Utils.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/DetermineChildren.d.ts +2 -2
- package/lib/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/DetermineChildren.js +11 -5
- package/lib/hierarchies/imodel/operators/DetermineChildren.js.map +1 -0
- package/lib/hierarchies/imodel/operators/Grouping.d.ts +26 -0
- package/lib/hierarchies/imodel/operators/Grouping.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/Grouping.js +33 -19
- package/lib/hierarchies/imodel/operators/Grouping.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/HideIfNoChildren.d.ts +1 -1
- package/lib/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/HideIfNoChildren.js +33 -10
- package/lib/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
- package/lib/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/HideNodesInHierarchy.js +31 -15
- package/lib/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/AutoExpand.d.ts +1 -1
- package/lib/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -0
- package/lib/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -0
- package/lib/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +11 -0
- package/lib/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/BaseClassGrouping.js +10 -12
- package/lib/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -0
- package/lib/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +7 -0
- package/lib/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/ClassGrouping.js +8 -11
- package/lib/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/GroupHiding.d.ts +1 -1
- package/lib/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/GroupHiding.js +1 -5
- package/lib/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -0
- package/lib/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +5 -0
- package/lib/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/LabelGrouping.js +2 -10
- package/lib/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/imodel/operators/grouping/PropertiesGrouping.d.ts +7 -7
- package/lib/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/PropertiesGrouping.js +46 -37
- package/lib/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/Shared.d.ts +2 -2
- package/lib/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/Shared.js +3 -1
- package/lib/hierarchies/imodel/operators/grouping/Shared.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/Common.d.ts +5 -2
- package/lib/hierarchies/internal/Common.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/Common.js +13 -3
- package/lib/hierarchies/internal/Common.js.map +1 -0
- package/lib/hierarchies/internal/DisposePolyfill.d.ts.map +1 -0
- package/lib/hierarchies/internal/DisposePolyfill.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/LoggingUtils.d.ts +1 -1
- package/lib/hierarchies/internal/LoggingUtils.d.ts.map +1 -0
- package/lib/hierarchies/internal/LoggingUtils.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/RxjsHierarchyDefinition.d.ts +19 -8
- package/lib/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/RxjsHierarchyDefinition.js +9 -6
- package/lib/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/internal/SubscriptionScheduler.d.ts +1 -1
- package/lib/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/SubscriptionScheduler.js +1 -4
- package/lib/hierarchies/internal/SubscriptionScheduler.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/internal/operators/Partition.d.ts +2 -1
- package/lib/hierarchies/internal/operators/Partition.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/Partition.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/operators/ReduceToMergeMap.d.ts +3 -3
- package/lib/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/internal/operators/ReleaseMainThread.d.ts +1 -1
- package/lib/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/internal/operators/ShareReplayWithErrors.d.ts +1 -1
- package/lib/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -0
- package/lib/{cjs/hierarchies → hierarchies}/internal/operators/Sorting.d.ts +1 -1
- package/lib/hierarchies/internal/operators/Sorting.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/Sorting.js.map +1 -0
- package/lib/{esm/hierarchies → hierarchies}/internal/operators/TapOnce.d.ts +1 -1
- package/lib/hierarchies/internal/operators/TapOnce.d.ts.map +1 -0
- package/lib/hierarchies/internal/operators/TapOnce.js.map +1 -0
- package/lib/presentation-hierarchies.d.ts +24 -0
- package/lib/presentation-hierarchies.d.ts.map +1 -0
- package/lib/{esm/presentation-hierarchies.js → presentation-hierarchies.js} +7 -7
- package/lib/presentation-hierarchies.js.map +1 -0
- package/package.json +29 -39
- package/lib/cjs/hierarchies/HierarchyErrors.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyErrors.js +0 -20
- package/lib/cjs/hierarchies/HierarchyErrors.js.map +0 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +0 -133
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.js +0 -232
- package/lib/cjs/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNode.d.ts +0 -156
- package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNode.js +0 -84
- package/lib/cjs/hierarchies/HierarchyNode.js.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js +0 -35
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts +0 -161
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js +0 -166
- package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +0 -1
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts +0 -109
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyProvider.js +0 -44
- package/lib/cjs/hierarchies/HierarchyProvider.js.map +0 -1
- package/lib/cjs/hierarchies/Logging.d.ts.map +0 -1
- package/lib/cjs/hierarchies/Logging.js +0 -27
- package/lib/cjs/hierarchies/Logging.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 -283
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js +0 -84
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +0 -121
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js +0 -21
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js +0 -29
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +0 -80
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +0 -449
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +0 -21
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +0 -123
- package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +0 -230
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +0 -591
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +0 -93
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +0 -37
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +0 -44
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/Utils.js +0 -59
- package/lib/cjs/hierarchies/imodel/Utils.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +0 -34
- package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts +0 -26
- package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/Grouping.js +0 -162
- package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +0 -52
- package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +0 -68
- package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +0 -4
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js +0 -26
- package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +0 -11
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +0 -114
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +0 -7
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +0 -55
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +0 -4
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +0 -53
- package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +0 -5
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +0 -60
- package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +0 -309
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts +0 -5
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +0 -29
- package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +0 -1
- package/lib/cjs/hierarchies/internal/Common.d.ts +0 -58
- package/lib/cjs/hierarchies/internal/Common.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/Common.js +0 -80
- package/lib/cjs/hierarchies/internal/Common.js.map +0 -1
- package/lib/cjs/hierarchies/internal/DisposePolyfill.d.ts +0 -1
- package/lib/cjs/hierarchies/internal/DisposePolyfill.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/DisposePolyfill.js +0 -11
- package/lib/cjs/hierarchies/internal/DisposePolyfill.js.map +0 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts +0 -12
- package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/EachValueFrom.js +0 -110
- package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +0 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts +0 -12
- package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/LoggingUtils.js +0 -37
- package/lib/cjs/hierarchies/internal/LoggingUtils.js.map +0 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts +0 -64
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +0 -25
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +0 -1
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +0 -57
- package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/Partition.js +0 -60
- package/lib/cjs/hierarchies/internal/operators/Partition.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts +0 -22
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js +0 -50
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js +0 -24
- package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js +0 -23
- package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.js +0 -25
- package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts +0 -4
- package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts.map +0 -1
- package/lib/cjs/hierarchies/internal/operators/TapOnce.js +0 -19
- package/lib/cjs/hierarchies/internal/operators/TapOnce.js.map +0 -1
- package/lib/cjs/package.json +0 -1
- package/lib/cjs/presentation-hierarchies.d.ts +0 -15
- package/lib/cjs/presentation-hierarchies.d.ts.map +0 -1
- package/lib/cjs/presentation-hierarchies.js +0 -40
- package/lib/cjs/presentation-hierarchies.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyErrors.d.ts +0 -9
- package/lib/esm/hierarchies/HierarchyErrors.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyErrors.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts +0 -133
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.js +0 -227
- package/lib/esm/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyNode.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyNode.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +0 -29
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyProvider.js.map +0 -1
- package/lib/esm/hierarchies/Logging.d.ts +0 -13
- package/lib/esm/hierarchies/Logging.d.ts.map +0 -1
- package/lib/esm/hierarchies/Logging.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 -277
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +0 -18
- package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +0 -234
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +0 -80
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +0 -446
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +0 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +0 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +0 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +0 -140
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +0 -1
- package/lib/esm/hierarchies/imodel/Utils.d.ts +0 -4
- package/lib/esm/hierarchies/imodel/Utils.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/Utils.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts +0 -11
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts +0 -26
- package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts +0 -11
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +0 -11
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +0 -11
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +0 -7
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +0 -5
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +0 -32
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +0 -1
- package/lib/esm/hierarchies/internal/Common.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/Common.js.map +0 -1
- package/lib/esm/hierarchies/internal/DisposePolyfill.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/DisposePolyfill.js.map +0 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.d.ts +0 -12
- package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/EachValueFrom.js +0 -107
- package/lib/esm/hierarchies/internal/EachValueFrom.js.map +0 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/LoggingUtils.js.map +0 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts +0 -17
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/Partition.d.ts +0 -6
- package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/Partition.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts +0 -7
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +0 -9
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.d.ts +0 -13
- package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.js.map +0 -1
- package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts.map +0 -1
- package/lib/esm/hierarchies/internal/operators/TapOnce.js.map +0 -1
- package/lib/esm/presentation-hierarchies.d.ts +0 -15
- package/lib/esm/presentation-hierarchies.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies.js.map +0 -1
- /package/lib/{cjs/hierarchies → hierarchies}/HierarchyErrors.d.ts +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/HierarchyErrors.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyDefinition.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/imodel/IModelHierarchyNode.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/imodel/operators/grouping/AutoExpand.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/DisposePolyfill.d.ts +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/DisposePolyfill.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/LoggingUtils.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/Partition.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ReduceToMergeMap.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ReleaseMainThread.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/ShareReplayWithErrors.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/Sorting.js +0 -0
- /package/lib/{esm/hierarchies → hierarchies}/internal/operators/TapOnce.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IModelHierarchyNode.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/IModelHierarchyNode.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAIhG,OAAO,EAAkB,gBAAgB,EAAoB,MAAM,wBAAwB,CAAC;AAuN5F,cAAc;AACd,2DAA2D;AAC3D,MAAM,KAAW,sBAAsB,CAatC;AAbD,WAAiB,sBAAsB;IACrC,sDAAsD;IACtD,SAAgB,SAAS,CAAC,IAA4B;QACpD,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAFe,gCAAS,YAExB,CAAA;IACD,iEAAiE;IACjE,SAAgB,eAAe,CAAC,IAA4B;QAC1D,OAAO,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAFe,sCAAe,kBAE9B,CAAA;IACD,uDAAuD;IACvD,SAAgB,cAAc,CAAC,IAA4B;QACzD,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAFe,qCAAc,iBAE7B,CAAA;AACH,CAAC,EAbgB,sBAAsB,KAAtB,sBAAsB,QAatC","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 { ConcatenatedValue, InstanceKey, OmitOverUnion, PrimitiveValue } from \"@itwin/presentation-shared\";\nimport { GroupingHierarchyNode, NonGroupingHierarchyNode } from \"../HierarchyNode.js\";\nimport { GenericNodeKey, HierarchyNodeKey, InstancesNodeKey } from \"../HierarchyNodeKey.js\";\n\n/**\n * Base processing parameters that apply to every node.\n * @public\n */\ninterface HierarchyNodeProcessingParamsBase {\n /** Indicates if this node should be hidden if it has no child nodes. */\n hideIfNoChildren?: boolean;\n /** Indicates that this node should always be hidden and its children should be loaded in its place. */\n hideInHierarchy?: boolean;\n}\n\n/**\n * A data structure for defining nodes' grouping requirements.\n * @public\n */\ninterface HierarchyNodeGroupingParams {\n byLabel?: HierarchyNodeLabelGroupingParams;\n byClass?: boolean | HierarchyNodeGroupingParamsBase;\n byBaseClasses?: HierarchyNodeBaseClassGroupingParams;\n byProperties?: HierarchyNodePropertiesGroupingParams;\n}\n\n/**\n * A data structure for defining params specifically used for label grouping.\n * @public\n */\ninterface HierarchyNodeLabelGroupingBaseParams {\n /** Label grouping option that determines whether to group nodes or to merge them. Defaults to \"group\".*/\n action?: \"group\" | \"merge\";\n /** Value that needs to match in order for nodes to be grouped or merged.*/\n groupId?: string;\n}\n\n/**\n * A data structure for defining label merging.\n * @public\n */\ninterface HierarchyNodeLabelGroupingMergeParams extends HierarchyNodeLabelGroupingBaseParams {\n action: \"merge\";\n}\n\n/**\n * A data structure for defining label grouping with additional parameters.\n * @public\n */\ninterface HierarchyNodeLabelGroupingGroupParams extends HierarchyNodeLabelGroupingBaseParams, HierarchyNodeGroupingParamsBase {\n action?: \"group\";\n}\n\n/**\n * A data structure for defining possible label grouping types.\n * @public\n */\nexport type HierarchyNodeLabelGroupingParams = boolean | HierarchyNodeLabelGroupingMergeParams | HierarchyNodeLabelGroupingGroupParams;\n\n/**\n * Grouping parameters that are shared across all types of groupings.\n * @public\n */\nexport interface HierarchyNodeGroupingParamsBase {\n /** Hiding option that determines whether to hide group nodes which have no siblings at the same hierarchy level. */\n hideIfNoSiblings?: boolean;\n /** Hiding option that determines whether to hide group nodes which have only one node as its children. */\n hideIfOneGroupedNode?: boolean;\n /** Option which auto expands grouping nodes' children when it has single child or always. */\n autoExpand?: HierarchyNodeAutoExpandProp;\n}\n\n/**\n * Defines possible values for `BaseGroupingParams.autoExpand` attribute:\n * - `single-child` - set the grouping node to auto-expand if it groups a single node.\n * - `always` - always set the grouping node to auto-expand.\n * @public\n */\nexport type HierarchyNodeAutoExpandProp = \"single-child\" | \"always\";\n\n/**\n * A data structure that represents base class grouping.\n * @public\n */\ninterface HierarchyNodeBaseClassGroupingParams extends HierarchyNodeGroupingParamsBase {\n /**\n * Full names of classes, which should be used to group the node. Only has effect if the node\n * represents an instance of that class.\n *\n * Full class name format: `SchemaName.ClassName`.\n */\n fullClassNames: string[];\n}\n\n/**\n * A data structure that represents properties grouping.\n * @public\n */\nexport interface HierarchyNodePropertiesGroupingParams extends HierarchyNodeGroupingParamsBase {\n /**\n * Full name of a class whose properties are used to group the node. Only has effect if the node\n * represents an instance of that class.\n *\n * Full class name format: `SchemaName.ClassName`.\n */\n propertiesClassName: string;\n /**\n * Property grouping option that determines whether to group nodes whose grouping value is not set or is set to an empty string.\n *\n * Label of the created grouping node will be `Not Specified`.\n */\n createGroupForUnspecifiedValues?: boolean;\n /**\n * Property grouping option that determines whether to group nodes whose grouping value doesn't fit within any of the provided\n * ranges, or is not a numeric value.\n *\n * Label of the created grouping node will be `Other`.\n */\n createGroupForOutOfRangeValues?: boolean;\n /**\n * Properties of the specified class, by which the nodes should be grouped. Each provided group definition results in a\n * grouping hierarchy level.\n *\n * Example usage:\n * ```ts\n * propertyGroups: [\n * {\n * propertyName: \"type\",\n * propertyValue: \"Wall\"\n * },\n * {\n * propertyName: \"length\",\n * propertyValue: 15,\n * ranges: [\n * { fromValue: 1, toValue: 10, rangeLabel: \"Small\" },\n * { fromValue: 11, toValue: 20, rangeLabel: \"Medium\" }\n * ]\n * },\n * ]\n * ```\n */\n propertyGroups: HierarchyNodePropertyGroup[];\n}\n\n/**\n * A data structure that represents specific properties' grouping params.\n * @public\n */\nexport interface HierarchyNodePropertyGroup {\n /** A string indicating the name of the property to group by. */\n propertyName: string;\n /** Value of the property, which will be used to group the node. */\n propertyValue?: PrimitiveValue | ConcatenatedValue;\n /** Ranges are used to group nodes by numeric properties which are within specified bounds. */\n ranges?: HierarchyNodePropertyValueRange[];\n}\n\n/**\n * A data structure that represents boundaries for a value.\n * @public\n */\nexport interface HierarchyNodePropertyValueRange {\n /** Defines the lower bound of the range. */\n fromValue: number;\n /** Defines the upper bound of the range. */\n toValue: number;\n /** Defines the range label. Will be used as `PropertyValueRangeGroupingNode` node's display label. */\n rangeLabel?: string;\n}\n\n/**\n * Processing parameters that apply to instance nodes.\n * @public\n */\nexport interface InstanceHierarchyNodeProcessingParams extends HierarchyNodeProcessingParamsBase {\n grouping?: HierarchyNodeGroupingParams;\n}\n\n/**\n * A generic (not based on data in an iModel) node that has processing parameters.\n * @public\n */\nexport type ProcessedGenericHierarchyNode = Omit<NonGroupingHierarchyNode, \"key\" | \"children\"> & {\n key: GenericNodeKey;\n children?: boolean;\n processingParams?: HierarchyNodeProcessingParamsBase;\n};\n\n/**\n * An instances' (based on data in an iModel) node that has processing parameters.\n * @public\n */\nexport type ProcessedInstanceHierarchyNode = Omit<NonGroupingHierarchyNode, \"key\" | \"children\"> & {\n key: InstancesNodeKey;\n children?: boolean;\n processingParams?: InstanceHierarchyNodeProcessingParams;\n};\n\n/**\n * A grouping node that groups either instance nodes or other grouping nodes.\n * @public\n */\nexport type ProcessedGroupingHierarchyNode = Omit<GroupingHierarchyNode, \"children\"> & {\n children: Array<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode>;\n};\n\n/**\n * A `HierarchyNode` that may have processing parameters defining whether it should be hidden under some conditions,\n * how it should be grouped, sorted, etc.\n *\n * Type guards under `HierarchyNode` namespace can be used to differentiate between different sub-types of\n * `ProcessedHierarchyNode`.\n *\n * @public\n */\nexport type ProcessedHierarchyNode = ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode | ProcessedGroupingHierarchyNode;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace ProcessedHierarchyNode {\n /** Checks whether the given node is a generic node */\n export function isGeneric(node: ProcessedHierarchyNode): node is ProcessedGenericHierarchyNode {\n return HierarchyNodeKey.isGeneric(node.key);\n }\n /** Checks whether the given node is an ECInstances-based node */\n export function isInstancesNode(node: ProcessedHierarchyNode): node is ProcessedInstanceHierarchyNode {\n return HierarchyNodeKey.isInstances(node.key);\n }\n /** Checks whether the given node is a grouping node */\n export function isGroupingNode(node: ProcessedHierarchyNode): node is ProcessedGroupingHierarchyNode {\n return HierarchyNodeKey.isGrouping(node.key);\n }\n}\n\n/**\n * A `ProcessedHierarchyNode` that has an unformatted label in a form of `ConcatenatedValue`. Generally this is\n * returned by hierarchy definitions as a generic node or when the node is just parsed from query results.\n * @public\n */\nexport type SourceHierarchyNode<TBase = SourceGenericHierarchyNode | SourceInstanceHierarchyNode> = OmitOverUnion<TBase, \"label\" | \"parentKeys\"> & {\n label: string | ConcatenatedValue;\n};\n\n/**\n * A kind of `ProcessedGenericHierarchyNode` that has unformatted label and doesn't know about its ancestors.\n * @public\n */\nexport type SourceGenericHierarchyNode = SourceHierarchyNode<Omit<ProcessedGenericHierarchyNode, \"key\"> & { key: string }>;\n\n/**\n * A kind of `ProcessedInstanceHierarchyNode` that has unformatted label and doesn't know about its ancestors.\n * @public\n */\nexport type SourceInstanceHierarchyNode = SourceHierarchyNode<\n Omit<ProcessedInstanceHierarchyNode, \"key\"> & {\n key: Omit<InstancesNodeKey, \"instanceKeys\"> & { instanceKeys: InstanceKey[] };\n }\n>;\n"]}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import "../internal/DisposePolyfill.js";
|
|
2
|
-
import { ECClassHierarchyInspector, ECSchemaProvider, Event, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
|
|
3
|
-
import { HierarchyFilteringPath } from "../HierarchyFiltering.js";
|
|
4
|
-
import { HierarchyProvider } from "../HierarchyProvider.js";
|
|
5
|
-
import { HierarchyDefinition } from "./IModelHierarchyDefinition.js";
|
|
6
|
-
import { LimitingECSqlQueryExecutor } from "./LimitingECSqlQueryExecutor.js";
|
|
7
|
-
/**
|
|
8
|
-
* Defines the strings used by hierarchy provider.
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
interface IModelHierarchyProviderLocalizedStrings {
|
|
12
|
-
/**
|
|
13
|
-
* A string for "Unspecified". Used for labels of property grouping nodes
|
|
14
|
-
* that group by an empty value.
|
|
15
|
-
*/
|
|
16
|
-
unspecified: string;
|
|
17
|
-
/**
|
|
18
|
-
* A string for "Other". Used for label of a range property grouping node that
|
|
19
|
-
* groups values which don't fit into any other range.
|
|
20
|
-
*/
|
|
21
|
-
other: string;
|
|
22
|
-
}
|
|
23
|
-
/** @public */
|
|
24
|
-
type IModelAccess = ECSchemaProvider & LimitingECSqlQueryExecutor & ECClassHierarchyInspector & {
|
|
25
|
-
imodelKey: string;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Props for `createIModelHierarchyProvider`.
|
|
29
|
-
* @public
|
|
30
|
-
*/
|
|
31
|
-
interface IModelHierarchyProviderProps {
|
|
32
|
-
/**
|
|
33
|
-
* An object that provides access to iModel's data and metadata.
|
|
34
|
-
*
|
|
35
|
-
* @see `ECSchemaProvider`
|
|
36
|
-
* @see `LimitingECSqlQueryExecutor`
|
|
37
|
-
* @see `ECClassHierarchyInspector`
|
|
38
|
-
*/
|
|
39
|
-
imodelAccess: IModelAccess;
|
|
40
|
-
/** An event that is raised when iModel data, that may affect the hierarchy, changes. */
|
|
41
|
-
imodelChanged?: Event<() => void>;
|
|
42
|
-
/**
|
|
43
|
-
* A function that returns a hierarchy definition, describing how the hierarchy that the provider should be create. The
|
|
44
|
-
* function is called once during the provider's construction.
|
|
45
|
-
*/
|
|
46
|
-
hierarchyDefinition: HierarchyDefinition;
|
|
47
|
-
/** Maximum number of queries that the provider attempts to execute in parallel. Defaults to `10`. */
|
|
48
|
-
queryConcurrency?: number;
|
|
49
|
-
/**
|
|
50
|
-
* The amount of queries whose results are stored in-memory for quick retrieval. Defaults to `1`,
|
|
51
|
-
* which means only results of the last run query are cached.
|
|
52
|
-
*/
|
|
53
|
-
queryCacheSize?: number;
|
|
54
|
-
/** A set of localized strings to use. Defaults to English strings. */
|
|
55
|
-
localizedStrings?: Partial<IModelHierarchyProviderLocalizedStrings>;
|
|
56
|
-
/**
|
|
57
|
-
* A values formatter for formatting node labels. Defaults to the
|
|
58
|
-
* result of `createDefaultValueFormatter` called with default parameters. May be overridden
|
|
59
|
-
* by calling `setFormatter` on the provider instance.
|
|
60
|
-
*/
|
|
61
|
-
formatter?: IPrimitiveValueFormatter;
|
|
62
|
-
/** Props for filtering the hierarchy. */
|
|
63
|
-
filtering?: {
|
|
64
|
-
/** A list of node identifiers from root to target node. */
|
|
65
|
-
paths: HierarchyFilteringPath[];
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Creates an instance of `HierarchyProvider` that creates a hierarchy based on given iModel and
|
|
70
|
-
* a hierarchy definition, which defines each hierarchy level through ECSQL queries.
|
|
71
|
-
*
|
|
72
|
-
* @public
|
|
73
|
-
*/
|
|
74
|
-
export declare function createIModelHierarchyProvider(props: IModelHierarchyProviderProps): HierarchyProvider & {
|
|
75
|
-
/** @deprecated in 1.4. Use `[Symbol.dispose]` instead. */
|
|
76
|
-
dispose: () => void;
|
|
77
|
-
[Symbol.dispose]: () => void;
|
|
78
|
-
};
|
|
79
|
-
export {};
|
|
80
|
-
//# sourceMappingURL=IModelHierarchyProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IModelHierarchyProvider.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/IModelHierarchyProvider.ts"],"names":[],"mappings":"AAKA,OAAO,gCAAgC,CAAC;AAuBxC,OAAO,EAGL,yBAAyB,EACzB,gBAAgB,EAGhB,KAAK,EAIL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAA0B,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAkBpF,OAAO,EAA6B,mBAAmB,EAA4B,MAAM,gCAAgC,CAAC;AAE1H,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAe7E;;;GAGG;AACH,UAAU,uCAAuC;IAC/C;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED,cAAc;AACd,KAAK,YAAY,GAAG,gBAAgB,GAAG,0BAA0B,GAAG,yBAAyB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtH;;;GAGG;AACH,UAAU,4BAA4B;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B,wFAAwF;IACxF,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAC;IAEzC,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,yCAAyC;IACzC,SAAS,CAAC,EAAE;QACV,2DAA2D;QAC3D,KAAK,EAAE,sBAAsB,EAAE,CAAC;KACjC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,iBAAiB,GAAG;IACtG,0DAA0D;IAC1D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,CAEA"}
|
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import "../internal/DisposePolyfill.js";
|
|
6
|
-
import { catchError, concat, defaultIfEmpty, EMPTY, filter, finalize, from, identity, map, merge, mergeAll, mergeMap, of, Subject, take, takeUntil, tap, } from "rxjs";
|
|
7
|
-
import { assert, BeEvent, Guid, StopWatch } from "@itwin/core-bentley";
|
|
8
|
-
import { createDefaultValueFormatter, formatConcatenatedValue, normalizeFullClassName, } from "@itwin/presentation-shared";
|
|
9
|
-
import { RowsLimitExceededError } from "../HierarchyErrors.js";
|
|
10
|
-
import { HierarchyNode } from "../HierarchyNode.js";
|
|
11
|
-
import { HierarchyNodeKey } from "../HierarchyNodeKey.js";
|
|
12
|
-
import { LOGGING_NAMESPACE as BASE_LOGGING_NAMESPACE, LOGGING_NAMESPACE_INTERNAL as BASE_LOGGING_NAMESPACE_INTERNAL, LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE, createNodeIdentifierForLogging, hasChildren, } from "../internal/Common.js";
|
|
13
|
-
import { eachValueFrom } from "../internal/EachValueFrom.js";
|
|
14
|
-
import { doLog, log } from "../internal/LoggingUtils.js";
|
|
15
|
-
import { partition } from "../internal/operators/Partition.js";
|
|
16
|
-
import { reduceToMergeMapList } from "../internal/operators/ReduceToMergeMap.js";
|
|
17
|
-
import { shareReplayWithErrors } from "../internal/operators/ShareReplayWithErrors.js";
|
|
18
|
-
import { sortNodesByLabelOperator } from "../internal/operators/Sorting.js";
|
|
19
|
-
import { getRxjsHierarchyDefinition } from "../internal/RxjsHierarchyDefinition.js";
|
|
20
|
-
import { SubscriptionScheduler } from "../internal/SubscriptionScheduler.js";
|
|
21
|
-
import { FilteringHierarchyDefinition } from "./FilteringHierarchyDefinition.js";
|
|
22
|
-
import { HierarchyCache } from "./HierarchyCache.js";
|
|
23
|
-
import { HierarchyNodesDefinition } from "./IModelHierarchyDefinition.js";
|
|
24
|
-
import { NodeSelectClauseColumnNames } from "./NodeSelectQueryFactory.js";
|
|
25
|
-
import { createDetermineChildrenOperator } from "./operators/DetermineChildren.js";
|
|
26
|
-
import { createGroupingOperator } from "./operators/Grouping.js";
|
|
27
|
-
import { createHideIfNoChildrenOperator } from "./operators/HideIfNoChildren.js";
|
|
28
|
-
import { createHideNodesInHierarchyOperator } from "./operators/HideNodesInHierarchy.js";
|
|
29
|
-
import { readNodes } from "./TreeNodesReader.js";
|
|
30
|
-
const LOGGING_NAMESPACE = `${BASE_LOGGING_NAMESPACE}.IModelHierarchyProvider`;
|
|
31
|
-
const LOGGING_NAMESPACE_INTERNAL = `${BASE_LOGGING_NAMESPACE_INTERNAL}.IModelHierarchyProvider`;
|
|
32
|
-
const LOGGING_NAMESPACE_PERFORMANCE = `${BASE_LOGGING_NAMESPACE_PERFORMANCE}.IModelHierarchyProvider`;
|
|
33
|
-
const DEFAULT_QUERY_CONCURRENCY = 10;
|
|
34
|
-
const DEFAULT_QUERY_CACHE_SIZE = 1;
|
|
35
|
-
/**
|
|
36
|
-
* Creates an instance of `HierarchyProvider` that creates a hierarchy based on given iModel and
|
|
37
|
-
* a hierarchy definition, which defines each hierarchy level through ECSQL queries.
|
|
38
|
-
*
|
|
39
|
-
* @public
|
|
40
|
-
*/
|
|
41
|
-
export function createIModelHierarchyProvider(props) {
|
|
42
|
-
return new IModelHierarchyProviderImpl(props);
|
|
43
|
-
}
|
|
44
|
-
class IModelHierarchyProviderImpl {
|
|
45
|
-
_imodelAccess;
|
|
46
|
-
_hierarchyChanged;
|
|
47
|
-
_valuesFormatter;
|
|
48
|
-
_sourceHierarchyDefinition;
|
|
49
|
-
_activeHierarchyDefinition;
|
|
50
|
-
_localizedStrings;
|
|
51
|
-
_queryScheduler;
|
|
52
|
-
_nodesCache;
|
|
53
|
-
_unsubscribe;
|
|
54
|
-
_dispose = new Subject();
|
|
55
|
-
constructor(props) {
|
|
56
|
-
this._imodelAccess = props.imodelAccess;
|
|
57
|
-
this._hierarchyChanged = new BeEvent();
|
|
58
|
-
this._activeHierarchyDefinition = this._sourceHierarchyDefinition = getRxjsHierarchyDefinition(props.hierarchyDefinition);
|
|
59
|
-
this._valuesFormatter = props?.formatter ?? createDefaultValueFormatter();
|
|
60
|
-
this._localizedStrings = { other: "Other", unspecified: "Not specified", ...props?.localizedStrings };
|
|
61
|
-
this._queryScheduler = new SubscriptionScheduler(props.queryConcurrency ?? DEFAULT_QUERY_CONCURRENCY);
|
|
62
|
-
this.setHierarchyFilter(props.filtering);
|
|
63
|
-
const queryCacheSize = props.queryCacheSize ?? DEFAULT_QUERY_CACHE_SIZE;
|
|
64
|
-
if (queryCacheSize !== 0) {
|
|
65
|
-
this._nodesCache = new HierarchyCache({
|
|
66
|
-
// we divide the size by 2, because each variation also counts as a query that we cache
|
|
67
|
-
size: Math.ceil(queryCacheSize / 2),
|
|
68
|
-
variationsCount: 1,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
this._unsubscribe = props.imodelChanged?.addListener(() => {
|
|
72
|
-
this.invalidateHierarchyCache("Data source changed");
|
|
73
|
-
this._dispose.next();
|
|
74
|
-
this._hierarchyChanged.raiseEvent();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
[Symbol.dispose]() {
|
|
78
|
-
this._dispose.next();
|
|
79
|
-
this._unsubscribe?.();
|
|
80
|
-
}
|
|
81
|
-
/* c8 ignore next 3 */
|
|
82
|
-
dispose() {
|
|
83
|
-
this[Symbol.dispose]();
|
|
84
|
-
}
|
|
85
|
-
get hierarchyChanged() {
|
|
86
|
-
return this._hierarchyChanged;
|
|
87
|
-
}
|
|
88
|
-
invalidateHierarchyCache(reason) {
|
|
89
|
-
doLog({
|
|
90
|
-
category: `${LOGGING_NAMESPACE}.Events`,
|
|
91
|
-
message: /* c8 ignore next */ () => (reason ? `${reason}: clear hierarchy cache` : `Clear hierarchy cache`),
|
|
92
|
-
});
|
|
93
|
-
this._nodesCache?.clear();
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Sets `HierarchyProvider` values formatter that formats nodes' labels. If provided `undefined`, then defaults to the
|
|
97
|
-
* result of `createDefaultValueFormatter` called with default parameters.
|
|
98
|
-
*/
|
|
99
|
-
setFormatter(formatter) {
|
|
100
|
-
this._valuesFormatter = formatter ?? createDefaultValueFormatter();
|
|
101
|
-
this._hierarchyChanged.raiseEvent({ formatterChange: { newFormatter: this._valuesFormatter } });
|
|
102
|
-
}
|
|
103
|
-
setHierarchyFilter(props) {
|
|
104
|
-
if (!props) {
|
|
105
|
-
if (this._sourceHierarchyDefinition !== this._activeHierarchyDefinition) {
|
|
106
|
-
this._activeHierarchyDefinition = this._sourceHierarchyDefinition;
|
|
107
|
-
this.invalidateHierarchyCache("Hierarchy filter reset");
|
|
108
|
-
}
|
|
109
|
-
this._hierarchyChanged.raiseEvent({ filterChange: { newFilter: undefined } });
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
this._activeHierarchyDefinition = new FilteringHierarchyDefinition({
|
|
113
|
-
imodelAccess: this._imodelAccess,
|
|
114
|
-
source: this._sourceHierarchyDefinition,
|
|
115
|
-
nodeIdentifierPaths: props.paths,
|
|
116
|
-
});
|
|
117
|
-
this.invalidateHierarchyCache("Hierarchy filter set");
|
|
118
|
-
this._dispose.next();
|
|
119
|
-
this._hierarchyChanged.raiseEvent({ filterChange: { newFilter: props } });
|
|
120
|
-
}
|
|
121
|
-
onGroupingNodeCreated(groupingNode, props) {
|
|
122
|
-
this._nodesCache?.set({ ...props, parentNode: groupingNode }, { observable: from(groupingNode.children), processingStatus: "pre-processed" });
|
|
123
|
-
}
|
|
124
|
-
createHierarchyLevelDefinitionsObservable(props) {
|
|
125
|
-
const { requestContext, ...defineHierarchyLevelProps } = props;
|
|
126
|
-
doLog({
|
|
127
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
128
|
-
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting hierarchy level definitions for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
129
|
-
});
|
|
130
|
-
let parentNode = props.parentNode;
|
|
131
|
-
if (parentNode && HierarchyNode.isGeneric(parentNode) && parentNode.key.source && parentNode.key.source !== this._imodelAccess.imodelKey) {
|
|
132
|
-
return EMPTY;
|
|
133
|
-
}
|
|
134
|
-
if (parentNode && HierarchyNode.isInstancesNode(parentNode)) {
|
|
135
|
-
parentNode = {
|
|
136
|
-
...parentNode,
|
|
137
|
-
key: {
|
|
138
|
-
...parentNode.key,
|
|
139
|
-
instanceKeys: parentNode.key.instanceKeys.filter((ik) => !ik.imodelKey || ik.imodelKey === this._imodelAccess.imodelKey),
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
assert(HierarchyNodeKey.isInstances(parentNode.key));
|
|
143
|
-
if (parentNode.key.instanceKeys.length === 0) {
|
|
144
|
-
return EMPTY;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return this._activeHierarchyDefinition.defineHierarchyLevel({ ...defineHierarchyLevelProps, parentNode }).pipe(mergeAll(), finalize(() => doLog({
|
|
148
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
149
|
-
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Received all hierarchy level definitions for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
150
|
-
})));
|
|
151
|
-
}
|
|
152
|
-
createSourceNodesObservable(props) {
|
|
153
|
-
// pipe definitions to nodes and put "share replay" on it
|
|
154
|
-
return this.createHierarchyLevelDefinitionsObservable(props).pipe(mergeMap((def) => {
|
|
155
|
-
if (HierarchyNodesDefinition.isGenericNode(def)) {
|
|
156
|
-
return of({ ...def.node, key: { type: "generic", id: def.node.key, source: this._imodelAccess.imodelKey } });
|
|
157
|
-
}
|
|
158
|
-
return this._queryScheduler.scheduleSubscription(of(def.query).pipe(map((query) => filterQueryByInstanceKeys(query, props.filteredInstanceKeys)), mergeMap((query) => readNodes({
|
|
159
|
-
queryExecutor: this._imodelAccess,
|
|
160
|
-
query,
|
|
161
|
-
limit: props.hierarchyLevelSizeLimit,
|
|
162
|
-
parser: this._activeHierarchyDefinition.parseNode ? (row) => this._activeHierarchyDefinition.parseNode(row, props.parentNode) : undefined,
|
|
163
|
-
})), map((node) => ({
|
|
164
|
-
...node,
|
|
165
|
-
key: { ...node.key, instanceKeys: node.key.instanceKeys.map((key) => ({ ...key, imodelKey: this._imodelAccess.imodelKey })) },
|
|
166
|
-
}))));
|
|
167
|
-
}), finalize(() => doLog({
|
|
168
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
169
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Read all child nodes ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
170
|
-
})), shareReplayWithErrors());
|
|
171
|
-
}
|
|
172
|
-
createPreProcessedNodesObservable(queryNodesObservable, props) {
|
|
173
|
-
return queryNodesObservable.pipe(
|
|
174
|
-
// we're going to be mutating the nodes, but don't want to mutate the original one, so just clone it here once
|
|
175
|
-
map((node) => ({ ...node })),
|
|
176
|
-
// set parent node keys on the source node
|
|
177
|
-
map((node) => Object.assign(node, { parentKeys: createParentNodeKeysList(props.parentNode) })),
|
|
178
|
-
// format `ConcatenatedValue` labels into string labels
|
|
179
|
-
mergeMap((node) => applyLabelsFormatting(node, this._valuesFormatter)),
|
|
180
|
-
// we have `ProcessedHierarchyNode` from here
|
|
181
|
-
preProcessNodes(this._activeHierarchyDefinition),
|
|
182
|
-
// process hiding
|
|
183
|
-
createHideIfNoChildrenOperator((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), createHideNodesInHierarchyOperator(
|
|
184
|
-
// note: for child nodes created because of hidden parent, we want to use parent's request props (instance filter, limit)
|
|
185
|
-
(n) => this.getChildNodesObservables({ ...props, parentNode: n }).processedNodes, false), finalize(() => doLog({
|
|
186
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
187
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished pre-processing child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
188
|
-
})));
|
|
189
|
-
}
|
|
190
|
-
createProcessedNodesObservable(preprocessedNodesObservable, props) {
|
|
191
|
-
return preprocessedNodesObservable.pipe(createGroupingOperator(this._imodelAccess, props.parentNode, this._valuesFormatter, this._localizedStrings, undefined, (gn) => this.onGroupingNodeCreated(gn, props)), finalize(() => doLog({
|
|
192
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
193
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished grouping child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
194
|
-
})));
|
|
195
|
-
}
|
|
196
|
-
createFinalizedNodesObservable(processedNodesObservable, props) {
|
|
197
|
-
return processedNodesObservable.pipe(createDetermineChildrenOperator((n) => this.getChildNodesObservables({ parentNode: n, requestContext: props.requestContext }).hasNodes), postProcessNodes(this._activeHierarchyDefinition), sortNodesByLabelOperator, map((n) => {
|
|
198
|
-
if ("processingParams" in n) {
|
|
199
|
-
delete n.processingParams;
|
|
200
|
-
}
|
|
201
|
-
return Object.assign(n, {
|
|
202
|
-
children: hasChildren(n),
|
|
203
|
-
});
|
|
204
|
-
}), takeUntil(this._dispose), finalize(() => doLog({
|
|
205
|
-
category: LOGGING_NAMESPACE_PERFORMANCE,
|
|
206
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Finished finalizing child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
207
|
-
})));
|
|
208
|
-
}
|
|
209
|
-
createHasNodesObservable(preprocessedNodesObservable, possiblyKnownChildrenObservable, props) {
|
|
210
|
-
const loggingCategory = `${LOGGING_NAMESPACE_INTERNAL}.HasNodes`;
|
|
211
|
-
return concat((possiblyKnownChildrenObservable ?? EMPTY).pipe(filter((n) => hasChildren(n))), preprocessedNodesObservable).pipe(log({
|
|
212
|
-
category: loggingCategory,
|
|
213
|
-
message: /* c8 ignore next */ (n) => `[${props.requestContext.requestId}] Node before mapping to 'true': ${createNodeIdentifierForLogging(n)}`,
|
|
214
|
-
}), take(1), map(() => true), defaultIfEmpty(false), catchError((e) => {
|
|
215
|
-
doLog({
|
|
216
|
-
category: loggingCategory,
|
|
217
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Error while determining children: ${e.message}`,
|
|
218
|
-
});
|
|
219
|
-
if (e instanceof RowsLimitExceededError) {
|
|
220
|
-
return of(true);
|
|
221
|
-
}
|
|
222
|
-
throw e;
|
|
223
|
-
}), log({ category: loggingCategory, message: /* c8 ignore next */ (r) => `[${props.requestContext.requestId}] Result: ${r}` }));
|
|
224
|
-
}
|
|
225
|
-
getCachedObservableEntry(props) {
|
|
226
|
-
const loggingCategory = `${LOGGING_NAMESPACE}.QueryResultsCache`;
|
|
227
|
-
const { parentNode, ...restProps } = props;
|
|
228
|
-
const cached = props.ignoreCache || !this._nodesCache ? undefined : this._nodesCache.get(props);
|
|
229
|
-
if (cached) {
|
|
230
|
-
doLog({
|
|
231
|
-
category: loggingCategory,
|
|
232
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Found query nodes observable for ${createNodeIdentifierForLogging(parentNode)}`,
|
|
233
|
-
});
|
|
234
|
-
return cached;
|
|
235
|
-
}
|
|
236
|
-
// if we don't find an entry for a grouping node, we load its instances by getting a query and applying
|
|
237
|
-
// a filter based on grouped instance keys
|
|
238
|
-
let filteredInstanceKeys;
|
|
239
|
-
let parentNonGroupingNode;
|
|
240
|
-
if (parentNode) {
|
|
241
|
-
if (HierarchyNode.isGroupingNode(parentNode)) {
|
|
242
|
-
parentNonGroupingNode = parentNode.nonGroupingAncestor;
|
|
243
|
-
filteredInstanceKeys = parentNode.groupedInstanceKeys;
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
// not sure why type checker doesn't pick this up
|
|
247
|
-
assert(HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));
|
|
248
|
-
parentNonGroupingNode = parentNode;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
const nonGroupingNodeChildrenRequestProps = {
|
|
252
|
-
...restProps,
|
|
253
|
-
parentNode: parentNonGroupingNode,
|
|
254
|
-
...(filteredInstanceKeys ? { filteredInstanceKeys } : undefined),
|
|
255
|
-
};
|
|
256
|
-
const value = { observable: this.createSourceNodesObservable(nonGroupingNodeChildrenRequestProps), processingStatus: "none" };
|
|
257
|
-
this._nodesCache?.set(nonGroupingNodeChildrenRequestProps, value);
|
|
258
|
-
doLog({
|
|
259
|
-
category: loggingCategory,
|
|
260
|
-
message: /* c8 ignore next */ () => `[${props.requestContext.requestId}] Saved query nodes observable for ${createNodeIdentifierForLogging(parentNode)}`,
|
|
261
|
-
});
|
|
262
|
-
return value;
|
|
263
|
-
}
|
|
264
|
-
getChildNodesObservables(props) {
|
|
265
|
-
const entry = this.getCachedObservableEntry(props);
|
|
266
|
-
switch (entry.processingStatus) {
|
|
267
|
-
case "none": {
|
|
268
|
-
const pre = this.createPreProcessedNodesObservable(entry.observable, props);
|
|
269
|
-
const post = this.createProcessedNodesObservable(pre, props);
|
|
270
|
-
return {
|
|
271
|
-
processedNodes: post,
|
|
272
|
-
hasNodes: this.createHasNodesObservable(pre, entry.observable, props),
|
|
273
|
-
finalizedNodes: this.createFinalizedNodesObservable(post, props),
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
case "pre-processed": {
|
|
277
|
-
const post = this.createProcessedNodesObservable(entry.observable, props);
|
|
278
|
-
return {
|
|
279
|
-
processedNodes: post,
|
|
280
|
-
hasNodes: this.createHasNodesObservable(entry.observable, undefined, props),
|
|
281
|
-
finalizedNodes: this.createFinalizedNodesObservable(post, props),
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Creates and runs a query based on provided props, then processes retrieved nodes and returns them.
|
|
288
|
-
*/
|
|
289
|
-
getNodes(props) {
|
|
290
|
-
const requestContext = { requestId: Guid.createValue() };
|
|
291
|
-
const loggingCategory = `${LOGGING_NAMESPACE}.GetNodes`;
|
|
292
|
-
const timer = new StopWatch(undefined, true);
|
|
293
|
-
let error;
|
|
294
|
-
let nodesCount = 0;
|
|
295
|
-
doLog({
|
|
296
|
-
category: loggingCategory,
|
|
297
|
-
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting child nodes for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
298
|
-
});
|
|
299
|
-
return eachValueFrom(this.getChildNodesObservables({ ...props, requestContext }).finalizedNodes.pipe(tap(() => ++nodesCount), catchError((e) => {
|
|
300
|
-
error = e;
|
|
301
|
-
throw e;
|
|
302
|
-
}), finalize(() => {
|
|
303
|
-
doLog({
|
|
304
|
-
category: loggingCategory,
|
|
305
|
-
message: /* c8 ignore next */ () =>
|
|
306
|
-
/* c8 ignore next 3 */ error
|
|
307
|
-
? `[${requestContext.requestId}] Error creating child nodes for ${createNodeIdentifierForLogging(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
|
|
308
|
-
: `[${requestContext.requestId}] Returned ${nodesCount} child nodes for ${createNodeIdentifierForLogging(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
|
|
309
|
-
});
|
|
310
|
-
})));
|
|
311
|
-
}
|
|
312
|
-
getNodeInstanceKeysObs(props) {
|
|
313
|
-
const { parentNode, instanceFilter, hierarchyLevelSizeLimit = "unbounded", requestContext } = props;
|
|
314
|
-
if (parentNode && HierarchyNode.isGroupingNode(parentNode)) {
|
|
315
|
-
return from(parentNode.groupedInstanceKeys);
|
|
316
|
-
}
|
|
317
|
-
assert(!parentNode || HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));
|
|
318
|
-
const hierarchyLevelDefinitions = this.createHierarchyLevelDefinitionsObservable({ parentNode, instanceFilter, requestContext });
|
|
319
|
-
// split the definitions based on whether they're for generic nodes or for instance nodes
|
|
320
|
-
const [genericDefs, instanceDefs] = partition(hierarchyLevelDefinitions, HierarchyNodesDefinition.isGenericNode);
|
|
321
|
-
// query instance keys and a flag whether they should be hidden
|
|
322
|
-
const instanceKeys = instanceDefs.pipe(mergeMap((def) => this._queryScheduler.scheduleSubscription(of(def.query).pipe(mergeMap(async (query) => {
|
|
323
|
-
const ecsql = `
|
|
324
|
-
SELECT
|
|
325
|
-
${NodeSelectClauseColumnNames.FullClassName},
|
|
326
|
-
${NodeSelectClauseColumnNames.ECInstanceId},
|
|
327
|
-
${NodeSelectClauseColumnNames.HideNodeInHierarchy}
|
|
328
|
-
FROM (
|
|
329
|
-
${query.ecsql}
|
|
330
|
-
)
|
|
331
|
-
`;
|
|
332
|
-
const reader = this._imodelAccess.createQueryReader({ ...query, ecsql }, { rowFormat: "Indexes", limit: hierarchyLevelSizeLimit });
|
|
333
|
-
return from(reader).pipe(map((row) => ({
|
|
334
|
-
key: {
|
|
335
|
-
className: normalizeFullClassName(row[0]),
|
|
336
|
-
id: row[1],
|
|
337
|
-
imodelKey: this._imodelAccess.imodelKey,
|
|
338
|
-
},
|
|
339
|
-
hide: !!row[2],
|
|
340
|
-
})));
|
|
341
|
-
}), mergeAll()))));
|
|
342
|
-
// split the instance keys observable based on whether they should be hidden or not
|
|
343
|
-
const [visibleNodeInstanceKeys, hiddenNodeInstanceKeys] = partition(instanceKeys, ({ hide }) => !hide);
|
|
344
|
-
// hidden items' handling:
|
|
345
|
-
// - if a generic node is hidden, we'll want to retrieve instance keys of its children, otherwise we don't care about it,
|
|
346
|
-
// - if an instance key is hidden, we want to create a merged node similar to what we do in `createHideNodesInHierarchyOperator`
|
|
347
|
-
const hiddenParentNodes = merge(genericDefs.pipe(filter((def) => !!def.node.processingParams?.hideInHierarchy), map((def) => ({
|
|
348
|
-
type: "generic",
|
|
349
|
-
id: def.node.key,
|
|
350
|
-
source: this._imodelAccess.imodelKey,
|
|
351
|
-
}))), hiddenNodeInstanceKeys.pipe(
|
|
352
|
-
// first merge all keys by class
|
|
353
|
-
reduceToMergeMapList(({ key }) => key.className, ({ key }) => key.id),
|
|
354
|
-
// then, for each class, create an instance key
|
|
355
|
-
mergeMap((mergedMap) => [...mergedMap.entries()].map(([className, ids]) => ({
|
|
356
|
-
type: "instances",
|
|
357
|
-
instanceKeys: ids.map((id) => ({ className, id, imodelKey: this._imodelAccess.imodelKey })),
|
|
358
|
-
}))))).pipe(map((key) => ({
|
|
359
|
-
key,
|
|
360
|
-
parentKeys: [],
|
|
361
|
-
label: "",
|
|
362
|
-
})));
|
|
363
|
-
// merge visible instance keys from this level & the ones we get recursively requesting from deeper levels
|
|
364
|
-
return merge(visibleNodeInstanceKeys.pipe(map(({ key }) => key)), hiddenParentNodes.pipe(mergeMap((hiddenNode) => this.getNodeInstanceKeysObs({ parentNode: hiddenNode, requestContext })))).pipe(takeUntil(this._dispose));
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Creates an iterator for all child hierarchy level instance keys, taking into account any hidden hierarchy levels
|
|
368
|
-
* that there may be under the given parent node.
|
|
369
|
-
*/
|
|
370
|
-
getNodeInstanceKeys(props) {
|
|
371
|
-
const requestContext = { requestId: Guid.createValue() };
|
|
372
|
-
const loggingCategory = `${LOGGING_NAMESPACE}.GetNodeInstanceKeys`;
|
|
373
|
-
const timer = new StopWatch(undefined, true);
|
|
374
|
-
doLog({
|
|
375
|
-
category: loggingCategory,
|
|
376
|
-
message: /* c8 ignore next */ () => `[${requestContext.requestId}] Requesting keys for ${createNodeIdentifierForLogging(props.parentNode)}`,
|
|
377
|
-
});
|
|
378
|
-
let error;
|
|
379
|
-
let keysCount = 0;
|
|
380
|
-
return eachValueFrom(this.getNodeInstanceKeysObs({ ...props, requestContext }).pipe(tap(() => ++keysCount), catchError((e) => {
|
|
381
|
-
error = e;
|
|
382
|
-
throw e;
|
|
383
|
-
}), finalize(() => {
|
|
384
|
-
doLog({
|
|
385
|
-
category: loggingCategory,
|
|
386
|
-
message: /* c8 ignore next */ () =>
|
|
387
|
-
/* c8 ignore next 3 */ error
|
|
388
|
-
? `[${requestContext.requestId}] Error creating node instance keys for ${createNodeIdentifierForLogging(props.parentNode)}: ${error instanceof Error ? error.message : error.toString()}`
|
|
389
|
-
: `[${requestContext.requestId}] Returned ${keysCount} instance keys for ${createNodeIdentifierForLogging(props.parentNode)} in ${timer.currentSeconds.toFixed(2)} s.`,
|
|
390
|
-
});
|
|
391
|
-
})));
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
function preProcessNodes(hierarchyFactory) {
|
|
395
|
-
return hierarchyFactory.preProcessNode ? processNodes(hierarchyFactory.preProcessNode) : identity;
|
|
396
|
-
}
|
|
397
|
-
function postProcessNodes(hierarchyFactory) {
|
|
398
|
-
return hierarchyFactory.postProcessNode ? processNodes(hierarchyFactory.postProcessNode) : identity;
|
|
399
|
-
}
|
|
400
|
-
function processNodes(processor) {
|
|
401
|
-
return (nodes) => nodes.pipe(mergeMap(processor));
|
|
402
|
-
}
|
|
403
|
-
function applyLabelsFormatting(node, valueFormatter) {
|
|
404
|
-
return from(formatConcatenatedValue({
|
|
405
|
-
value: node.label,
|
|
406
|
-
valueFormatter,
|
|
407
|
-
})).pipe(map((label) => ({
|
|
408
|
-
...node,
|
|
409
|
-
label,
|
|
410
|
-
})));
|
|
411
|
-
}
|
|
412
|
-
function createParentNodeKeysList(parentNode) {
|
|
413
|
-
if (!parentNode) {
|
|
414
|
-
return [];
|
|
415
|
-
}
|
|
416
|
-
return [...parentNode.parentKeys, parentNode.key];
|
|
417
|
-
}
|
|
418
|
-
function filterQueryByInstanceKeys(query, filteredInstanceKeys) {
|
|
419
|
-
if (!filteredInstanceKeys || !filteredInstanceKeys.length) {
|
|
420
|
-
return query;
|
|
421
|
-
}
|
|
422
|
-
const MAX_ALLOWED_BINDINGS = 1000;
|
|
423
|
-
if (filteredInstanceKeys.length < MAX_ALLOWED_BINDINGS) {
|
|
424
|
-
return {
|
|
425
|
-
...query,
|
|
426
|
-
ecsql: `
|
|
427
|
-
SELECT *
|
|
428
|
-
FROM (${query.ecsql}) q
|
|
429
|
-
WHERE q.ECInstanceId IN (${filteredInstanceKeys.map(() => "?").join(",")})
|
|
430
|
-
`,
|
|
431
|
-
bindings: [...(query.bindings ?? []), ...filteredInstanceKeys.map((k) => ({ type: "id", value: k.id }))],
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
/* c8 ignore start */
|
|
435
|
-
return {
|
|
436
|
-
...query,
|
|
437
|
-
ecsql: `
|
|
438
|
-
SELECT *
|
|
439
|
-
FROM (${query.ecsql}) q
|
|
440
|
-
WHERE InVirtualSet(?, q.ECInstanceId)
|
|
441
|
-
`,
|
|
442
|
-
bindings: [...(query.bindings ?? []), { type: "idset", value: filteredInstanceKeys.map((k) => k.id) }],
|
|
443
|
-
};
|
|
444
|
-
/* c8 ignore end */
|
|
445
|
-
}
|
|
446
|
-
//# sourceMappingURL=IModelHierarchyProvider.js.map
|