@itwin/presentation-hierarchies 0.5.0 → 0.7.0

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 (305) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +46 -49
  3. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +64 -0
  4. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +1 -0
  5. package/lib/cjs/hierarchies/HierarchyFiltering.js +80 -0
  6. package/lib/cjs/hierarchies/HierarchyFiltering.js.map +1 -0
  7. package/lib/cjs/hierarchies/HierarchyNode.d.ts +29 -233
  8. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
  9. package/lib/cjs/hierarchies/HierarchyNode.js +25 -8
  10. package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
  11. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts +7 -11
  12. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
  13. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js +9 -8
  14. package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
  15. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts +31 -6
  16. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  17. package/lib/cjs/hierarchies/HierarchyNodeKey.js +26 -23
  18. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
  19. package/lib/cjs/hierarchies/HierarchyProvider.d.ts +24 -89
  20. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
  21. package/lib/cjs/hierarchies/HierarchyProvider.js +24 -382
  22. package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
  23. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/FilteringHierarchyDefinition.d.ts +9 -9
  24. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -0
  25. package/lib/cjs/hierarchies/{internal → imodel}/FilteringHierarchyDefinition.js +35 -73
  26. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -0
  27. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts +18 -0
  28. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -0
  29. package/lib/cjs/hierarchies/{internal/ChildNodeObservablesCache.js → imodel/HierarchyCache.js} +4 -4
  30. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -0
  31. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +121 -0
  32. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -0
  33. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js +21 -0
  34. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -0
  35. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +234 -0
  36. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -0
  37. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js +29 -0
  38. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -0
  39. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +77 -0
  40. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -0
  41. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +428 -0
  42. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -0
  43. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -0
  44. package/lib/cjs/hierarchies/{LimitingECSqlQueryExecutor.js → imodel/LimitingECSqlQueryExecutor.js} +3 -3
  45. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -0
  46. package/lib/{esm/hierarchies → cjs/hierarchies/imodel}/NodeSelectQueryFactory.d.ts +4 -3
  47. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -0
  48. package/lib/cjs/hierarchies/{NodeSelectQueryFactory.js → imodel/NodeSelectQueryFactory.js} +37 -11
  49. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -0
  50. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +140 -0
  51. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -0
  52. package/lib/cjs/hierarchies/{HierarchyDefinition.js → imodel/PredicateBasedHierarchyDefinition.js} +26 -36
  53. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -0
  54. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/TreeNodesReader.d.ts +6 -6
  55. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -0
  56. package/lib/cjs/hierarchies/{internal → imodel}/TreeNodesReader.js +2 -2
  57. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -0
  58. package/lib/cjs/hierarchies/imodel/Utils.d.ts +4 -0
  59. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -0
  60. package/lib/cjs/hierarchies/imodel/Utils.js +59 -0
  61. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -0
  62. package/lib/cjs/hierarchies/{internal → imodel}/operators/DetermineChildren.d.ts +1 -1
  63. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -0
  64. package/lib/cjs/hierarchies/{internal → imodel}/operators/DetermineChildren.js +3 -3
  65. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -0
  66. package/lib/cjs/hierarchies/{internal → imodel}/operators/Grouping.d.ts +2 -1
  67. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -0
  68. package/lib/cjs/hierarchies/{internal → imodel}/operators/Grouping.js +5 -5
  69. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -0
  70. package/lib/cjs/hierarchies/{internal → imodel}/operators/HideIfNoChildren.d.ts +1 -1
  71. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -0
  72. package/lib/cjs/hierarchies/{internal → imodel}/operators/HideIfNoChildren.js +5 -5
  73. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -0
  74. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/operators/HideNodesInHierarchy.d.ts +1 -1
  75. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -0
  76. package/lib/cjs/hierarchies/{internal → imodel}/operators/HideNodesInHierarchy.js +22 -9
  77. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -0
  78. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -0
  79. package/lib/cjs/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -0
  80. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/operators/grouping/BaseClassGrouping.d.ts +2 -1
  81. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -0
  82. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -0
  83. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/operators/grouping/ClassGrouping.d.ts +2 -1
  84. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -0
  85. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -0
  86. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -0
  87. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -0
  88. package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/LabelGrouping.d.ts +1 -1
  89. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -0
  90. package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/LabelGrouping.js +2 -2
  91. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -0
  92. package/lib/{esm/hierarchies/internal → cjs/hierarchies/imodel}/operators/grouping/PropertiesGrouping.d.ts +2 -1
  93. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -0
  94. package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/PropertiesGrouping.js +10 -5
  95. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -0
  96. package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/Shared.d.ts +1 -1
  97. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -0
  98. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -0
  99. package/lib/cjs/hierarchies/internal/Common.d.ts +7 -4
  100. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  101. package/lib/cjs/hierarchies/internal/Common.js +0 -66
  102. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  103. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts +3 -2
  104. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  105. package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
  106. package/lib/cjs/presentation-hierarchies.d.ts +10 -6
  107. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  108. package/lib/cjs/presentation-hierarchies.js +18 -10
  109. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  110. package/lib/esm/hierarchies/HierarchyFiltering.d.ts +64 -0
  111. package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +1 -0
  112. package/lib/esm/hierarchies/HierarchyFiltering.js +76 -0
  113. package/lib/esm/hierarchies/HierarchyFiltering.js.map +1 -0
  114. package/lib/esm/hierarchies/HierarchyNode.d.ts +29 -233
  115. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  116. package/lib/esm/hierarchies/HierarchyNode.js +24 -7
  117. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  118. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +7 -11
  119. package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
  120. package/lib/esm/hierarchies/HierarchyNodeIdentifier.js +9 -8
  121. package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
  122. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts +31 -6
  123. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  124. package/lib/esm/hierarchies/HierarchyNodeKey.js +26 -23
  125. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  126. package/lib/esm/hierarchies/HierarchyProvider.d.ts +24 -89
  127. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  128. package/lib/esm/hierarchies/HierarchyProvider.js +25 -383
  129. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  130. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/FilteringHierarchyDefinition.d.ts +9 -9
  131. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -0
  132. package/lib/esm/hierarchies/{internal → imodel}/FilteringHierarchyDefinition.js +36 -74
  133. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -0
  134. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts +18 -0
  135. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -0
  136. package/lib/esm/hierarchies/{internal/ChildNodeObservablesCache.js → imodel/HierarchyCache.js} +2 -2
  137. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -0
  138. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +121 -0
  139. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -0
  140. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js +18 -0
  141. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -0
  142. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +234 -0
  143. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -0
  144. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js +26 -0
  145. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -0
  146. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +77 -0
  147. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -0
  148. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +425 -0
  149. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -0
  150. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -0
  151. package/lib/esm/hierarchies/{LimitingECSqlQueryExecutor.js → imodel/LimitingECSqlQueryExecutor.js} +3 -3
  152. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -0
  153. package/lib/{cjs/hierarchies → esm/hierarchies/imodel}/NodeSelectQueryFactory.d.ts +4 -3
  154. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -0
  155. package/lib/esm/hierarchies/{NodeSelectQueryFactory.js → imodel/NodeSelectQueryFactory.js} +38 -12
  156. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -0
  157. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +140 -0
  158. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -0
  159. package/lib/esm/hierarchies/{HierarchyDefinition.js → imodel/PredicateBasedHierarchyDefinition.js} +25 -34
  160. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -0
  161. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/TreeNodesReader.d.ts +6 -6
  162. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -0
  163. package/lib/esm/hierarchies/{internal → imodel}/TreeNodesReader.js +2 -2
  164. package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -0
  165. package/lib/esm/hierarchies/imodel/Utils.d.ts +4 -0
  166. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -0
  167. package/lib/esm/hierarchies/imodel/Utils.js +56 -0
  168. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -0
  169. package/lib/esm/hierarchies/{internal → imodel}/operators/DetermineChildren.d.ts +1 -1
  170. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -0
  171. package/lib/esm/hierarchies/{internal → imodel}/operators/DetermineChildren.js +3 -3
  172. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -0
  173. package/lib/esm/hierarchies/{internal → imodel}/operators/Grouping.d.ts +2 -1
  174. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -0
  175. package/lib/esm/hierarchies/{internal → imodel}/operators/Grouping.js +6 -6
  176. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -0
  177. package/lib/esm/hierarchies/{internal → imodel}/operators/HideIfNoChildren.d.ts +1 -1
  178. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -0
  179. package/lib/esm/hierarchies/{internal → imodel}/operators/HideIfNoChildren.js +5 -5
  180. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -0
  181. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/operators/HideNodesInHierarchy.d.ts +1 -1
  182. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -0
  183. package/lib/esm/hierarchies/{internal → imodel}/operators/HideNodesInHierarchy.js +22 -9
  184. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -0
  185. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.d.ts.map +1 -0
  186. package/lib/esm/hierarchies/imodel/operators/grouping/AutoExpand.js.map +1 -0
  187. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/operators/grouping/BaseClassGrouping.d.ts +2 -1
  188. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -0
  189. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -0
  190. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/operators/grouping/ClassGrouping.d.ts +2 -1
  191. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -0
  192. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -0
  193. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -0
  194. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -0
  195. package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/LabelGrouping.d.ts +1 -1
  196. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -0
  197. package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/LabelGrouping.js +2 -2
  198. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -0
  199. package/lib/{cjs/hierarchies/internal → esm/hierarchies/imodel}/operators/grouping/PropertiesGrouping.d.ts +2 -1
  200. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -0
  201. package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/PropertiesGrouping.js +12 -7
  202. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -0
  203. package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/Shared.d.ts +1 -1
  204. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -0
  205. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -0
  206. package/lib/esm/hierarchies/internal/Common.d.ts +7 -4
  207. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  208. package/lib/esm/hierarchies/internal/Common.js +0 -65
  209. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  210. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts +3 -2
  211. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  212. package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
  213. package/lib/esm/presentation-hierarchies.d.ts +10 -6
  214. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  215. package/lib/esm/presentation-hierarchies.js +8 -4
  216. package/lib/esm/presentation-hierarchies.js.map +1 -1
  217. package/package.json +8 -7
  218. package/lib/cjs/hierarchies/HierarchyDefinition.d.ts +0 -251
  219. package/lib/cjs/hierarchies/HierarchyDefinition.d.ts.map +0 -1
  220. package/lib/cjs/hierarchies/HierarchyDefinition.js.map +0 -1
  221. package/lib/cjs/hierarchies/LimitingECSqlQueryExecutor.d.ts.map +0 -1
  222. package/lib/cjs/hierarchies/LimitingECSqlQueryExecutor.js.map +0 -1
  223. package/lib/cjs/hierarchies/NodeSelectQueryFactory.d.ts.map +0 -1
  224. package/lib/cjs/hierarchies/NodeSelectQueryFactory.js.map +0 -1
  225. package/lib/cjs/hierarchies/internal/ChildNodeObservablesCache.d.ts +0 -40
  226. package/lib/cjs/hierarchies/internal/ChildNodeObservablesCache.d.ts.map +0 -1
  227. package/lib/cjs/hierarchies/internal/ChildNodeObservablesCache.js.map +0 -1
  228. package/lib/cjs/hierarchies/internal/FilteringHierarchyDefinition.d.ts.map +0 -1
  229. package/lib/cjs/hierarchies/internal/FilteringHierarchyDefinition.js.map +0 -1
  230. package/lib/cjs/hierarchies/internal/TreeNodesReader.d.ts.map +0 -1
  231. package/lib/cjs/hierarchies/internal/TreeNodesReader.js.map +0 -1
  232. package/lib/cjs/hierarchies/internal/operators/DetermineChildren.d.ts.map +0 -1
  233. package/lib/cjs/hierarchies/internal/operators/DetermineChildren.js.map +0 -1
  234. package/lib/cjs/hierarchies/internal/operators/Grouping.d.ts.map +0 -1
  235. package/lib/cjs/hierarchies/internal/operators/Grouping.js.map +0 -1
  236. package/lib/cjs/hierarchies/internal/operators/HideIfNoChildren.d.ts.map +0 -1
  237. package/lib/cjs/hierarchies/internal/operators/HideIfNoChildren.js.map +0 -1
  238. package/lib/cjs/hierarchies/internal/operators/HideNodesInHierarchy.d.ts.map +0 -1
  239. package/lib/cjs/hierarchies/internal/operators/HideNodesInHierarchy.js.map +0 -1
  240. package/lib/cjs/hierarchies/internal/operators/grouping/AutoExpand.d.ts.map +0 -1
  241. package/lib/cjs/hierarchies/internal/operators/grouping/AutoExpand.js.map +0 -1
  242. package/lib/cjs/hierarchies/internal/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
  243. package/lib/cjs/hierarchies/internal/operators/grouping/BaseClassGrouping.js.map +0 -1
  244. package/lib/cjs/hierarchies/internal/operators/grouping/ClassGrouping.d.ts.map +0 -1
  245. package/lib/cjs/hierarchies/internal/operators/grouping/ClassGrouping.js.map +0 -1
  246. package/lib/cjs/hierarchies/internal/operators/grouping/GroupHiding.d.ts.map +0 -1
  247. package/lib/cjs/hierarchies/internal/operators/grouping/GroupHiding.js.map +0 -1
  248. package/lib/cjs/hierarchies/internal/operators/grouping/LabelGrouping.d.ts.map +0 -1
  249. package/lib/cjs/hierarchies/internal/operators/grouping/LabelGrouping.js.map +0 -1
  250. package/lib/cjs/hierarchies/internal/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
  251. package/lib/cjs/hierarchies/internal/operators/grouping/PropertiesGrouping.js.map +0 -1
  252. package/lib/cjs/hierarchies/internal/operators/grouping/Shared.d.ts.map +0 -1
  253. package/lib/cjs/hierarchies/internal/operators/grouping/Shared.js.map +0 -1
  254. package/lib/esm/hierarchies/HierarchyDefinition.d.ts +0 -251
  255. package/lib/esm/hierarchies/HierarchyDefinition.d.ts.map +0 -1
  256. package/lib/esm/hierarchies/HierarchyDefinition.js.map +0 -1
  257. package/lib/esm/hierarchies/LimitingECSqlQueryExecutor.d.ts.map +0 -1
  258. package/lib/esm/hierarchies/LimitingECSqlQueryExecutor.js.map +0 -1
  259. package/lib/esm/hierarchies/NodeSelectQueryFactory.d.ts.map +0 -1
  260. package/lib/esm/hierarchies/NodeSelectQueryFactory.js.map +0 -1
  261. package/lib/esm/hierarchies/internal/ChildNodeObservablesCache.d.ts +0 -40
  262. package/lib/esm/hierarchies/internal/ChildNodeObservablesCache.d.ts.map +0 -1
  263. package/lib/esm/hierarchies/internal/ChildNodeObservablesCache.js.map +0 -1
  264. package/lib/esm/hierarchies/internal/FilteringHierarchyDefinition.d.ts.map +0 -1
  265. package/lib/esm/hierarchies/internal/FilteringHierarchyDefinition.js.map +0 -1
  266. package/lib/esm/hierarchies/internal/TreeNodesReader.d.ts.map +0 -1
  267. package/lib/esm/hierarchies/internal/TreeNodesReader.js.map +0 -1
  268. package/lib/esm/hierarchies/internal/operators/DetermineChildren.d.ts.map +0 -1
  269. package/lib/esm/hierarchies/internal/operators/DetermineChildren.js.map +0 -1
  270. package/lib/esm/hierarchies/internal/operators/Grouping.d.ts.map +0 -1
  271. package/lib/esm/hierarchies/internal/operators/Grouping.js.map +0 -1
  272. package/lib/esm/hierarchies/internal/operators/HideIfNoChildren.d.ts.map +0 -1
  273. package/lib/esm/hierarchies/internal/operators/HideIfNoChildren.js.map +0 -1
  274. package/lib/esm/hierarchies/internal/operators/HideNodesInHierarchy.d.ts.map +0 -1
  275. package/lib/esm/hierarchies/internal/operators/HideNodesInHierarchy.js.map +0 -1
  276. package/lib/esm/hierarchies/internal/operators/grouping/AutoExpand.d.ts.map +0 -1
  277. package/lib/esm/hierarchies/internal/operators/grouping/AutoExpand.js.map +0 -1
  278. package/lib/esm/hierarchies/internal/operators/grouping/BaseClassGrouping.d.ts.map +0 -1
  279. package/lib/esm/hierarchies/internal/operators/grouping/BaseClassGrouping.js.map +0 -1
  280. package/lib/esm/hierarchies/internal/operators/grouping/ClassGrouping.d.ts.map +0 -1
  281. package/lib/esm/hierarchies/internal/operators/grouping/ClassGrouping.js.map +0 -1
  282. package/lib/esm/hierarchies/internal/operators/grouping/GroupHiding.d.ts.map +0 -1
  283. package/lib/esm/hierarchies/internal/operators/grouping/GroupHiding.js.map +0 -1
  284. package/lib/esm/hierarchies/internal/operators/grouping/LabelGrouping.d.ts.map +0 -1
  285. package/lib/esm/hierarchies/internal/operators/grouping/LabelGrouping.js.map +0 -1
  286. package/lib/esm/hierarchies/internal/operators/grouping/PropertiesGrouping.d.ts.map +0 -1
  287. package/lib/esm/hierarchies/internal/operators/grouping/PropertiesGrouping.js.map +0 -1
  288. package/lib/esm/hierarchies/internal/operators/grouping/Shared.d.ts.map +0 -1
  289. package/lib/esm/hierarchies/internal/operators/grouping/Shared.js.map +0 -1
  290. /package/lib/cjs/hierarchies/{LimitingECSqlQueryExecutor.d.ts → imodel/LimitingECSqlQueryExecutor.d.ts} +0 -0
  291. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/AutoExpand.d.ts +0 -0
  292. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/AutoExpand.js +0 -0
  293. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/BaseClassGrouping.js +0 -0
  294. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/ClassGrouping.js +0 -0
  295. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/GroupHiding.d.ts +0 -0
  296. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/GroupHiding.js +0 -0
  297. /package/lib/cjs/hierarchies/{internal → imodel}/operators/grouping/Shared.js +0 -0
  298. /package/lib/esm/hierarchies/{LimitingECSqlQueryExecutor.d.ts → imodel/LimitingECSqlQueryExecutor.d.ts} +0 -0
  299. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/AutoExpand.d.ts +0 -0
  300. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/AutoExpand.js +0 -0
  301. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/BaseClassGrouping.js +0 -0
  302. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/ClassGrouping.js +0 -0
  303. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/GroupHiding.d.ts +0 -0
  304. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/GroupHiding.js +0 -0
  305. /package/lib/esm/hierarchies/{internal → imodel}/operators/grouping/Shared.js +0 -0
