@itwin/presentation-hierarchies 1.7.11 → 1.7.13

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 (182) hide show
  1. package/CHANGELOG.md +73 -12
  2. package/README.md +13 -6
  3. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +1 -1
  4. package/lib/cjs/hierarchies/HierarchyFiltering.js +38 -15
  5. package/lib/cjs/hierarchies/HierarchyFiltering.js.map +1 -1
  6. package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
  7. package/lib/cjs/hierarchies/HierarchyNode.js +2 -2
  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.map +1 -1
  13. package/lib/cjs/hierarchies/Logging.js +1 -1
  14. package/lib/cjs/hierarchies/Logging.js.map +1 -1
  15. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
  16. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js +18 -9
  17. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
  18. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  19. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +1 -4
  20. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
  21. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  22. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  23. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  24. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  25. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  26. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +92 -62
  27. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  28. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  29. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js +8 -7
  30. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  31. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  32. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +17 -44
  33. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  34. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  35. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  36. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  37. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
  38. package/lib/cjs/hierarchies/imodel/Utils.js +19 -7
  39. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
  40. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  41. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js +10 -4
  42. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  43. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  44. package/lib/cjs/hierarchies/imodel/operators/Grouping.js +32 -18
  45. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
  46. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  47. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +31 -9
  48. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  49. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  50. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +30 -14
  51. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  52. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  53. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +2 -6
  54. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  55. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  56. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +2 -8
  57. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  58. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  59. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  60. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  61. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  62. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  63. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  64. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  65. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +20 -22
  66. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  67. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  68. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  69. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  70. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  71. package/lib/cjs/hierarchies/internal/Common.js +2 -2
  72. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  73. package/lib/cjs/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  74. package/lib/cjs/hierarchies/internal/EachValueFrom.js +0 -2
  75. package/lib/cjs/hierarchies/internal/EachValueFrom.js.map +1 -1
  76. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  77. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  78. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  79. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  80. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +1 -4
  81. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  82. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  83. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
  84. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  85. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  86. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  87. package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  88. package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
  89. package/lib/cjs/presentation-hierarchies.d.ts +2 -2
  90. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  91. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  92. package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +1 -1
  93. package/lib/esm/hierarchies/HierarchyFiltering.js +38 -15
  94. package/lib/esm/hierarchies/HierarchyFiltering.js.map +1 -1
  95. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  96. package/lib/esm/hierarchies/HierarchyNode.js +2 -2
  97. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  98. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  99. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  100. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  101. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  102. package/lib/esm/hierarchies/Logging.js +1 -1
  103. package/lib/esm/hierarchies/Logging.js.map +1 -1
  104. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
  105. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js +19 -10
  106. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
  107. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  108. package/lib/esm/hierarchies/imodel/HierarchyCache.js +1 -4
  109. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
  110. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  111. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  112. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  113. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  114. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  115. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +93 -63
  116. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  117. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  118. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +9 -8
  119. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  120. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  121. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +17 -44
  122. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  123. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  124. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  125. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  126. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
  127. package/lib/esm/hierarchies/imodel/Utils.js +19 -7
  128. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
  129. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  130. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js +11 -5
  131. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  132. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  133. package/lib/esm/hierarchies/imodel/operators/Grouping.js +33 -19
  134. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
  135. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  136. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +33 -11
  137. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  138. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  139. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js +32 -16
  140. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  141. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  142. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +3 -7
  143. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  144. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  145. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +2 -8
  146. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  147. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  148. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  149. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  150. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  151. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  152. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  153. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  154. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +20 -22
  155. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  156. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  157. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  158. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  159. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  160. package/lib/esm/hierarchies/internal/Common.js +2 -2
  161. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  162. package/lib/esm/hierarchies/internal/EachValueFrom.d.ts.map +1 -1
  163. package/lib/esm/hierarchies/internal/EachValueFrom.js +0 -2
  164. package/lib/esm/hierarchies/internal/EachValueFrom.js.map +1 -1
  165. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  166. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  167. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  168. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  169. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js +1 -4
  170. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  171. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  172. package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
  173. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  174. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  175. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  176. package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
  177. package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
  178. package/lib/esm/presentation-hierarchies.d.ts +2 -2
  179. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  180. package/lib/esm/presentation-hierarchies.js +2 -2
  181. package/lib/esm/presentation-hierarchies.js.map +1 -1
  182. package/package.json +17 -25
@@ -19,10 +19,14 @@ function mergeNodeHandlingParams(lhs, rhs) {
19
19
  return Object.keys(params).length > 0 ? params : undefined;
20
20
  }
21
21
  function mergeByLabelParams(lhs, rhs) {
22
- if (lhs && typeof lhs === "object" && lhs.action === "merge" && rhs && typeof rhs === "object" && rhs.action === "merge" && lhs.groupId === rhs.groupId) {
23
- return {
24
- grouping: { byLabel: lhs },
25
- };
22
+ if (lhs &&
23
+ typeof lhs === "object" &&
24
+ lhs.action === "merge" &&
25
+ rhs &&
26
+ typeof rhs === "object" &&
27
+ rhs.action === "merge" &&
28
+ lhs.groupId === rhs.groupId) {
29
+ return { grouping: { byLabel: lhs } };
26
30
  }
27
31
  return undefined;
28
32
  }
@@ -40,7 +44,11 @@ function mergeParentNodeKeys(lhsKeys, rhsKeys) {
40
44
  function mergeInstanceNodes(lhs, rhs) {
41
45
  (0, core_bentley_1.assert)(typeof lhs.key === typeof rhs.key);
42
46
  const mergedProcessingParams = mergeNodeHandlingParams(lhs.processingParams, rhs.processingParams);
43
- const mergedChildren = lhs.children === true || rhs.children === true ? true : lhs.children === false && rhs.children === false ? false : undefined;
47
+ const mergedChildren = lhs.children === true || rhs.children === true
48
+ ? true
49
+ : lhs.children === false && rhs.children === false
50
+ ? false
51
+ : undefined;
44
52
  const mergedNode = {
45
53
  ...lhs,
46
54
  ...rhs,
@@ -52,8 +60,12 @@ function mergeInstanceNodes(lhs, rhs) {
52
60
  mergedChildren !== undefined ? (mergedNode.children = mergedChildren) : delete mergedNode.children;
53
61
  mergedProcessingParams ? (mergedNode.processingParams = mergedProcessingParams) : delete mergedNode.processingParams;
54
62
  lhs.autoExpand || rhs.autoExpand ? (mergedNode.autoExpand = true) : delete mergedNode.autoExpand;
55
- lhs.extendedData || rhs.extendedData ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData }) : delete mergedNode.extendedData;
56
- lhs.supportsFiltering && rhs.supportsFiltering ? (mergedNode.supportsFiltering = true) : delete mergedNode.supportsFiltering;
63
+ lhs.extendedData || rhs.extendedData
64
+ ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData })
65
+ : delete mergedNode.extendedData;
66
+ lhs.supportsFiltering && rhs.supportsFiltering
67
+ ? (mergedNode.supportsFiltering = true)
68
+ : delete mergedNode.supportsFiltering;
57
69
  return mergedNode;
58
70
  }
