@itwin/presentation-hierarchies 2.0.0-alpha.13 → 2.0.0-alpha.15

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 (190) hide show
  1. package/CHANGELOG.md +132 -4
  2. package/README.md +19 -18
  3. package/lib/cjs/hierarchies/HierarchyMerge.d.ts +1 -1
  4. package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +1 -1
  5. package/lib/cjs/hierarchies/HierarchyMerge.js +1 -1
  6. package/lib/cjs/hierarchies/HierarchyMerge.js.map +1 -1
  7. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
  8. package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
  9. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  10. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
  11. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
  12. package/lib/cjs/hierarchies/HierarchyProvider.js +7 -3
  13. package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
  14. package/lib/cjs/hierarchies/HierarchySearch.d.ts +24 -2
  15. package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -1
  16. package/lib/cjs/hierarchies/HierarchySearch.js +33 -16
  17. package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -1
  18. package/lib/cjs/hierarchies/Logging.js +1 -1
  19. package/lib/cjs/hierarchies/Logging.js.map +1 -1
  20. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  21. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +1 -4
  22. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
  23. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +35 -2
  24. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  25. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  26. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  27. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  28. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  29. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +144 -78
  30. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  31. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  32. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +6 -7
  33. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  34. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  35. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +33 -62
  36. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  37. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  38. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  39. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  40. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
  41. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +11 -4
  42. package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
  43. package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  44. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +3 -5
  45. package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  46. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
  47. package/lib/cjs/hierarchies/imodel/Utils.js +19 -7
  48. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
  49. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  50. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +10 -4
  51. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  52. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  53. package/lib/cjs/hierarchies/imodel/operators/Grouping.js +32 -18
  54. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
  55. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  56. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +31 -9
  57. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  58. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  59. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +30 -14
  60. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  61. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  62. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +4 -6
  63. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  64. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  65. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -9
  66. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  67. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  68. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  69. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  70. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  71. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  72. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  73. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  74. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +24 -28
  75. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  76. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  77. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  78. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  79. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  80. package/lib/cjs/hierarchies/internal/Common.js +2 -2
  81. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  82. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  83. package/lib/cjs/hierarchies/internal/EachValueFrom.js +0 -2
  84. package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
  85. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  86. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  87. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  88. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  89. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +1 -4
  90. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  91. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  92. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
  93. package/lib/cjs/presentation-hierarchies.d.ts +3 -3
  94. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  95. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  96. package/lib/esm/hierarchies/HierarchyMerge.d.ts +1 -1
  97. package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +1 -1
  98. package/lib/esm/hierarchies/HierarchyMerge.js +1 -1
  99. package/lib/esm/hierarchies/HierarchyMerge.js.map +1 -1
  100. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  101. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  102. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  103. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  104. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  105. package/lib/esm/hierarchies/HierarchyProvider.js +7 -3
  106. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  107. package/lib/esm/hierarchies/HierarchySearch.d.ts +24 -2
  108. package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -1
  109. package/lib/esm/hierarchies/HierarchySearch.js +33 -16
  110. package/lib/esm/hierarchies/HierarchySearch.js.map +1 -1
  111. package/lib/esm/hierarchies/Logging.js +1 -1
  112. package/lib/esm/hierarchies/Logging.js.map +1 -1
  113. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  114. package/lib/esm/hierarchies/imodel/HierarchyCache.js +1 -4
  115. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
  116. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +35 -2
  117. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  118. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  119. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  120. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  121. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  122. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +147 -81
  123. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  124. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  125. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +7 -8
  126. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  127. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  128. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +34 -63
  129. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  130. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  131. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  132. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  133. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
  134. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js +11 -4
  135. package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
  136. package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
  137. package/lib/esm/hierarchies/imodel/TreeNodesReader.js +3 -5
  138. package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
  139. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
  140. package/lib/esm/hierarchies/imodel/Utils.js +19 -7
  141. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
  142. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  143. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js +11 -5
  144. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  145. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  146. package/lib/esm/hierarchies/imodel/operators/Grouping.js +33 -19
  147. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
  148. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  149. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +32 -10
  150. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  151. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  152. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js +31 -15
  153. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  154. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  155. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +5 -7
  156. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  157. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  158. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +5 -10
  159. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  160. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  161. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  162. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  163. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  164. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  165. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  166. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  167. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +24 -28
  168. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  169. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  170. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  171. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  172. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  173. package/lib/esm/hierarchies/internal/Common.js +2 -2
  174. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  175. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  176. package/lib/esm/hierarchies/internal/EachValueFrom.js +0 -2
  177. package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
  178. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  179. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  180. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  181. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  182. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js +1 -4
  183. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  184. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  185. package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
  186. package/lib/esm/presentation-hierarchies.d.ts +3 -3
  187. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  188. package/lib/esm/presentation-hierarchies.js +3 -3
  189. package/lib/esm/presentation-hierarchies.js.map +1 -1
  190. package/package.json +15 -23
@@ -3,7 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { Dictionary } from "@itwin/core-bentley";
6
- import { compareFullClassNames, createMainThreadReleaseOnTimePassedHandler, getClass } from "@itwin/presentation-shared";
6
+ import { compareFullClassNames, createMainThreadReleaseOnTimePassedHandler, getClass, } from "@itwin/presentation-shared";
7
7
  import { HierarchyNode } from "../../../HierarchyNode.js";
8
8
  /** @internal */