@@ -0,0 +1,59 @@
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.mergeInstanceNodes = mergeInstanceNodes;
8
+ const core_bentley_1 = require("@itwin/core-bentley");
9
+ const HierarchyNodeKey_1 = require("../HierarchyNodeKey");
10
+ function mergeNodeHandlingParams(lhs, rhs) {
11
+ if (!lhs && !rhs) {
12
+ return undefined;
13
+ }
14
+ const params = {
15
+ ...(lhs?.hideIfNoChildren || rhs?.hideIfNoChildren ? { hideIfNoChildren: true } : undefined),
16
+ ...(lhs?.hideInHierarchy || rhs?.hideInHierarchy ? { hideInHierarchy: true } : undefined),
17
+ ...mergeByLabelParams(lhs?.grouping?.byLabel, rhs?.grouping?.byLabel),
18
+ };
19
+ return Object.keys(params).length > 0 ? params : undefined;
20
+ }
21
+ function mergeByLabelParams(lhs, rhs) {
22
+ if (lhs && typeof lhs === "object" && lhs.action === "merge" && rhs && typeof rhs === "object" && rhs.action === "merge" && lhs.groupId === rhs.groupId) {
23
+ return {
24
+ grouping: { byLabel: lhs },
25
+ };
26
+ }
27
+ return undefined;
28
+ }
29
+ function mergeParentNodeKeys(lhsKeys, rhsKeys) {
30
+ const res = new Array();
31
+ for (let i = 0; i < lhsKeys.length && i < rhsKeys.length; ++i) {
32
+ if (!HierarchyNodeKey_1.HierarchyNodeKey.equals(lhsKeys[i], rhsKeys[i])) {
33
+ break;
34
+ }
35
+ res.push(lhsKeys[i]);
36
+ }
37
+ return res;
38
+ }
39
+ /** @internal */
40
+ function mergeInstanceNodes(lhs, rhs) {
41
+ (0, core_bentley_1.assert)(typeof lhs.key === typeof rhs.key);
42
+ const mergedProcessingParams = mergeNodeHandlingParams(lhs.processingParams, rhs.processingParams);
43
+ const mergedChildren = lhs.children === true || rhs.children === true ? true : lhs.children === false && rhs.children === false ? false : undefined;
44
+ const mergedNode = {
45
+ ...lhs,
46
+ ...rhs,
47
+ label: lhs.label,
48
+ key: { type: "instances", instanceKeys: [...lhs.key.instanceKeys, ...rhs.key.instanceKeys] },
49
+ parentKeys: mergeParentNodeKeys(lhs.parentKeys, rhs.parentKeys),
50
+ };
51
+ // Remove specific properties or change their values based on lhs and rhs nodes
52
+ mergedChildren !== undefined ? (mergedNode.children = mergedChildren) : delete mergedNode.children;
53
+ mergedProcessingParams ? (mergedNode.processingParams = mergedProcessingParams) : delete mergedNode.processingParams;
54
+ lhs.autoExpand || rhs.autoExpand ? (mergedNode.autoExpand = true) : delete mergedNode.autoExpand;
55
+ lhs.extendedData || rhs.extendedData ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData }) : delete mergedNode.extendedData;
56
+ lhs.supportsFiltering && rhs.supportsFiltering ? (mergedNode.supportsFiltering = true) : delete mergedNode.supportsFiltering;
57
+ return mergedNode;
58
+ }
59
+ //# sourceMappingURL=Utils.js.map
@@ -0,0 +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\";\nimport { HierarchyNodeLabelGroupingParams, InstanceHierarchyNodeProcessingParams, ProcessedInstanceHierarchyNode } from \"./IModelHierarchyNode\";\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
1
  import { Observable } from "rxjs";