59
71
  //# sourceMappingURL=Utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\nimport { HierarchyNodeLabelGroupingParams, InstanceHierarchyNodeProcessingParams, ProcessedInstanceHierarchyNode } from \"./IModelHierarchyNode.js\";\n\nfunction mergeNodeHandlingParams(\n lhs: InstanceHierarchyNodeProcessingParams | undefined,\n rhs: InstanceHierarchyNodeProcessingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (!lhs && !rhs) {\n return undefined;\n }\n const params = {\n ...(lhs?.hideIfNoChildren || rhs?.hideIfNoChildren ? { hideIfNoChildren: true } : undefined),\n ...(lhs?.hideInHierarchy || rhs?.hideInHierarchy ? { hideInHierarchy: true } : undefined),\n ...mergeByLabelParams(lhs?.grouping?.byLabel, rhs?.grouping?.byLabel),\n };\n return Object.keys(params).length > 0 ? params : undefined;\n}\n\nfunction mergeByLabelParams(\n lhs: HierarchyNodeLabelGroupingParams | undefined,\n rhs: HierarchyNodeLabelGroupingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (lhs && typeof lhs === \"object\" && lhs.action === \"merge\" && rhs && typeof rhs === \"object\" && rhs.action === \"merge\" && lhs.groupId === rhs.groupId) {\n return {\n grouping: { byLabel: lhs },\n };\n }\n return undefined;\n}\n\nfunction mergeParentNodeKeys(lhsKeys: HierarchyNodeKey[], rhsKeys: HierarchyNodeKey[]): HierarchyNodeKey[] {\n const res = new Array<HierarchyNodeKey>();\n for (let i = 0; i < lhsKeys.length && i < rhsKeys.length; ++i) {\n if (!HierarchyNodeKey.equals(lhsKeys[i], rhsKeys[i])) {\n break;\n }\n res.push(lhsKeys[i]);\n }\n return res;\n}\n\n/** @internal */\nexport function mergeInstanceNodes(lhs: ProcessedInstanceHierarchyNode, rhs: ProcessedInstanceHierarchyNode): ProcessedInstanceHierarchyNode {\n assert(typeof lhs.key === typeof rhs.key);\n const mergedProcessingParams = mergeNodeHandlingParams(lhs.processingParams, rhs.processingParams);\n const mergedChildren = lhs.children === true || rhs.children === true ? true : lhs.children === false && rhs.children === false ? false : undefined;\n const mergedNode: ProcessedInstanceHierarchyNode = {\n ...lhs,\n ...rhs,\n label: lhs.label,\n key: { type: \"instances\", instanceKeys: [...lhs.key.instanceKeys, ...rhs.key.instanceKeys] },\n parentKeys: mergeParentNodeKeys(lhs.parentKeys, rhs.parentKeys),\n };\n // Remove specific properties or change their values based on lhs and rhs nodes\n mergedChildren !== undefined ? (mergedNode.children = mergedChildren) : delete mergedNode.children;\n mergedProcessingParams ? (mergedNode.processingParams = mergedProcessingParams) : delete mergedNode.processingParams;\n lhs.autoExpand || rhs.autoExpand ? (mergedNode.autoExpand = true) : delete mergedNode.autoExpand;\n lhs.extendedData || rhs.extendedData ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData }) : delete mergedNode.extendedData;\n lhs.supportsFiltering && rhs.supportsFiltering ? (mergedNode.supportsFiltering = true) : delete mergedNode.supportsFiltering;\n return mergedNode;\n}\n"]}
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/hierarchies/imodel/Utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { HierarchyNodeKey } from \"../HierarchyNodeKey.js\";\nimport {\n HierarchyNodeLabelGroupingParams,\n InstanceHierarchyNodeProcessingParams,\n ProcessedInstanceHierarchyNode,\n} from \"./IModelHierarchyNode.js\";\n\nfunction mergeNodeHandlingParams(\n lhs: InstanceHierarchyNodeProcessingParams | undefined,\n rhs: InstanceHierarchyNodeProcessingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (!lhs && !rhs) {\n return undefined;\n }\n const params = {\n ...(lhs?.hideIfNoChildren || rhs?.hideIfNoChildren ? { hideIfNoChildren: true } : undefined),\n ...(lhs?.hideInHierarchy || rhs?.hideInHierarchy ? { hideInHierarchy: true } : undefined),\n ...mergeByLabelParams(lhs?.grouping?.byLabel, rhs?.grouping?.byLabel),\n };\n return Object.keys(params).length > 0 ? params : undefined;\n}\n\nfunction mergeByLabelParams(\n lhs: HierarchyNodeLabelGroupingParams | undefined,\n rhs: HierarchyNodeLabelGroupingParams | undefined,\n): InstanceHierarchyNodeProcessingParams | undefined {\n if (\n lhs &&\n typeof lhs === \"object\" &&\n lhs.action === \"merge\" &&\n rhs &&\n typeof rhs === \"object\" &&\n rhs.action === \"merge\" &&\n lhs.groupId === rhs.groupId\n ) {\n return { grouping: { byLabel: lhs } };\n }\n return undefined;\n}\n\nfunction mergeParentNodeKeys(lhsKeys: HierarchyNodeKey[], rhsKeys: HierarchyNodeKey[]): HierarchyNodeKey[] {\n const res = new Array<HierarchyNodeKey>();\n for (let i = 0; i < lhsKeys.length && i < rhsKeys.length; ++i) {\n if (!HierarchyNodeKey.equals(lhsKeys[i], rhsKeys[i])) {\n break;\n }\n res.push(lhsKeys[i]);\n }\n return res;\n}\n\n/** @internal */\nexport function mergeInstanceNodes(\n lhs: ProcessedInstanceHierarchyNode,\n rhs: ProcessedInstanceHierarchyNode,\n): ProcessedInstanceHierarchyNode {\n assert(typeof lhs.key === typeof rhs.key);\n const mergedProcessingParams = mergeNodeHandlingParams(lhs.processingParams, rhs.processingParams);\n const mergedChildren =\n lhs.children === true || rhs.children === true\n ? true\n : lhs.children === false && rhs.children === false\n ? false\n : undefined;\n const mergedNode: ProcessedInstanceHierarchyNode = {\n ...lhs,\n ...rhs,\n label: lhs.label,\n key: { type: \"instances\", instanceKeys: [...lhs.key.instanceKeys, ...rhs.key.instanceKeys] },\n parentKeys: mergeParentNodeKeys(lhs.parentKeys, rhs.parentKeys),\n };\n // Remove specific properties or change their values based on lhs and rhs nodes\n mergedChildren !== undefined ? (mergedNode.children = mergedChildren) : delete mergedNode.children;\n mergedProcessingParams ? (mergedNode.processingParams = mergedProcessingParams) : delete mergedNode.processingParams;\n lhs.autoExpand || rhs.autoExpand ? (mergedNode.autoExpand = true) : delete mergedNode.autoExpand;\n lhs.extendedData || rhs.extendedData\n ? (mergedNode.extendedData = { ...lhs.extendedData, ...rhs.extendedData })\n : delete mergedNode.extendedData;\n lhs.supportsFiltering && rhs.supportsFiltering\n ? (mergedNode.supportsFiltering = true)\n : delete mergedNode.supportsFiltering;\n return mergedNode;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DetermineChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,UAAU,EAAM,MAAM,MAAM,CAAC;AAItD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,WACrF,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAmBhG"}
1
+ {"version":3,"file":"DetermineChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,UAAU,EAAM,MAAM,MAAM,CAAC;AAQtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,IAC5F,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAuBhG"}
@@ -20,15 +20,21 @@ exports.LOGGING_NAMESPACE = (0, Common_js_1.createOperatorLoggingNamespace)(OPER
20
20
  */
21
21
  function createDetermineChildrenOperator(hasNodes) {
22
22
  return function (nodes) {
23
- return nodes.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }), (0, ReleaseMainThread_js_1.releaseMainThreadOnItemsCount)(200), (0, rxjs_1.concatMap)((n) => {
23
+ return nodes.pipe(
24
+ /* v8 ignore next -- @preserve */
25
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }), (0, ReleaseMainThread_js_1.releaseMainThreadOnItemsCount)(200), (0, rxjs_1.concatMap)((n) => {
24
26
  if (n.children !== undefined) {
25
27
  return (0, rxjs_1.of)(n);
26
28
  }
27
- return hasNodes(n).pipe((0, LoggingUtils_js_1.log)({
29
+ return hasNodes(n).pipe(
30
+ /* v8 ignore next -- @preserve */
31
+ (0, LoggingUtils_js_1.log)({
28
32
  category: exports.LOGGING_NAMESPACE,
29
- message: /* c8 ignore next */ (hasChildrenFlag) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: determined children: ${hasChildrenFlag}`,
33
+ message: (hasChildrenFlag) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: determined children: ${hasChildrenFlag}`,
30
34
  }), (0, rxjs_1.map)((hasChildrenFlag) => Object.assign(n, { children: hasChildrenFlag })));
31
- }), (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
35
+ }),
36
+ /* v8 ignore next -- @preserve */
37
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
32
38
  };
33
39
  }
34
40
  //# sourceMappingURL=DetermineChildren.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetermineChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAiBhG,0EAoBC;AAnCD,+BAAsD;AACtD,wDAAsI;AACtI,oEAAqD;AACrD,wFAA8F;AAG9F,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,sCAA0B,CAAC,CAAC;AAE3G;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,QAA+D;IAC7G,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI,CACf,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACrH,IAAA,oDAA6B,EAAC,GAAG,CAAC,EAClC,IAAA,gBAAS,EAAC,CAAC,CAAyB,EAAsC,EAAE;YAC1E,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC;YACf,CAAC;YACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CACrB,IAAA,qBAAG,EAAC;gBACF,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,oBAAoB,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,GAAG,IAAA,0CAA8B,EAAC,CAAC,CAAC,0BAA0B,eAAe,EAAE;aACnI,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAC1E,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concatMap, map, Observable, of } from \"rxjs\";\nimport { createNodeIdentifierForLogging, createOperatorLoggingNamespace, LOGGING_NAMESPACE_INTERNAL } from \"../../internal/Common.js\";\nimport { log } from \"../../internal/LoggingUtils.js\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread.js\";\nimport { ProcessedHierarchyNode } from \"../IModelHierarchyNode.js\";\n\nconst OPERATOR_NAME = \"DetermineChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Ensures all input nodes have their children determined.\n *\n * @internal\n */\nexport function createDetermineChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n releaseMainThreadOnItemsCount(200),\n concatMap((n: ProcessedHierarchyNode): Observable<ProcessedHierarchyNode> => {\n if (n.children !== undefined) {\n return of(n);\n }\n return hasNodes(n).pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* c8 ignore next */ (hasChildrenFlag) => `${createNodeIdentifierForLogging(n)}: determined children: ${hasChildrenFlag}`,\n }),\n map((hasChildrenFlag) => Object.assign(n, { children: hasChildrenFlag })),\n );\n }),\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n"]}
1
+ {"version":3,"file":"DetermineChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/DetermineChildren.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAqBhG,0EAwBC;AA3CD,+BAAsD;AACtD,wDAIkC;AAClC,oEAAqD;AACrD,wFAA8F;AAG9F,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,sCAA0B,CAAC,CAAC;AAE3G;;;;GAIG;AACH,SAAgB,+BAA+B,CAAC,QAA+D;IAC7G,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI;QACf,iCAAiC;QACjC,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAChG,IAAA,oDAA6B,EAAC,GAAG,CAAC,EAClC,IAAA,gBAAS,EAAC,CAAC,CAAyB,EAAsC,EAAE;YAC1E,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC;YACf,CAAC;YACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACrB,iCAAiC;YACjC,IAAA,qBAAG,EAAC;gBACF,QAAQ,EAAE,yBAAiB;gBAC3B,OAAO,EAAE,CAAC,eAAe,EAAE,EAAE,CAC3B,GAAG,IAAA,0CAA8B,EAAC,CAAC,CAAC,0BAA0B,eAAe,EAAE;aAClF,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAC1E,CAAC;QACJ,CAAC,CAAC;QACF,iCAAiC;QACjC,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClG,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concatMap, map, Observable, of } from \"rxjs\";\nimport {\n createNodeIdentifierForLogging,\n createOperatorLoggingNamespace,\n LOGGING_NAMESPACE_INTERNAL,\n} from \"../../internal/Common.js\";\nimport { log } from \"../../internal/LoggingUtils.js\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread.js\";\nimport { ProcessedHierarchyNode } from \"../IModelHierarchyNode.js\";\n\nconst OPERATOR_NAME = \"DetermineChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Ensures all input nodes have their children determined.\n *\n * @internal\n */\nexport function createDetermineChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n releaseMainThreadOnItemsCount(200),\n concatMap((n: ProcessedHierarchyNode): Observable<ProcessedHierarchyNode> => {\n if (n.children !== undefined) {\n return of(n);\n }\n return hasNodes(n).pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (hasChildrenFlag) =>\n `${createNodeIdentifierForLogging(n)}: determined children: ${hasChildrenFlag}`,\n }),\n map((hasChildrenFlag) => Object.assign(n, { children: hasChildrenFlag })),\n );\n }),\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuF,UAAU,EAA4B,MAAM,MAAM,CAAC;AAEjJ,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAW5E,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAMnI,OAAO,EAAoC,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAGxH,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAI3G,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,GAAG,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,EACtG,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,8BAA8B,KAAK,IAAI,EAC9E,gBAAgB,CAAC,EAAE,eAAe,EAAE,WAEZ,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAyDhG;AAED,gBAAgB;AAChB,MAAM,MAAM,uCAAuC,GAAG,IAAI,CAAC,8BAA8B,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAA;CAAE,CAAC;AAExJ,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,OAAO,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACxD,sCAAsC;IACtC,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzE,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,KAC3D,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"Grouping.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAYL,UAAU,EAKX,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAW5E,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAoC,kCAAkC,EAAE,MAAM,kCAAkC,CAAC;AAGxH,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAO3G,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,GAAG,SAAS,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,EACtG,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,8BAA8B,KAAK,IAAI,EAC9E,gBAAgB,CAAC,EAAE,eAAe,EAAE,IAEnB,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAyEhG;AAED,gBAAgB;AAChB,MAAM,MAAM,uCAAuC,GAAG,IAAI,CAAC,8BAA8B,EAAE,UAAU,CAAC,GAAG;IACvG,QAAQ,EAAE,8BAA8B,EAAE,CAAC;CAC5C,CAAC;AAEF,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,OAAO,EAAE,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACxD,sCAAsC;IACtC,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzE,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,KAC3D,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
@@ -27,10 +27,13 @@ const LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = (0, Common_js_1.createOperatorLog
27
27
  /** @internal */
28
28
  function createGroupingOperator(imodelAccess, parentNode, valueFormatter, localizedStrings, onNodesGrouped, onGroupingNodeCreated, groupingHandlers) {
29
29
  return function (nodes) {
30
- return nodes.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }), (0, TapOnce_js_1.tapOnce)(() => {
30
+ return nodes.pipe(
31
+ /* v8 ignore next -- @preserve */
32
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }), (0, TapOnce_js_1.tapOnce)(() => {
33
+ /* v8 ignore next -- @preserve */
31
34
  (0, LoggingUtils_js_1.doLog)({
32
35
  category: LOGGING_NAMESPACE_PERFORMANCE,
33
- message: /* c8 ignore next */ () => `Starting grouping (parent: ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)})`,
36
+ message: () => `Starting grouping (parent: ${(0, Common_js_1.createNodeIdentifierForLogging)(parentNode)})`,
34
37
  });
35
38
  }), (0, rxjs_1.reduce)((resolvedNodes, node) => {
36
39
  if (HierarchyNode_js_1.HierarchyNode.isInstancesNode(node)) {
@@ -41,27 +44,30 @@ function createGroupingOperator(imodelAccess, parentNode, valueFormatter, locali
41
44
  }
42
45
  return resolvedNodes;
43
46
  }, { instanceNodes: [], restNodes: [] }), (0, rxjs_1.tap)(({ instanceNodes, restNodes }) => {
47
+ /* v8 ignore next -- @preserve */
44
48
  (0, LoggingUtils_js_1.doLog)({
45
49
  category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
46
- message: /* c8 ignore next */ () => `Nodes partitioned. Got ${instanceNodes.length} instance nodes and ${restNodes.length} rest nodes.`,
50
+ message: () => `Nodes partitioned. Got ${instanceNodes.length} instance nodes and ${restNodes.length} rest nodes.`,
47
51
  });
48
52
  }), (0, rxjs_1.mergeMap)((res) => {
49
53
  const out = (0, rxjs_1.of)(res);
50
54
  const totalNodes = res.instanceNodes.length + res.restNodes.length;
51
- /* c8 ignore next */
52
- return totalNodes <= 1000 ? out : out.pipe((0, rxjs_1.delay)(0));
55
+ return totalNodes <= 1000 ? out : /* v8 ignore next */ out.pipe((0, rxjs_1.delay)(0));
53
56
  }), (0, rxjs_1.mergeMap)(({ instanceNodes, restNodes }) => {
54
57
  const timer = new core_bentley_1.StopWatch(undefined, true);
55
58
  const groupingHandlersObs = groupingHandlers
56
59
  ? (0, rxjs_1.from)(groupingHandlers)
57
60
  : createGroupingHandlers(imodelAccess, parentNode, instanceNodes, valueFormatter, localizedStrings);
58
61
  return (0, rxjs_1.merge)(groupingHandlersObs.pipe((0, rxjs_1.toArray)(), (0, rxjs_1.mergeMap)((createdGroupingHandlers) => groupInstanceNodes(instanceNodes, restNodes.length, createdGroupingHandlers, parentNode, onNodesGrouped, onGroupingNodeCreated)), (0, rxjs_1.finalize)(() => {
62
+ /* v8 ignore next -- @preserve */
59
63
  (0, LoggingUtils_js_1.doLog)({
60
64
  category: LOGGING_NAMESPACE_PERFORMANCE,
61
- message: /* c8 ignore next */ () => `Grouping ${instanceNodes.length} nodes took ${timer.elapsedSeconds.toFixed(3)} s`,
65
+ message: () => `Grouping ${instanceNodes.length} nodes took ${timer.elapsedSeconds.toFixed(3)} s`,
62
66
  });
63
67
  })), (0, rxjs_1.from)(restNodes));
64
- }), (0, ReleaseMainThread_js_1.releaseMainThreadOnItemsCount)(500), (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
68
+ }), (0, ReleaseMainThread_js_1.releaseMainThreadOnItemsCount)(500),
69
+ /* v8 ignore next -- @preserve */
70
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
65
71
  };
66
72
  }
67
73
  function groupInstanceNodes(nodes, extraSiblings, groupingHandlers, parentNode, onNodesGrouped, onGroupingNodeCreated) {
@@ -74,9 +80,11 @@ function groupInstanceNodes(nodes, extraSiblings, groupingHandlers, parentNode,
74
80
  }
75
81
  const timer = new core_bentley_1.StopWatch(undefined, true);
76
82
  const currentHandler = groupingHandlers[handlerIndex];
77
- return (0, rxjs_1.from)(currentHandler(curr?.ungrouped ?? nodes, curr?.grouped ?? [])).pipe((0, LoggingUtils_js_1.log)({
83
+ return (0, rxjs_1.from)(currentHandler(curr?.ungrouped ?? nodes, curr?.grouped ?? [])).pipe(
84
+ /* v8 ignore next -- @preserve */
85
+ (0, LoggingUtils_js_1.log)({
78
86
  category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
79
- message: /* c8 ignore next */ () => `Grouping handler ${handlerIndex} exclusively took ${timer.elapsedSeconds.toFixed(3)} s.`,
87
+ message: () => `Grouping handler ${handlerIndex} exclusively took ${timer.elapsedSeconds.toFixed(3)} s.`,
80
88
  }), (0, rxjs_1.tap)((result) => {
81
89
  onNodesGrouped?.(result, currentHandler);
82
90
  }), (0, rxjs_1.mergeMap)((result) => {
@@ -84,13 +92,20 @@ function groupInstanceNodes(nodes, extraSiblings, groupingHandlers, parentNode,
84
92
  return (0, rxjs_1.of)({ handlerIndex: handlerIndex + 1, result: { ...result, grouped: curr?.grouped ?? [] } });
85
93
  }
86
94
  const groupingPostProcessingTimer = new core_bentley_1.StopWatch(undefined, true);
87
- return (0, rxjs_1.of)(result).pipe((0, rxjs_1.map)((r) => (0, GroupHiding_js_1.applyGroupHidingParams)(r, extraSiblings)), (0, rxjs_1.map)((r) => (0, AutoExpand_js_1.assignAutoExpand)(r)), (0, rxjs_1.map)((r) => ({ handlerIndex: handlerIndex + 1, result: { ...r, grouped: mergeInPlace(curr?.grouped, r.grouped) } })), (0, LoggingUtils_js_1.log)({
95
+ return (0, rxjs_1.of)(result).pipe((0, rxjs_1.map)((r) => (0, GroupHiding_js_1.applyGroupHidingParams)(r, extraSiblings)), (0, rxjs_1.map)((r) => (0, AutoExpand_js_1.assignAutoExpand)(r)), (0, rxjs_1.map)((r) => ({
96
+ handlerIndex: handlerIndex + 1,
97
+ result: { ...r, grouped: mergeInPlace(curr?.grouped, r.grouped) },
98
+ })),
99
+ /* v8 ignore next -- @preserve */
100
+ (0, LoggingUtils_js_1.log)({
88
101
  category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
89
- message: /* c8 ignore next */ () => `Post-processing grouping handler ${handlerIndex} exclusively took ${groupingPostProcessingTimer.elapsedSeconds.toFixed(3)} s.`,
102
+ message: () => `Post-processing grouping handler ${handlerIndex} exclusively took ${groupingPostProcessingTimer.elapsedSeconds.toFixed(3)} s.`,
90
103
  }), (0, rxjs_1.delay)(0));
91
- }), (0, LoggingUtils_js_1.log)({
104
+ }),
105
+ /* v8 ignore next -- @preserve */
106
+ (0, LoggingUtils_js_1.log)({
92
107
  category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
93
- message: /* c8 ignore next */ () => `Total time for grouping handler ${handlerIndex}: ${timer.elapsedSeconds.toFixed(3)} s.`,
108
+ message: () => `Total time for grouping handler ${handlerIndex}: ${timer.elapsedSeconds.toFixed(3)} s.`,
94
109
  }));
95
110
  }), (0, rxjs_1.last)(), (0, rxjs_1.mergeMap)(({ result }) => {
96
111
  result.grouped.forEach((groupingNode) => {
@@ -127,16 +142,15 @@ function createGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes
127
142
  ? (0, rxjs_1.from)((0, PropertiesGrouping_js_1.createPropertiesGroupingHandlers)(imodelAccess, parentNode, processedInstanceNodes, valueFormatter, localizedStrings)).pipe((0, rxjs_1.concatAll)())
128
143
  : rxjs_1.EMPTY, groupingLevel < GroupingLevel.Label ? (0, rxjs_1.of)(async (allNodes) => (0, LabelGrouping_js_1.createLabelGroups)(allNodes)) : rxjs_1.EMPTY).pipe((0, rxjs_1.tap)({
129
144
  subscribe: () => {
130
- (0, LoggingUtils_js_1.doLog)({
131
- category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
132
- message: /* c8 ignore next */ () => `Start creating grouping handlers`,
133
- });
145
+ /* v8 ignore next -- @preserve */
146
+ (0, LoggingUtils_js_1.doLog)({ category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL, message: () => `Start creating grouping handlers` });
134
147
  timer.start();
135
148
  },
136
149
  }), (0, rxjs_1.finalize)(() => {
150
+ /* v8 ignore next -- @preserve */
137
151
  (0, LoggingUtils_js_1.doLog)({
138
152
  category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,
139
- message: /* c8 ignore next */ () => `Creating grouping handlers took ${timer.elapsedSeconds.toFixed(3)} s`,
153
+ message: () => `Creating grouping handlers took ${timer.elapsedSeconds.toFixed(3)} s`,
140
154
  });
141
155
  }));
142
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AA+BhG,wDAkEC;AA/FD,+BAAiJ;AACjJ,sDAAwD;AAExD,6DAA4E;AAC5E,wDAMkC;AAClC,oEAA4D;AAC5D,wFAA8F;AAC9F,oEAA8D;AAE9D,4DAA4D;AAC5D,0EAAkF;AAClF,kEAAgE;AAChE,8DAAmE;AACnE,kEAAgE;AAChE,4EAAwH;AAExH,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,sCAA0B,CAAC,CAAC;AAC3G,MAAM,6BAA6B,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,yCAAkC,CAAC,CAAC;AACxH,MAAM,sCAAsC,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,kDAA2C,CAAC,CAAC;AAE1I,gBAAgB;AAChB,SAAgB,sBAAsB,CACpC,YAA0D,EAC1D,UAA2C,EAC3C,cAAwC,EACxC,gBAAoD,EACpD,cAAsG,EACtG,qBAA8E,EAC9E,gBAAoC;IAEpC,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI,CACf,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACrH,IAAA,oBAAO,EAAC,GAAG,EAAE;YACX,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,6BAA6B;gBACvC,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,8BAA8B,IAAA,0CAA8B,EAAC,UAAU,CAAC,GAAG;aAChH,CAAC,CAAC;QACL,CAAC,CAAC,EACF,IAAA,aAAM,EACJ,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE;YACtB,IAAI,gCAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACrC,EACD,IAAA,UAAG,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;YACnC,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,sCAAsC;gBAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,0BAA0B,aAAa,CAAC,MAAM,uBAAuB,SAAS,CAAC,MAAM,cAAc;aACxI,CAAC,CAAC;QACL,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,IAAA,SAAE,EAAC,GAAG,CAAC,CAAC;YACpB,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YACnE,oBAAoB;YACpB,OAAO,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,EAAsC,EAAE;YAC5E,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,mBAAmB,GAAgC,gBAAgB;gBACvE,CAAC,CAAC,IAAA,WAAI,EAAC,gBAAgB,CAAC;gBACxB,CAAC,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACtG,OAAO,IAAA,YAAK,EACV,mBAAmB,CAAC,IAAI,CACtB,IAAA,cAAO,GAAE,EACT,IAAA,eAAQ,EAAC,CAAC,uBAAuB,EAAE,EAAE,CACnC,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAChI,EACD,IAAA,eAAQ,EAAC,GAAG,EAAE;gBACZ,IAAA,uBAAK,EAAC;oBACJ,QAAQ,EAAE,6BAA6B;oBACvC,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,YAAY,aAAa,CAAC,MAAM,eAAe,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;iBACvH,CAAC,CAAC;YACL,CAAC,CAAC,CACH,EACD,IAAA,WAAI,EAAC,SAAS,CAAC,CAChB,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,oDAA6B,EAAC,GAAG,CAAC,EAClC,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAuBD,SAAS,kBAAkB,CACzB,KAAuC,EACvC,aAAqB,EACrB,gBAAmC,EACnC,UAA2C,EAC3C,cAAsG,EACtG,qBAA8E;IAE9E,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAA,SAAE,EAAuE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CACvG,IAAA,aAAM,EAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,IAAI,YAAY,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,YAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,IAAA,WAAI,EAAC,cAAc,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7E,IAAA,qBAAG,EAAC;YACF,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,oBAAoB,YAAY,qBAAqB,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SAC9H,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,MAAM,EAAE,EAAE;YACb,cAAc,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAA,SAAE,EAAC,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,MAAM,2BAA2B,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnE,OAAO,IAAA,SAAE,EAAC,MAAM,CAAC,CAAC,IAAI,CACpB,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uCAAsB,EAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EACpD,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gCAAgB,EAAC,CAAC,CAAC,CAAC,EAC/B,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EACnH,IAAA,qBAAG,EAAC;gBACF,QAAQ,EAAE,sCAAsC;gBAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CACjC,oCAAoC,YAAY,qBAAqB,2BAA2B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;aAClI,CAAC,EACF,IAAA,YAAK,EAAC,CAAC,CAAC,CACT,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,qBAAG,EAAC;YACF,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,mCAAmC,YAAY,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SAC7H,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,EACF,IAAA,WAAI,GAAE,EACN,IAAA,eAAQ,EAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACtC,qBAAqB,EAAE,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,IAAI,gCAAa,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,iDAAiD;YACjD,IAAA,qBAAM,EAAC,gCAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,gCAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;YACzF,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAkE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACzH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAI,MAAuB,EAAE,MAAW;IAC3D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,YAA0D,EAC1D,UAA2C,EAC3C,sBAAwD,EACxD,cAAwC,EACxC,gBAAoD;IAEpD,MAAM,KAAK,GAAG,IAAI,wBAAS,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,OAAO,IAAA,aAAM,EACX,aAAa,IAAI,aAAa,CAAC,KAAK;QAClC,CAAC,CAAC,IAAA,aAAM,EACJ,IAAA,WAAI,EAAC,IAAA,sDAA+B,EAAC,YAAY,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,GAAE,CAAC,EACzG,IAAA,SAAE,EAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,oCAAiB,EAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/F;QACH,CAAC,CAAC,YAAK,EACT,aAAa,IAAI,aAAa,CAAC,QAAQ;QACrC,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,wDAAgC,EAAC,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,GAAE,CAAC;QAC9I,CAAC,CAAC,YAAK,EACT,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,SAAE,EAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,oCAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAK,CACnH,CAAC,IAAI,CACJ,IAAA,UAAG,EAAC;QACF,SAAS,EAAE,GAAG,EAAE;YACd,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,sCAAsC;gBAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,kCAAkC;aACvE,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC,EACF,IAAA,eAAQ,EAAC,GAAG,EAAE;QACZ,IAAA,uBAAK,EAAC;YACJ,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC,mCAAmC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SAC3G,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAqC;IACjE,IAAI,IAAI,IAAI,gCAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,IAAI,gCAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,IAAI,gCAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED,IAAK,aAKJ;AALD,WAAK,aAAa;IAChB,iDAAQ,CAAA;IACR,mDAAS,CAAA;IACT,yDAAY,CAAA;IACZ,mDAAS,CAAA;AACX,CAAC,EALI,aAAa,KAAb,aAAa,QAKjB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concat, concatAll, delay, EMPTY, expand, finalize, from, last, map, merge, mergeMap, Observable, of, reduce, tap, toArray } from \"rxjs\";\nimport { assert, StopWatch } from \"@itwin/core-bentley\";\nimport { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../HierarchyNode.js\";\nimport {\n LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE,\n LOGGING_NAMESPACE_PERFORMANCE_INTERNAL as BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n createNodeIdentifierForLogging,\n createOperatorLoggingNamespace,\n LOGGING_NAMESPACE_INTERNAL,\n} from \"../../internal/Common.js\";\nimport { doLog, log } from \"../../internal/LoggingUtils.js\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread.js\";\nimport { tapOnce } from \"../../internal/operators/TapOnce.js\";\nimport { ProcessedGroupingHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode.js\";\nimport { assignAutoExpand } from \"./grouping/AutoExpand.js\";\nimport { createBaseClassGroupingHandlers } from \"./grouping/BaseClassGrouping.js\";\nimport { createClassGroups } from \"./grouping/ClassGrouping.js\";\nimport { applyGroupHidingParams } from \"./grouping/GroupHiding.js\";\nimport { createLabelGroups } from \"./grouping/LabelGrouping.js\";\nimport { createPropertiesGroupingHandlers, PropertiesGroupingLocalizedStrings } from \"./grouping/PropertiesGrouping.js\";\n\nconst OPERATOR_NAME = \"Grouping\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\nconst LOGGING_NAMESPACE_PERFORMANCE = createOperatorLoggingNamespace(OPERATOR_NAME, BASE_LOGGING_NAMESPACE_PERFORMANCE);\nconst LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = createOperatorLoggingNamespace(OPERATOR_NAME, BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL);\n\n/** @internal */\nexport function createGroupingOperator(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n onNodesGrouped?: (groupingResult: GroupingHandlerResult | undefined, handler: GroupingHandler) => void,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n groupingHandlers?: GroupingHandler[],\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n tapOnce(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: /* c8 ignore next */ () => `Starting grouping (parent: ${createNodeIdentifierForLogging(parentNode)})`,\n });\n }),\n reduce<ProcessedHierarchyNode, { instanceNodes: ProcessedInstanceHierarchyNode[]; restNodes: ProcessedHierarchyNode[] }>(\n (resolvedNodes, node) => {\n if (HierarchyNode.isInstancesNode(node)) {\n resolvedNodes.instanceNodes.push(node);\n } else {\n resolvedNodes.restNodes.push(node);\n }\n return resolvedNodes;\n },\n { instanceNodes: [], restNodes: [] },\n ),\n tap(({ instanceNodes, restNodes }) => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () => `Nodes partitioned. Got ${instanceNodes.length} instance nodes and ${restNodes.length} rest nodes.`,\n });\n }),\n mergeMap((res) => {\n const out = of(res);\n const totalNodes = res.instanceNodes.length + res.restNodes.length;\n /* c8 ignore next */\n return totalNodes <= 1000 ? out : out.pipe(delay(0));\n }),\n mergeMap(({ instanceNodes, restNodes }): Observable<ProcessedHierarchyNode> => {\n const timer = new StopWatch(undefined, true);\n const groupingHandlersObs: Observable<GroupingHandler> = groupingHandlers\n ? from(groupingHandlers)\n : createGroupingHandlers(imodelAccess, parentNode, instanceNodes, valueFormatter, localizedStrings);\n return merge(\n groupingHandlersObs.pipe(\n toArray(),\n mergeMap((createdGroupingHandlers) =>\n groupInstanceNodes(instanceNodes, restNodes.length, createdGroupingHandlers, parentNode, onNodesGrouped, onGroupingNodeCreated),\n ),\n finalize(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: /* c8 ignore next */ () => `Grouping ${instanceNodes.length} nodes took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n ),\n from(restNodes),\n );\n }),\n releaseMainThreadOnItemsCount(500),\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n\n/** @internal */\nexport type ProcessedInstancesGroupingHierarchyNode = Omit<ProcessedGroupingHierarchyNode, \"children\"> & { children: ProcessedInstanceHierarchyNode[] };\n\n/** @internal */\nexport interface GroupingHandlerResult {\n /** Expected to be sorted by label. */\n grouped: Array<ProcessedInstancesGroupingHierarchyNode>;\n /** Expected to be sorted by label. */\n ungrouped: ProcessedInstanceHierarchyNode[];\n groupingType: GroupingType;\n}\n\n/** @internal */\nexport type GroupingType = \"label\" | \"class\" | \"base-class\" | \"property\";\n\n/** @internal */\nexport type GroupingHandler = (\n nodesToGroup: ProcessedInstanceHierarchyNode[],\n nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[],\n) => Promise<GroupingHandlerResult>;\n\nfunction groupInstanceNodes(\n nodes: ProcessedInstanceHierarchyNode[],\n extraSiblings: number,\n groupingHandlers: GroupingHandler[],\n parentNode: ParentHierarchyNode | undefined,\n onNodesGrouped?: (groupingResult: GroupingHandlerResult | undefined, handler: GroupingHandler) => void,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n): Observable<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode> {\n if (groupingHandlers.length === 0) {\n return from(nodes);\n }\n return of<{ handlerIndex: number; result?: GroupingHandlerResult | undefined }>({ handlerIndex: 0 }).pipe(\n expand(({ handlerIndex, result: curr }) => {\n if (handlerIndex >= groupingHandlers.length) {\n return EMPTY;\n }\n const timer = new StopWatch(undefined, true);\n const currentHandler = groupingHandlers[handlerIndex];\n return from(currentHandler(curr?.ungrouped ?? nodes, curr?.grouped ?? [])).pipe(\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () => `Grouping handler ${handlerIndex} exclusively took ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n tap((result) => {\n onNodesGrouped?.(result, currentHandler);\n }),\n mergeMap((result) => {\n if (result.grouped.length === 0) {\n return of({ handlerIndex: handlerIndex + 1, result: { ...result, grouped: curr?.grouped ?? [] } });\n }\n const groupingPostProcessingTimer = new StopWatch(undefined, true);\n return of(result).pipe(\n map((r) => applyGroupHidingParams(r, extraSiblings)),\n map((r) => assignAutoExpand(r)),\n map((r) => ({ handlerIndex: handlerIndex + 1, result: { ...r, grouped: mergeInPlace(curr?.grouped, r.grouped) } })),\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () =>\n `Post-processing grouping handler ${handlerIndex} exclusively took ${groupingPostProcessingTimer.elapsedSeconds.toFixed(3)} s.`,\n }),\n delay(0),\n );\n }),\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () => `Total time for grouping handler ${handlerIndex}: ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n );\n }),\n last(),\n mergeMap(({ result }) => {\n result.grouped.forEach((groupingNode) => {\n onGroupingNodeCreated?.(groupingNode);\n if (!parentNode) {\n return;\n }\n if (HierarchyNode.isGroupingNode(parentNode)) {\n groupingNode.nonGroupingAncestor = parentNode.nonGroupingAncestor;\n return;\n }\n // not sure why type checker doesn't pick this up\n assert(HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));\n groupingNode.nonGroupingAncestor = parentNode;\n });\n return mergeInPlace<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode>(result.grouped, result.ungrouped);\n }),\n );\n}\n\nfunction mergeInPlace<T>(target: T[] | undefined, source: T[]) {\n if (!target || target.length === 0) {\n return source;\n }\n for (const item of source) {\n target.push(item);\n }\n return target;\n}\n\nfunction createGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n processedInstanceNodes: ProcessedInstanceHierarchyNode[],\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n): Observable<GroupingHandler> {\n const timer = new StopWatch();\n const groupingLevel = getNodeGroupingLevel(parentNode);\n return concat(\n groupingLevel <= GroupingLevel.Class\n ? concat(\n from(createBaseClassGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes)).pipe(concatAll()),\n of<GroupingHandler>(async (allNodes) => createClassGroups(imodelAccess, parentNode, allNodes)),\n )\n : EMPTY,\n groupingLevel <= GroupingLevel.Property\n ? from(createPropertiesGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes, valueFormatter, localizedStrings)).pipe(concatAll())\n : EMPTY,\n groupingLevel < GroupingLevel.Label ? of<GroupingHandler>(async (allNodes) => createLabelGroups(allNodes)) : EMPTY,\n ).pipe(\n tap({\n subscribe: () => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () => `Start creating grouping handlers`,\n });\n timer.start();\n },\n }),\n finalize(() => {\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: /* c8 ignore next */ () => `Creating grouping handlers took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n );\n}\n\nfunction getNodeGroupingLevel(node: ParentHierarchyNode | undefined): GroupingLevel {\n if (node && HierarchyNode.isClassGroupingNode(node)) {\n return GroupingLevel.Class;\n }\n if (node && HierarchyNode.isPropertyGroupingNode(node)) {\n return GroupingLevel.Property;\n }\n if (node && HierarchyNode.isLabelGroupingNode(node)) {\n return GroupingLevel.Label;\n }\n return GroupingLevel.None;\n}\n\nenum GroupingLevel {\n None = 0,\n Class = 2,\n Property = 3,\n Label = 4,\n}\n"]}
1
+ {"version":3,"file":"Grouping.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/Grouping.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAuDhG,wDAkFC;AAvID,+BAiBc;AACd,sDAAwD;AAExD,6DAA4E;AAC5E,wDAMkC;AAClC,oEAA4D;AAC5D,wFAA8F;AAC9F,oEAA8D;AAM9D,4DAA4D;AAC5D,0EAAkF;AAClF,kEAAgE;AAChE,8DAAmE;AACnE,kEAAgE;AAChE,4EAAwH;AAExH,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,gBAAgB;AACH,QAAA,iBAAiB,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,sCAA0B,CAAC,CAAC;AAC3G,MAAM,6BAA6B,GAAG,IAAA,0CAA8B,EAAC,aAAa,EAAE,yCAAkC,CAAC,CAAC;AACxH,MAAM,sCAAsC,GAAG,IAAA,0CAA8B,EAC3E,aAAa,EACb,kDAA2C,CAC5C,CAAC;AAEF,gBAAgB;AAChB,SAAgB,sBAAsB,CACpC,YAA0D,EAC1D,UAA2C,EAC3C,cAAwC,EACxC,gBAAoD,EACpD,cAAsG,EACtG,qBAA8E,EAC9E,gBAAoC;IAEpC,OAAO,UAAU,KAAyC;QACxD,OAAO,KAAK,CAAC,IAAI;QACf,iCAAiC;QACjC,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAChG,IAAA,oBAAO,EAAC,GAAG,EAAE;YACX,iCAAiC;YACjC,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,6BAA6B;gBACvC,OAAO,EAAE,GAAG,EAAE,CAAC,8BAA8B,IAAA,0CAA8B,EAAC,UAAU,CAAC,GAAG;aAC3F,CAAC,CAAC;QACL,CAAC,CAAC,EACF,IAAA,aAAM,EAIJ,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE;YACtB,IAAI,gCAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACrC,EACD,IAAA,UAAG,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;YACnC,iCAAiC;YACjC,IAAA,uBAAK,EAAC;gBACJ,QAAQ,EAAE,sCAAsC;gBAChD,OAAO,EAAE,GAAG,EAAE,CACZ,0BAA0B,aAAa,CAAC,MAAM,uBAAuB,SAAS,CAAC,MAAM,cAAc;aACtG,CAAC,CAAC;QACL,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,IAAA,SAAE,EAAC,GAAG,CAAC,CAAC;YACpB,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAEnE,OAAO,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,EAAsC,EAAE;YAC5E,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,mBAAmB,GAAgC,gBAAgB;gBACvE,CAAC,CAAC,IAAA,WAAI,EAAC,gBAAgB,CAAC;gBACxB,CAAC,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACtG,OAAO,IAAA,YAAK,EACV,mBAAmB,CAAC,IAAI,CACtB,IAAA,cAAO,GAAE,EACT,IAAA,eAAQ,EAAC,CAAC,uBAAuB,EAAE,EAAE,CACnC,kBAAkB,CAChB,aAAa,EACb,SAAS,CAAC,MAAM,EAChB,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,qBAAqB,CACtB,CACF,EACD,IAAA,eAAQ,EAAC,GAAG,EAAE;gBACZ,iCAAiC;gBACjC,IAAA,uBAAK,EAAC;oBACJ,QAAQ,EAAE,6BAA6B;oBACvC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,aAAa,CAAC,MAAM,eAAe,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;iBAClG,CAAC,CAAC;YACL,CAAC,CAAC,CACH,EACD,IAAA,WAAI,EAAC,SAAS,CAAC,CAChB,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,oDAA6B,EAAC,GAAG,CAAC;QAClC,iCAAiC;QACjC,IAAA,qBAAG,EAAC,EAAE,QAAQ,EAAE,yBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAA,0CAA8B,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClG,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAyBD,SAAS,kBAAkB,CACzB,KAAuC,EACvC,aAAqB,EACrB,gBAAmC,EACnC,UAA2C,EAC3C,cAAsG,EACtG,qBAA8E;IAE9E,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAA,SAAE,EAAuE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CACvG,IAAA,aAAM,EAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,IAAI,YAAY,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,YAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,IAAA,WAAI,EAAC,cAAc,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7E,iCAAiC;QACjC,IAAA,qBAAG,EAAC;YACF,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,YAAY,qBAAqB,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACzG,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,MAAM,EAAE,EAAE;YACb,cAAc,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,CAAC,CAAC,EACF,IAAA,eAAQ,EAAC,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAA,SAAE,EAAC,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,MAAM,2BAA2B,GAAG,IAAI,wBAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnE,OAAO,IAAA,SAAE,EAAC,MAAM,CAAC,CAAC,IAAI,CACpB,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uCAAsB,EAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EACpD,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gCAAgB,EAAC,CAAC,CAAC,CAAC,EAC/B,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACV,YAAY,EAAE,YAAY,GAAG,CAAC;gBAC9B,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;aAClE,CAAC,CAAC;YACH,iCAAiC;YACjC,IAAA,qBAAG,EAAC;gBACF,QAAQ,EAAE,sCAAsC;gBAChD,OAAO,EAAE,GAAG,EAAE,CACZ,oCAAoC,YAAY,qBAAqB,2BAA2B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;aAClI,CAAC,EACF,IAAA,YAAK,EAAC,CAAC,CAAC,CACT,CAAC;QACJ,CAAC,CAAC;QACF,iCAAiC;QACjC,IAAA,qBAAG,EAAC;YACF,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,GAAG,EAAE,CAAC,mCAAmC,YAAY,KAAK,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACxG,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,EACF,IAAA,WAAI,GAAE,EACN,IAAA,eAAQ,EAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACtC,qBAAqB,EAAE,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,IAAI,gCAAa,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,iDAAiD;YACjD,IAAA,qBAAM,EAAC,gCAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,gCAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;YACzF,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,SAAS,CACjB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAI,MAAuB,EAAE,MAAW;IAC3D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAC7B,YAA0D,EAC1D,UAA2C,EAC3C,sBAAwD,EACxD,cAAwC,EACxC,gBAAoD;IAEpD,MAAM,KAAK,GAAG,IAAI,wBAAS,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,OAAO,IAAA,aAAM,EACX,aAAa,IAAI,aAAa,CAAC,KAAK;QAClC,CAAC,CAAC,IAAA,aAAM,EACJ,IAAA,WAAI,EAAC,IAAA,sDAA+B,EAAC,YAAY,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,GAAE,CAAC,EACzG,IAAA,SAAE,EAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,oCAAiB,EAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAC/F;QACH,CAAC,CAAC,YAAK,EACT,aAAa,IAAI,aAAa,CAAC,QAAQ;QACrC,CAAC,CAAC,IAAA,WAAI,EACF,IAAA,wDAAgC,EAC9B,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,CACjB,CACF,CAAC,IAAI,CAAC,IAAA,gBAAS,GAAE,CAAC;QACrB,CAAC,CAAC,YAAK,EACT,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,SAAE,EAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAA,oCAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAK,CACnH,CAAC,IAAI,CACJ,IAAA,UAAG,EAAC;QACF,SAAS,EAAE,GAAG,EAAE;YACd,iCAAiC;YACjC,IAAA,uBAAK,EAAC,EAAE,QAAQ,EAAE,sCAAsC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,kCAAkC,EAAE,CAAC,CAAC;YAC/G,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC,EACF,IAAA,eAAQ,EAAC,GAAG,EAAE;QACZ,iCAAiC;QACjC,IAAA,uBAAK,EAAC;YACJ,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,GAAG,EAAE,CAAC,mCAAmC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtF,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAqC;IACjE,IAAI,IAAI,IAAI,gCAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,IAAI,gCAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,IAAI,gCAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED,IAAK,aAKJ;AALD,WAAK,aAAa;IAChB,iDAAQ,CAAA;IACR,mDAAS,CAAA;IACT,yDAAY,CAAA;IACZ,mDAAS,CAAA;AACX,CAAC,EALI,aAAa,KAAb,aAAa,QAKjB","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 {\n concat,\n concatAll,\n delay,\n EMPTY,\n expand,\n finalize,\n from,\n last,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n reduce,\n tap,\n toArray,\n} from \"rxjs\";\nimport { assert, StopWatch } from \"@itwin/core-bentley\";\nimport { ECClassHierarchyInspector, ECSchemaProvider, IPrimitiveValueFormatter } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../HierarchyNode.js\";\nimport {\n LOGGING_NAMESPACE_PERFORMANCE as BASE_LOGGING_NAMESPACE_PERFORMANCE,\n LOGGING_NAMESPACE_PERFORMANCE_INTERNAL as BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n createNodeIdentifierForLogging,\n createOperatorLoggingNamespace,\n LOGGING_NAMESPACE_INTERNAL,\n} from \"../../internal/Common.js\";\nimport { doLog, log } from \"../../internal/LoggingUtils.js\";\nimport { releaseMainThreadOnItemsCount } from \"../../internal/operators/ReleaseMainThread.js\";\nimport { tapOnce } from \"../../internal/operators/TapOnce.js\";\nimport {\n ProcessedGroupingHierarchyNode,\n ProcessedHierarchyNode,\n ProcessedInstanceHierarchyNode,\n} from \"../IModelHierarchyNode.js\";\nimport { assignAutoExpand } from \"./grouping/AutoExpand.js\";\nimport { createBaseClassGroupingHandlers } from \"./grouping/BaseClassGrouping.js\";\nimport { createClassGroups } from \"./grouping/ClassGrouping.js\";\nimport { applyGroupHidingParams } from \"./grouping/GroupHiding.js\";\nimport { createLabelGroups } from \"./grouping/LabelGrouping.js\";\nimport { createPropertiesGroupingHandlers, PropertiesGroupingLocalizedStrings } from \"./grouping/PropertiesGrouping.js\";\n\nconst OPERATOR_NAME = \"Grouping\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\nconst LOGGING_NAMESPACE_PERFORMANCE = createOperatorLoggingNamespace(OPERATOR_NAME, BASE_LOGGING_NAMESPACE_PERFORMANCE);\nconst LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = createOperatorLoggingNamespace(\n OPERATOR_NAME,\n BASE_LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n);\n\n/** @internal */\nexport function createGroupingOperator(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n onNodesGrouped?: (groupingResult: GroupingHandlerResult | undefined, handler: GroupingHandler) => void,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n groupingHandlers?: GroupingHandler[],\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n return nodes.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n tapOnce(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () => `Starting grouping (parent: ${createNodeIdentifierForLogging(parentNode)})`,\n });\n }),\n reduce<\n ProcessedHierarchyNode,\n { instanceNodes: ProcessedInstanceHierarchyNode[]; restNodes: ProcessedHierarchyNode[] }\n >(\n (resolvedNodes, node) => {\n if (HierarchyNode.isInstancesNode(node)) {\n resolvedNodes.instanceNodes.push(node);\n } else {\n resolvedNodes.restNodes.push(node);\n }\n return resolvedNodes;\n },\n { instanceNodes: [], restNodes: [] },\n ),\n tap(({ instanceNodes, restNodes }) => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: () =>\n `Nodes partitioned. Got ${instanceNodes.length} instance nodes and ${restNodes.length} rest nodes.`,\n });\n }),\n mergeMap((res) => {\n const out = of(res);\n const totalNodes = res.instanceNodes.length + res.restNodes.length;\n\n return totalNodes <= 1000 ? out : /* v8 ignore next */ out.pipe(delay(0));\n }),\n mergeMap(({ instanceNodes, restNodes }): Observable<ProcessedHierarchyNode> => {\n const timer = new StopWatch(undefined, true);\n const groupingHandlersObs: Observable<GroupingHandler> = groupingHandlers\n ? from(groupingHandlers)\n : createGroupingHandlers(imodelAccess, parentNode, instanceNodes, valueFormatter, localizedStrings);\n return merge(\n groupingHandlersObs.pipe(\n toArray(),\n mergeMap((createdGroupingHandlers) =>\n groupInstanceNodes(\n instanceNodes,\n restNodes.length,\n createdGroupingHandlers,\n parentNode,\n onNodesGrouped,\n onGroupingNodeCreated,\n ),\n ),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE,\n message: () => `Grouping ${instanceNodes.length} nodes took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n ),\n from(restNodes),\n );\n }),\n releaseMainThreadOnItemsCount(500),\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n\n/** @internal */\nexport type ProcessedInstancesGroupingHierarchyNode = Omit<ProcessedGroupingHierarchyNode, \"children\"> & {\n children: ProcessedInstanceHierarchyNode[];\n};\n\n/** @internal */\nexport interface GroupingHandlerResult {\n /** Expected to be sorted by label. */\n grouped: Array<ProcessedInstancesGroupingHierarchyNode>;\n /** Expected to be sorted by label. */\n ungrouped: ProcessedInstanceHierarchyNode[];\n groupingType: GroupingType;\n}\n\n/** @internal */\nexport type GroupingType = \"label\" | \"class\" | \"base-class\" | \"property\";\n\n/** @internal */\nexport type GroupingHandler = (\n nodesToGroup: ProcessedInstanceHierarchyNode[],\n nodesAlreadyGrouped: ProcessedInstancesGroupingHierarchyNode[],\n) => Promise<GroupingHandlerResult>;\n\nfunction groupInstanceNodes(\n nodes: ProcessedInstanceHierarchyNode[],\n extraSiblings: number,\n groupingHandlers: GroupingHandler[],\n parentNode: ParentHierarchyNode | undefined,\n onNodesGrouped?: (groupingResult: GroupingHandlerResult | undefined, handler: GroupingHandler) => void,\n onGroupingNodeCreated?: (groupingNode: ProcessedGroupingHierarchyNode) => void,\n): Observable<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode> {\n if (groupingHandlers.length === 0) {\n return from(nodes);\n }\n return of<{ handlerIndex: number; result?: GroupingHandlerResult | undefined }>({ handlerIndex: 0 }).pipe(\n expand(({ handlerIndex, result: curr }) => {\n if (handlerIndex >= groupingHandlers.length) {\n return EMPTY;\n }\n const timer = new StopWatch(undefined, true);\n const currentHandler = groupingHandlers[handlerIndex];\n return from(currentHandler(curr?.ungrouped ?? nodes, curr?.grouped ?? [])).pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: () => `Grouping handler ${handlerIndex} exclusively took ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n tap((result) => {\n onNodesGrouped?.(result, currentHandler);\n }),\n mergeMap((result) => {\n if (result.grouped.length === 0) {\n return of({ handlerIndex: handlerIndex + 1, result: { ...result, grouped: curr?.grouped ?? [] } });\n }\n const groupingPostProcessingTimer = new StopWatch(undefined, true);\n return of(result).pipe(\n map((r) => applyGroupHidingParams(r, extraSiblings)),\n map((r) => assignAutoExpand(r)),\n map((r) => ({\n handlerIndex: handlerIndex + 1,\n result: { ...r, grouped: mergeInPlace(curr?.grouped, r.grouped) },\n })),\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: () =>\n `Post-processing grouping handler ${handlerIndex} exclusively took ${groupingPostProcessingTimer.elapsedSeconds.toFixed(3)} s.`,\n }),\n delay(0),\n );\n }),\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: () => `Total time for grouping handler ${handlerIndex}: ${timer.elapsedSeconds.toFixed(3)} s.`,\n }),\n );\n }),\n last(),\n mergeMap(({ result }) => {\n result.grouped.forEach((groupingNode) => {\n onGroupingNodeCreated?.(groupingNode);\n if (!parentNode) {\n return;\n }\n if (HierarchyNode.isGroupingNode(parentNode)) {\n groupingNode.nonGroupingAncestor = parentNode.nonGroupingAncestor;\n return;\n }\n // not sure why type checker doesn't pick this up\n assert(HierarchyNode.isGeneric(parentNode) || HierarchyNode.isInstancesNode(parentNode));\n groupingNode.nonGroupingAncestor = parentNode;\n });\n return mergeInPlace<ProcessedGroupingHierarchyNode | ProcessedInstanceHierarchyNode>(\n result.grouped,\n result.ungrouped,\n );\n }),\n );\n}\n\nfunction mergeInPlace<T>(target: T[] | undefined, source: T[]) {\n if (!target || target.length === 0) {\n return source;\n }\n for (const item of source) {\n target.push(item);\n }\n return target;\n}\n\nfunction createGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n processedInstanceNodes: ProcessedInstanceHierarchyNode[],\n valueFormatter: IPrimitiveValueFormatter,\n localizedStrings: PropertiesGroupingLocalizedStrings,\n): Observable<GroupingHandler> {\n const timer = new StopWatch();\n const groupingLevel = getNodeGroupingLevel(parentNode);\n return concat(\n groupingLevel <= GroupingLevel.Class\n ? concat(\n from(createBaseClassGroupingHandlers(imodelAccess, parentNode, processedInstanceNodes)).pipe(concatAll()),\n of<GroupingHandler>(async (allNodes) => createClassGroups(imodelAccess, parentNode, allNodes)),\n )\n : EMPTY,\n groupingLevel <= GroupingLevel.Property\n ? from(\n createPropertiesGroupingHandlers(\n imodelAccess,\n parentNode,\n processedInstanceNodes,\n valueFormatter,\n localizedStrings,\n ),\n ).pipe(concatAll())\n : EMPTY,\n groupingLevel < GroupingLevel.Label ? of<GroupingHandler>(async (allNodes) => createLabelGroups(allNodes)) : EMPTY,\n ).pipe(\n tap({\n subscribe: () => {\n /* v8 ignore next -- @preserve */\n doLog({ category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL, message: () => `Start creating grouping handlers` });\n timer.start();\n },\n }),\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE_PERFORMANCE_INTERNAL,\n message: () => `Creating grouping handlers took ${timer.elapsedSeconds.toFixed(3)} s`,\n });\n }),\n );\n}\n\nfunction getNodeGroupingLevel(node: ParentHierarchyNode | undefined): GroupingLevel {\n if (node && HierarchyNode.isClassGroupingNode(node)) {\n return GroupingLevel.Class;\n }\n if (node && HierarchyNode.isPropertyGroupingNode(node)) {\n return GroupingLevel.Property;\n }\n if (node && HierarchyNode.isLabelGroupingNode(node)) {\n return GroupingLevel.Label;\n }\n return GroupingLevel.None;\n}\n\nenum GroupingLevel {\n None = 0,\n Class = 2,\n Property = 3,\n Label = 4,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HideIfNoChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuC,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvE,OAAO,EAAiC,sBAAsB,EAAkC,MAAM,2BAA2B,CAAC;AAKlI,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,WACpF,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAkDhG"}
1
+ {"version":3,"file":"HideIfNoChildren.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuC,UAAU,EAAE,MAAM,MAAM,CAAC;AASvE,OAAO,EAEL,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAKnC,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,CAAC,IAC3F,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAwEhG"}
@@ -22,21 +22,39 @@ exports.LOGGING_NAMESPACE = (0, Common_js_1.createOperatorLoggingNamespace)(OPER
22
22
  */
23
23
  function createHideIfNoChildrenOperator(hasNodes) {
24
24
  return function (nodes) {
25
- const inputNodes = nodes.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
25
+ const inputNodes = nodes.pipe(
26
+ /* v8 ignore next -- @preserve */
27
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
26
28
  // split input into 3 pieces:
27
29
  // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)
28
30
  // - `determinedChildren` - nodes with the flag and known children
29
31
  // - `undeterminedChildren` - nodes with the flag and unknown children
30
- const [needsHide, doesntNeedHide] = (0, Partition_js_1.partition)(inputNodes, (n) => (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_js_1.ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideIfNoChildren);
32
+ const [needsHide, doesntNeedHide] = (0, Partition_js_1.partition)(inputNodes, (n) => (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_js_1.ProcessedHierarchyNode.isInstancesNode(n)) &&
33
+ !!n.processingParams?.hideIfNoChildren);
31
34
  const [determinedChildren, undeterminedChildren] = (0, Partition_js_1.partition)(needsHide, (n) => n.children !== undefined);
32
- return (0, rxjs_1.merge)(doesntNeedHide.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: doesn't need hide` })), (0, rxjs_1.merge)(determinedChildren.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, has children` })), undeterminedChildren.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, needs children` }), (0, rxjs_1.mergeMap)((n) => (0, rxjs_1.defer)(() => {
35
+ return (0, rxjs_1.merge)(doesntNeedHide.pipe(
36
+ /* v8 ignore next -- @preserve */
37
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: doesn't need hide` })), (0, rxjs_1.merge)(determinedChildren.pipe(
38
+ /* v8 ignore next -- @preserve */
39
+ (0, LoggingUtils_js_1.log)({
40
+ category: exports.LOGGING_NAMESPACE,
41
+ message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, has children`,
42
+ })), undeterminedChildren.pipe(
43
+ /* v8 ignore next -- @preserve */
44
+ (0, LoggingUtils_js_1.log)({
45
+ category: exports.LOGGING_NAMESPACE,
46
+ message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, needs children`,
47
+ }), (0, rxjs_1.mergeMap)((n) => (0, rxjs_1.defer)(() => {
48
+ /* v8 ignore next -- @preserve */
33
49
  (0, LoggingUtils_js_1.doLog)({
34
50
  category: exports.LOGGING_NAMESPACE,
35
- message: /* c8 ignore next */ () => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: requesting children flag`,
51
+ message: () => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: requesting children flag`,
36
52
  });
37
- return hasNodes(n).pipe((0, LoggingUtils_js_1.log)({
53
+ return hasNodes(n).pipe(
54
+ /* v8 ignore next -- @preserve */
55
+ (0, LoggingUtils_js_1.log)({
38
56
  category: exports.LOGGING_NAMESPACE,
39
- message: /* c8 ignore next */ (childrenFlag) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: determined children: ${childrenFlag}`,
57
+ message: (childrenFlag) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: determined children: ${childrenFlag}`,
40
58
  }), (0, rxjs_1.map)((children) => Object.assign(n, { children })));
41
59
  }),
42
60
  // Sending child check requests for all nodes without any limit greatly slows down
@@ -44,10 +62,14 @@ function createHideIfNoChildrenOperator(hasNodes) {
44
62
  // - NodeX (determining children) -> ... lots of children with "hide if no children" -> ...
45
63
  // We check the nodes with "hide if no children" at most 2 at a time to prefer going deep into
46
64
  // the hierarchy, where we're more likely to find an answer, rather than going wide.
47
- 2), (0, LoggingUtils_js_1.log)({
65
+ 2),
66
+ /* v8 ignore next -- @preserve */
67
+ (0, LoggingUtils_js_1.log)({
48
68
  category: exports.LOGGING_NAMESPACE,
49
- message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, determined children: ${(0, Common_js_1.hasChildren)(n)}`,
50
- }))).pipe((0, rxjs_1.filter)(Common_js_1.hasChildren))).pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
69
+ message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, determined children: ${(0, Common_js_1.hasChildren)(n)}`,
70
+ }))).pipe((0, rxjs_1.filter)(Common_js_1.hasChildren))).pipe(
71
+ /* v8 ignore next -- @preserve */
72
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
51
73
  };
52
74
  }
53
75
  //# sourceMappingURL=HideIfNoChildren.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HideIfNoChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { defer, filter, map, merge, mergeMap, Observable } from \"rxjs\";\nimport { createNodeIdentifierForLogging, createOperatorLoggingNamespace, hasChildren, LOGGING_NAMESPACE_INTERNAL } from \"../../internal/Common.js\";\nimport { doLog, log } from \"../../internal/LoggingUtils.js\";\nimport { partition } from \"../../internal/operators/Partition.js\";\nimport { ProcessedGenericHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode.js\";\n\n// cspell:words doesnt\n\nconst OPERATOR_NAME = \"HideIfNoChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes with no children if they have a `hideIfNoChildren` handling param.\n *\n * @internal\n */\nexport function createHideIfNoChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${createNodeIdentifierForLogging(n)}` }));\n // split input into 3 pieces:\n // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)\n // - `determinedChildren` - nodes with the flag and known children\n // - `undeterminedChildren` - nodes with the flag and unknown children\n const [needsHide, doesntNeedHide] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideIfNoChildren,\n );\n const [determinedChildren, undeterminedChildren] = partition(needsHide, (n) => n.children !== undefined);\n return merge(\n doesntNeedHide.pipe(log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: doesn't need hide` })),\n merge(\n determinedChildren.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, has children` }),\n ),\n undeterminedChildren.pipe(\n log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, needs children` }),\n mergeMap(\n (n) =>\n defer(() => {\n doLog({\n category: LOGGING_NAMESPACE,\n message: /* c8 ignore next */ () => `${createNodeIdentifierForLogging(n)}: requesting children flag`,\n });\n return hasNodes(n).pipe(\n log({\n category: LOGGING_NAMESPACE,\n message: /* c8 ignore next */ (childrenFlag) => `${createNodeIdentifierForLogging(n)}: determined children: ${childrenFlag}`,\n }),\n map((children) => Object.assign(n, { children })),\n );\n }),\n // Sending child check requests for all nodes without any limit greatly slows down\n // the following case:\n // - NodeX (determining children) -> ... lots of children with \"hide if no children\" -> ...\n // We check the nodes with \"hide if no children\" at most 2 at a time to prefer going deep into\n // the hierarchy, where we're more likely to find an answer, rather than going wide.\n 2,\n ),\n log({\n category: LOGGING_NAMESPACE,\n message: /* c8 ignore next */ (n) => `${createNodeIdentifierForLogging(n)}: needs hide, determined children: ${hasChildren(n)}`,\n }),\n ),\n ).pipe(filter(hasChildren)),\n ).pipe(log({ category: LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${createNodeIdentifierForLogging(n)}` }));\n };\n}\n"]}
1
+ {"version":3,"file":"HideIfNoChildren.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideIfNoChildren.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { defer, filter, map, merge, mergeMap, Observable } from \"rxjs\";\nimport {\n createNodeIdentifierForLogging,\n createOperatorLoggingNamespace,\n hasChildren,\n LOGGING_NAMESPACE_INTERNAL,\n} from \"../../internal/Common.js\";\nimport { doLog, log } from \"../../internal/LoggingUtils.js\";\nimport { partition } from \"../../internal/operators/Partition.js\";\nimport {\n ProcessedGenericHierarchyNode,\n ProcessedHierarchyNode,\n ProcessedInstanceHierarchyNode,\n} from \"../IModelHierarchyNode.js\";\n\n// cspell:words doesnt\n\nconst OPERATOR_NAME = \"HideIfNoChildren\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes with no children if they have a `hideIfNoChildren` handling param.\n *\n * @internal\n */\nexport function createHideIfNoChildrenOperator(hasNodes: (node: ProcessedHierarchyNode) => Observable<boolean>) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n );\n // split input into 3 pieces:\n // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)\n // - `determinedChildren` - nodes with the flag and known children\n // - `undeterminedChildren` - nodes with the flag and unknown children\n const [needsHide, doesntNeedHide] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) &&\n !!n.processingParams?.hideIfNoChildren,\n );\n const [determinedChildren, undeterminedChildren] = partition(needsHide, (n) => n.children !== undefined);\n return merge(\n doesntNeedHide.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `${createNodeIdentifierForLogging(n)}: doesn't need hide` }),\n ),\n merge(\n determinedChildren.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)}: needs hide, has children`,\n }),\n ),\n undeterminedChildren.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)}: needs hide, needs children`,\n }),\n mergeMap(\n (n) =>\n defer(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE,\n message: () => `${createNodeIdentifierForLogging(n)}: requesting children flag`,\n });\n return hasNodes(n).pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (childrenFlag) =>\n `${createNodeIdentifierForLogging(n)}: determined children: ${childrenFlag}`,\n }),\n map((children) => Object.assign(n, { children })),\n );\n }),\n // Sending child check requests for all nodes without any limit greatly slows down\n // the following case:\n // - NodeX (determining children) -> ... lots of children with \"hide if no children\" -> ...\n // We check the nodes with \"hide if no children\" at most 2 at a time to prefer going deep into\n // the hierarchy, where we're more likely to find an answer, rather than going wide.\n 2,\n ),\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)}: needs hide, determined children: ${hasChildren(n)}`,\n }),\n ),\n ).pipe(filter(hasChildren)),\n ).pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HideNodesInHierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0E,UAAU,EAAQ,MAAM,MAAM,CAAC;AAOhH,OAAO,EAAiC,sBAAsB,EAAkC,MAAM,2BAA2B,CAAC;AAIlI,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,UAAU,CAAC,sBAAsB,CAAC,EACpF,gBAAgB,EAAE,OAAO,WAED,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAqEhG"}
1
+ {"version":3,"file":"HideNodesInHierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0E,UAAU,EAAQ,MAAM,MAAM,CAAC;AAYhH,OAAO,EAEL,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAInC,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,QAA4E,CAAC;AAE3G;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,UAAU,CAAC,sBAAsB,CAAC,EACpF,gBAAgB,EAAE,OAAO,IAER,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAG,UAAU,CAAC,sBAAsB,CAAC,CAiFhG"}
@@ -25,12 +25,17 @@ exports.LOGGING_NAMESPACE = (0, Common_js_1.createOperatorLoggingNamespace)(OPER
25
25
  */
26
26
  function createHideNodesInHierarchyOperator(getNodes, stopOnFirstChild) {
27
27
  return function (nodes) {
28
- const inputNodes = nodes.pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
29
- const [withFlag, withoutFlag] = (0, Partition_js_1.partition)(inputNodes, (n) => (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_js_1.ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideInHierarchy);
28
+ const inputNodes = nodes.pipe(
29
+ /* v8 ignore next -- @preserve */
30
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `in: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
31
+ const [withFlag, withoutFlag] = (0, Partition_js_1.partition)(inputNodes, (n) => (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGeneric(n) || IModelHierarchyNode_js_1.ProcessedHierarchyNode.isInstancesNode(n)) &&
32
+ !!n.processingParams?.hideInHierarchy);
30
33
  // Defer to create a new seed for reduce on every subscribe
31
- const withLoadedChildren = (0, rxjs_1.defer)(() => withFlag.pipe((0, LoggingUtils_js_1.log)({
34
+ const withLoadedChildren = (0, rxjs_1.defer)(() => withFlag.pipe(
35
+ /* v8 ignore next -- @preserve */
36
+ (0, LoggingUtils_js_1.log)({
32
37
  category: exports.LOGGING_NAMESPACE,
33
- message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)} needs hide and needs children to be loaded`,
38
+ message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)} needs hide and needs children to be loaded`,
34
39
  }), (0, rxjs_1.filter)((node) => node.children !== false), (0, ReduceToMergeMap_js_1.reduceToMergeMapItem)((node) => createMergeMapKey(node), (node, mergedNode) => {
35
40
  if (mergedNode) {
36
41
  if (IModelHierarchyNode_js_1.ProcessedHierarchyNode.isGeneric(mergedNode)) {
@@ -41,22 +46,33 @@ function createHideNodesInHierarchyOperator(getNodes, stopOnFirstChild) {
41
46
  return (0, Utils_js_1.mergeInstanceNodes)(mergedNode, node);
42
47
  }
43
48
  return node;
44
- }), (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (mm) => `created a merge map of size ${mm.size}` }), (0, rxjs_1.mergeMap)((mm) => [...mm.values()].map((mergedNode) => (0, rxjs_1.defer)(() => getNodes(mergedNode)))), (0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((n) => n)));
45
- return (0, rxjs_1.merge)(withoutFlag.pipe((0, LoggingUtils_js_1.log)({
49
+ }),
50
+ /* v8 ignore next -- @preserve */
51
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (mm) => `created a merge map of size ${mm.size}` }), (0, rxjs_1.mergeMap)((mm) => [...mm.values()].map((mergedNode) => (0, rxjs_1.defer)(() => getNodes(mergedNode)))), (0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((n) => n)));
52
+ return (0, rxjs_1.merge)(withoutFlag.pipe(
53
+ /* v8 ignore next -- @preserve */
54
+ (0, LoggingUtils_js_1.log)({
46
55
  category: exports.LOGGING_NAMESPACE,
47
- message: /* c8 ignore next */ (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)} doesn't need hide, return the node`,
56
+ message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)} doesn't need hide, return the node`,
48
57
  })), stopOnFirstChild
49
58
  ? (0, rxjs_1.concat)(
50
59
  // a small hack to handle situation when we're here to only check if parent node has children and one of them has `hideIfNoChildren` flag
51
60
  // with a `hasChildren = true` - we just return the hidden node itself in that case to avoid digging deeper into the hierarchy
52
- inputNodes.pipe((0, rxjs_1.filter)(Common_js_1.hasChildren), (0, LoggingUtils_js_1.log)({
61
+ inputNodes.pipe((0, rxjs_1.filter)(Common_js_1.hasChildren),
62
+ /* v8 ignore next -- @preserve */
63
+ (0, LoggingUtils_js_1.log)({
53
64
  category: exports.LOGGING_NAMESPACE,
54
- message: /* c8 ignore next */ (n) => `\`stopOnFirstChild = true\` and node ${(0, Common_js_1.createNodeIdentifierForLogging)(n)} is set to always have nodes - return the hidden node without loading children`,
55
- })), rxjs_1.EMPTY.pipe((0, rxjs_1.finalize)(() => (0, LoggingUtils_js_1.doLog)({
56
- category: exports.LOGGING_NAMESPACE,
57
- message: /* c8 ignore next */ () => `\`stopOnFirstChild = true\` but none of the nodes had children determined to \`true\` - do load children`,
58
- }))), withLoadedChildren).pipe((0, rxjs_1.take)(1))
59
- : withLoadedChildren).pipe((0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: /* c8 ignore next */ (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
65
+ message: (n) => `\`stopOnFirstChild = true\` and node ${(0, Common_js_1.createNodeIdentifierForLogging)(n)} is set to always have nodes - return the hidden node without loading children`,
66
+ })), rxjs_1.EMPTY.pipe((0, rxjs_1.finalize)(() => {
67
+ /* v8 ignore next -- @preserve */
68
+ (0, LoggingUtils_js_1.doLog)({
69
+ category: exports.LOGGING_NAMESPACE,
70
+ message: () => `\`stopOnFirstChild = true\` but none of the nodes had children determined to \`true\` - do load children`,
71
+ });
72
+ })), withLoadedChildren).pipe((0, rxjs_1.take)(1))
73
+ : withLoadedChildren).pipe(
74
+ /* v8 ignore next -- @preserve */
75
+ (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `out: ${(0, Common_js_1.createNodeIdentifierForLogging)(n)}` }));
60
76
  };
61
77
  }
62
78
  function createMergeMapKey(node) {