@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.
Files changed (294) hide show
  1. package/CHANGELOG.md +356 -8
  2. package/README.md +4 -22
  3. package/lib/cjs/hierarchies/HierarchyMerge.d.ts +19 -0
  4. package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +1 -0
  5. package/lib/cjs/hierarchies/HierarchyMerge.js +43 -0
  6. package/lib/cjs/hierarchies/HierarchyMerge.js.map +1 -0
  7. package/lib/cjs/hierarchies/HierarchyNode.d.ts +17 -26
  8. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
  9. package/lib/cjs/hierarchies/HierarchyNode.js +1 -21
  10. package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
  11. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts +1 -1
  12. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
  13. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
  14. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  15. package/lib/cjs/hierarchies/HierarchyNodeKey.js +8 -8
  16. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
  17. package/lib/cjs/hierarchies/HierarchyProvider.d.ts +58 -33
  18. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
  19. package/lib/cjs/hierarchies/HierarchyProvider.js +46 -30
  20. package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
  21. package/lib/cjs/hierarchies/HierarchySearch.d.ts +169 -0
  22. package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -0
  23. package/lib/cjs/hierarchies/HierarchySearch.js +259 -0
  24. package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -0
  25. package/lib/cjs/hierarchies/Logging.d.ts +1 -1
  26. package/lib/cjs/hierarchies/Logging.d.ts.map +1 -1
  27. package/lib/cjs/hierarchies/Logging.js.map +1 -1
  28. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts +1 -1
  29. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  30. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +3 -3
  31. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
  32. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +30 -9
  33. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  34. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  35. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
  36. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  37. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  38. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +50 -15
  39. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  40. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +203 -76
  41. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  42. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +1 -1
  43. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  44. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  45. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +5 -5
  46. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  47. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +102 -43
  48. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  49. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +4 -4
  50. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  51. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  52. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts +35 -0
  53. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
  54. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +285 -0
  55. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
  56. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +9 -11
  57. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  58. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +15 -6
  59. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  60. package/lib/cjs/hierarchies/imodel/Utils.d.ts +1 -1
  61. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
  62. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
  63. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts +2 -2
  64. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  65. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  66. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts +5 -5
  67. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  68. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
  69. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
  70. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  71. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +1 -0
  72. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  73. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
  74. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  75. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  76. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
  77. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
  78. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
  79. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +4 -4
  80. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  81. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +6 -5
  82. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  83. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +4 -4
  84. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  85. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -3
  86. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  87. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
  88. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  89. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  90. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
  91. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  92. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  93. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +4 -4
  94. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  95. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +22 -17
  96. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  97. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
  98. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  99. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  100. package/lib/cjs/hierarchies/internal/Common.d.ts +5 -2
  101. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  102. package/lib/cjs/hierarchies/internal/Common.js +12 -1
  103. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  104. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts +1 -1
  105. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  106. package/lib/cjs/hierarchies/internal/EachValueFrom.js +3 -0
  107. package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
  108. package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts +1 -1
  109. package/lib/cjs/hierarchies/internal/LoggingUtils.d.ts.map +1 -1
  110. package/lib/cjs/hierarchies/internal/LoggingUtils.js.map +1 -1
  111. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts +19 -8
  112. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  113. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +6 -5
  114. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  115. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts +1 -1
  116. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  117. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  118. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts +2 -1
  119. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  120. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
  121. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts +1 -1
  122. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  123. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  124. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts +1 -1
  125. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  126. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -1
  127. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +1 -1
  128. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -1
  129. package/lib/cjs/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -1
  130. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts +1 -1
  131. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  132. package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
  133. package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts +1 -1
  134. package/lib/cjs/hierarchies/internal/operators/TapOnce.d.ts.map +1 -1
  135. package/lib/cjs/hierarchies/internal/operators/TapOnce.js.map +1 -1
  136. package/lib/cjs/presentation-hierarchies.d.ts +22 -11
  137. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  138. package/lib/cjs/presentation-hierarchies.js +8 -6
  139. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  140. package/lib/esm/hierarchies/HierarchyMerge.d.ts +19 -0
  141. package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +1 -0
  142. package/lib/esm/hierarchies/HierarchyMerge.js +40 -0
  143. package/lib/esm/hierarchies/HierarchyMerge.js.map +1 -0
  144. package/lib/esm/hierarchies/HierarchyNode.d.ts +17 -26
  145. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  146. package/lib/esm/hierarchies/HierarchyNode.js +1 -21
  147. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  148. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +1 -1
  149. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
  150. package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
  151. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  152. package/lib/esm/hierarchies/HierarchyNodeKey.js +9 -9
  153. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  154. package/lib/esm/hierarchies/HierarchyProvider.d.ts +58 -33
  155. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  156. package/lib/esm/hierarchies/HierarchyProvider.js +45 -29
  157. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  158. package/lib/esm/hierarchies/HierarchySearch.d.ts +169 -0
  159. package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -0
  160. package/lib/esm/hierarchies/HierarchySearch.js +254 -0
  161. package/lib/esm/hierarchies/HierarchySearch.js.map +1 -0
  162. package/lib/esm/hierarchies/Logging.d.ts +1 -1
  163. package/lib/esm/hierarchies/Logging.d.ts.map +1 -1
  164. package/lib/esm/hierarchies/Logging.js.map +1 -1
  165. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +1 -1
  166. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  167. package/lib/esm/hierarchies/imodel/HierarchyCache.js +3 -3
  168. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
  169. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +30 -9
  170. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  171. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  172. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
  173. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  174. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  175. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +50 -15
  176. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  177. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +204 -78
  178. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  179. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts +1 -1
  180. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  181. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +1 -1
  182. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  183. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts +5 -5
  184. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  185. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +104 -45
  186. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  187. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +4 -4
  188. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  189. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  190. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts +35 -0
  191. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
  192. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js +279 -0
  193. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
  194. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts +9 -11
  195. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  196. package/lib/esm/hierarchies/imodel/TreeNodesReader.js +13 -5
  197. package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  198. package/lib/esm/hierarchies/imodel/Utils.d.ts +1 -1
  199. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
  200. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
  201. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts +2 -2
  202. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  203. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  204. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts +5 -5
  205. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  206. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
  207. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts +1 -1
  208. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  209. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +1 -0
  210. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  211. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts +1 -1
  212. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  213. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  214. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts +1 -1
  215. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -1
  216. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -1
  217. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts +4 -4
  218. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  219. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +7 -6
  220. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  221. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts +4 -4
  222. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  223. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +5 -4
  224. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  225. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts +1 -1
  226. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  227. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  228. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts +2 -2
  229. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  230. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  231. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +4 -4
  232. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  233. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +23 -18
  234. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  235. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts +2 -2
  236. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  237. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  238. package/lib/esm/hierarchies/internal/Common.d.ts +5 -2
  239. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  240. package/lib/esm/hierarchies/internal/Common.js +11 -1
  241. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  242. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts +1 -1
  243. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  244. package/lib/esm/hierarchies/internal/EachValueFrom.js +3 -0
  245. package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
  246. package/lib/esm/hierarchies/internal/LoggingUtils.d.ts +1 -1
  247. package/lib/esm/hierarchies/internal/LoggingUtils.d.ts.map +1 -1
  248. package/lib/esm/hierarchies/internal/LoggingUtils.js.map +1 -1
  249. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts +19 -8
  250. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  251. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +7 -6
  252. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  253. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts +1 -1
  254. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  255. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  256. package/lib/esm/hierarchies/internal/operators/Partition.d.ts +2 -1
  257. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  258. package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
  259. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts +1 -1
  260. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  261. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  262. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts +1 -1
  263. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  264. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.js.map +1 -1
  265. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts +1 -1
  266. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.d.ts.map +1 -1
  267. package/lib/esm/hierarchies/internal/operators/ShareReplayWithErrors.js.map +1 -1
  268. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts +1 -1
  269. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  270. package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
  271. package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts +1 -1
  272. package/lib/esm/hierarchies/internal/operators/TapOnce.d.ts.map +1 -1
  273. package/lib/esm/hierarchies/internal/operators/TapOnce.js.map +1 -1
  274. package/lib/esm/presentation-hierarchies.d.ts +22 -11
  275. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  276. package/lib/esm/presentation-hierarchies.js +7 -6
  277. package/lib/esm/presentation-hierarchies.js.map +1 -1
  278. package/package.json +19 -19
  279. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +0 -110
  280. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +0 -1
  281. package/lib/cjs/hierarchies/HierarchyFiltering.js +0 -215
  282. package/lib/cjs/hierarchies/HierarchyFiltering.js.map +0 -1
  283. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +0 -36
  284. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
  285. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js +0 -274
  286. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
  287. package/lib/esm/hierarchies/HierarchyFiltering.d.ts +0 -110
  288. package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +0 -1
  289. package/lib/esm/hierarchies/HierarchyFiltering.js +0 -210
  290. package/lib/esm/hierarchies/HierarchyFiltering.js.map +0 -1
  291. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts +0 -36
  292. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
  293. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js +0 -268
  294. 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":";AAAA;;;gGAGgG;;;AAyQhG,4DAgCC;AAGD,gEAcC;AAxTD,+BAAwH;AACxH,oEAAmE;AACnE,8EAAwE;AACxE,gEAA0D;AAC1D,8DAAwH;AACxH,yFAAkF;AAClF,6EAA0E;AAC1E,mFAAkF;AAClF,qEAAkE;AAClE,qDAA4D;AAC5D,qEAA+D;AAuB/D,gBAAgB;AAChB,MAAa,yBAAyB;IAC5B,aAAa,CAA4B;IACzC,OAAO,CAA0B;IACjC,YAAY,CAAwB;IACpC,YAAY,CAAiB;IACrC,WAAW,CAAS;IAEpB,YAAmB,KAAqC;QACtD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,SAAE,EAAC,IAAA,uCAAkB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACtF,IAAA,aAAM,EAAC,CAAC,aAAa,EAAE,EAAE;YACvB,IAAI,aAAa,CAAC,gBAAgB,EAAE,eAAe,IAAI,aAAa,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBAC7I,yHAAyH;gBACzH,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACxF,IAAA,UAAG,EAAC,CAAC,aAAa,EAAE,EAAE;YACpB,MAAM,oCAAoC,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,sCAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAChI,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC;YACzD,MAAM,gBAAgB,GAAG,+CAAsB,CAAC,cAAc,CAAC,aAAa,CAAC;gBAC3E,CAAC,CAAC,iDAAiD,CAAC;oBAChD,wBAAwB,EAAE,aAAa,CAAC,QAAQ;oBAChD,oCAAoC;oBACpC,gBAAgB;iBACjB,CAAC;gBACJ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC;oBAChG,aAAa,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACvD,IAAA,kDAA6B,EAAC;wBAC5B,MAAM,EAAE,wCAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM;wBAC3D,kBAAkB,EAAE,oCAAoC;wBACxD,uBAAuB,EAAE,gBAAgB;qBAC1C,CAAC,CACH,CAAC;YACN,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3B,IAAA,eAAQ,EAAC,CAAC,UAAU,EAAE,EAAE;YACtB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,4CAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,yCAAiC,CAAC,EAAE,CAAC;gBAC1F,OAAO,IAAA,SAAE,EAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,cAAc,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,yCAAiC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,4CAAoC,CAAC,EAAE,CAAC;YAC5H,MAAM,YAAY,GAAG,IAAA,gDAA2B,EAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAChF,MAAM,6BAA6B,GAAG,YAAY,CAAC,oBAAoB,CAAC;gBACtE,gBAAgB,EAAE,CAAC,UAAU,EAA8B,EAAE;oBAC3D,IAAI,UAAU,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,EAAE,CAAC;wBACxC,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,IAAI,CAAC,oDAAuB,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC;wBAClE,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC/D,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,IAAI,IAAA,2CAAqB,EAAC,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBAChF,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,OAAO,IAAA,qBAAc,EACnB,IAAA,YAAK,EACH,IAAA,+BAAmB,EAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,EACxG,IAAA,+BAAmB,EAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CACzG,CAAC,IAAI,CACJ,IAAA,aAAM,EAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,EACtC,IAAA,qBAAc,EAAC,KAAK,CAAC,EACrB,IAAA,WAAI,EAAC,CAAC,CAAC,CACR,CACF,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;YACH,OAAO,IAAA,+BAAmB,EAAC,6BAA6B,CAAC,CAAC,IAAI,CAC5D,IAAA,UAAG,EAAC,CAAC,cAAc,EAAE,EAAE;gBACrB,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC;oBAC3B,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;gBAC5C,CAAC;gBACD,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,oBAAoB,CAAC,KAAgC;QAC1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAG,IAAA,gDAA2B,EAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACtF,MAAM,0BAA0B,GAAG,YAAY,CAAC,6BAA6B,EAAE,CAAC;QAChF,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAChC,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,GAAG,IAAA,wBAAS,EAAC,iBAAiB,CAAC,IAAI,CAAC,IAAA,eAAQ,GAAE,CAAC,EAAE,uDAAwB,CAAC,aAAa,CAAC,CAAC;QAChJ,OAAO,IAAA,YAAK,EACV,sBAAsB,CAAC,IAAI,CACzB,IAAA,UAAG,EAAC,CAAC,UAAU,EAAE,EAAE;YACjB,IACE,YAAY,CAAC,uBAAuB;gBACpC,0BAA0B,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAE,EAAE,CACb,oDAAuB,CAAC,uBAAuB,CAAC,UAAU,CAAC;oBAC3D,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC;oBAC9D,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CACxC,EACD,CAAC;gBACD,OAAO;oBACL,GAAG,UAAU;oBACb,IAAI,EAAE;wBACJ,GAAG,UAAU,CAAC,IAAI;wBAClB,GAAG,YAAY,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;qBAC9F;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,EACF,IAAA,aAAM,EAAC,CAAC,GAAG,EAAyC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAC9D,EAED,uBAAuB,CAAC,IAAI,CAC1B,IAAA,eAAQ,EAAC,CAAC,UAAU,EAAE,EAAE;YACtB,IAAI,YAAY,CAAC,uBAAuB,EAAE,CAAC;gBACzC,oGAAoG;gBACpG,OAAO,IAAA,SAAE,EAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,IAAA,YAAK,EAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;gBACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;gBAC3D,KAAK,UAAU,UAAU,CAAC,CAAoB;oBAC5C,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC7B,CAAC;oBACD,sFAAsF;oBACtF,qDAAqD;oBACrD,qFAAqF;oBACrF,mGAAmG;oBACnG,eAAe;oBACf,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IACE,IAAA,2CAAqB,EAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;4BACzD,CAAC,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;4BACnE,CAAC,MAAM,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EACnE,CAAC;4BACD,OAAO,SAAS,CAAC;wBACnB,CAAC;oBACH,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,KAAK,MAAM,EAAE,IAAI,0BAA0B,EAAE,CAAC;oBAC5C,4EAA4E;oBAC5E,IAAI,CAAC,oDAAuB,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC1D,SAAS;oBACX,CAAC;oBACD,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;wBAClE,SAAS;oBACX,CAAC;oBACD,IACE,IAAA,2CAAqB,EAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;wBACnE,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;4BAClB,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC;4BACrE,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC;yBACtE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,aAAa,IAAI,WAAW,CAAC,CAAC,EACxE,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,MAAM,8BAA8B,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC5D,IAAI,8BAA8B,EAAE,CAAC;wBACnC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC,IAAI;YACL,4DAA4D;YAC5D,IAAA,aAAM,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvD,wEAAwE;YACxE,IAAA,UAAG,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,wBAAwB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAChF,CAAC;QACJ,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAA,cAAO,GAAE,CAAC,CAAC;IACpB,CAAC;CACF;AA7MD,8DA6MC;AAED,gBAAgB;AAChB,gEAAgE;AACnD,QAAA,oCAAoC,GAAG,oBAAoB,CAAC;AAEzE,gBAAgB;AAChB,gEAAgE;AACnD,QAAA,iCAAiC,GAAG,iBAAiB,CAAC;AAEnE,SAAS,qBAAqB,CAAC,kBAAiC;IAC9D,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,SAAgB,wBAAwB,CAAC,GAAiC,EAAE,kBAAiC;IAC3G,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE;YACL,GAAG,GAAG,CAAC,KAAK;YACZ,IAAI,EAAE;gBACJ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBACzB;YACI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;qBAC7B,GAAG,CACF,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC;wCACN,SAAS;uBAC1B,SAAS;yCACS,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;eAClD,CACF;qBACA,IAAI,CAAC,aAAa,CAAC;UACtB;aACH;YACD,KAAK,EAAE;;;4CAG+B,4CAAoC;sCAC1C,yCAAiC;;YAE3D,GAAG,CAAC,KAAK,CAAC,KAAK;;;OAGpB;SACF;KACF,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,0BAA0B,CAAC,GAAiC;IAC1E,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE;YACL,GAAG,GAAG,CAAC,KAAK;YACZ,KAAK,EAAE;;;4CAG+B,4CAAoC;iBAC/D,uDAA2B,CAAC,aAAa,SAAS,yCAAiC;gBACpF,GAAG,CAAC,KAAK,CAAC,KAAK;OACxB;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iDAAiD,CAAC,EACzD,wBAAwB,EACxB,gBAAgB,EAChB,oCAAoC,GAKrC;IACC,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;QAC7C,IAAI,+CAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,wGAAwG;YACxG,IACE,iDAAiD,CAAC,EAAE,wBAAwB,EAAE,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,oCAAoC,EAAE,CAAC,EACvJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IACE,KAAK,CAAC,MAAM,CAAC,cAAc;YAC3B,IAAA,kDAA6B,EAAC;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM;gBAChD,uBAAuB,EAAE,gBAAgB;gBACzC,0IAA0I;gBAC1I,kBAAkB,EAAE,oCAAoC,GAAG,CAAC;aAC7D,CAAC,EACF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACtC,oBAAoB;YACpB,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACpD,IACE,MAAM,IAAI,IAAI;gBACd,IAAA,kDAA6B,EAAC;oBAC5B,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM;oBAC5B,uBAAuB,EAAE,gBAAgB;oBACzC,0IAA0I;oBAC1I,kBAAkB,EAAE,oCAAoC,GAAG,CAAC;iBAC7D,CAAC,EACF,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,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 { 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 function defaultNodesParser(row: {
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":"AAKA,OAAO,EAAkB,UAAU,EAAM,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAsB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAyC,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,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,CAAC;CACzB;AAED,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAAC,2BAA2B,CAAC,CASxF;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,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IAAE,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,2BAA2B,CAoBlG"}
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 NodeSelectQueryFactory_js_1 = require("./NodeSelectQueryFactory.js");
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?.parser ?? ((row) => (0, rxjs_1.of)(defaultNodesParser(row)));
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, rxjs_1.mergeMap)((row) => parser(row)));
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
- function defaultNodesParser(row) {
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;;AAkBhG,8BASC;AAoBD,gDAoBC;AAjED,+BAAsD;AAEtD,oEAA+E;AAI/E,2EAA0E;AAS1E,gBAAgB;AAChB,SAAgB,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,MAAM,GAAmB,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,SAAE,EAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAmE;QAC7E,SAAS,EAAE,oBAAoB;QAC/B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KACjD,CAAC;IAEF,OAAO,IAAA,WAAI,EAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC;AAmBD,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,GAAkC;IACnE,MAAM,QAAQ,GAAG,GAAa,CAAC;IAC/B,MAAM,gBAAgB,GAA0C;QAC9D,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KACjF,CAAC;IACF,OAAO;QACL,+HAA+H;QAC/H,KAAK,EAAE,IAAA,wCAAkB,EAAC,QAAQ,CAAC,YAAY,CAAC;QAChD,GAAG,EAAE;YACH,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;SACnG;QACD,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KACjF,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 { from, mergeMap, Observable, of } from \"rxjs\";\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { ECSqlQueryDef, parseInstanceLabel } from \"@itwin/presentation-shared\";\nimport { RxjsNodeParser } from \"../internal/RxjsHierarchyDefinition.js\";\nimport { InstanceHierarchyNodeProcessingParams, SourceInstanceHierarchyNode } from \"./IModelHierarchyNode.js\";\nimport { LimitingECSqlQueryExecutor } from \"./LimitingECSqlQueryExecutor.js\";\nimport { NodeSelectClauseColumnNames } from \"./NodeSelectQueryFactory.js\";\n\ninterface ReadNodesProps {\n queryExecutor: LimitingECSqlQueryExecutor;\n query: ECSqlQueryDef;\n limit?: number | \"unbounded\";\n parser?: RxjsNodeParser;\n}\n\n/** @internal */\nexport function readNodes(props: ReadNodesProps): Observable<SourceInstanceHierarchyNode> {\n const { queryExecutor, query, limit } = props;\n const parser: RxjsNodeParser = props?.parser ?? ((row) => of(defaultNodesParser(row)));\n const config: Parameters<LimitingECSqlQueryExecutor[\"createQueryReader\"]>[1] = {\n rowFormat: \"ECSqlPropertyNames\",\n ...(limit !== undefined ? { limit } : undefined),\n };\n\n return from(queryExecutor.createQueryReader(query, config)).pipe(mergeMap((row) => parser(row)));\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 function defaultNodesParser(row: { [columnName: string]: any }): SourceInstanceHierarchyNode {\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
+ {"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":"AAOA,OAAO,EAA2E,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAwCnJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,8BAA8B,EAAE,GAAG,EAAE,8BAA8B,GAAG,8BAA8B,CAkB3I"}
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":"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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\";\nimport { 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
+ {"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":"AAKA,OAAO,EAAkB,UAAU,EAAM,MAAM,MAAM,CAAC;AAItD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,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
+ {"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;;;AAiBhG,0EAoBC;AAnCD,+BAAsD;AACtD,wDAAsI;AACtI,oEAAqD;AACrD,wFAA8F;AAG9F,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, Observable, 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\";\nimport { 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
+ {"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":"AAKA,OAAO,EAAuF,UAAU,EAA4B,MAAM,MAAM,CAAC;AAEjJ,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAW5E,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAMnI,OAAO,EAAoC,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAGxH,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"}
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"}