2
- import { ProcessedHierarchyNode } from "../../HierarchyNode";
2
+ import { ProcessedHierarchyNode } from "../IModelHierarchyNode";
3
3
  /** @internal */
4
4
  export declare const LOGGING_NAMESPACE: string;
5
5
  /**
@@ -0,0 +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,wBAAwB,CAAC;AAGhE,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"}
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.LOGGING_NAMESPACE = void 0;
8
8
  exports.createDetermineChildrenOperator = createDetermineChildrenOperator;
9
9
  const rxjs_1 = require("rxjs");
10
- const Common_1 = require("../Common");
11
- const LoggingUtils_1 = require("../LoggingUtils");
12
- const ReleaseMainThread_1 = require("./ReleaseMainThread");
10
+ const Common_1 = require("../../internal/Common");
11
+ const LoggingUtils_1 = require("../../internal/LoggingUtils");
12
+ const ReleaseMainThread_1 = require("../../internal/operators/ReleaseMainThread");
13
13
  const OPERATOR_NAME = "DetermineChildren";
14
14
  /** @internal */
15
15
  exports.LOGGING_NAMESPACE = (0, Common_1.createOperatorLoggingNamespace)(OPERATOR_NAME, Common_1.LOGGING_NAMESPACE_INTERNAL);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetermineChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAiBhG,0EAoBC;AAnCD,+BAAsD;AACtD,kDAAmI;AACnI,8DAAkD;AAClD,kFAA2F;AAG3F,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,uCAA8B,EAAC,aAAa,EAAE,mCAA0B,CAAC,CAAC;AAE3G;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,QAA+D;IAC7G,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI,CACf,IAAA,kBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,uCAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAC3H,IAAA,iDAA6B,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,kBAAG,EAAC;gBACF,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,0BAA0B,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,IAAA,uCAA8B,EAAC,CAAC,CAAC,0BAA0B,eAAe,EAAE;aACzI,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,kBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,uCAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7H,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\";\nimport { log } from \"../../internal/LoggingUtils\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread\";\nimport { ProcessedHierarchyNode } from \"../IModelHierarchyNode\";\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: /* istanbul 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: /* istanbul 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: /* istanbul ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
3
- import { ParentHierarchyNode, ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from "../../HierarchyNode";
3
+ import { ParentHierarchyNode } from "../../HierarchyNode";
4
+ import { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from "../IModelHierarchyNode";
4
5
  import { PropertiesGroupingLocalizedStrings } from "./grouping/PropertiesGrouping";
5
6
  /** @internal */
6
7
  export declare const LOGGING_NAMESPACE: string;
@@ -0,0 +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,qBAAqB,CAAC;AAUzE,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAMhI,OAAO,EAAoC,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAGrH,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAAgD,CAAC;AAI/E,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,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;AA6EpC,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,sBAAsB,EAAE,8BAA8B,EAAE,EACxD,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,GACnD,UAAU,CAAC,eAAe,CAAC,CA+B7B"}
@@ -10,16 +10,16 @@ exports.createGroupingHandlers = createGroupingHandlers;
10
10
  const rxjs_1 = require("rxjs");
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const HierarchyNode_1 = require("../../HierarchyNode");
13
- const Common_1 = require("../Common");
14
- const LoggingUtils_1 = require("../LoggingUtils");
13
+ const Common_1 = require("../../internal/Common");
14
+ const LoggingUtils_1 = require("../../internal/LoggingUtils");
15
+ const ReleaseMainThread_1 = require("../../internal/operators/ReleaseMainThread");
16
+ const TapOnce_1 = require("../../internal/operators/TapOnce");
15
17
  const AutoExpand_1 = require("./grouping/AutoExpand");
16
18
  const BaseClassGrouping_1 = require("./grouping/BaseClassGrouping");
17
19
  const ClassGrouping_1 = require("./grouping/ClassGrouping");
18
20
  const GroupHiding_1 = require("./grouping/GroupHiding");
19
21
  const LabelGrouping_1 = require("./grouping/LabelGrouping");
20
22
  const PropertiesGrouping_1 = require("./grouping/PropertiesGrouping");
21
- const ReleaseMainThread_1 = require("./ReleaseMainThread");
22
- const TapOnce_1 = require("./TapOnce");
23
23
  const OPERATOR_NAME = "Grouping";
24
24
  /** @internal */
25
25
  exports.LOGGING_NAMESPACE = (0, Common_1.createOperatorLoggingNamespace)(OPERATOR_NAME);
@@ -102,7 +102,7 @@ function groupInstanceNodes(nodes, extraSiblings, groupingHandlers, parentNode,
102
102
  return;
103
103
  }
104
104
  // not sure why type checker doesn't pick this up
105
- (0, core_bentley_1.assert)(HierarchyNode_1.HierarchyNode.isCustom(parentNode) || HierarchyNode_1.HierarchyNode.isInstancesNode(parentNode));
105
+ (0, core_bentley_1.assert)(HierarchyNode_1.HierarchyNode.isGeneric(parentNode) || HierarchyNode_1.HierarchyNode.isInstancesNode(parentNode));
106
106
  groupingNode.nonGroupingAncestor = parentNode;
107
107
  });