9
9
  export async function createClassGroups(schemaProvider, parentNode, nodes) {
@@ -16,14 +16,12 @@ export async function createClassGroups(schemaProvider, parentNode, nodes) {
16
16
  for (const node of nodes) {
17
17
  await releaseMainThread();
18
18
  const nodeClassName = node.key.instanceKeys[0].className;
19
- if (node.processingParams?.grouping?.byClass && (!parentNodeClass || compareFullClassNames(nodeClassName, parentNodeClass) !== 0)) {
19
+ if (node.processingParams?.grouping?.byClass &&
20
+ (!parentNodeClass || compareFullClassNames(nodeClassName, parentNodeClass) !== 0)) {
20
21
  let groupingInfo = groupings.grouped.get(nodeClassName);
21
22
  if (!groupingInfo) {
22
23
  const nodeClass = await getClass(schemaProvider, nodeClassName);
23
- groupingInfo = {
24
- class: nodeClass,
25
- groupedNodes: [],
26
- };
24
+ groupingInfo = { class: nodeClass, groupedNodes: [] };
27
25
  groupings.grouped.set(nodeClassName, groupingInfo);
28
26
  }
29
27
  groupingInfo.groupedNodes.push(node);
@@ -38,10 +36,7 @@ async function createGroupingNodes(groupings) {
38
36
  const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();
39
37
  for (const { value: entry } of groupings.grouped) {
40
38
  await releaseMainThread();
41
- const groupingNodeKey = {
42
- type: "class-grouping",
43
- className: entry.class.fullName,
44
- };
39
+ const groupingNodeKey = { type: "class-grouping", className: entry.class.fullName };
45
40
  const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;
46
41
  groupedNodes.push({
47
42
  label: entry.class.label ?? entry.class.name,
@@ -1 +1 @@
1
- {"version":3,"file":"ClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,0CAA0C,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACzH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAmB1D,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,cAAgC,EAChC,UAA2C,EAC3C,KAAuC;IAEvC,MAAM,eAAe,GAAG,UAAU,IAAI,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3H,MAAM,SAAS,GAA6B;QAC1C,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI,UAAU,CAAyF,qBAAqB,CAAC;KACvI,CAAC;IACF,MAAM,iBAAiB,GAAG,0CAA0C,EAAE,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,IAAI,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC,eAAe,IAAI,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClI,IAAI,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBAChE,YAAY,GAAG;oBACb,KAAK,EAAE,SAAS;oBAChB,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YACD,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QACD,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAAmC;IACpE,MAAM,YAAY,GAAG,IAAI,KAAK,EAA2C,CAAC;IAC1E,MAAM,iBAAiB,GAAG,0CAA0C,EAAE,CAAC;IACvE,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAyB;YAC5C,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;SAChC,CAAC;QACF,MAAM,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/D,YAAY,CAAC,IAAI,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;YAC5C,GAAG,EAAE,eAAe;YACpB,UAAU,EAAE,qBAAqB;YACjC,mBAAmB,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9G,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,qBAAqB,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;SACzH,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC1F,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 { Dictionary } from \"@itwin/core-bentley\";\nimport { compareFullClassNames, createMainThreadReleaseOnTimePassedHandler, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode } from \"../../../HierarchyNode.js\";\n\nimport type { EC, ECSchemaProvider } from \"@itwin/presentation-shared\";\nimport type { ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport type { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface ClassInfo {\n fullName: EC.FullClassName;\n name: string;\n label?: string;\n}\n\ninterface ClassGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Dictionary<EC.FullClassName, { 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 = {\n ungrouped: [],\n grouped: new Dictionary<EC.FullClassName, { class: ClassInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>(compareFullClassNames),\n };\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 && (!parentNodeClass || compareFullClassNames(nodeClassName, parentNodeClass) !== 0)) {\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 { value: 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"]}
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 { Dictionary } from \"@itwin/core-bentley\";\nimport {\n compareFullClassNames,\n createMainThreadReleaseOnTimePassedHandler,\n getClass,\n} from \"@itwin/presentation-shared\";\nimport { HierarchyNode } from \"../../../HierarchyNode.js\";\n\nimport type { EC, ECSchemaProvider } from \"@itwin/presentation-shared\";\nimport type { ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport type { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface ClassInfo {\n fullName: EC.FullClassName;\n name: string;\n label?: string;\n}\n\ninterface ClassGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Dictionary<EC.FullClassName, { 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 =\n parentNode && HierarchyNode.isClassGroupingNode(parentNode) ? parentNode.key.className : undefined;\n const groupings: ClassGroupingInformation = {\n ungrouped: [],\n grouped: new Dictionary<EC.FullClassName, { class: ClassInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>(\n compareFullClassNames,\n ),\n };\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const node of nodes) {\n await releaseMainThread();\n const nodeClassName = node.key.instanceKeys[0].className;\n if (\n node.processingParams?.grouping?.byClass &&\n (!parentNodeClass || compareFullClassNames(nodeClassName, parentNodeClass) !== 0)\n ) {\n let groupingInfo = groupings.grouped.get(nodeClassName);\n if (!groupingInfo) {\n const nodeClass = await getClass(schemaProvider, nodeClassName);\n groupingInfo = { class: nodeClass, groupedNodes: [] };\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 { value: entry } of groupings.grouped) {\n await releaseMainThread();\n const groupingNodeKey: ClassGroupingNodeKey = { type: \"class-grouping\", className: entry.class.fullName };\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) =>\n Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] }),\n ),\n });\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"class\" };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupHiding.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAyD,MAAM,gBAAgB,CAAC;AAEnH,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CA+BjH"}
1
+ {"version":3,"file":"GroupHiding.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAyD,MAAM,gBAAgB,CAAC;AAEnH,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CA2BjH"}
@@ -28,11 +28,7 @@ export function applyGroupHidingParams(props, extraSiblings) {
28
28
  }
29
29
  filteredGrouped.push(node);
30
30
  }
31
- return {
32
- groupingType,
33
- grouped: filteredGrouped,
34
- ungrouped,
35
- };
31
+ return { groupingType, grouped: filteredGrouped, ungrouped };
36
32
  }
37
33
  function getHideOptionsFromNodeProcessingParams(groupingNode, groupingType) {
38
34
  let hideIfNoSiblings = false;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupHiding.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAI7D,gBAAgB;AAChB,MAAM,UAAU,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,8BAA8B,CAAC,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 { iterateChildNodeGroupingParams } from \"./Shared.js\";\n\nimport type { GroupingHandlerResult, GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\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
+ {"version":3,"file":"GroupHiding.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAI7D,gBAAgB;AAChB,MAAM,UAAU,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,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,sCAAsC,CAC7C,YAAqD,EACrD,YAA0B;IAE1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,8BAA8B,CAAC,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 { iterateChildNodeGroupingParams } from \"./Shared.js\";\n\nimport type { GroupingHandlerResult, GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\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 { groupingType, grouped: filteredGrouped, ungrouped };\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 +1 @@
1
- {"version":3,"file":"LabelGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAErG,gBAAgB;AAChB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,8BAA8B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoD/G"}
1
+ {"version":3,"file":"LabelGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAErG,gBAAgB;AAChB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,8BAA8B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4C/G"}
@@ -34,11 +34,7 @@ export async function createLabelGroups(nodes) {
34
34
  nodesToGroupMap.forEach((entry) => {
35
35
  const byLabel = entry[0].processingParams?.grouping?.byLabel;
36
36
  const groupId = typeof byLabel === "object" ? byLabel.groupId : undefined;
37
- const groupingNodeKey = {
38
- type: "label-grouping",
39
- label: entry[0].label,
40
- groupId,
41
- };
37
+ const groupingNodeKey = { type: "label-grouping", label: entry[0].label, groupId };
42
38
  const groupedNodeParentKeys = entry[0].parentKeys;
43
39
  groupedNodes.push({
44
40
  label: entry[0].label,
@@ -48,10 +44,6 @@ export async function createLabelGroups(nodes) {
48
44
  children: entry.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),
49
45
  });
50
46
  });
51
- return {
52
- groupingType: "label",
53
- grouped: groupedNodes,
54
- ungrouped,
55
- };
47
+ return { groupingType: "label", grouped: groupedNodes, ungrouped };
56
48
  }
57
49
  //# sourceMappingURL=LabelGrouping.js.map
@@ -1 +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 { mergeInstanceNodes } from \"../../Utils.js\";\n\nimport type { LabelGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\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
+ {"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 { mergeInstanceNodes } from \"../../Utils.js\";\n\nimport type { LabelGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\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 = { type: \"label-grouping\", label: entry[0].label, groupId };\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 { groupingType: \"label\", grouped: groupedNodes, ungrouped };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertiesGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,EAAE,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC1I,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EACV,qCAAqC,EACrC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAYtH,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,EAAE,CAAC,aAAa,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEvI,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,CA+JhC;AAmFD,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"}
1
+ {"version":3,"file":"PropertiesGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,EAAE,EACF,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EACV,qCAAqC,EACrC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAetH,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;IACjD,mBAAmB,EAAE,EAAE,CAAC,aAAa,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,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,CAyKhC;AAqFD,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;AAuCD,gBAAgB;AAChB,wBAAgB,yBAAyB,CACvC,8BAA8B,EAAE,8BAA8B,EAC9D,eAAe,EAAE,qCAAqC,GACrD,OAAO,CAWT;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,EACtD,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,GACrD,OAAO,CA8BT;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,CAa5B"}
@@ -18,10 +18,7 @@ export async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, ha
18
18
  }
19
19
  otherValuesGrouping ??= {
20
20
  node: {
21
- key: {
22
- type: "property-grouping:other",
23
- properties: [],
24
- },
21
+ key: { type: "property-grouping:other", properties: [] },
25
22
  parentKeys: [],
26
23
  groupedInstanceKeys: [],
27
24
  label: localizedStrings.other,
@@ -47,14 +44,12 @@ export async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, ha
47
44
  const currentProperty = byProperties.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];
48
45
  const propertyClass = handlerGroupingParams.ecClass;
49
46
  const property = await propertyClass.getProperty(currentProperty.propertyName);
50
- if (!property?.isNavigation() && (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry")) {
47
+ if (!property?.isNavigation() &&
48
+ (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry")) {
51
49
  groupings.ungrouped.push(node);
52
50
  continue;
53
51
  }
54
- const propertyIdentifier = {
55
- propertyName: property.name,
56
- propertyClassName: property.class.fullName,
57
- };
52
+ const propertyIdentifier = { propertyName: property.name, propertyClassName: property.class.fullName };
58
53
  const extendedTypeName = "extendedTypeName" in property ? property.extendedTypeName : undefined;
59
54
  const primitiveType = "primitiveType" in property ? property.primitiveType : "String";
60
55
  assert(primitiveType !== "Binary" && primitiveType !== "IGeometry");
@@ -91,7 +86,8 @@ export async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, ha
91
86
  koqName,
92
87
  value: matchingRange.toValue,
93
88
  };
94
- const rangeLabel = matchingRange.rangeLabel ?? `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;
89
+ const rangeLabel = matchingRange.rangeLabel ??
90
+ `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;
95
91
  addGroupingToMap(groupings.grouped, `${currentProperty.propertyName.toLocaleLowerCase()}:[${matchingRange.fromValue}-${matchingRange.toValue}]${matchingRange.rangeLabel ? `(${matchingRange.rangeLabel})` : ""}`, {
96
92
  label: rangeLabel,
97
93
  propertyGroupingNodeKey: {
@@ -141,10 +137,7 @@ export async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, ha
141
137
  function addGroupingToMap(groupingMap, mapKey, propertyToAdd, node) {
142
138
  let groupingInfo = groupingMap.get(mapKey);
143
139
  if (!groupingInfo) {
144
- groupingInfo = {
145
- displayablePropertyGroupingInfo: propertyToAdd,
146
- groupedNodes: [node],
147
- };
140
+ groupingInfo = { displayablePropertyGroupingInfo: propertyToAdd, groupedNodes: [node] };
148
141
  groupingMap.set(mapKey, groupingInfo);
149
142
  return;
150
143
  }
@@ -216,7 +209,9 @@ export async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, n
216
209
  const previousPropertiesInfo = new Array();
217
210
  for (const propertyGroup of byProperties.propertyGroups) {
218
211
  const mapKeyRanges = getRangesAsString(propertyGroup.ranges);
219
- const lastKey = previousPropertiesInfo.length > 0 ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey : "";
212
+ const lastKey = previousPropertiesInfo.length > 0
213
+ ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey
214
+ : "";
220
215
  const propertyGroupKey = `${lastKey}:${propertyGroup.propertyName}(${mapKeyRanges})`;
221
216
  const mapKey = `${normalizeFullClassName(byProperties.propertiesClassName)}:${propertyGroupKey}`.toLocaleLowerCase();
222
217
  let isAlreadyGrouped = false;
@@ -231,10 +226,7 @@ export async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, n
231
226
  if (!isAlreadyGrouped && !uniqueProperties.get(mapKey)) {
232
227
  uniqueProperties.set(mapKey, {
233
228
  ecClass: await getClass(schemaProvider, byProperties.propertiesClassName),
234
- propertyGroup: {
235
- propertyName: propertyGroup.propertyName,
236
- ranges: propertyGroup.ranges,
237
- },
229
+ propertyGroup: { propertyName: propertyGroup.propertyName, ranges: propertyGroup.ranges },
238
230
  previousPropertiesGroupingInfo: previousPropertiesInfo.map((groupingInfo) => ({
239
231
  propertiesClassName: byProperties.propertiesClassName,
240
232
  propertyName: groupingInfo.propertyGroup.propertyName,
@@ -242,10 +234,7 @@ export async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, n
242
234
  })),
243
235
  });
244
236
  }
245
- previousPropertiesInfo.push({
246
- propertyGroup,
247
- propertyGroupKey,
248
- });
237
+ previousPropertiesInfo.push({ propertyGroup, propertyGroupKey });
249
238
  ++propertyGroupIndex;
250
239
  }
251
240
  }
@@ -261,12 +250,14 @@ function getRangesAsString(ranges) {
261
250
  : "";
262
251
  }
263
252
  async function shouldCreatePropertyGroup(handlerGroupingParams, nodePropertyGroupingParams, nodeFullClassName, classHierarchyInspector) {
264
- if (compareFullClassNames(nodePropertyGroupingParams.propertiesClassName, handlerGroupingParams.ecClass.fullName) !== 0 ||
253
+ if (compareFullClassNames(nodePropertyGroupingParams.propertiesClassName, handlerGroupingParams.ecClass.fullName) !==
254
+ 0 ||
265
255
  nodePropertyGroupingParams.propertyGroups.length < handlerGroupingParams.previousPropertiesGroupingInfo.length + 1) {
266
256
  return false;
267
257
  }
268
258
  const currentProperty = nodePropertyGroupingParams.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];
269
- if (currentProperty.propertyName.toLocaleLowerCase() !== handlerGroupingParams.propertyGroup.propertyName.toLocaleLowerCase() ||
259
+ if (currentProperty.propertyName.toLocaleLowerCase() !==
260
+ handlerGroupingParams.propertyGroup.propertyName.toLocaleLowerCase() ||
270
261
  !doRangesMatch(currentProperty.ranges, handlerGroupingParams.propertyGroup.ranges)) {
271
262
  return false;
272
263
  }
@@ -279,7 +270,8 @@ async function shouldCreatePropertyGroup(handlerGroupingParams, nodePropertyGrou
279
270
  export function doPreviousPropertiesMatch(previousPropertiesGroupingInfo, nodesProperties) {
280
271
  return (previousPropertiesGroupingInfo.length <= nodesProperties.propertyGroups.length &&
281
272
  previousPropertiesGroupingInfo.every((groupingInfo, index) => compareFullClassNames(groupingInfo.propertiesClassName, nodesProperties.propertiesClassName) === 0 &&
282
- groupingInfo.propertyName.toLocaleLowerCase() === nodesProperties.propertyGroups[index].propertyName.toLocaleLowerCase() &&
273
+ groupingInfo.propertyName.toLocaleLowerCase() ===
274
+ nodesProperties.propertyGroups[index].propertyName.toLocaleLowerCase() &&
283
275
  !!groupingInfo.isRange === !!nodesProperties.propertyGroups[index].ranges));
284
276
  }
285
277
  /** @internal */
@@ -296,8 +288,12 @@ export function doRangesMatch(ranges1, ranges2) {
296
288
  }
297
289
  return (
298
290
  // Check twice, to validate if both ranges have the same elements (elements can be in a different order)
299
- ranges1.every((lhsRange) => ranges2.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel)) &&
300
- ranges2.every((lhsRange) => ranges1.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel)));
291
+ ranges1.every((lhsRange) => ranges2.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue &&
292
+ lhsRange.toValue === rhsRange.toValue &&
293
+ lhsRange.rangeLabel === rhsRange.rangeLabel)) &&
294
+ ranges2.every((lhsRange) => ranges1.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue &&
295
+ lhsRange.toValue === rhsRange.toValue &&
296
+ lhsRange.rangeLabel === rhsRange.rangeLabel)));
301
297
  }
302
298
  /** @internal */
303
299
  export async function createPropertiesGroupingHandlers(imodelAccess, parentNode, nodes, valueFormatter, localizedStrings) {
@@ -1 +1 @@
1
- {"version":3,"file":"PropertiesGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.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 {\n compareFullClassNames,\n createMainThreadReleaseOnTimePassedHandler,\n formatConcatenatedValue,\n getClass,\n normalizeFullClassName,\n TypedPrimitiveValue,\n} from \"@itwin/presentation-shared\";\nimport { HierarchyNode } from \"../../../HierarchyNode.js\";\nimport { HierarchyNodeKey } from \"../../../HierarchyNodeKey.js\";\n\nimport type { ArrayElement, EC, ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from \"@itwin/presentation-shared\";\nimport type { ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport type { PropertyGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type {\n HierarchyNodePropertiesGroupingParams,\n HierarchyNodePropertyGroup,\n HierarchyNodePropertyValueRange,\n ProcessedInstanceHierarchyNode,\n} from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandler, GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface DisplayablePropertyGroupingInfo {\n label: string;\n propertyGroupingNodeKey: PropertyGroupingNodeKey;\n}\n\ninterface PropertyGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Map<string, { displayablePropertyGroupingInfo: DisplayablePropertyGroupingInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>;\n}\n\n/** @internal */\nexport interface PropertiesGroupingLocalizedStrings {\n other: string;\n unspecified: string;\n}\n\n/** @internal */\nexport interface PropertyGroupInfo {\n ecClass: EC.Class;\n previousPropertiesGroupingInfo: PreviousPropertiesGroupingInfo;\n propertyGroup: Omit<HierarchyNodePropertyGroup, \"propertyValue\">;\n}\n\n/** @internal */\nexport type PreviousPropertiesGroupingInfo = Array<{ propertiesClassName: EC.FullClassName; propertyName: string; isRange?: boolean }>;\n\n/** @internal */\nexport async function createPropertyGroups(\n nodesToGroup: ProcessedInstanceHierarchyNode[],\n nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[],\n handlerGroupingParams: PropertyGroupInfo,\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<GroupingHandlerResult> {\n let otherValuesGrouping: { node: ProcessedInstancesGroupingHierarchyNode; new: boolean } | undefined;\n const getOtherValuesGroupingNode = () => {\n if (!otherValuesGrouping) {\n const node = nodesAlreadyGrouped.find((n) => HierarchyNodeKey.isPropertyOtherValuesGrouping(n.key));\n if (node) {\n otherValuesGrouping = { node, new: false };\n }\n }\n otherValuesGrouping ??= {\n node: {\n key: {\n type: \"property-grouping:other\" as const,\n properties: [],\n },\n parentKeys: [],\n groupedInstanceKeys: [],\n label: localizedStrings.other,\n children: [],\n },\n new: true,\n };\n return otherValuesGrouping.node;\n };\n\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const groupings: PropertyGroupingInformation = { ungrouped: [], grouped: new Map() };\n for (const node of nodesToGroup) {\n await releaseMainThread();\n\n const byProperties = node.processingParams?.grouping?.byProperties;\n if (!byProperties) {\n groupings.ungrouped.push(node);\n continue;\n }\n if (!(await shouldCreatePropertyGroup(handlerGroupingParams, byProperties, node.key.instanceKeys[0].className, classHierarchyInspector))) {\n groupings.ungrouped.push(node);\n continue;\n }\n const currentProperty = byProperties.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];\n const propertyClass = handlerGroupingParams.ecClass;\n const property = await propertyClass.getProperty(currentProperty.propertyName);\n\n if (!property?.isNavigation() && (!property?.isPrimitive() || property.primitiveType === \"Binary\" || property.primitiveType === \"IGeometry\")) {\n groupings.ungrouped.push(node);\n continue;\n }\n\n const propertyIdentifier = {\n propertyName: property.name,\n propertyClassName: property.class.fullName,\n };\n const extendedTypeName = \"extendedTypeName\" in property ? property.extendedTypeName : undefined;\n const primitiveType = \"primitiveType\" in property ? property.primitiveType : \"String\";\n assert(primitiveType !== \"Binary\" && primitiveType !== \"IGeometry\");\n\n if (!currentProperty.propertyValue) {\n if (byProperties.createGroupForUnspecifiedValues) {\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:Unspecified`,\n {\n label: localizedStrings.unspecified,\n propertyGroupingNodeKey: {\n type: \"property-grouping:value\",\n ...propertyIdentifier,\n formattedPropertyValue: \"\",\n },\n },\n node,\n );\n continue;\n }\n groupings.ungrouped.push(node);\n continue;\n }\n\n const koqName = (await property.kindOfQuantity)?.fullName;\n if (currentProperty.ranges) {\n if (typeof currentProperty.propertyValue === \"number\") {\n const propValue = currentProperty.propertyValue;\n const matchingRange = currentProperty.ranges.find((range) => propValue >= range.fromValue && propValue <= range.toValue);\n\n if (matchingRange) {\n const fromValueTypedPrimitive: TypedPrimitiveValue = {\n type: Number.isInteger(matchingRange.fromValue) ? \"Integer\" : \"Double\",\n extendedType: extendedTypeName,\n koqName,\n value: matchingRange.fromValue,\n };\n const toValueTypedPrimitive: TypedPrimitiveValue = {\n type: Number.isInteger(matchingRange.toValue) ? \"Integer\" : \"Double\",\n extendedType: extendedTypeName,\n koqName,\n value: matchingRange.toValue,\n };\n\n const rangeLabel = matchingRange.rangeLabel ?? `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:[${matchingRange.fromValue}-${matchingRange.toValue}]${matchingRange.rangeLabel ? `(${matchingRange.rangeLabel})` : \"\"}`,\n {\n label: rangeLabel,\n propertyGroupingNodeKey: {\n ...propertyIdentifier,\n type: \"property-grouping:range\",\n fromValue: matchingRange.fromValue,\n toValue: matchingRange.toValue,\n },\n },\n node,\n );\n continue;\n }\n }\n if (byProperties.createGroupForOutOfRangeValues) {\n const groupingNode = getOtherValuesGroupingNode();\n assert(HierarchyNodeKey.isPropertyOtherValuesGrouping(groupingNode.key));\n const thisPropertyIdentifier = {\n className: propertyIdentifier.propertyClassName,\n propertyName: propertyIdentifier.propertyName,\n };\n const hasPropertyIdentifier = groupingNode.key.properties.find(\n (x) =>\n compareFullClassNames(x.className, thisPropertyIdentifier.className) === 0 &&\n x.propertyName.toLocaleLowerCase() === thisPropertyIdentifier.propertyName.toLocaleLowerCase(),\n );\n if (!hasPropertyIdentifier) {\n groupingNode.key.properties.push(thisPropertyIdentifier);\n }\n node.key.instanceKeys.forEach((k) => groupingNode.groupedInstanceKeys.push(k));\n groupingNode.parentKeys = node.parentKeys;\n groupingNode.children.push(Object.assign(node, { parentKeys: [...node.parentKeys, groupingNode.key] }));\n continue;\n }\n groupings.ungrouped.push(node);\n continue;\n }\n\n const formattedValue =\n currentProperty.propertyValue instanceof Array\n ? await formatConcatenatedValue({ value: currentProperty.propertyValue, valueFormatter })\n : await valueFormatter(TypedPrimitiveValue.create(currentProperty.propertyValue, primitiveType, koqName, extendedTypeName));\n\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:${formattedValue}`,\n {\n label: formattedValue,\n propertyGroupingNodeKey: {\n ...propertyIdentifier,\n type: \"property-grouping:value\",\n formattedPropertyValue: formattedValue,\n },\n },\n node,\n );\n }\n return createGroupingNodes(groupings, otherValuesGrouping?.new ? otherValuesGrouping.node : undefined);\n}\n\nfunction addGroupingToMap(\n groupingMap: Map<string, { displayablePropertyGroupingInfo: DisplayablePropertyGroupingInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>,\n mapKey: string,\n propertyToAdd: DisplayablePropertyGroupingInfo,\n node: ProcessedInstanceHierarchyNode,\n): void {\n let groupingInfo = groupingMap.get(mapKey);\n if (!groupingInfo) {\n groupingInfo = {\n displayablePropertyGroupingInfo: propertyToAdd,\n groupedNodes: [node],\n };\n groupingMap.set(mapKey, groupingInfo);\n return;\n }\n groupingInfo.groupedNodes.push(node);\n}\n\nfunction createGroupingNodes(\n groupings: PropertyGroupingInformation,\n otherValuesGroupingNode: ProcessedInstancesGroupingHierarchyNode | undefined,\n): GroupingHandlerResult {\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n groupings.grouped.forEach((entry) => {\n const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;\n groupedNodes.push({\n label: entry.displayablePropertyGroupingInfo.label,\n key: entry.displayablePropertyGroupingInfo.propertyGroupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.groupedNodes.map((gn) => ({\n ...gn,\n parentKeys: [...groupedNodeParentKeys, entry.displayablePropertyGroupingInfo.propertyGroupingNodeKey],\n })),\n });\n });\n if (otherValuesGroupingNode) {\n groupedNodes.push(otherValuesGroupingNode);\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"property\" };\n}\n\nfunction createNodePropertyGroupPathMatchers(node: ParentHierarchyNode): Array<(x: ArrayElement<PreviousPropertiesGroupingInfo>) => boolean> {\n if (!HierarchyNode.isPropertyGroupingNode(node)) {\n return [];\n }\n\n const keys = [...node.parentKeys, node.key];\n const propertyGroupingNodeKeys: PropertyGroupingNodeKey[] = [];\n for (let i = keys.length - 1; i >= 0; --i) {\n const key = keys[i];\n if (HierarchyNodeKey.isPropertyGrouping(key)) {\n propertyGroupingNodeKeys.push(key);\n } else {\n break;\n }\n }\n propertyGroupingNodeKeys.reverse();\n\n return propertyGroupingNodeKeys.map((key): ((x: ArrayElement<PreviousPropertiesGroupingInfo>) => boolean) => {\n switch (key.type) {\n case \"property-grouping:other\":\n return (x) =>\n key.properties.some(\n (p) =>\n compareFullClassNames(p.className, x.propertiesClassName) === 0 &&\n p.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase() &&\n !!x.isRange,\n );\n case \"property-grouping:range\":\n return (x) =>\n compareFullClassNames(key.propertyClassName, x.propertiesClassName) === 0 &&\n key.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase();\n case \"property-grouping:value\":\n return (x) =>\n compareFullClassNames(key.propertyClassName, x.propertiesClassName) === 0 &&\n key.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase();\n }\n });\n}\n\n/** @internal */\nexport async function getUniquePropertiesGroupInfo(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<Array<PropertyGroupInfo>> {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const parentPropertyGroupPath = parentNode ? createNodePropertyGroupPathMatchers(parentNode) : [];\n const uniqueProperties = new Map<string, PropertyGroupInfo>();\n for (const node of nodes) {\n await releaseMainThread();\n\n const byProperties = node.processingParams?.grouping?.byProperties;\n if (!byProperties) {\n continue;\n }\n\n let propertyGroupIndex = 0;\n const previousPropertiesInfo = new Array<{ propertyGroup: HierarchyNodePropertyGroup; propertyGroupKey: string }>();\n for (const propertyGroup of byProperties.propertyGroups) {\n const mapKeyRanges = getRangesAsString(propertyGroup.ranges);\n const lastKey = previousPropertiesInfo.length > 0 ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey : \"\";\n const propertyGroupKey = `${lastKey}:${propertyGroup.propertyName}(${mapKeyRanges})`;\n const mapKey = `${normalizeFullClassName(byProperties.propertiesClassName)}:${propertyGroupKey}`.toLocaleLowerCase();\n\n let isAlreadyGrouped = false;\n if (parentPropertyGroupPath.length > 0 && propertyGroupIndex < parentPropertyGroupPath.length) {\n const groupMatcher = parentPropertyGroupPath[propertyGroupIndex];\n isAlreadyGrouped = groupMatcher({\n propertiesClassName: byProperties.propertiesClassName,\n propertyName: propertyGroup.propertyName,\n isRange: !!propertyGroup.ranges,\n });\n }\n if (!isAlreadyGrouped && !uniqueProperties.get(mapKey)) {\n uniqueProperties.set(mapKey, {\n ecClass: await getClass(schemaProvider, byProperties.propertiesClassName),\n propertyGroup: {\n propertyName: propertyGroup.propertyName,\n ranges: propertyGroup.ranges,\n },\n previousPropertiesGroupingInfo: previousPropertiesInfo.map((groupingInfo) => ({\n propertiesClassName: byProperties.propertiesClassName,\n propertyName: groupingInfo.propertyGroup.propertyName,\n isRange: !!groupingInfo.propertyGroup.ranges,\n })),\n });\n }\n\n previousPropertiesInfo.push({\n propertyGroup,\n propertyGroupKey,\n });\n ++propertyGroupIndex;\n }\n }\n // Order might change in uniqueProperties, resorting to make sure that properties with fewer previous properties are returned first.\n return [...uniqueProperties.values()].sort((lhs, rhs) => lhs.previousPropertiesGroupingInfo.length - rhs.previousPropertiesGroupingInfo.length);\n}\n\nfunction getRangesAsString(ranges?: HierarchyNodePropertyValueRange[]): string {\n return ranges\n ? ranges\n .map((range) => `${range.fromValue}-${range.toValue}(${range.rangeLabel ?? \"\"})`)\n .sort()\n .join(\";\")\n : \"\";\n}\n\nasync function shouldCreatePropertyGroup(\n handlerGroupingParams: PropertyGroupInfo,\n nodePropertyGroupingParams: HierarchyNodePropertiesGroupingParams,\n nodeFullClassName: EC.FullClassName,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<boolean> {\n if (\n compareFullClassNames(nodePropertyGroupingParams.propertiesClassName, handlerGroupingParams.ecClass.fullName) !== 0 ||\n nodePropertyGroupingParams.propertyGroups.length < handlerGroupingParams.previousPropertiesGroupingInfo.length + 1\n ) {\n return false;\n }\n const currentProperty = nodePropertyGroupingParams.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];\n if (\n currentProperty.propertyName.toLocaleLowerCase() !== handlerGroupingParams.propertyGroup.propertyName.toLocaleLowerCase() ||\n !doRangesMatch(currentProperty.ranges, handlerGroupingParams.propertyGroup.ranges)\n ) {\n return false;\n }\n if (!doPreviousPropertiesMatch(handlerGroupingParams.previousPropertiesGroupingInfo, nodePropertyGroupingParams)) {\n return false;\n }\n return classHierarchyInspector.classDerivesFrom(nodeFullClassName, handlerGroupingParams.ecClass.fullName);\n}\n\n/** @internal */\nexport function doPreviousPropertiesMatch(\n previousPropertiesGroupingInfo: PreviousPropertiesGroupingInfo,\n nodesProperties: HierarchyNodePropertiesGroupingParams,\n): boolean {\n return (\n previousPropertiesGroupingInfo.length <= nodesProperties.propertyGroups.length &&\n previousPropertiesGroupingInfo.every(\n (groupingInfo, index) =>\n compareFullClassNames(groupingInfo.propertiesClassName, nodesProperties.propertiesClassName) === 0 &&\n groupingInfo.propertyName.toLocaleLowerCase() === nodesProperties.propertyGroups[index].propertyName.toLocaleLowerCase() &&\n !!groupingInfo.isRange === !!nodesProperties.propertyGroups[index].ranges,\n )\n );\n}\n\n/** @internal */\nexport function doRangesMatch(ranges1: HierarchyNodePropertyValueRange[] | undefined, ranges2: HierarchyNodePropertyValueRange[] | undefined): boolean {\n if (typeof ranges1 !== typeof ranges2) {\n return false;\n }\n if (!ranges1) {\n return true;\n }\n assert(Array.isArray(ranges2));\n if (ranges1.length !== ranges2.length) {\n return false;\n }\n return (\n // Check twice, to validate if both ranges have the same elements (elements can be in a different order)\n ranges1.every((lhsRange) =>\n ranges2.some(\n (rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel,\n ),\n ) &&\n ranges2.every((lhsRange) =>\n ranges1.some(\n (rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel,\n ),\n )\n );\n}\n\n/** @internal */\nexport async function createPropertiesGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n): Promise<GroupingHandler[]> {\n const propertiesGroupInfo = await getUniquePropertiesGroupInfo(imodelAccess, parentNode, nodes);\n return propertiesGroupInfo.map(\n (propertyInfo) => async (nodesToGroup, nodesAlreadyGrouped) =>\n createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, propertyInfo, valueFormatter, localizedStrings, imodelAccess),\n );\n}\n"]}
1
+ {"version":3,"file":"PropertiesGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.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 {\n compareFullClassNames,\n createMainThreadReleaseOnTimePassedHandler,\n formatConcatenatedValue,\n getClass,\n normalizeFullClassName,\n TypedPrimitiveValue,\n} from \"@itwin/presentation-shared\";\nimport { HierarchyNode } from \"../../../HierarchyNode.js\";\nimport { HierarchyNodeKey } from \"../../../HierarchyNodeKey.js\";\n\nimport type {\n ArrayElement,\n EC,\n ECClassHierarchyInspector,\n ECSchemaProvider,\n IPrimitiveValueFormatter,\n} from \"@itwin/presentation-shared\";\nimport type { ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport type { PropertyGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport type {\n HierarchyNodePropertiesGroupingParams,\n HierarchyNodePropertyGroup,\n HierarchyNodePropertyValueRange,\n ProcessedInstanceHierarchyNode,\n} from \"../../IModelHierarchyNode.js\";\nimport type { GroupingHandler, GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface DisplayablePropertyGroupingInfo {\n label: string;\n propertyGroupingNodeKey: PropertyGroupingNodeKey;\n}\n\ninterface PropertyGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Map<\n string,\n { displayablePropertyGroupingInfo: DisplayablePropertyGroupingInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }\n >;\n}\n\n/** @internal */\nexport interface PropertiesGroupingLocalizedStrings {\n other: string;\n unspecified: string;\n}\n\n/** @internal */\nexport interface PropertyGroupInfo {\n ecClass: EC.Class;\n previousPropertiesGroupingInfo: PreviousPropertiesGroupingInfo;\n propertyGroup: Omit<HierarchyNodePropertyGroup, \"propertyValue\">;\n}\n\n/** @internal */\nexport type PreviousPropertiesGroupingInfo = Array<{\n propertiesClassName: EC.FullClassName;\n propertyName: string;\n isRange?: boolean;\n}>;\n\n/** @internal */\nexport async function createPropertyGroups(\n nodesToGroup: ProcessedInstanceHierarchyNode[],\n nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[],\n handlerGroupingParams: PropertyGroupInfo,\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<GroupingHandlerResult> {\n let otherValuesGrouping: { node: ProcessedInstancesGroupingHierarchyNode; new: boolean } | undefined;\n const getOtherValuesGroupingNode = () => {\n if (!otherValuesGrouping) {\n const node = nodesAlreadyGrouped.find((n) => HierarchyNodeKey.isPropertyOtherValuesGrouping(n.key));\n if (node) {\n otherValuesGrouping = { node, new: false };\n }\n }\n otherValuesGrouping ??= {\n node: {\n key: { type: \"property-grouping:other\" as const, properties: [] },\n parentKeys: [],\n groupedInstanceKeys: [],\n label: localizedStrings.other,\n children: [],\n },\n new: true,\n };\n return otherValuesGrouping.node;\n };\n\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const groupings: PropertyGroupingInformation = { ungrouped: [], grouped: new Map() };\n for (const node of nodesToGroup) {\n await releaseMainThread();\n\n const byProperties = node.processingParams?.grouping?.byProperties;\n if (!byProperties) {\n groupings.ungrouped.push(node);\n continue;\n }\n if (\n !(await shouldCreatePropertyGroup(\n handlerGroupingParams,\n byProperties,\n node.key.instanceKeys[0].className,\n classHierarchyInspector,\n ))\n ) {\n groupings.ungrouped.push(node);\n continue;\n }\n const currentProperty = byProperties.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];\n const propertyClass = handlerGroupingParams.ecClass;\n const property = await propertyClass.getProperty(currentProperty.propertyName);\n\n if (\n !property?.isNavigation() &&\n (!property?.isPrimitive() || property.primitiveType === \"Binary\" || property.primitiveType === \"IGeometry\")\n ) {\n groupings.ungrouped.push(node);\n continue;\n }\n\n const propertyIdentifier = { propertyName: property.name, propertyClassName: property.class.fullName };\n const extendedTypeName = \"extendedTypeName\" in property ? property.extendedTypeName : undefined;\n const primitiveType = \"primitiveType\" in property ? property.primitiveType : \"String\";\n assert(primitiveType !== \"Binary\" && primitiveType !== \"IGeometry\");\n\n if (!currentProperty.propertyValue) {\n if (byProperties.createGroupForUnspecifiedValues) {\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:Unspecified`,\n {\n label: localizedStrings.unspecified,\n propertyGroupingNodeKey: {\n type: \"property-grouping:value\",\n ...propertyIdentifier,\n formattedPropertyValue: \"\",\n },\n },\n node,\n );\n continue;\n }\n groupings.ungrouped.push(node);\n continue;\n }\n\n const koqName = (await property.kindOfQuantity)?.fullName;\n if (currentProperty.ranges) {\n if (typeof currentProperty.propertyValue === \"number\") {\n const propValue = currentProperty.propertyValue;\n const matchingRange = currentProperty.ranges.find(\n (range) => propValue >= range.fromValue && propValue <= range.toValue,\n );\n\n if (matchingRange) {\n const fromValueTypedPrimitive: TypedPrimitiveValue = {\n type: Number.isInteger(matchingRange.fromValue) ? \"Integer\" : \"Double\",\n extendedType: extendedTypeName,\n koqName,\n value: matchingRange.fromValue,\n };\n const toValueTypedPrimitive: TypedPrimitiveValue = {\n type: Number.isInteger(matchingRange.toValue) ? \"Integer\" : \"Double\",\n extendedType: extendedTypeName,\n koqName,\n value: matchingRange.toValue,\n };\n\n const rangeLabel =\n matchingRange.rangeLabel ??\n `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:[${matchingRange.fromValue}-${matchingRange.toValue}]${matchingRange.rangeLabel ? `(${matchingRange.rangeLabel})` : \"\"}`,\n {\n label: rangeLabel,\n propertyGroupingNodeKey: {\n ...propertyIdentifier,\n type: \"property-grouping:range\",\n fromValue: matchingRange.fromValue,\n toValue: matchingRange.toValue,\n },\n },\n node,\n );\n continue;\n }\n }\n if (byProperties.createGroupForOutOfRangeValues) {\n const groupingNode = getOtherValuesGroupingNode();\n assert(HierarchyNodeKey.isPropertyOtherValuesGrouping(groupingNode.key));\n const thisPropertyIdentifier = {\n className: propertyIdentifier.propertyClassName,\n propertyName: propertyIdentifier.propertyName,\n };\n const hasPropertyIdentifier = groupingNode.key.properties.find(\n (x) =>\n compareFullClassNames(x.className, thisPropertyIdentifier.className) === 0 &&\n x.propertyName.toLocaleLowerCase() === thisPropertyIdentifier.propertyName.toLocaleLowerCase(),\n );\n if (!hasPropertyIdentifier) {\n groupingNode.key.properties.push(thisPropertyIdentifier);\n }\n node.key.instanceKeys.forEach((k) => groupingNode.groupedInstanceKeys.push(k));\n groupingNode.parentKeys = node.parentKeys;\n groupingNode.children.push(Object.assign(node, { parentKeys: [...node.parentKeys, groupingNode.key] }));\n continue;\n }\n groupings.ungrouped.push(node);\n continue;\n }\n\n const formattedValue =\n currentProperty.propertyValue instanceof Array\n ? await formatConcatenatedValue({ value: currentProperty.propertyValue, valueFormatter })\n : await valueFormatter(\n TypedPrimitiveValue.create(currentProperty.propertyValue, primitiveType, koqName, extendedTypeName),\n );\n\n addGroupingToMap(\n groupings.grouped,\n `${currentProperty.propertyName.toLocaleLowerCase()}:${formattedValue}`,\n {\n label: formattedValue,\n propertyGroupingNodeKey: {\n ...propertyIdentifier,\n type: \"property-grouping:value\",\n formattedPropertyValue: formattedValue,\n },\n },\n node,\n );\n }\n return createGroupingNodes(groupings, otherValuesGrouping?.new ? otherValuesGrouping.node : undefined);\n}\n\nfunction addGroupingToMap(\n groupingMap: Map<\n string,\n { displayablePropertyGroupingInfo: DisplayablePropertyGroupingInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }\n >,\n mapKey: string,\n propertyToAdd: DisplayablePropertyGroupingInfo,\n node: ProcessedInstanceHierarchyNode,\n): void {\n let groupingInfo = groupingMap.get(mapKey);\n if (!groupingInfo) {\n groupingInfo = { displayablePropertyGroupingInfo: propertyToAdd, groupedNodes: [node] };\n groupingMap.set(mapKey, groupingInfo);\n return;\n }\n groupingInfo.groupedNodes.push(node);\n}\n\nfunction createGroupingNodes(\n groupings: PropertyGroupingInformation,\n otherValuesGroupingNode: ProcessedInstancesGroupingHierarchyNode | undefined,\n): GroupingHandlerResult {\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n groupings.grouped.forEach((entry) => {\n const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;\n groupedNodes.push({\n label: entry.displayablePropertyGroupingInfo.label,\n key: entry.displayablePropertyGroupingInfo.propertyGroupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.groupedNodes.map((gn) => ({\n ...gn,\n parentKeys: [...groupedNodeParentKeys, entry.displayablePropertyGroupingInfo.propertyGroupingNodeKey],\n })),\n });\n });\n if (otherValuesGroupingNode) {\n groupedNodes.push(otherValuesGroupingNode);\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"property\" };\n}\n\nfunction createNodePropertyGroupPathMatchers(\n node: ParentHierarchyNode,\n): Array<(x: ArrayElement<PreviousPropertiesGroupingInfo>) => boolean> {\n if (!HierarchyNode.isPropertyGroupingNode(node)) {\n return [];\n }\n\n const keys = [...node.parentKeys, node.key];\n const propertyGroupingNodeKeys: PropertyGroupingNodeKey[] = [];\n for (let i = keys.length - 1; i >= 0; --i) {\n const key = keys[i];\n if (HierarchyNodeKey.isPropertyGrouping(key)) {\n propertyGroupingNodeKeys.push(key);\n } else {\n break;\n }\n }\n propertyGroupingNodeKeys.reverse();\n\n return propertyGroupingNodeKeys.map((key): ((x: ArrayElement<PreviousPropertiesGroupingInfo>) => boolean) => {\n switch (key.type) {\n case \"property-grouping:other\":\n return (x) =>\n key.properties.some(\n (p) =>\n compareFullClassNames(p.className, x.propertiesClassName) === 0 &&\n p.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase() &&\n !!x.isRange,\n );\n case \"property-grouping:range\":\n return (x) =>\n compareFullClassNames(key.propertyClassName, x.propertiesClassName) === 0 &&\n key.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase();\n case \"property-grouping:value\":\n return (x) =>\n compareFullClassNames(key.propertyClassName, x.propertiesClassName) === 0 &&\n key.propertyName.toLocaleLowerCase() === x.propertyName.toLocaleLowerCase();\n }\n });\n}\n\n/** @internal */\nexport async function getUniquePropertiesGroupInfo(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<Array<PropertyGroupInfo>> {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const parentPropertyGroupPath = parentNode ? createNodePropertyGroupPathMatchers(parentNode) : [];\n const uniqueProperties = new Map<string, PropertyGroupInfo>();\n for (const node of nodes) {\n await releaseMainThread();\n\n const byProperties = node.processingParams?.grouping?.byProperties;\n if (!byProperties) {\n continue;\n }\n\n let propertyGroupIndex = 0;\n const previousPropertiesInfo = new Array<{ propertyGroup: HierarchyNodePropertyGroup; propertyGroupKey: string }>();\n for (const propertyGroup of byProperties.propertyGroups) {\n const mapKeyRanges = getRangesAsString(propertyGroup.ranges);\n const lastKey =\n previousPropertiesInfo.length > 0\n ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey\n : \"\";\n const propertyGroupKey = `${lastKey}:${propertyGroup.propertyName}(${mapKeyRanges})`;\n const mapKey =\n `${normalizeFullClassName(byProperties.propertiesClassName)}:${propertyGroupKey}`.toLocaleLowerCase();\n\n let isAlreadyGrouped = false;\n if (parentPropertyGroupPath.length > 0 && propertyGroupIndex < parentPropertyGroupPath.length) {\n const groupMatcher = parentPropertyGroupPath[propertyGroupIndex];\n isAlreadyGrouped = groupMatcher({\n propertiesClassName: byProperties.propertiesClassName,\n propertyName: propertyGroup.propertyName,\n isRange: !!propertyGroup.ranges,\n });\n }\n if (!isAlreadyGrouped && !uniqueProperties.get(mapKey)) {\n uniqueProperties.set(mapKey, {\n ecClass: await getClass(schemaProvider, byProperties.propertiesClassName),\n propertyGroup: { propertyName: propertyGroup.propertyName, ranges: propertyGroup.ranges },\n previousPropertiesGroupingInfo: previousPropertiesInfo.map((groupingInfo) => ({\n propertiesClassName: byProperties.propertiesClassName,\n propertyName: groupingInfo.propertyGroup.propertyName,\n isRange: !!groupingInfo.propertyGroup.ranges,\n })),\n });\n }\n\n previousPropertiesInfo.push({ propertyGroup, propertyGroupKey });\n ++propertyGroupIndex;\n }\n }\n // Order might change in uniqueProperties, resorting to make sure that properties with fewer previous properties are returned first.\n return [...uniqueProperties.values()].sort(\n (lhs, rhs) => lhs.previousPropertiesGroupingInfo.length - rhs.previousPropertiesGroupingInfo.length,\n );\n}\n\nfunction getRangesAsString(ranges?: HierarchyNodePropertyValueRange[]): string {\n return ranges\n ? ranges\n .map((range) => `${range.fromValue}-${range.toValue}(${range.rangeLabel ?? \"\"})`)\n .sort()\n .join(\";\")\n : \"\";\n}\n\nasync function shouldCreatePropertyGroup(\n handlerGroupingParams: PropertyGroupInfo,\n nodePropertyGroupingParams: HierarchyNodePropertiesGroupingParams,\n nodeFullClassName: EC.FullClassName,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<boolean> {\n if (\n compareFullClassNames(nodePropertyGroupingParams.propertiesClassName, handlerGroupingParams.ecClass.fullName) !==\n 0 ||\n nodePropertyGroupingParams.propertyGroups.length < handlerGroupingParams.previousPropertiesGroupingInfo.length + 1\n ) {\n return false;\n }\n const currentProperty =\n nodePropertyGroupingParams.propertyGroups[handlerGroupingParams.previousPropertiesGroupingInfo.length];\n if (\n currentProperty.propertyName.toLocaleLowerCase() !==\n handlerGroupingParams.propertyGroup.propertyName.toLocaleLowerCase() ||\n !doRangesMatch(currentProperty.ranges, handlerGroupingParams.propertyGroup.ranges)\n ) {\n return false;\n }\n if (!doPreviousPropertiesMatch(handlerGroupingParams.previousPropertiesGroupingInfo, nodePropertyGroupingParams)) {\n return false;\n }\n return classHierarchyInspector.classDerivesFrom(nodeFullClassName, handlerGroupingParams.ecClass.fullName);\n}\n\n/** @internal */\nexport function doPreviousPropertiesMatch(\n previousPropertiesGroupingInfo: PreviousPropertiesGroupingInfo,\n nodesProperties: HierarchyNodePropertiesGroupingParams,\n): boolean {\n return (\n previousPropertiesGroupingInfo.length <= nodesProperties.propertyGroups.length &&\n previousPropertiesGroupingInfo.every(\n (groupingInfo, index) =>\n compareFullClassNames(groupingInfo.propertiesClassName, nodesProperties.propertiesClassName) === 0 &&\n groupingInfo.propertyName.toLocaleLowerCase() ===\n nodesProperties.propertyGroups[index].propertyName.toLocaleLowerCase() &&\n !!groupingInfo.isRange === !!nodesProperties.propertyGroups[index].ranges,\n )\n );\n}\n\n/** @internal */\nexport function doRangesMatch(\n ranges1: HierarchyNodePropertyValueRange[] | undefined,\n ranges2: HierarchyNodePropertyValueRange[] | undefined,\n): boolean {\n if (typeof ranges1 !== typeof ranges2) {\n return false;\n }\n if (!ranges1) {\n return true;\n }\n assert(Array.isArray(ranges2));\n if (ranges1.length !== ranges2.length) {\n return false;\n }\n return (\n // Check twice, to validate if both ranges have the same elements (elements can be in a different order)\n ranges1.every((lhsRange) =>\n ranges2.some(\n (rhsRange) =>\n lhsRange.fromValue === rhsRange.fromValue &&\n lhsRange.toValue === rhsRange.toValue &&\n lhsRange.rangeLabel === rhsRange.rangeLabel,\n ),\n ) &&\n ranges2.every((lhsRange) =>\n ranges1.some(\n (rhsRange) =>\n lhsRange.fromValue === rhsRange.fromValue &&\n lhsRange.toValue === rhsRange.toValue &&\n lhsRange.rangeLabel === rhsRange.rangeLabel,\n ),\n )\n );\n}\n\n/** @internal */\nexport async function createPropertiesGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n): Promise<GroupingHandler[]> {\n const propertiesGroupInfo = await getUniquePropertiesGroupInfo(imodelAccess, parentNode, nodes);\n return propertiesGroupInfo.map(\n (propertyInfo) => async (nodesToGroup, nodesAlreadyGrouped) =>\n createPropertyGroups(\n nodesToGroup,\n nodesAlreadyGrouped,\n propertyInfo,\n valueFormatter,\n localizedStrings,\n imodelAccess,\n ),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/Shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,+BAA+B,EAAyC,MAAM,8BAA8B,CAAC;AAC3H,OAAO,KAAK,EAAE,YAAY,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAE5F,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,uCAAuC,EACnD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,CAAC,cAAc,EAAE,+BAA+B,GAAG,SAAS,KAAK,OAAO,GAAG,SAAS,GACvF,IAAI,CAmBN"}
1
+ {"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/Shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAE5F,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,uCAAuC,EACnD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,CAAC,cAAc,EAAE,+BAA+B,GAAG,SAAS,KAAK,OAAO,GAAG,SAAS,GACvF,IAAI,CAqBN"}
@@ -11,7 +11,9 @@ export function iterateChildNodeGroupingParams(parentNode, groupingType, cb) {
11
11
  case "class":
12
12
  return typeof params?.grouping?.byClass === "object" ? params.grouping.byClass : undefined;
13
13
  case "label":
14
- return typeof params?.grouping?.byLabel === "object" && params.grouping.byLabel.action !== "merge" ? params.grouping.byLabel : undefined;
14
+ return typeof params?.grouping?.byLabel === "object" && params.grouping.byLabel.action !== "merge"
15
+ ? params.grouping.byLabel
16
+ : undefined;
15
17
  case "property":
16
18
  return params?.grouping?.byProperties;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Shared.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/Shared.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAKhG,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAC5C,UAAmD,EACnD,YAA0B,EAC1B,EAAwF;IAExF,SAAS,iBAAiB,CAAC,MAAyD;QAClF,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,YAAY;gBACf,OAAO,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7F,KAAK,OAAO;gBACV,OAAO,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3I,KAAK,UAAU;gBACb,OAAO,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;IACH,CAAC;AACH,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 type { HierarchyNodeGroupingParamsBase, InstanceHierarchyNodeProcessingParams } from \"../../IModelHierarchyNode.js\";\nimport type { GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\n/** @internal */\nexport function iterateChildNodeGroupingParams(\n parentNode: ProcessedInstancesGroupingHierarchyNode,\n groupingType: GroupingType,\n cb: (groupingParams: HierarchyNodeGroupingParamsBase | undefined) => boolean | undefined,\n): void {\n function getGroupingParams(params: InstanceHierarchyNodeProcessingParams | undefined) {\n switch (groupingType) {\n case \"base-class\":\n return params?.grouping?.byBaseClasses;\n case \"class\":\n return typeof params?.grouping?.byClass === \"object\" ? params.grouping.byClass : undefined;\n case \"label\":\n return typeof params?.grouping?.byLabel === \"object\" && params.grouping.byLabel.action !== \"merge\" ? params.grouping.byLabel : undefined;\n case \"property\":\n return params?.grouping?.byProperties;\n }\n }\n for (const childNode of parentNode.children) {\n const groupingParams = getGroupingParams(childNode.processingParams);\n if (cb(groupingParams)) {\n return;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Shared.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/Shared.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAQhG,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAC5C,UAAmD,EACnD,YAA0B,EAC1B,EAAwF;IAExF,SAAS,iBAAiB,CAAC,MAAyD;QAClF,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,YAAY;gBACf,OAAO,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7F,KAAK,OAAO;gBACV,OAAO,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO;oBAChG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;oBACzB,CAAC,CAAC,SAAS,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;IACH,CAAC;AACH,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 type {\n HierarchyNodeGroupingParamsBase,\n InstanceHierarchyNodeProcessingParams,\n} from \"../../IModelHierarchyNode.js\";\nimport type { GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\n/** @internal */\nexport function iterateChildNodeGroupingParams(\n parentNode: ProcessedInstancesGroupingHierarchyNode,\n groupingType: GroupingType,\n cb: (groupingParams: HierarchyNodeGroupingParamsBase | undefined) => boolean | undefined,\n): void {\n function getGroupingParams(params: InstanceHierarchyNodeProcessingParams | undefined) {\n switch (groupingType) {\n case \"base-class\":\n return params?.grouping?.byBaseClasses;\n case \"class\":\n return typeof params?.grouping?.byClass === \"object\" ? params.grouping.byClass : undefined;\n case \"label\":\n return typeof params?.grouping?.byLabel === \"object\" && params.grouping.byLabel.action !== \"merge\"\n ? params.grouping.byLabel\n : undefined;\n case \"property\":\n return params?.grouping?.byProperties;\n }\n }\n for (const childNode of parentNode.children) {\n const groupingParams = getGroupingParams(childNode.processingParams);\n if (cb(groupingParams)) {\n return;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/internal/Common.ts"],"names":[],"mappings":"AAKA,OAAO,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,yCAAqC,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,iDAA8C,CAAC;AAElG,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,YAAY,EACR,OAAO,iBAAiB,GACxB,OAAO,6BAA6B,GACpC,OAAO,0BAA0B,GACjC,OAAO,sCAAsC,UAGlD;AAED,gBAAgB;AAEhB,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAC;IAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAAG,SAAS,UAchH;AAGD,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,KAAK,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;CAAE,EAAE,IAAI,EAAE,KAAK,WAE7F;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,CAEhJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,EAAE,GAAG;IAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,QAMtG;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAErF"}
1
+ {"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/internal/Common.ts"],"names":[],"mappings":"AAKA,OAAO,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,yCAAqC,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,iDAA8C,CAAC;AAElG,gBAAgB;AAChB,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,YAAY,EACR,OAAO,iBAAiB,GACxB,OAAO,6BAA6B,GACpC,OAAO,0BAA0B,GACjC,OAAO,sCAAsC,UAGlD;AAED,gBAAgB;AAEhB,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAAC,GAAG,EAAE,gBAAgB,CAAC;IAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAAG,SAAS,UAchH;AAGD,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,KAAK,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;CAAE,EAAE,IAAI,EAAE,KAAK,WAE7F;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACxG,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,QAAQ,GACZ,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,EAAE,GAAG;IAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,QAMtG;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAErF"}
@@ -32,7 +32,7 @@ export function createOperatorLoggingNamespace(operatorName, baseCategory) {
32
32
  return `${baseCategory}.Operators.${operatorName}`;
33
33
  }
34
34
  /** @internal */
35
- /* c8 ignore start */
35
+ /* v8 ignore start */
36
36
  export function createNodeIdentifierForLogging(node) {
37
37
  if (!node) {
38
38
  return "<root>";
@@ -46,7 +46,7 @@ export function createNodeIdentifierForLogging(node) {
46
46
  : undefined;
47
47
  return JSON.stringify({ label, key, parentKeys, groupedInstanceKeys });
48
48
  }
49
- /* c8 ignore end */
49
+ /* v8 ignore stop */
50
50
  /** @internal */
51
51
  export function hasChildren(node) {
52
52
  return node.children === true || (Array.isArray(node.children) && node.children.length > 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../src/hierarchies/internal/Common.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,sBAAsB,CAAC;AAE9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAMhC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,iBAAiB,cAAc,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,0BAA0B,cAAc,CAAC;AAElG,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAC5C,YAAoB,EACpB,YAIiD;IAEjD,OAAO,GAAG,YAAY,cAAc,YAAY,EAAE,CAAC;AACrD,CAAC;AAED,gBAAgB;AAChB,qBAAqB;AACrB,MAAM,UAAU,8BAA8B,CAC5C,IAA+G;IAE/G,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,mBAAmB,GACvB,qBAAqB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACtE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,mBAAmB;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,QAAQ;QAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,mBAAmB;AAEnB,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAwD,IAAW;IAC5F,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CAAyE,GAAa,EAAE,GAAa;IACtI,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,UAA2E;IACrG,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QACxC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CAAI,eAA+B;IACpE,OAAO,eAAe,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AAC1F,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 \"./DisposePolyfill.js\";\n\nimport naturalCompare from \"natural-compare-lite\";\nimport { from, of } from \"rxjs\";\n\nimport type { Observable } from \"rxjs\";\nimport type { ConcatenatedValue } from \"@itwin/presentation-shared\";\nimport type { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\n\n/**\n * This is a logging namespace for public log messages that may be interesting to consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE = \"Presentation.Hierarchies\";\n\n/**\n * This is a logging namespace for public performance-related log messages that may be interesting to consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_PERFORMANCE = `${LOGGING_NAMESPACE}.Performance`;\n\n/**\n * This is a logging namespace for internal log messages that are only interesting to package contributors,\n * but not the consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_INTERNAL = \"Presentation.HierarchiesInternal\";\n\n/**\n * This is a logging namespace for internal performance-related log messages that are only interesting\n * to package contributors, but not the consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = `${LOGGING_NAMESPACE_INTERNAL}.Performance`;\n\n/** @internal */\nexport function createOperatorLoggingNamespace(\n operatorName: string,\n baseCategory:\n | typeof LOGGING_NAMESPACE\n | typeof LOGGING_NAMESPACE_PERFORMANCE\n | typeof LOGGING_NAMESPACE_INTERNAL\n | typeof LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n) {\n return `${baseCategory}.Operators.${operatorName}`;\n}\n\n/** @internal */\n/* c8 ignore start */\nexport function createNodeIdentifierForLogging(\n node: { label: string | ConcatenatedValue; key: HierarchyNodeKey; parentKeys?: HierarchyNodeKey[] } | undefined,\n) {\n if (!node) {\n return \"<root>\";\n }\n const { label, key } = node;\n const parentKeys = \"parentKeys\" in node ? node.parentKeys : \"<unknown>\";\n const groupedInstanceKeys =\n \"groupedInstanceKeys\" in node && Array.isArray(node.groupedInstanceKeys)\n ? node.groupedInstanceKeys.length <= 3\n ? node.groupedInstanceKeys\n : `<${node.groupedInstanceKeys.length} keys>`\n : undefined;\n return JSON.stringify({ label, key, parentKeys, groupedInstanceKeys });\n}\n/* c8 ignore end */\n\n/** @internal */\nexport function hasChildren<TNode extends { children?: boolean | Array<unknown> }>(node: TNode) {\n return node.children === true || (Array.isArray(node.children) && node.children.length > 0);\n}\n\n/** @internal */\nexport function compareNodesByLabel<TLhsNode extends { label: string }, TRhsNode extends { label: string }>(lhs: TLhsNode, rhs: TRhsNode): number {\n return naturalCompare(lhs.label.toLocaleLowerCase(), rhs.label.toLocaleLowerCase());\n}\n\n/**\n * A helper that disposes the given object, if it's disposable.\n *\n * The first option is to dispose using the deprecated `dispose` method if it exists on the object.\n * If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is\n * considered as non-disposable and nothing is done with it.\n *\n * @internal\n */\nexport function safeDispose(disposable: {} | { [Symbol.dispose]: () => void } | { dispose: () => void }) {\n if (\"dispose\" in disposable) {\n disposable.dispose();\n } else if (Symbol.dispose in disposable) {\n disposable[Symbol.dispose]();\n }\n}\n\n/** @internal */\nexport function fromPossiblyPromise<T>(possiblyPromise: T | Promise<T>): Observable<T> {\n return possiblyPromise instanceof Promise ? from(possiblyPromise) : of(possiblyPromise);\n}\n"]}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../src/hierarchies/internal/Common.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,sBAAsB,CAAC;AAE9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAMhC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,iBAAiB,cAAc,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,0BAA0B,cAAc,CAAC;AAElG,gBAAgB;AAChB,MAAM,UAAU,8BAA8B,CAC5C,YAAoB,EACpB,YAIiD;IAEjD,OAAO,GAAG,YAAY,cAAc,YAAY,EAAE,CAAC;AACrD,CAAC;AAED,gBAAgB;AAChB,qBAAqB;AACrB,MAAM,UAAU,8BAA8B,CAC5C,IAA+G;IAE/G,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,mBAAmB,GACvB,qBAAqB,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACtE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,mBAAmB;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,QAAQ;QAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,oBAAoB;AAEpB,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAwD,IAAW;IAC5F,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CACjC,GAAa,EACb,GAAa;IAEb,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,UAA2E;IACrG,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,UAAU,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;QACxC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,mBAAmB,CAAI,eAA+B;IACpE,OAAO,eAAe,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AAC1F,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 \"./DisposePolyfill.js\";\n\nimport naturalCompare from \"natural-compare-lite\";\nimport { from, of } from \"rxjs\";\n\nimport type { Observable } from \"rxjs\";\nimport type { ConcatenatedValue } from \"@itwin/presentation-shared\";\nimport type { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\n\n/**\n * This is a logging namespace for public log messages that may be interesting to consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE = \"Presentation.Hierarchies\";\n\n/**\n * This is a logging namespace for public performance-related log messages that may be interesting to consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_PERFORMANCE = `${LOGGING_NAMESPACE}.Performance`;\n\n/**\n * This is a logging namespace for internal log messages that are only interesting to package contributors,\n * but not the consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_INTERNAL = \"Presentation.HierarchiesInternal\";\n\n/**\n * This is a logging namespace for internal performance-related log messages that are only interesting\n * to package contributors, but not the consumers.\n * @internal\n */\nexport const LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = `${LOGGING_NAMESPACE_INTERNAL}.Performance`;\n\n/** @internal */\nexport function createOperatorLoggingNamespace(\n operatorName: string,\n baseCategory:\n | typeof LOGGING_NAMESPACE\n | typeof LOGGING_NAMESPACE_PERFORMANCE\n | typeof LOGGING_NAMESPACE_INTERNAL\n | typeof LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n) {\n return `${baseCategory}.Operators.${operatorName}`;\n}\n\n/** @internal */\n/* v8 ignore start */\nexport function createNodeIdentifierForLogging(\n node: { label: string | ConcatenatedValue; key: HierarchyNodeKey; parentKeys?: HierarchyNodeKey[] } | undefined,\n) {\n if (!node) {\n return \"<root>\";\n }\n const { label, key } = node;\n const parentKeys = \"parentKeys\" in node ? node.parentKeys : \"<unknown>\";\n const groupedInstanceKeys =\n \"groupedInstanceKeys\" in node && Array.isArray(node.groupedInstanceKeys)\n ? node.groupedInstanceKeys.length <= 3\n ? node.groupedInstanceKeys\n : `<${node.groupedInstanceKeys.length} keys>`\n : undefined;\n return JSON.stringify({ label, key, parentKeys, groupedInstanceKeys });\n}\n/* v8 ignore stop */\n\n/** @internal */\nexport function hasChildren<TNode extends { children?: boolean | Array<unknown> }>(node: TNode) {\n return node.children === true || (Array.isArray(node.children) && node.children.length > 0);\n}\n\n/** @internal */\nexport function compareNodesByLabel<TLhsNode extends { label: string }, TRhsNode extends { label: string }>(\n lhs: TLhsNode,\n rhs: TRhsNode,\n): number {\n return naturalCompare(lhs.label.toLocaleLowerCase(), rhs.label.toLocaleLowerCase());\n}\n\n/**\n * A helper that disposes the given object, if it's disposable.\n *\n * The first option is to dispose using the deprecated `dispose` method if it exists on the object.\n * If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is\n * considered as non-disposable and nothing is done with it.\n *\n * @internal\n */\nexport function safeDispose(disposable: {} | { [Symbol.dispose]: () => void } | { dispose: () => void }) {\n if (\"dispose\" in disposable) {\n disposable.dispose();\n } else if (Symbol.dispose in disposable) {\n disposable[Symbol.dispose]();\n }\n}\n\n/** @internal */\nexport function fromPossiblyPromise<T>(possiblyPromise: T | Promise<T>): Observable<T> {\n return possiblyPromise instanceof Promise ? from(possiblyPromise) : of(possiblyPromise);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EachValueFrom.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/internal/EachValueFrom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC;;;;;;;;GAQG;AACH,wBAAuB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA0DvF"}
1
+ {"version":3,"file":"EachValueFrom.d.ts","sourceRoot":"","sources":["../../../../src/hierarchies/internal/EachValueFrom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC;;;;;;;;GAQG;AACH,wBAAuB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAwDvF"}
@@ -67,8 +67,6 @@ export async function* eachValueFrom(source) {
67
67
  }
68
68
  catch (err) {
69
69
  throw err;
70
- /* https://github.com/bcoe/c8/issues/229#issuecomment-1248533082 */
71
- /* c8 ignore next */
72
70
  }
73
71
  finally {
74
72
  subs.unsubscribe();