108
108
  return mergeInPlace(result.grouped, result.ungrouped);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concat, concatAll, delay, EMPTY, expand, finalize, from, last, map, merge, mergeMap, Observable, of, reduce, tap, toArray } from \"rxjs\";\nimport { assert, StopWatch } from \"@itwin/core-bentley\";\nimport { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../HierarchyNode\";\nimport {\n LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE,\n LOGGING_NAMESPACE_PERFORMANCE_INTERNAL as BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n createNodeIdentifierForLogging,\n createOperatorLoggingNamespace,\n} from \"../../internal/Common\";\nimport { doLog, log } from \"../../internal/LoggingUtils\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread\";\nimport { tapOnce } from \"../../internal/operators/TapOnce\";\nimport { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode\";\nimport { assignAutoExpand } from \"./grouping/AutoExpand\";\nimport { createBaseClassGroupingHandlers } from \"./grouping/BaseClassGrouping\";\nimport { createClassGroups } from \"./grouping/ClassGrouping\";\nimport { applyGroupHidingParams } from \"./grouping/GroupHiding\";\nimport { createLabelGroups } from \"./grouping/LabelGrouping\";\nimport { createPropertiesGroupingHandlers, PropertiesGroupingLocalizedStrings } from \"./grouping/PropertiesGrouping\";\n\nconst OPERATOR_NAME = \"Grouping\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME);\nconst LOGGING_NAMESPACE_PERFORMANCE = createOperatorLoggingNamespace(OPERATOR_NAME, BASE_LOGGING_NAMESPACE_PERFORMANCE);\nconst LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = createOperatorLoggingNamespace(OPERATOR_NAME, BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL);\n\n/** @internal */\nexport function createGroupingOperator(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n groupingHandlers?: GroupingHandler[],\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n tapOnce(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: /* istanbul ignore next */ () => `Starting grouping (parent: ${createNodeIdentifierForLogging(parentNode)})`,\n });\n }),\n reduce<ProcessedHierarchyNode, { instanceNodes: ProcessedInstanceHierarchyNode[]; restNodes: ProcessedHierarchyNode[] }>(\n (resolvedNodes, node) => {\n if (HierarchyNode.isInstancesNode(node)) {\n resolvedNodes.instanceNodes.push(node);\n } else {\n resolvedNodes.restNodes.push(node);\n }\n return resolvedNodes;\n },\n { instanceNodes: [], restNodes: [] },\n ),\n tap(({ instanceNodes, restNodes }) => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () => `Nodes partitioned. Got ${instanceNodes.length} instance nodes and ${restNodes.length} rest nodes.`,\n });\n }),\n mergeMap((res) => {\n const out = of(res);\n const totalNodes = res.instanceNodes.length + res.restNodes.length;\n // istanbul ignore next\n return totalNodes <= 1000 ? out : out.pipe(delay(0));\n }),\n mergeMap(({ instanceNodes, restNodes }): Observable<ProcessedHierarchyNode> => {\n const timer = new StopWatch(undefined, true);\n const groupingHandlersObs: Observable<GroupingHandler> = groupingHandlers\n ? from(groupingHandlers)\n : createGroupingHandlers(imodelAccess, parentNode, instanceNodes, valueFormatter, localizedStrings);\n return merge(\n groupingHandlersObs.pipe(\n toArray(),\n mergeMap((createdGroupingHandlers) =>\n groupInstanceNodes(instanceNodes, restNodes.length, createdGroupingHandlers, parentNode, onGroupingNodeCreated),\n ),\n finalize(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: /* istanbul ignore next */ () => `Grouping ${instanceNodes.length} nodes took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n ),\n from(restNodes),\n );\n }),\n releaseMainThreadOnItemsCount(500),\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n\n/** @internal */\nexport type ProcessedInstancesGroupingHierarchyNode = Omit<ProcessedGroupingHierarchyNode, \"children\"> & { children: ProcessedInstanceHierarchyNode[] };\n\n/** @internal */\nexport interface GroupingHandlerResult {\n /** Expected to be sorted by label. */\n grouped: Array<ProcessedInstancesGroupingHierarchyNode>;\n /** Expected to be sorted by label. */\n ungrouped: ProcessedInstanceHierarchyNode[];\n groupingType: GroupingType;\n}\n\n/** @internal */\nexport type GroupingType = \"label\" | \"class\" | \"base-class\" | \"property\";\n\n/** @internal */\nexport type GroupingHandler = (\n nodesToGroup: ProcessedInstanceHierarchyNode[],\n nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[],\n) => Promise<GroupingHandlerResult>;\n\nfunction groupInstanceNodes(\n nodes: ProcessedInstanceHierarchyNode[],\n extraSiblings: number,\n groupingHandlers: GroupingHandler[],\n parentNode: ParentHierarchyNode | undefined,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n): Observable<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode> {\n if (groupingHandlers.length === 0) {\n return from(nodes);\n }\n return of<{ handlerIndex: number; result?: GroupingHandlerResult | undefined }>({ handlerIndex: 0 }).pipe(\n expand(({ handlerIndex, result: curr }) => {\n if (handlerIndex >= groupingHandlers.length) {\n return EMPTY;\n }\n const timer = new StopWatch(undefined, true);\n const currentHandler = groupingHandlers[handlerIndex];\n return from(currentHandler(curr?.ungrouped ?? nodes, curr?.grouped ?? [])).pipe(\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () => `Grouping handler ${handlerIndex} exclusively took ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n mergeMap((result) => {\n if (result.grouped.length === 0) {\n return of({ handlerIndex: handlerIndex + 1, result: { ...result, grouped: curr?.grouped ?? [] } });\n }\n const groupingPostProcessingTimer = new StopWatch(undefined, true);\n return of(result).pipe(\n map((r) => applyGroupHidingParams(r, extraSiblings)),\n map((r) => assignAutoExpand(r)),\n map((r) => ({ handlerIndex: handlerIndex + 1, result: { ...r, grouped: mergeInPlace(curr?.grouped, r.grouped) } })),\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () =>\n `Post-processing grouping handler ${handlerIndex} exclusively took ${groupingPostProcessingTimer.elapsedSeconds.toFixed(3)} s.`,\n }),\n delay(0),\n );\n }),\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () => `Total time for grouping handler ${handlerIndex}: ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n );\n }),\n last(),\n mergeMap(({ result }) => {\n result.grouped.forEach((groupingNode) => {\n onGroupingNodeCreated?.(groupingNode);\n if (!parentNode) {\n return;\n }\n if (HierarchyNode.isGroupingNode(parentNode)) {\n groupingNode.nonGroupingAncestor = parentNode.nonGroupingAncestor;\n return;\n }\n // not sure why type checker doesn't pick this up\n assert(HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));\n groupingNode.nonGroupingAncestor = parentNode;\n });\n return mergeInPlace<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode>(result.grouped, result.ungrouped);\n }),\n );\n}\n\nfunction mergeInPlace<T>(target: T[] | undefined, source: T[]) {\n if (!target || target.length === 0) {\n return source;\n }\n for (const item of source) {\n target.push(item);\n }\n return target;\n}\n\n/** @internal */\nexport function createGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n processedInstanceNodes: ProcessedInstanceHierarchyNode[],\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n): Observable<GroupingHandler> {\n const timer = new StopWatch();\n const groupingLevel = getNodeGroupingLevel(parentNode);\n return concat(\n groupingLevel <= GroupingLevel.Class\n ? concat(\n from(createBaseClassGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes)).pipe(concatAll()),\n of<GroupingHandler>(async (allNodes) => createClassGroups(imodelAccess, parentNode, allNodes)),\n )\n : EMPTY,\n groupingLevel <= GroupingLevel.Property\n ? from(createPropertiesGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes, valueFormatter, localizedStrings)).pipe(concatAll())\n : EMPTY,\n groupingLevel < GroupingLevel.Label ? of<GroupingHandler>(async (allNodes) => createLabelGroups(allNodes)) : EMPTY,\n ).pipe(\n tap({\n subscribe: () => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () => `Start creating grouping handlers`,\n });\n timer.start();\n },\n }),\n finalize(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* istanbul ignore next */ () => `Creating grouping handlers took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n );\n}\n\nfunction getNodeGroupingLevel(node: ParentHierarchyNode | undefined): GroupingLevel {\n if (node && HierarchyNode.isClassGroupingNode(node)) {\n return GroupingLevel.Class;\n }\n if (node && HierarchyNode.isPropertyGroupingNode(node)) {\n return GroupingLevel.Property;\n }\n if (node && HierarchyNode.isLabelGroupingNode(node)) {\n return GroupingLevel.Label;\n }\n return GroupingLevel.None;\n}\n\nenum GroupingLevel {\n None = 0,\n Class = 2,\n Property = 3,\n Label = 4,\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Observable } from "rxjs";
2
- import { ProcessedHierarchyNode } from "../../HierarchyNode";
2
+ import { ProcessedHierarchyNode } from "../IModelHierarchyNode";
3
3
  /** @internal */
4
4
  export declare const LOGGING_NAMESPACE: string;
5
5
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HideIfNoChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuC,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvE,OAAO,EAAiC,sBAAsB,EAAkC,MAAM,wBAAwB,CAAC;AAG/H,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,WACpF,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAoDhG"}
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.LOGGING_NAMESPACE = void 0;
8
8
  exports.createHideIfNoChildrenOperator = createHideIfNoChildrenOperator;
9
9
  const rxjs_1 = require("rxjs");
10
- const HierarchyNode_1 = require("../../HierarchyNode");
11
- const Common_1 = require("../Common");
12
- const LoggingUtils_1 = require("../LoggingUtils");
13
- const Partition_1 = require("./Partition");
10
+ const Common_1 = require("../../internal/Common");
11
+ const LoggingUtils_1 = require("../../internal/LoggingUtils");
12
+ const Partition_1 = require("../../internal/operators/Partition");
13
+ const IModelHierarchyNode_1 = require("../IModelHierarchyNode");
14
14
  const OPERATOR_NAME = "HideIfNoChildren";
15
15
  /** @internal */
16
16
  exports.LOGGING_NAMESPACE = (0, Common_1.createOperatorLoggingNamespace)(OPERATOR_NAME, Common_1.LOGGING_NAMESPACE_INTERNAL);
@@ -26,7 +26,7 @@ function createHideIfNoChildrenOperator(hasNodes) {
26
26
  // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)
27
27
  // - `determinedChildren` - nodes with the flag and known children
28
28
  // - `undeterminedChildren` - nodes with the flag and unknown children
29
- const [needsHide, doesntNeedHide] = (0, Partition_1.partition)(inputNodes, (n) => (HierarchyNode_1.HierarchyNode.isCustom(n) || HierarchyNode_1.HierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideIfNoChildren);
29
+ const [needsHide, doesntNeedHide] = (0, Partition_1.partition)(inputNodes, (n) => (IModelHierarchyNode_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_1.ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideIfNoChildren);
30
30
  const [determinedChildren, undeterminedChildren] = (0, Partition_1.partition)(needsHide, (n) => n.children !== undefined);
31
31
  return (0, rxjs_1.merge)(doesntNeedHide.pipe((0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${(0, Common_1.createNodeIdentifierForLogging)(n)}: doesn't need hide` })), (0, rxjs_1.merge)(determinedChildren.pipe((0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${(0, Common_1.createNodeIdentifierForLogging)(n)}: needs hide, has children` })), undeterminedChildren.pipe((0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${(0, Common_1.createNodeIdentifierForLogging)(n)}: needs hide, needs children` }), (0, rxjs_1.mergeMap)((n) => (0, rxjs_1.defer)(() => {
32
32
  (0, LoggingUtils_1.doLog)({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HideIfNoChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.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 { defer, filter, map, merge, mergeMap, Observable } from \"rxjs\";\nimport { createNodeIdentifierForLogging, createOperatorLoggingNamespace, hasChildren, LOGGING_NAMESPACE_INTERNAL } from \"../../internal/Common\";\nimport { doLog, log } from \"../../internal/LoggingUtils\";\nimport { partition } from \"../../internal/operators/Partition\";\nimport { ProcessedGenericHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode\";\n\nconst OPERATOR_NAME = \"HideIfNoChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes with no children if they have a `hideIfNoChildren` handling param.\n *\n * @internal\n */\nexport function createHideIfNoChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }));\n // split input into 3 pieces:\n // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)\n // - `determinedChildren` - nodes with the flag and known children\n // - `undeterminedChildren` - nodes with the flag and unknown children\n const [needsHide, doesntNeedHide] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideIfNoChildren,\n );\n const [determinedChildren, undeterminedChildren] = partition(needsHide, (n) => n.children !== undefined);\n return merge(\n doesntNeedHide.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: doesn't need hide` }),\n ),\n merge(\n determinedChildren.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, has children` }),\n ),\n undeterminedChildren.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, needs children` }),\n mergeMap(\n (n) =>\n defer(() => {\n doLog({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ () => `${createNodeIdentifierForLogging(n)}: requesting children flag`,\n });\n return hasNodes(n).pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ (childrenFlag) => `${createNodeIdentifierForLogging(n)}: determined children: ${childrenFlag}`,\n }),\n map((children) => Object.assign(n, { children })),\n );\n }),\n // Sending child check requests for all nodes without any limit greatly slows down\n // the following case:\n // - NodeX (determining children) -> ... lots of children with \"hide if no children\" -> ...\n // We check the nodes with \"hide if no children\" at most 2 at a time to prefer going deep into\n // the hierarchy, where we're more likely to find an answer, rather than going wide.\n 2,\n ),\n log({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, determined children: ${hasChildren(n)}`,\n }),\n ),\n ).pipe(filter(hasChildren)),\n ).pipe(log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }));\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Observable } from "rxjs";
2
- import { ProcessedHierarchyNode } from "../../HierarchyNode";
2
+ import { ProcessedHierarchyNode } from "../IModelHierarchyNode";
3
3
  /** @internal */
4
4
  export declare const LOGGING_NAMESPACE: string;
5
5
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HideNodesInHierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0E,UAAU,EAAQ,MAAM,MAAM,CAAC;AAOhH,OAAO,EAAiC,sBAAsB,EAAkC,MAAM,wBAAwB,CAAC;AAI/H,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,UAAU,CAAC,sBAAsB,CAAC,EACpF,gBAAgB,EAAE,OAAO,WAED,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAqEhG"}
@@ -7,11 +7,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.LOGGING_NAMESPACE = void 0;
8
8
  exports.createHideNodesInHierarchyOperator = createHideNodesInHierarchyOperator;
9
9
  const rxjs_1 = require("rxjs");
10
- const HierarchyNode_1 = require("../../HierarchyNode");
11
- const Common_1 = require("../Common");
12
- const LoggingUtils_1 = require("../LoggingUtils");
13
- const Partition_1 = require("./Partition");
14
- const ReduceToMergeMap_1 = require("./ReduceToMergeMap");
10
+ const core_bentley_1 = require("@itwin/core-bentley");
11
+ const HierarchyNodeKey_1 = require("../../HierarchyNodeKey");
12
+ const Common_1 = require("../../internal/Common");
13
+ const LoggingUtils_1 = require("../../internal/LoggingUtils");
14
+ const Partition_1 = require("../../internal/operators/Partition");
15
+ const ReduceToMergeMap_1 = require("../../internal/operators/ReduceToMergeMap");
16
+ const IModelHierarchyNode_1 = require("../IModelHierarchyNode");
17
+ const Utils_1 = require("../Utils");
15
18
  const OPERATOR_NAME = "HideNodesInHierarchy";
16
19
  /** @internal */
17
20
  exports.LOGGING_NAMESPACE = (0, Common_1.createOperatorLoggingNamespace)(OPERATOR_NAME, Common_1.LOGGING_NAMESPACE_INTERNAL);
@@ -23,12 +26,22 @@ exports.LOGGING_NAMESPACE = (0, Common_1.createOperatorLoggingNamespace)(OPERATO
23
26
  function createHideNodesInHierarchyOperator(getNodes, stopOnFirstChild) {
24
27
  return function (nodes) {
25
28
  const inputNodes = nodes.pipe((0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `in: ${(0, Common_1.createNodeIdentifierForLogging)(n)}` }));
26
- const [withFlag, withoutFlag] = (0, Partition_1.partition)(inputNodes, (n) => (HierarchyNode_1.HierarchyNode.isCustom(n) || HierarchyNode_1.HierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideInHierarchy);
29
+ const [withFlag, withoutFlag] = (0, Partition_1.partition)(inputNodes, (n) => (IModelHierarchyNode_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_1.ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideInHierarchy);
27
30
  // Defer to create a new seed for reduce on every subscribe
28
31
  const withLoadedChildren = (0, rxjs_1.defer)(() => withFlag.pipe((0, LoggingUtils_1.log)({
29
32
  category: exports.LOGGING_NAMESPACE,
30
33
  message: /* istanbul ignore next */ (n) => `${(0, Common_1.createNodeIdentifierForLogging)(n)} needs hide and needs children to be loaded`,
31
- }), (0, rxjs_1.filter)((node) => node.children !== false), (0, ReduceToMergeMap_1.reduceToMergeMapItem)((node) => createMergeMapKey(node), (node, mergedNode) => (mergedNode ? (0, Common_1.mergeNodes)(mergedNode, node) : node)), (0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (mm) => `created a merge map of size ${mm.size}` }), (0, rxjs_1.mergeMap)((mm) => [...mm.values()].map((mergedNode) => (0, rxjs_1.defer)(() => getNodes(mergedNode)))), (0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((n) => n)));
34
+ }), (0, rxjs_1.filter)((node) => node.children !== false), (0, ReduceToMergeMap_1.reduceToMergeMapItem)((node) => createMergeMapKey(node), (node, mergedNode) => {
35
+ if (mergedNode) {
36
+ if (IModelHierarchyNode_1.ProcessedHierarchyNode.isGeneric(mergedNode)) {
37
+ // we don't merge generic nodes, just return the first one
38
+ return mergedNode;
39
+ }
40
+ (0, core_bentley_1.assert)(IModelHierarchyNode_1.ProcessedHierarchyNode.isInstancesNode(node));
41
+ return (0, Utils_1.mergeInstanceNodes)(mergedNode, node);
42
+ }
43
+ return node;
44
+ }), (0, LoggingUtils_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* istanbul ignore next */ (mm) => `created a merge map of size ${mm.size}` }), (0, rxjs_1.mergeMap)((mm) => [...mm.values()].map((mergedNode) => (0, rxjs_1.defer)(() => getNodes(mergedNode)))), (0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((n) => n)));
32
45
  return (0, rxjs_1.merge)(withoutFlag.pipe((0, LoggingUtils_1.log)({
33
46
  category: exports.LOGGING_NAMESPACE,
34
47
  message: /* istanbul ignore next */ (n) => `${(0, Common_1.createNodeIdentifierForLogging)(n)} doesn't need hide, return the node`,
@@ -47,8 +60,8 @@ function createHideNodesInHierarchyOperator(getNodes, stopOnFirstChild) {
47
60
  };
48
61
  }
49
62
  function createMergeMapKey(node) {
50
- if (typeof node.key === "string") {
51
- return node.key;
63
+ if (HierarchyNodeKey_1.HierarchyNodeKey.isGeneric(node.key)) {
64
+ return `${node.key.source ? `${node.key.source}:` : ""}${node.key.id}`;
52
65
  }
53
66
  return node.key.instanceKeys[0].className;
54
67
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HideNodesInHierarchy.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAqBhG,gFAyEC;AA5FD,+BAAgH;AAChH,sDAA6C;AAC7C,6DAA4F;AAC5F,kDAAgJ;AAChJ,8DAAyD;AACzD,kEAA+D;AAC/D,gFAAiF;AACjF,gEAA+H;AAC/H,oCAA8C;AAE9C,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,uCAA8B,EAAC,aAAa,EAAE,mCAA0B,CAAC,CAAC;AAE3G;;;;GAIG;AACH,SAAgB,kCAAkC,CAChD,QAAoF,EACpF,gBAAyB;IAEzB,OAAO,UAAU,KAAyC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAA,kBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,uCAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3J,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,qBAAS,EACvC,UAAU,EACV,CAAC,CAAC,EAAuE,EAAE,CACzE,CAAC,4CAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,4CAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,CAC9H,CAAC;QACF,2DAA2D;QAC3D,MAAM,kBAAkB,GAAG,IAAA,YAAK,EAAC,GAAG,EAAE,CACpC,QAAQ,CAAC,IAAI,CACX,IAAA,kBAAG,EAAC;YACF,QAAQ,EAAE,yBAAiB;YAC3B,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAA,uCAA8B,EAAC,CAAC,CAAC,6CAA6C;SAC7H,CAAC,EACF,IAAA,aAAM,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,EACzC,IAAA,uCAAoB,EAClB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,UAAsF,EAAE,EAAE;YAC/F,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,4CAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjD,0DAA0D;oBAC1D,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAA,qBAAM,EAAC,4CAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,OAAO,IAAA,0BAAkB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CACF,EACD,IAAA,kBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,+BAA+B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAC1H,IAAA,eAAQ,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAA,YAAK,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACzF,IAAA,eAAQ,GAAE,EACV,IAAA,UAAG,EAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,CACtC,CACF,CAAC;QAEF,OAAO,IAAA,YAAK,EACV,WAAW,CAAC,IAAI,CACd,IAAA,kBAAG,EAAC;YACF,QAAQ,EAAE,yBAAiB;YAC3B,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAA,uCAA8B,EAAC,CAAC,CAAC,qCAAqC;SACrH,CAAC,CACH,EACD,gBAAgB;YACd,CAAC,CAAC,IAAA,aAAM;YACJ,yIAAyI;YACzI,8HAA8H;YAC9H,UAAU,CAAC,IAAI,CACb,IAAA,aAAM,EAAC,oBAAW,CAAC,EACnB,IAAA,kBAAG,EAAC;gBACF,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,wCAAwC,IAAA,uCAA8B,EAAC,CAAC,CAAC,gFAAgF;aAC5J,CAAC,CACH,EACD,YAAK,CAAC,IAAI,CACR,IAAA,eAAQ,EAAC,GAAG,EAAE,CACZ,IAAA,oBAAK,EAAC;gBACJ,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,0BAA0B,CAAC,GAAG,EAAE,CACvC,0GAA0G;aAC7G,CAAC,CACH,CACF,EACD,kBAAkB,CACnB,CAAC,IAAI,CAAC,IAAA,WAAI,EAAC,CAAC,CAAC,CAAC;YACjB,CAAC,CAAC,kBAAkB,CACvB,CAAC,IAAI,CAAC,IAAA,kBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,uCAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvI,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAA2D,IAAW;IAC9F,IAAI,mCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,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 { concat, defer, EMPTY, filter, finalize, map, merge, mergeAll, mergeMap, Observable, take } from \"rxjs\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { GenericNodeKey, HierarchyNodeKey, InstancesNodeKey } from \"../../HierarchyNodeKey\";\nimport { createNodeIdentifierForLogging, createOperatorLoggingNamespace, hasChildren, LOGGING_NAMESPACE_INTERNAL } from \"../../internal/Common\";\nimport { doLog, log } from \"../../internal/LoggingUtils\";\nimport { partition } from \"../../internal/operators/Partition\";\nimport { reduceToMergeMapItem } from \"../../internal/operators/ReduceToMergeMap\";\nimport { ProcessedGenericHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode\";\nimport { mergeInstanceNodes } from \"../Utils\";\n\nconst OPERATOR_NAME = \"HideNodesInHierarchy\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes and instead returns their children if the nodes have a `hideInHierarchy` handling param.\n *\n * @internal\n */\nexport function createHideNodesInHierarchyOperator(\n getNodes: (parentNode: ProcessedHierarchyNode) => Observable<ProcessedHierarchyNode>,\n stopOnFirstChild: boolean,\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }));\n const [withFlag, withoutFlag] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideInHierarchy,\n );\n // Defer to create a new seed for reduce on every subscribe\n const withLoadedChildren = defer(() =>\n withFlag.pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)} needs hide and needs children to be loaded`,\n }),\n filter((node) => node.children !== false),\n reduceToMergeMapItem(\n (node) => createMergeMapKey(node),\n (node, mergedNode: ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode | undefined) => {\n if (mergedNode) {\n if (ProcessedHierarchyNode.isGeneric(mergedNode)) {\n // we don't merge generic nodes, just return the first one\n return mergedNode;\n }\n assert(ProcessedHierarchyNode.isInstancesNode(node));\n return mergeInstanceNodes(mergedNode, node);\n }\n return node;\n },\n ),\n log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (mm) => `created a merge map of size ${mm.size}` }),\n mergeMap((mm) => [...mm.values()].map((mergedNode) => defer(() => getNodes(mergedNode)))),\n mergeAll(),\n map((n): ProcessedHierarchyNode => n),\n ),\n );\n\n return merge(\n withoutFlag.pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ (n) => `${createNodeIdentifierForLogging(n)} doesn't need hide, return the node`,\n }),\n ),\n stopOnFirstChild\n ? concat(\n // a small hack to handle situation when we're here to only check if parent node has children and one of them has `hideIfNoChildren` flag\n // with a `hasChildren = true` - we just return the hidden node itself in that case to avoid digging deeper into the hierarchy\n inputNodes.pipe(\n filter(hasChildren),\n log({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ (n) =>\n `\\`stopOnFirstChild = true\\` and node ${createNodeIdentifierForLogging(n)} is set to always have nodes - return the hidden node without loading children`,\n }),\n ),\n EMPTY.pipe(\n finalize(() =>\n doLog({\n category: LOGGING_NAMESPACE,\n message: /* istanbul ignore next */ () =>\n `\\`stopOnFirstChild = true\\` but none of the nodes had children determined to \\`true\\` - do load children`,\n }),\n ),\n ),\n withLoadedChildren,\n ).pipe(take(1))\n : withLoadedChildren,\n ).pipe(log({ category: LOGGING_NAMESPACE, message: /* istanbul ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }));\n };\n}\n\nfunction createMergeMapKey<TNode extends { key: InstancesNodeKey | GenericNodeKey }>(node: TNode): string {\n if (HierarchyNodeKey.isGeneric(node.key)) {\n return `${node.key.source ? `${node.key.source}:` : \"\"}${node.key.id}`;\n }\n return node.key.instanceKeys[0].className;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoExpand.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/AutoExpand.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,qBAAqB,CAepF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoExpand.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/AutoExpand.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAOhG,4CAeC;AAlBD,qCAA0D;AAE1D,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,cAAuD,CAAC;QAC5D,IAAA,uCAA8B,EAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;YACzE,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,cAAc,GAAG,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;YACvF,OAAO;QACT,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,KAAK,QAAQ,IAAI,CAAC,cAAc,KAAK,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACrG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,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 { HierarchyNodeAutoExpandProp } from \"../../IModelHierarchyNode\";\nimport { GroupingHandlerResult } from \"../Grouping\";\nimport { iterateChildNodeGroupingParams } from \"./Shared\";\n\n/** @internal */\nexport function assignAutoExpand(props: GroupingHandlerResult): GroupingHandlerResult {\n for (const node of props.grouped) {\n let autoExpandProp: HierarchyNodeAutoExpandProp | undefined;\n iterateChildNodeGroupingParams(node, props.groupingType, (groupingProps) => {\n if (autoExpandProp === \"always\") {\n return true;\n }\n autoExpandProp = groupingProps?.autoExpand ? groupingProps.autoExpand : autoExpandProp;\n return;\n });\n if (autoExpandProp === \"always\" || (autoExpandProp === \"single-child\" && node.children.length === 1)) {\n node.autoExpand = true;\n }\n }\n return props;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { EC, ECClassHierarchyInspector, ECSchemaProvider } from "@itwin/presentation-shared";
2
- import { ParentHierarchyNode, ProcessedInstanceHierarchyNode } from "../../../HierarchyNode";
2
+ import { ParentHierarchyNode } from "../../../HierarchyNode";
3
+ import { ProcessedInstanceHierarchyNode } from "../../IModelHierarchyNode";
3
4
  import { GroupingHandler, GroupingHandlerResult } from "../Grouping";
4
5
  /** @internal */
5
6
  export declare function getBaseClassGroupingECClasses(schemaProvider: ECSchemaProvider, parentNode: ParentHierarchyNode | undefined, nodes: ProcessedInstanceHierarchyNode[]): Promise<EC.Class[]>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,EAAE,EAAE,yBAAyB,EAAE,gBAAgB,EAAY,MAAM,4BAA4B,CAAC;AACnJ,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAErE,gBAAgB;AAChB,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAyBrB;AAED,gBAAgB;AAChB,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,8BAA8B,EAAE,EACvC,WAAW,EAAE,EAAE,CAAC,KAAK,EACrB,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAsCD,gBAAgB;AAChB,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,CAG5B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.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 { createMainThreadReleaseOnTimePassedHandler, EC, ECClassHierarchyInspector, ECSchemaProvider, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode\";\nimport { GroupingHandler, GroupingHandlerResult } from \"../Grouping\";\n\n/** @internal */\nexport async function getBaseClassGroupingECClasses(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<EC.Class[]> {\n // Get all base class names that are provided in the grouping information\n const baseClassesFullClassNames = await getGroupingBaseClassNames(nodes);\n if (baseClassesFullClassNames.size === 0) {\n return [];\n }\n\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = [];\n for (const fullName of baseClassesFullClassNames) {\n await releaseMainThread();\n baseClasses.push(await getClass(schemaProvider, fullName));\n }\n const sortedClasses = await sortByBaseClass(baseClasses.filter((baseClass) => baseClass.isRelationshipClass() || baseClass.isEntityClass()));\n\n if (parentNode && HierarchyNode.isClassGroupingNode(parentNode)) {\n // if we have a class grouping node, we can cut the front of sortedClasses up to a point where our grouping class is\n const cutPosition = sortedClasses.findIndex((c) => c.fullName === parentNode.key.className);\n if (cutPosition >= 0) {\n return sortedClasses.slice(cutPosition + 1);\n }\n return [];\n }\n\n return sortedClasses;\n}\n\n/** @internal */\nexport async function createBaseClassGroupsForSingleBaseClass(\n nodes: ProcessedInstanceHierarchyNode[],\n baseECClass: EC.Class,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<GroupingHandlerResult> {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const groupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const ungroupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const baseClassFullName = baseECClass.fullName;\n for (const node of nodes) {\n await releaseMainThread();\n if (\n !node.processingParams?.grouping?.byBaseClasses ||\n !node.processingParams.grouping.byBaseClasses.fullClassNames.some((className) => className === baseClassFullName)\n ) {\n ungroupedNodes.push(node);\n continue;\n }\n const fullCurrentNodeClassName = node.key.instanceKeys[0].className;\n\n const baseCheckerResult = classHierarchyInspector.classDerivesFrom(fullCurrentNodeClassName, baseClassFullName);\n // istanbul ignore next\n const isCurrentNodeClassOfBase = baseCheckerResult instanceof Promise ? await baseCheckerResult : baseCheckerResult;\n\n if (isCurrentNodeClassOfBase) {\n groupedNodes.push(node);\n } else {\n ungroupedNodes.push(node);\n }\n }\n\n const result: GroupingHandlerResult = { grouped: [], ungrouped: ungroupedNodes, groupingType: \"base-class\" };\n if (groupedNodes.length > 0) {\n const groupingNodeKey: ClassGroupingNodeKey = {\n type: \"class-grouping\",\n className: baseClassFullName,\n };\n result.grouped.push({\n label: baseECClass.label ?? baseECClass.name,\n key: groupingNodeKey,\n parentKeys: [...groupedNodes[0].parentKeys],\n groupedInstanceKeys: groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: groupedNodes.map((gn) => Object.assign(gn, { parentKeys: [...gn.parentKeys, groupingNodeKey] })),\n });\n }\n return result;\n}\n\nasync function getGroupingBaseClassNames(nodes: ProcessedInstanceHierarchyNode[]) {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = new Set<string>();\n for (const node of nodes) {\n await releaseMainThread();\n if (node.processingParams?.grouping?.byBaseClasses) {\n for (const className of node.processingParams.grouping.byBaseClasses.fullClassNames) {\n baseClasses.add(className);\n }\n }\n }\n return baseClasses;\n}\n\nasync function sortByBaseClass(classes: EC.Class[]): Promise<EC.Class[]> {\n if (classes.length === 0) {\n return classes;\n }\n const output: EC.Class[] = [classes[0]];\n for (let inputIndex = 1; inputIndex < classes.length; ++inputIndex) {\n let wasAdded = false;\n for (let outputIndex = output.length - 1; outputIndex >= 0; --outputIndex) {\n if (await classes[inputIndex].is(output[outputIndex])) {\n output.splice(outputIndex + 1, 0, classes[inputIndex]);\n wasAdded = true;\n break;\n }\n }\n if (!wasAdded) {\n output.splice(0, 0, classes[inputIndex]);\n }\n }\n\n return output;\n}\n\n/** @internal */\nexport async function createBaseClassGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandler[]> {\n const baseClassGroupingECClasses = await getBaseClassGroupingECClasses(imodelAccess, parentNode, nodes);\n return baseClassGroupingECClasses.map((baseECClass) => async (allNodes) => createBaseClassGroupsForSingleBaseClass(allNodes, baseECClass, imodelAccess));\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { ECSchemaProvider } from "@itwin/presentation-shared";
2
- import { ParentHierarchyNode, ProcessedInstanceHierarchyNode } from "../../../HierarchyNode";
2
+ import { ParentHierarchyNode } from "../../../HierarchyNode";
3
+ import { ProcessedInstanceHierarchyNode } from "../../IModelHierarchyNode";
3
4
  import { GroupingHandlerResult } from "../Grouping";
4
5
  /** @internal */
5
6
  export declare function createClassGroups(schemaProvider: ECSchemaProvider, parentNode: ParentHierarchyNode | undefined, nodes: ProcessedInstanceHierarchyNode[]): Promise<GroupingHandlerResult>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,gBAAgB,EAAY,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,aAAa,CAAC;AAa7F,gBAAgB;AAChB,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAuBhC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.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 { createMainThreadReleaseOnTimePassedHandler, ECSchemaProvider, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping\";\n\ninterface ClassInfo {\n fullName: string;\n name: string;\n label?: string;\n}\n\ninterface ClassGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Map<string, { class: ClassInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>;\n}\n\n/** @internal */\nexport async function createClassGroups(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandlerResult> {\n const parentNodeClass = parentNode && HierarchyNode.isClassGroupingNode(parentNode) ? parentNode.key.className : undefined;\n const groupings: ClassGroupingInformation = { ungrouped: [], grouped: new Map() };\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const node of nodes) {\n await releaseMainThread();\n const nodeClassName = node.key.instanceKeys[0].className;\n if (node.processingParams?.grouping?.byClass && nodeClassName !== parentNodeClass) {\n let groupingInfo = groupings.grouped.get(nodeClassName);\n if (!groupingInfo) {\n const nodeClass = await getClass(schemaProvider, nodeClassName);\n groupingInfo = {\n class: nodeClass,\n groupedNodes: [],\n };\n groupings.grouped.set(nodeClassName, groupingInfo);\n }\n groupingInfo.groupedNodes.push(node);\n continue;\n }\n groupings.ungrouped.push(node);\n }\n return createGroupingNodes(groupings);\n}\n\nasync function createGroupingNodes(groupings: ClassGroupingInformation): Promise<GroupingHandlerResult> {\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const [, entry] of groupings.grouped) {\n await releaseMainThread();\n const groupingNodeKey: ClassGroupingNodeKey = {\n type: \"class-grouping\",\n className: entry.class.fullName,\n };\n const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;\n groupedNodes.push({\n label: entry.class.label ?? entry.class.name,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.groupedNodes.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),\n });\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"class\" };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupHiding.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAyD,MAAM,aAAa,CAAC;AAG3G,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CA+BjH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupHiding.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAMhG,wDA+BC;AAlCD,qCAA0D;AAE1D,gBAAgB;AAChB,SAAgB,sBAAsB,CAAC,KAA4B,EAAE,aAAqB;IACxF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,sCAAsC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,eAAe,GAAG,IAAI,KAAK,EAA2C,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,eAAe;QACxB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,sCAAsC,CAC7C,YAAqD,EACrD,YAA0B;IAE1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAA,uCAA8B,EAAC,YAAY,EAAE,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;QAC3E,IAAI,gBAAgB,IAAI,oBAAoB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,KAAK,CAAC,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACvD,oBAAoB,KAAK,CAAC,CAAC,aAAa,EAAE,oBAAoB,CAAC;QAC/D,OAAO;IACT,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AACpD,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 { GroupingHandlerResult, GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping\";\nimport { iterateChildNodeGroupingParams } from \"./Shared\";\n\n/** @internal */\nexport function applyGroupHidingParams(props: GroupingHandlerResult, extraSiblings: number): GroupingHandlerResult {\n const { grouped, ungrouped, groupingType } = props;\n if (grouped.length === 0) {\n return props;\n }\n\n // handle the \"no siblings\" case\n if (grouped.length === 1 && ungrouped.length === 0 && extraSiblings === 0) {\n const hideParams = getHideOptionsFromNodeProcessingParams(grouped[0], groupingType);\n if (hideParams.hideIfNoSiblings) {\n return { groupingType, grouped: [], ungrouped: grouped[0].children };\n }\n }\n\n // handle the \"no children\" case\n const filteredGrouped = new Array<ProcessedInstancesGroupingHierarchyNode>();\n for (const node of grouped) {\n if (node.children.length === 1) {\n const hideParams = getHideOptionsFromNodeProcessingParams(node, groupingType);\n if (hideParams.hideIfOneGroupedNode) {\n ungrouped.push(node.children[0]);\n continue;\n }\n }\n filteredGrouped.push(node);\n }\n return {\n groupingType,\n grouped: filteredGrouped,\n ungrouped,\n };\n}\n\nfunction getHideOptionsFromNodeProcessingParams(\n groupingNode: ProcessedInstancesGroupingHierarchyNode,\n groupingType: GroupingType,\n): { hideIfNoSiblings: boolean; hideIfOneGroupedNode: boolean } {\n let hideIfNoSiblings = false;\n let hideIfOneGroupedNode = false;\n iterateChildNodeGroupingParams(groupingNode, groupingType, (groupingProps) => {\n if (hideIfNoSiblings && hideIfOneGroupedNode) {\n return true;\n }\n hideIfNoSiblings ||= !!groupingProps?.hideIfNoSiblings;\n hideIfOneGroupedNode ||= !!groupingProps?.hideIfOneGroupedNode;\n return;\n });\n return { hideIfNoSiblings, hideIfOneGroupedNode };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ProcessedInstanceHierarchyNode } from "../../../HierarchyNode";
1
+ import { ProcessedInstanceHierarchyNode } from "../../IModelHierarchyNode";
2
2
  import { GroupingHandlerResult } from "../Grouping";
3
3
  /** @internal */
4
4
  export declare function createLabelGroups(nodes: ProcessedInstanceHierarchyNode[]): Promise<GroupingHandlerResult>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,aAAa,CAAC;AAE7F,gBAAgB;AAChB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,8BAA8B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoD/G"}
@@ -5,7 +5,7 @@
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.createLabelGroups = createLabelGroups;
8
- const Common_1 = require("../../Common");
8
+ const Utils_1 = require("../../Utils");
9
9
  /** @internal */
10
10
  async function createLabelGroups(nodes) {
11
11
  const ungrouped = new Array();
@@ -29,7 +29,7 @@ async function createLabelGroups(nodes) {
29
29
  nodesToMergeMap.forEach((entry) => {
30
30
  let finalNode = entry[0];
31
31
  for (let i = 1; i < entry.length; ++i) {
32
- finalNode = (0, Common_1.mergeNodes)(finalNode, entry[i]);
32
+ finalNode = (0, Utils_1.mergeInstanceNodes)(finalNode, entry[i]);
33
33
  }
34
34
  ungrouped.push(finalNode);
35
35
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.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 { LabelGroupingNodeKey } from \"../../../HierarchyNodeKey\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode\";\nimport { mergeInstanceNodes } from \"../../Utils\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping\";\n\n/** @internal */\nexport async function createLabelGroups(nodes: ProcessedInstanceHierarchyNode[]): Promise<GroupingHandlerResult> {\n const ungrouped = new Array<ProcessedInstanceHierarchyNode>();\n const nodesToMergeMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n const nodesToGroupMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n for (const node of nodes) {\n const byLabel = node.processingParams?.grouping?.byLabel;\n if (!byLabel) {\n ungrouped.push(node);\n continue;\n }\n const nodeMapKeyIdentifier = `label:\"${node.label}\";groupId:${JSON.stringify(typeof byLabel === \"object\" ? byLabel.groupId : undefined)}`;\n const map = typeof byLabel === \"object\" && byLabel.action === \"merge\" ? nodesToMergeMap : nodesToGroupMap;\n let list = map.get(nodeMapKeyIdentifier);\n if (!list) {\n list = [];\n map.set(nodeMapKeyIdentifier, list);\n }\n list.push(node);\n }\n\n nodesToMergeMap.forEach((entry) => {\n let finalNode = entry[0];\n for (let i = 1; i < entry.length; ++i) {\n finalNode = mergeInstanceNodes(finalNode, entry[i]);\n }\n ungrouped.push(finalNode);\n });\n\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n nodesToGroupMap.forEach((entry) => {\n const byLabel = entry[0].processingParams?.grouping?.byLabel;\n const groupId = typeof byLabel === \"object\" ? byLabel.groupId : undefined;\n const groupingNodeKey: LabelGroupingNodeKey = {\n type: \"label-grouping\",\n label: entry[0].label,\n groupId,\n };\n const groupedNodeParentKeys = entry[0].parentKeys;\n groupedNodes.push({\n label: entry[0].label,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),\n });\n });\n\n return {\n groupingType: \"label\",\n grouped: groupedNodes,\n ungrouped,\n };\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { EC, ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from "@itwin/presentation-shared";
2
- import { HierarchyNodePropertiesGroupingParams, HierarchyNodePropertyGroup, HierarchyNodePropertyValueRange, ParentHierarchyNode, ProcessedInstanceHierarchyNode } from "../../../HierarchyNode";
2
+ import { ParentHierarchyNode } from "../../../HierarchyNode";
3
+ import { HierarchyNodePropertiesGroupingParams, HierarchyNodePropertyGroup, HierarchyNodePropertyValueRange, ProcessedInstanceHierarchyNode } from "../../IModelHierarchyNode";
3
4
  import { GroupingHandler, GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from "../Grouping";
4
5
  /** @internal */
5
6
  export interface PropertiesGroupingLocalizedStrings {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertiesGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,EAAE,EACF,yBAAyB,EACzB,gBAAgB,EAGhB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,uCAAuC,EAAE,MAAM,aAAa,CAAC;AAY9G,gBAAgB;AAChB,MAAM,WAAW,kCAAkC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC;IAClB,8BAA8B,EAAE,8BAA8B,CAAC;IAC/D,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;CAClE;AAED,gBAAgB;AAChB,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAAC;IAAE,mBAAmB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE7H,gBAAgB;AAChB,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,EAC9D,qBAAqB,EAAE,iBAAiB,EACxC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CA8JhC;AA8ED,gBAAgB;AAChB,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAqDnC;AAoCD,gBAAgB;AAChB,wBAAgB,yBAAyB,CACvC,8BAA8B,EAAE,8BAA8B,EAC9D,eAAe,EAAE,qCAAqC,GACrD,OAAO,CAUT;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,GAAG,OAAO,CAwBrJ;AAED,gBAAgB;AAChB,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,EACvC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,GACnD,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B"}
@@ -58,11 +58,13 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
58
58
  };
59
59
  const propertyClass = handlerGroupingParams.ecClass;
60
60
  const property = await propertyClass.getProperty(currentProperty.propertyName);
61
- if (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry") {
61
+ if (!property?.isNavigation() && (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry")) {
62
62
  groupings.ungrouped.push(node);
63
63
  continue;
64
64
  }
65
- const koqName = (await property.kindOfQuantity)?.fullName;
65
+ const extendedTypeName = "extendedTypeName" in property ? property.extendedTypeName : undefined;
66
+ const primitiveType = "primitiveType" in property ? property.primitiveType : "String";
67
+ (0, core_bentley_1.assert)(primitiveType !== "Binary" && primitiveType !== "IGeometry");
66
68
  if (!currentProperty.propertyValue) {
67
69
  if (byProperties.createGroupForUnspecifiedValues) {
68
70
  addGroupingToMap(groupings.grouped, `${currentProperty.propertyName}:Unspecified`, {
@@ -78,6 +80,7 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
78
80
  groupings.ungrouped.push(node);
79
81
  continue;
80
82
  }
83
+ const koqName = (await property.kindOfQuantity)?.fullName;
81
84
  if (currentProperty.ranges) {
82
85
  if (typeof currentProperty.propertyValue === "number") {
83
86
  const propValue = currentProperty.propertyValue;
@@ -85,13 +88,13 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
85
88
  if (matchingRange) {
86
89
  const fromValueTypedPrimitive = {
87
90
  type: Number.isInteger(matchingRange.fromValue) ? "Integer" : "Double",
88
- extendedType: property.extendedTypeName,
91
+ extendedType: extendedTypeName,
89
92
  koqName,
90
93
  value: matchingRange.fromValue,
91
94
  };
92
95
  const toValueTypedPrimitive = {
93
96
  type: Number.isInteger(matchingRange.toValue) ? "Integer" : "Double",
94
- extendedType: property.extendedTypeName,
97
+ extendedType: extendedTypeName,
95
98
  koqName,
96
99
  value: matchingRange.toValue,
97
100
  };
@@ -127,7 +130,9 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
127
130
  groupings.ungrouped.push(node);
128
131
  continue;
129
132
  }
130
- const formattedValue = await valueFormatter(presentation_shared_1.TypedPrimitiveValue.create(currentProperty.propertyValue, property.primitiveType, koqName, property.extendedTypeName));
133
+ const formattedValue = currentProperty.propertyValue instanceof Array
134
+ ? await (0, presentation_shared_1.formatConcatenatedValue)({ value: currentProperty.propertyValue, valueFormatter })
135
+ : await valueFormatter(presentation_shared_1.TypedPrimitiveValue.create(currentProperty.propertyValue, primitiveType, koqName, extendedTypeName));
131
136
  addGroupingToMap(groupings.grouped, `${currentProperty.propertyName}:${formattedValue}`, {
132
137
  label: formattedValue,
133
138
  propertyGroupingNodeKey: {