@itwin/presentation-hierarchies 1.7.12 → 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 (162) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +13 -6
  3. package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +1 -1
  4. package/lib/cjs/hierarchies/HierarchyFiltering.js +18 -10
  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.map +1 -1
  8. package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  9. package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
  10. package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
  11. package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
  12. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
  13. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js +16 -7
  14. package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
  15. package/lib/cjs/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  16. package/lib/cjs/hierarchies/imodel/HierarchyCache.js +1 -4
  17. package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
  18. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  19. package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  20. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  21. package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  22. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  23. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +28 -26
  24. package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  25. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  26. package/lib/cjs/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  27. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  28. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +13 -44
  29. package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  30. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  31. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  32. package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  33. package/lib/cjs/hierarchies/imodel/Utils.d.ts.map +1 -1
  34. package/lib/cjs/hierarchies/imodel/Utils.js +19 -7
  35. package/lib/cjs/hierarchies/imodel/Utils.js.map +1 -1
  36. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  37. package/lib/cjs/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  38. package/lib/cjs/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  39. package/lib/cjs/hierarchies/imodel/operators/Grouping.js +5 -5
  40. package/lib/cjs/hierarchies/imodel/operators/Grouping.js.map +1 -1
  41. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  42. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js +10 -3
  43. package/lib/cjs/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  44. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  45. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js +2 -1
  46. package/lib/cjs/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  47. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  48. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +1 -4
  49. package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  50. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  51. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +2 -8
  52. package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  53. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  54. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  55. package/lib/cjs/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  56. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  57. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  58. package/lib/cjs/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  59. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  60. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +20 -22
  61. package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  62. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  63. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  64. package/lib/cjs/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  65. package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
  66. package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
  67. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  68. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  69. package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  70. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  71. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js +1 -4
  72. package/lib/cjs/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  73. package/lib/cjs/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  74. package/lib/cjs/hierarchies/internal/operators/Partition.js.map +1 -1
  75. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  76. package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  77. package/lib/cjs/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  78. package/lib/cjs/presentation-hierarchies.d.ts +2 -2
  79. package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
  80. package/lib/cjs/presentation-hierarchies.js.map +1 -1
  81. package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +1 -1
  82. package/lib/esm/hierarchies/HierarchyFiltering.js +18 -10
  83. package/lib/esm/hierarchies/HierarchyFiltering.js.map +1 -1
  84. package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
  85. package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
  86. package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
  87. package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
  88. package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
  89. package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
  90. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +1 -1
  91. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js +17 -8
  92. package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +1 -1
  93. package/lib/esm/hierarchies/imodel/HierarchyCache.d.ts.map +1 -1
  94. package/lib/esm/hierarchies/imodel/HierarchyCache.js +1 -4
  95. package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
  96. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
  97. package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
  98. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
  99. package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
  100. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
  101. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +29 -27
  102. package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
  103. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.d.ts.map +1 -1
  104. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js +1 -1
  105. package/lib/esm/hierarchies/imodel/LimitingECSqlQueryExecutor.js.map +1 -1
  106. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
  107. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +13 -44
  108. package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
  109. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
  110. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js +2 -1
  111. package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
  112. package/lib/esm/hierarchies/imodel/Utils.d.ts.map +1 -1
  113. package/lib/esm/hierarchies/imodel/Utils.js +19 -7
  114. package/lib/esm/hierarchies/imodel/Utils.js.map +1 -1
  115. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.d.ts.map +1 -1
  116. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js +1 -1
  117. package/lib/esm/hierarchies/imodel/operators/DetermineChildren.js.map +1 -1
  118. package/lib/esm/hierarchies/imodel/operators/Grouping.d.ts.map +1 -1
  119. package/lib/esm/hierarchies/imodel/operators/Grouping.js +6 -6
  120. package/lib/esm/hierarchies/imodel/operators/Grouping.js.map +1 -1
  121. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.d.ts.map +1 -1
  122. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js +12 -5
  123. package/lib/esm/hierarchies/imodel/operators/HideIfNoChildren.js.map +1 -1
  124. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.d.ts.map +1 -1
  125. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js +4 -3
  126. package/lib/esm/hierarchies/imodel/operators/HideNodesInHierarchy.js.map +1 -1
  127. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.d.ts.map +1 -1
  128. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js +2 -5
  129. package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
  130. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
  131. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +2 -8
  132. package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
  133. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.d.ts.map +1 -1
  134. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js +1 -5
  135. package/lib/esm/hierarchies/imodel/operators/grouping/GroupHiding.js.map +1 -1
  136. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.d.ts.map +1 -1
  137. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js +2 -10
  138. package/lib/esm/hierarchies/imodel/operators/grouping/LabelGrouping.js.map +1 -1
  139. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
  140. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js +20 -22
  141. package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
  142. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.d.ts.map +1 -1
  143. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js +3 -1
  144. package/lib/esm/hierarchies/imodel/operators/grouping/Shared.js.map +1 -1
  145. package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
  146. package/lib/esm/hierarchies/internal/Common.js.map +1 -1
  147. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
  148. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +3 -1
  149. package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
  150. package/lib/esm/hierarchies/internal/SubscriptionScheduler.d.ts.map +1 -1
  151. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js +1 -4
  152. package/lib/esm/hierarchies/internal/SubscriptionScheduler.js.map +1 -1
  153. package/lib/esm/hierarchies/internal/operators/Partition.d.ts.map +1 -1
  154. package/lib/esm/hierarchies/internal/operators/Partition.js.map +1 -1
  155. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
  156. package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
  157. package/lib/esm/hierarchies/internal/operators/ReleaseMainThread.d.ts.map +1 -1
  158. package/lib/esm/presentation-hierarchies.d.ts +2 -2
  159. package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
  160. package/lib/esm/presentation-hierarchies.js +2 -2
  161. package/lib/esm/presentation-hierarchies.js.map +1 -1
  162. package/package.json +11 -11
@@ -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,CAgEhG"}
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"}
@@ -29,15 +29,22 @@ function createHideIfNoChildrenOperator(hasNodes) {
29
29
  // - `doesntNeedHide` - nodes without the flag (return no matter if they have children or not)
30
30
  // - `determinedChildren` - nodes with the flag and known children
31
31
  // - `undeterminedChildren` - nodes with the flag and unknown children
32
- 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);
33
34
  const [determinedChildren, undeterminedChildren] = (0, Partition_js_1.partition)(needsHide, (n) => n.children !== undefined);
34
35
  return (0, rxjs_1.merge)(doesntNeedHide.pipe(
35
36
  /* v8 ignore next -- @preserve */
36
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(
37
38
  /* v8 ignore next -- @preserve */
38
- (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, has children` })), undeterminedChildren.pipe(
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(
39
43
  /* v8 ignore next -- @preserve */
40
- (0, LoggingUtils_js_1.log)({ category: exports.LOGGING_NAMESPACE, message: (n) => `${(0, Common_js_1.createNodeIdentifierForLogging)(n)}: needs hide, needs children` }), (0, rxjs_1.mergeMap)((n) => (0, rxjs_1.defer)(() => {
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)(() => {
41
48
  /* v8 ignore next -- @preserve */
42
49
  (0, LoggingUtils_js_1.doLog)({
43
50
  category: exports.LOGGING_NAMESPACE,
@@ -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(\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.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({ category: LOGGING_NAMESPACE, message: (n) => `${createNodeIdentifierForLogging(n)}: needs hide, has children` }),\n ),\n undeterminedChildren.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `${createNodeIdentifierForLogging(n)}: needs hide, needs children` }),\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) => `${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
+ {"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,CA+EhG"}
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"}
@@ -28,7 +28,8 @@ function createHideNodesInHierarchyOperator(getNodes, stopOnFirstChild) {
28
28
  const inputNodes = nodes.pipe(
29
29
  /* v8 ignore next -- @preserve */
30
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)) && !!n.processingParams?.hideInHierarchy);
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);
32
33
  // Defer to create a new seed for reduce on every subscribe
33
34
  const withLoadedChildren = (0, rxjs_1.defer)(() => withFlag.pipe(
34
35
  /* v8 ignore next -- @preserve */
@@ -1 +1 @@
1
- {"version":3,"file":"HideNodesInHierarchy.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concat, defer, EMPTY, filter, finalize, map, merge, mergeAll, mergeMap, Observable, take } from \"rxjs\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { GenericNodeKey, HierarchyNodeKey, InstancesNodeKey } from \"../../HierarchyNodeKey.js\";\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 { reduceToMergeMapItem } from \"../../internal/operators/ReduceToMergeMap.js\";\nimport { ProcessedGenericHierarchyNode, ProcessedHierarchyNode, ProcessedInstanceHierarchyNode } from \"../IModelHierarchyNode.js\";\nimport { mergeInstanceNodes } from \"../Utils.js\";\n\nconst OPERATOR_NAME = \"HideNodesInHierarchy\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes and instead returns their children if the nodes have a `hideInHierarchy` handling param.\n *\n * @internal\n */\nexport function createHideNodesInHierarchyOperator(\n getNodes: (parentNode: ProcessedHierarchyNode) => Observable<ProcessedHierarchyNode>,\n stopOnFirstChild: boolean,\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n );\n const [withFlag, withoutFlag] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) && !!n.processingParams?.hideInHierarchy,\n );\n // Defer to create a new seed for reduce on every subscribe\n const withLoadedChildren = defer(() =>\n withFlag.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)} needs hide and needs children to be loaded`,\n }),\n filter((node) => node.children !== false),\n reduceToMergeMapItem(\n (node) => createMergeMapKey(node),\n (node, mergedNode: ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode | undefined) => {\n if (mergedNode) {\n if (ProcessedHierarchyNode.isGeneric(mergedNode)) {\n // we don't merge generic nodes, just return the first one\n return mergedNode;\n }\n assert(ProcessedHierarchyNode.isInstancesNode(node));\n return mergeInstanceNodes(mergedNode, node);\n }\n return node;\n },\n ),\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (mm) => `created a merge map of size ${mm.size}` }),\n mergeMap((mm) => [...mm.values()].map((mergedNode) => defer(() => getNodes(mergedNode)))),\n mergeAll(),\n map((n): ProcessedHierarchyNode => n),\n ),\n );\n\n return merge(\n withoutFlag.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)} doesn't need hide, return the node`,\n }),\n ),\n stopOnFirstChild\n ? concat(\n // a small hack to handle situation when we're here to only check if parent node has children and one of them has `hideIfNoChildren` flag\n // with a `hasChildren = true` - we just return the hidden node itself in that case to avoid digging deeper into the hierarchy\n inputNodes.pipe(\n filter(hasChildren),\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) =>\n `\\`stopOnFirstChild = true\\` and node ${createNodeIdentifierForLogging(n)} is set to always have nodes - return the hidden node without loading children`,\n }),\n ),\n EMPTY.pipe(\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE,\n message: () => `\\`stopOnFirstChild = true\\` but none of the nodes had children determined to \\`true\\` - do load children`,\n });\n }),\n ),\n withLoadedChildren,\n ).pipe(take(1))\n : withLoadedChildren,\n ).pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n\nfunction createMergeMapKey<TNode extends { key: InstancesNodeKey | GenericNodeKey }>(node: TNode): string {\n if (HierarchyNodeKey.isGeneric(node.key)) {\n return `${node.key.source ? `${node.key.source}:` : \"\"}${node.key.id}`;\n }\n return node.key.instanceKeys[0].className;\n}\n"]}
1
+ {"version":3,"file":"HideNodesInHierarchy.js","sourceRoot":"","sources":["../../../../../src/hierarchies/imodel/operators/HideNodesInHierarchy.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { concat, defer, EMPTY, filter, finalize, map, merge, mergeAll, mergeMap, Observable, take } from \"rxjs\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { GenericNodeKey, HierarchyNodeKey, InstancesNodeKey } from \"../../HierarchyNodeKey.js\";\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 { reduceToMergeMapItem } from \"../../internal/operators/ReduceToMergeMap.js\";\nimport {\n ProcessedGenericHierarchyNode,\n ProcessedHierarchyNode,\n ProcessedInstanceHierarchyNode,\n} from \"../IModelHierarchyNode.js\";\nimport { mergeInstanceNodes } from \"../Utils.js\";\n\nconst OPERATOR_NAME = \"HideNodesInHierarchy\";\n/** @internal */\nexport const LOGGING_NAMESPACE = createOperatorLoggingNamespace(OPERATOR_NAME, LOGGING_NAMESPACE_INTERNAL);\n\n/**\n * Creates an operator that hides nodes and instead returns their children if the nodes have a `hideInHierarchy` handling param.\n *\n * @internal\n */\nexport function createHideNodesInHierarchyOperator(\n getNodes: (parentNode: ProcessedHierarchyNode) => Observable<ProcessedHierarchyNode>,\n stopOnFirstChild: boolean,\n) {\n return function (nodes: Observable<ProcessedHierarchyNode>): Observable<ProcessedHierarchyNode> {\n const inputNodes = nodes.pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `in: ${createNodeIdentifierForLogging(n)}` }),\n );\n const [withFlag, withoutFlag] = partition(\n inputNodes,\n (n): n is ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode =>\n (ProcessedHierarchyNode.isGeneric(n) || ProcessedHierarchyNode.isInstancesNode(n)) &&\n !!n.processingParams?.hideInHierarchy,\n );\n // Defer to create a new seed for reduce on every subscribe\n const withLoadedChildren = defer(() =>\n withFlag.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)} needs hide and needs children to be loaded`,\n }),\n filter((node) => node.children !== false),\n reduceToMergeMapItem(\n (node) => createMergeMapKey(node),\n (node, mergedNode: ProcessedGenericHierarchyNode | ProcessedInstanceHierarchyNode | undefined) => {\n if (mergedNode) {\n if (ProcessedHierarchyNode.isGeneric(mergedNode)) {\n // we don't merge generic nodes, just return the first one\n return mergedNode;\n }\n assert(ProcessedHierarchyNode.isInstancesNode(node));\n return mergeInstanceNodes(mergedNode, node);\n }\n return node;\n },\n ),\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (mm) => `created a merge map of size ${mm.size}` }),\n mergeMap((mm) => [...mm.values()].map((mergedNode) => defer(() => getNodes(mergedNode)))),\n mergeAll(),\n map((n): ProcessedHierarchyNode => n),\n ),\n );\n\n return merge(\n withoutFlag.pipe(\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) => `${createNodeIdentifierForLogging(n)} doesn't need hide, return the node`,\n }),\n ),\n stopOnFirstChild\n ? concat(\n // a small hack to handle situation when we're here to only check if parent node has children and one of them has `hideIfNoChildren` flag\n // with a `hasChildren = true` - we just return the hidden node itself in that case to avoid digging deeper into the hierarchy\n inputNodes.pipe(\n filter(hasChildren),\n /* v8 ignore next -- @preserve */\n log({\n category: LOGGING_NAMESPACE,\n message: (n) =>\n `\\`stopOnFirstChild = true\\` and node ${createNodeIdentifierForLogging(n)} is set to always have nodes - return the hidden node without loading children`,\n }),\n ),\n EMPTY.pipe(\n finalize(() => {\n /* v8 ignore next -- @preserve */\n doLog({\n category: LOGGING_NAMESPACE,\n message: () =>\n `\\`stopOnFirstChild = true\\` but none of the nodes had children determined to \\`true\\` - do load children`,\n });\n }),\n ),\n withLoadedChildren,\n ).pipe(take(1))\n : withLoadedChildren,\n ).pipe(\n /* v8 ignore next -- @preserve */\n log({ category: LOGGING_NAMESPACE, message: (n) => `out: ${createNodeIdentifierForLogging(n)}` }),\n );\n };\n}\n\nfunction createMergeMapKey<TNode extends { key: InstancesNodeKey | GenericNodeKey }>(node: TNode): string {\n if (HierarchyNodeKey.isGeneric(node.key)) {\n return `${node.key.source ? `${node.key.source}:` : \"\"}${node.key.id}`;\n }\n return node.key.instanceKeys[0].className;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,EAAE,EAAE,yBAAyB,EAAE,gBAAgB,EAAY,MAAM,4BAA4B,CAAC;AACnJ,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAExE,gBAAgB;AAChB,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAyBrB;AAED,gBAAgB;AAChB,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,8BAA8B,EAAE,EACvC,WAAW,EAAE,EAAE,CAAC,KAAK,EACrB,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAsCD,gBAAgB;AAChB,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,CAG5B"}
1
+ {"version":3,"file":"BaseClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,EAAE,EACF,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAExE,gBAAgB;AAChB,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CA2BrB;AAED,gBAAgB;AAChB,wBAAsB,uCAAuC,CAC3D,KAAK,EAAE,8BAA8B,EAAE,EACvC,WAAW,EAAE,EAAE,CAAC,KAAK,EACrB,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CAwChC;AAsCD,gBAAgB;AAChB,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,CAK5B"}
@@ -58,10 +58,7 @@ async function createBaseClassGroupsForSingleBaseClass(nodes, baseECClass, class
58
58
  }
59
59
  const result = { grouped: [], ungrouped: ungroupedNodes, groupingType: "base-class" };
60
60
  if (groupedNodes.length > 0) {
61
- const groupingNodeKey = {
62
- type: "class-grouping",
63
- className: baseClassFullName,
64
- };
61
+ const groupingNodeKey = { type: "class-grouping", className: baseClassFullName };
65
62
  result.grouped.push({
66
63
  label: baseECClass.label ?? baseECClass.name,
67
64
  key: groupingNodeKey,
@@ -1 +1 @@
1
- {"version":3,"file":"BaseClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { createMainThreadReleaseOnTimePassedHandler, EC, ECClassHierarchyInspector, ECSchemaProvider, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { GroupingHandler, GroupingHandlerResult } from \"../Grouping.js\";\n\n/** @internal */\nexport async function getBaseClassGroupingECClasses(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<EC.Class[]> {\n // Get all base class names that are provided in the grouping information\n const baseClassesFullClassNames = await getGroupingBaseClassNames(nodes);\n if (baseClassesFullClassNames.size === 0) {\n return [];\n }\n\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = [];\n for (const fullName of baseClassesFullClassNames) {\n await releaseMainThread();\n baseClasses.push(await getClass(schemaProvider, fullName));\n }\n const sortedClasses = await sortByBaseClass(baseClasses.filter((baseClass) => baseClass.isRelationshipClass() || baseClass.isEntityClass()));\n\n if (parentNode && HierarchyNode.isClassGroupingNode(parentNode)) {\n // if we have a class grouping node, we can cut the front of sortedClasses up to a point where our grouping class is\n const cutPosition = sortedClasses.findIndex((c) => c.fullName === parentNode.key.className);\n if (cutPosition >= 0) {\n return sortedClasses.slice(cutPosition + 1);\n }\n return [];\n }\n\n return sortedClasses;\n}\n\n/** @internal */\nexport async function createBaseClassGroupsForSingleBaseClass(\n nodes: ProcessedInstanceHierarchyNode[],\n baseECClass: EC.Class,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<GroupingHandlerResult> {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const groupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const ungroupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const baseClassFullName = baseECClass.fullName;\n for (const node of nodes) {\n await releaseMainThread();\n if (\n !node.processingParams?.grouping?.byBaseClasses ||\n !node.processingParams.grouping.byBaseClasses.fullClassNames.some((className) => className === baseClassFullName)\n ) {\n ungroupedNodes.push(node);\n continue;\n }\n const fullCurrentNodeClassName = node.key.instanceKeys[0].className;\n\n const baseCheckerResult = classHierarchyInspector.classDerivesFrom(fullCurrentNodeClassName, baseClassFullName);\n\n const isCurrentNodeClassOfBase = baseCheckerResult instanceof Promise ? await baseCheckerResult : /* v8 ignore next */ baseCheckerResult;\n\n if (isCurrentNodeClassOfBase) {\n groupedNodes.push(node);\n } else {\n ungroupedNodes.push(node);\n }\n }\n\n const result: GroupingHandlerResult = { grouped: [], ungrouped: ungroupedNodes, groupingType: \"base-class\" };\n if (groupedNodes.length > 0) {\n const groupingNodeKey: ClassGroupingNodeKey = {\n type: \"class-grouping\",\n className: baseClassFullName,\n };\n result.grouped.push({\n label: baseECClass.label ?? baseECClass.name,\n key: groupingNodeKey,\n parentKeys: [...groupedNodes[0].parentKeys],\n groupedInstanceKeys: groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: groupedNodes.map((gn) => Object.assign(gn, { parentKeys: [...gn.parentKeys, groupingNodeKey] })),\n });\n }\n return result;\n}\n\nasync function getGroupingBaseClassNames(nodes: ProcessedInstanceHierarchyNode[]) {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = new Set<string>();\n for (const node of nodes) {\n await releaseMainThread();\n if (node.processingParams?.grouping?.byBaseClasses) {\n for (const className of node.processingParams.grouping.byBaseClasses.fullClassNames) {\n baseClasses.add(className);\n }\n }\n }\n return baseClasses;\n}\n\nasync function sortByBaseClass(classes: EC.Class[]): Promise<EC.Class[]> {\n if (classes.length === 0) {\n return classes;\n }\n const output: EC.Class[] = [classes[0]];\n for (let inputIndex = 1; inputIndex < classes.length; ++inputIndex) {\n let wasAdded = false;\n for (let outputIndex = output.length - 1; outputIndex >= 0; --outputIndex) {\n if (await classes[inputIndex].is(output[outputIndex])) {\n output.splice(outputIndex + 1, 0, classes[inputIndex]);\n wasAdded = true;\n break;\n }\n }\n if (!wasAdded) {\n output.splice(0, 0, classes[inputIndex]);\n }\n }\n\n return output;\n}\n\n/** @internal */\nexport async function createBaseClassGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandler[]> {\n const baseClassGroupingECClasses = await getBaseClassGroupingECClasses(imodelAccess, parentNode, nodes);\n return baseClassGroupingECClasses.map((baseECClass) => async (allNodes) => createBaseClassGroupsForSingleBaseClass(allNodes, baseECClass, imodelAccess));\n}\n"]}
1
+ {"version":3,"file":"BaseClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/BaseClassGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport {\n createMainThreadReleaseOnTimePassedHandler,\n EC,\n ECClassHierarchyInspector,\n ECSchemaProvider,\n getClass,\n} from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { GroupingHandler, GroupingHandlerResult } from \"../Grouping.js\";\n\n/** @internal */\nexport async function getBaseClassGroupingECClasses(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<EC.Class[]> {\n // Get all base class names that are provided in the grouping information\n const baseClassesFullClassNames = await getGroupingBaseClassNames(nodes);\n if (baseClassesFullClassNames.size === 0) {\n return [];\n }\n\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = [];\n for (const fullName of baseClassesFullClassNames) {\n await releaseMainThread();\n baseClasses.push(await getClass(schemaProvider, fullName));\n }\n const sortedClasses = await sortByBaseClass(\n baseClasses.filter((baseClass) => baseClass.isRelationshipClass() || baseClass.isEntityClass()),\n );\n\n if (parentNode && HierarchyNode.isClassGroupingNode(parentNode)) {\n // if we have a class grouping node, we can cut the front of sortedClasses up to a point where our grouping class is\n const cutPosition = sortedClasses.findIndex((c) => c.fullName === parentNode.key.className);\n if (cutPosition >= 0) {\n return sortedClasses.slice(cutPosition + 1);\n }\n return [];\n }\n\n return sortedClasses;\n}\n\n/** @internal */\nexport async function createBaseClassGroupsForSingleBaseClass(\n nodes: ProcessedInstanceHierarchyNode[],\n baseECClass: EC.Class,\n classHierarchyInspector: ECClassHierarchyInspector,\n): Promise<GroupingHandlerResult> {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const groupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const ungroupedNodes = new Array<ProcessedInstanceHierarchyNode>();\n const baseClassFullName = baseECClass.fullName;\n for (const node of nodes) {\n await releaseMainThread();\n if (\n !node.processingParams?.grouping?.byBaseClasses ||\n !node.processingParams.grouping.byBaseClasses.fullClassNames.some((className) => className === baseClassFullName)\n ) {\n ungroupedNodes.push(node);\n continue;\n }\n const fullCurrentNodeClassName = node.key.instanceKeys[0].className;\n\n const baseCheckerResult = classHierarchyInspector.classDerivesFrom(fullCurrentNodeClassName, baseClassFullName);\n\n const isCurrentNodeClassOfBase =\n baseCheckerResult instanceof Promise ? await baseCheckerResult : /* v8 ignore next */ baseCheckerResult;\n\n if (isCurrentNodeClassOfBase) {\n groupedNodes.push(node);\n } else {\n ungroupedNodes.push(node);\n }\n }\n\n const result: GroupingHandlerResult = { grouped: [], ungrouped: ungroupedNodes, groupingType: \"base-class\" };\n if (groupedNodes.length > 0) {\n const groupingNodeKey: ClassGroupingNodeKey = { type: \"class-grouping\", className: baseClassFullName };\n result.grouped.push({\n label: baseECClass.label ?? baseECClass.name,\n key: groupingNodeKey,\n parentKeys: [...groupedNodes[0].parentKeys],\n groupedInstanceKeys: groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: groupedNodes.map((gn) => Object.assign(gn, { parentKeys: [...gn.parentKeys, groupingNodeKey] })),\n });\n }\n return result;\n}\n\nasync function getGroupingBaseClassNames(nodes: ProcessedInstanceHierarchyNode[]) {\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n const baseClasses = new Set<string>();\n for (const node of nodes) {\n await releaseMainThread();\n if (node.processingParams?.grouping?.byBaseClasses) {\n for (const className of node.processingParams.grouping.byBaseClasses.fullClassNames) {\n baseClasses.add(className);\n }\n }\n }\n return baseClasses;\n}\n\nasync function sortByBaseClass(classes: EC.Class[]): Promise<EC.Class[]> {\n if (classes.length === 0) {\n return classes;\n }\n const output: EC.Class[] = [classes[0]];\n for (let inputIndex = 1; inputIndex < classes.length; ++inputIndex) {\n let wasAdded = false;\n for (let outputIndex = output.length - 1; outputIndex >= 0; --outputIndex) {\n if (await classes[inputIndex].is(output[outputIndex])) {\n output.splice(outputIndex + 1, 0, classes[inputIndex]);\n wasAdded = true;\n break;\n }\n }\n if (!wasAdded) {\n output.splice(0, 0, classes[inputIndex]);\n }\n }\n\n return output;\n}\n\n/** @internal */\nexport async function createBaseClassGroupingHandlers(\n imodelAccess: ECSchemaProvider & ECClassHierarchyInspector,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandler[]> {\n const baseClassGroupingECClasses = await getBaseClassGroupingECClasses(imodelAccess, parentNode, nodes);\n return baseClassGroupingECClasses.map(\n (baseECClass) => async (allNodes) => createBaseClassGroupsForSingleBaseClass(allNodes, baseECClass, imodelAccess),\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,gBAAgB,EAAY,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAahG,gBAAgB;AAChB,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAuBhC"}
1
+ {"version":3,"file":"ClassGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8C,gBAAgB,EAAY,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAahG,gBAAgB;AAChB,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAqBhC"}
@@ -19,10 +19,7 @@ async function createClassGroups(schemaProvider, parentNode, nodes) {
19
19
  let groupingInfo = groupings.grouped.get(nodeClassName);
20
20
  if (!groupingInfo) {
21
21
  const nodeClass = await (0, presentation_shared_1.getClass)(schemaProvider, nodeClassName);
22
- groupingInfo = {
23
- class: nodeClass,
24
- groupedNodes: [],
25
- };
22
+ groupingInfo = { class: nodeClass, groupedNodes: [] };
26
23
  groupings.grouped.set(nodeClassName, groupingInfo);
27
24
  }
28
25
  groupingInfo.groupedNodes.push(node);
@@ -37,10 +34,7 @@ async function createGroupingNodes(groupings) {
37
34
  const releaseMainThread = (0, presentation_shared_1.createMainThreadReleaseOnTimePassedHandler)();
38
35
  for (const [, entry] of groupings.grouped) {
39
36
  await releaseMainThread();
40
- const groupingNodeKey = {
41
- type: "class-grouping",
42
- className: entry.class.fullName,
43
- };
37
+ const groupingNodeKey = { type: "class-grouping", className: entry.class.fullName };
44
38
  const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;
45
39
  groupedNodes.push({
46
40
  label: entry.class.label ?? entry.class.name,
@@ -1 +1 @@
1
- {"version":3,"file":"ClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { createMainThreadReleaseOnTimePassedHandler, ECSchemaProvider, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface ClassInfo {\n fullName: string;\n name: string;\n label?: string;\n}\n\ninterface ClassGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Map<string, { class: ClassInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>;\n}\n\n/** @internal */\nexport async function createClassGroups(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandlerResult> {\n const parentNodeClass = parentNode && HierarchyNode.isClassGroupingNode(parentNode) ? parentNode.key.className : undefined;\n const groupings: ClassGroupingInformation = { ungrouped: [], grouped: new Map() };\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const node of nodes) {\n await releaseMainThread();\n const nodeClassName = node.key.instanceKeys[0].className;\n if (node.processingParams?.grouping?.byClass && nodeClassName !== parentNodeClass) {\n let groupingInfo = groupings.grouped.get(nodeClassName);\n if (!groupingInfo) {\n const nodeClass = await getClass(schemaProvider, nodeClassName);\n groupingInfo = {\n class: nodeClass,\n groupedNodes: [],\n };\n groupings.grouped.set(nodeClassName, groupingInfo);\n }\n groupingInfo.groupedNodes.push(node);\n continue;\n }\n groupings.ungrouped.push(node);\n }\n return createGroupingNodes(groupings);\n}\n\nasync function createGroupingNodes(groupings: ClassGroupingInformation): Promise<GroupingHandlerResult> {\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const [, entry] of groupings.grouped) {\n await releaseMainThread();\n const groupingNodeKey: ClassGroupingNodeKey = {\n type: \"class-grouping\",\n className: entry.class.fullName,\n };\n const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;\n groupedNodes.push({\n label: entry.class.label ?? entry.class.name,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.groupedNodes.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),\n });\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"class\" };\n}\n"]}
1
+ {"version":3,"file":"ClassGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/ClassGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { createMainThreadReleaseOnTimePassedHandler, ECSchemaProvider, getClass } from \"@itwin/presentation-shared\";\nimport { HierarchyNode, ParentHierarchyNode } from \"../../../HierarchyNode.js\";\nimport { ClassGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\ninterface ClassInfo {\n fullName: string;\n name: string;\n label?: string;\n}\n\ninterface ClassGroupingInformation {\n ungrouped: ProcessedInstanceHierarchyNode[];\n grouped: Map<string, { class: ClassInfo; groupedNodes: ProcessedInstanceHierarchyNode[] }>;\n}\n\n/** @internal */\nexport async function createClassGroups(\n schemaProvider: ECSchemaProvider,\n parentNode: ParentHierarchyNode | undefined,\n nodes: ProcessedInstanceHierarchyNode[],\n): Promise<GroupingHandlerResult> {\n const parentNodeClass =\n parentNode && HierarchyNode.isClassGroupingNode(parentNode) ? parentNode.key.className : undefined;\n const groupings: ClassGroupingInformation = { ungrouped: [], grouped: new Map() };\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const node of nodes) {\n await releaseMainThread();\n const nodeClassName = node.key.instanceKeys[0].className;\n if (node.processingParams?.grouping?.byClass && nodeClassName !== parentNodeClass) {\n let groupingInfo = groupings.grouped.get(nodeClassName);\n if (!groupingInfo) {\n const nodeClass = await getClass(schemaProvider, nodeClassName);\n groupingInfo = { class: nodeClass, groupedNodes: [] };\n groupings.grouped.set(nodeClassName, groupingInfo);\n }\n groupingInfo.groupedNodes.push(node);\n continue;\n }\n groupings.ungrouped.push(node);\n }\n return createGroupingNodes(groupings);\n}\n\nasync function createGroupingNodes(groupings: ClassGroupingInformation): Promise<GroupingHandlerResult> {\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n const releaseMainThread = createMainThreadReleaseOnTimePassedHandler();\n for (const [, entry] of groupings.grouped) {\n await releaseMainThread();\n const groupingNodeKey: ClassGroupingNodeKey = { type: \"class-grouping\", className: entry.class.fullName };\n const groupedNodeParentKeys = entry.groupedNodes[0].parentKeys;\n groupedNodes.push({\n label: entry.class.label ?? entry.class.name,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.groupedNodes.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.groupedNodes.map((gn) =>\n Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] }),\n ),\n });\n }\n return { grouped: groupedNodes, ungrouped: groupings.ungrouped, groupingType: \"class\" };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupHiding.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAyD,MAAM,gBAAgB,CAAC;AAG9G,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CA+BjH"}
1
+ {"version":3,"file":"GroupHiding.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAyD,MAAM,gBAAgB,CAAC;AAG9G,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,GAAG,qBAAqB,CA2BjH"}
@@ -31,11 +31,7 @@ function applyGroupHidingParams(props, extraSiblings) {
31
31
  }
32
32
  filteredGrouped.push(node);
33
33
  }
34
- return {
35
- groupingType,
36
- grouped: filteredGrouped,
37
- ungrouped,
38
- };
34
+ return { groupingType, grouped: filteredGrouped, ungrouped };
39
35
  }
40
36
  function getHideOptionsFromNodeProcessingParams(groupingNode, groupingType) {
41
37
  let hideIfNoSiblings = false;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupHiding.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAMhG,wDA+BC;AAlCD,2CAA6D;AAE7D,gBAAgB;AAChB,SAAgB,sBAAsB,CAAC,KAA4B,EAAE,aAAqB;IACxF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,sCAAsC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,eAAe,GAAG,IAAI,KAAK,EAA2C,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,eAAe;QACxB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,sCAAsC,CAC7C,YAAqD,EACrD,YAA0B;IAE1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAA,0CAA8B,EAAC,YAAY,EAAE,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;QAC3E,IAAI,gBAAgB,IAAI,oBAAoB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,KAAK,CAAC,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACvD,oBAAoB,KAAK,CAAC,CAAC,aAAa,EAAE,oBAAoB,CAAC;QAC/D,OAAO;IACT,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AACpD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { GroupingHandlerResult, GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\nimport { iterateChildNodeGroupingParams } from \"./Shared.js\";\n\n/** @internal */\nexport function applyGroupHidingParams(props: GroupingHandlerResult, extraSiblings: number): GroupingHandlerResult {\n const { grouped, ungrouped, groupingType } = props;\n if (grouped.length === 0) {\n return props;\n }\n\n // handle the \"no siblings\" case\n if (grouped.length === 1 && ungrouped.length === 0 && extraSiblings === 0) {\n const hideParams = getHideOptionsFromNodeProcessingParams(grouped[0], groupingType);\n if (hideParams.hideIfNoSiblings) {\n return { groupingType, grouped: [], ungrouped: grouped[0].children };\n }\n }\n\n // handle the \"no children\" case\n const filteredGrouped = new Array<ProcessedInstancesGroupingHierarchyNode>();\n for (const node of grouped) {\n if (node.children.length === 1) {\n const hideParams = getHideOptionsFromNodeProcessingParams(node, groupingType);\n if (hideParams.hideIfOneGroupedNode) {\n ungrouped.push(node.children[0]);\n continue;\n }\n }\n filteredGrouped.push(node);\n }\n return {\n groupingType,\n grouped: filteredGrouped,\n ungrouped,\n };\n}\n\nfunction getHideOptionsFromNodeProcessingParams(\n groupingNode: ProcessedInstancesGroupingHierarchyNode,\n groupingType: GroupingType,\n): { hideIfNoSiblings: boolean; hideIfOneGroupedNode: boolean } {\n let hideIfNoSiblings = false;\n let hideIfOneGroupedNode = false;\n iterateChildNodeGroupingParams(groupingNode, groupingType, (groupingProps) => {\n if (hideIfNoSiblings && hideIfOneGroupedNode) {\n return true;\n }\n hideIfNoSiblings ||= !!groupingProps?.hideIfNoSiblings;\n hideIfOneGroupedNode ||= !!groupingProps?.hideIfOneGroupedNode;\n return;\n });\n return { hideIfNoSiblings, hideIfOneGroupedNode };\n}\n"]}
1
+ {"version":3,"file":"GroupHiding.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/GroupHiding.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAMhG,wDA2BC;AA9BD,2CAA6D;AAE7D,gBAAgB;AAChB,SAAgB,sBAAsB,CAAC,KAA4B,EAAE,aAAqB;IACxF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,sCAAsC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,eAAe,GAAG,IAAI,KAAK,EAA2C,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,sCAAsC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,sCAAsC,CAC7C,YAAqD,EACrD,YAA0B;IAE1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAA,0CAA8B,EAAC,YAAY,EAAE,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;QAC3E,IAAI,gBAAgB,IAAI,oBAAoB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,KAAK,CAAC,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACvD,oBAAoB,KAAK,CAAC,CAAC,aAAa,EAAE,oBAAoB,CAAC;QAC/D,OAAO;IACT,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AACpD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { GroupingHandlerResult, GroupingType, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\nimport { iterateChildNodeGroupingParams } from \"./Shared.js\";\n\n/** @internal */\nexport function applyGroupHidingParams(props: GroupingHandlerResult, extraSiblings: number): GroupingHandlerResult {\n const { grouped, ungrouped, groupingType } = props;\n if (grouped.length === 0) {\n return props;\n }\n\n // handle the \"no siblings\" case\n if (grouped.length === 1 && ungrouped.length === 0 && extraSiblings === 0) {\n const hideParams = getHideOptionsFromNodeProcessingParams(grouped[0], groupingType);\n if (hideParams.hideIfNoSiblings) {\n return { groupingType, grouped: [], ungrouped: grouped[0].children };\n }\n }\n\n // handle the \"no children\" case\n const filteredGrouped = new Array<ProcessedInstancesGroupingHierarchyNode>();\n for (const node of grouped) {\n if (node.children.length === 1) {\n const hideParams = getHideOptionsFromNodeProcessingParams(node, groupingType);\n if (hideParams.hideIfOneGroupedNode) {\n ungrouped.push(node.children[0]);\n continue;\n }\n }\n filteredGrouped.push(node);\n }\n return { groupingType, grouped: filteredGrouped, ungrouped };\n}\n\nfunction getHideOptionsFromNodeProcessingParams(\n groupingNode: ProcessedInstancesGroupingHierarchyNode,\n groupingType: GroupingType,\n): { hideIfNoSiblings: boolean; hideIfOneGroupedNode: boolean } {\n let hideIfNoSiblings = false;\n let hideIfOneGroupedNode = false;\n iterateChildNodeGroupingParams(groupingNode, groupingType, (groupingProps) => {\n if (hideIfNoSiblings && hideIfOneGroupedNode) {\n return true;\n }\n hideIfNoSiblings ||= !!groupingProps?.hideIfNoSiblings;\n hideIfOneGroupedNode ||= !!groupingProps?.hideIfOneGroupedNode;\n return;\n });\n return { hideIfNoSiblings, hideIfOneGroupedNode };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LabelGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAEhG,gBAAgB;AAChB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,8BAA8B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoD/G"}
1
+ {"version":3,"file":"LabelGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAA2C,MAAM,gBAAgB,CAAC;AAEhG,gBAAgB;AAChB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,8BAA8B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4C/G"}
@@ -37,11 +37,7 @@ async function createLabelGroups(nodes) {
37
37
  nodesToGroupMap.forEach((entry) => {
38
38
  const byLabel = entry[0].processingParams?.grouping?.byLabel;
39
39
  const groupId = typeof byLabel === "object" ? byLabel.groupId : undefined;
40
- const groupingNodeKey = {
41
- type: "label-grouping",
42
- label: entry[0].label,
43
- groupId,
44
- };
40
+ const groupingNodeKey = { type: "label-grouping", label: entry[0].label, groupId };
45
41
  const groupedNodeParentKeys = entry[0].parentKeys;
46
42
  groupedNodes.push({
47
43
  label: entry[0].label,
@@ -51,10 +47,6 @@ async function createLabelGroups(nodes) {
51
47
  children: entry.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),
52
48
  });
53
49
  });
54
- return {
55
- groupingType: "label",
56
- grouped: groupedNodes,
57
- ungrouped,
58
- };
50
+ return { groupingType: "label", grouped: groupedNodes, ungrouped };
59
51
  }
60
52
  //# sourceMappingURL=LabelGrouping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LabelGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { LabelGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { mergeInstanceNodes } from \"../../Utils.js\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\n/** @internal */\nexport async function createLabelGroups(nodes: ProcessedInstanceHierarchyNode[]): Promise<GroupingHandlerResult> {\n const ungrouped = new Array<ProcessedInstanceHierarchyNode>();\n const nodesToMergeMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n const nodesToGroupMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n for (const node of nodes) {\n const byLabel = node.processingParams?.grouping?.byLabel;\n if (!byLabel) {\n ungrouped.push(node);\n continue;\n }\n const nodeMapKeyIdentifier = `label:\"${node.label}\";groupId:${JSON.stringify(typeof byLabel === \"object\" ? byLabel.groupId : undefined)}`;\n const map = typeof byLabel === \"object\" && byLabel.action === \"merge\" ? nodesToMergeMap : nodesToGroupMap;\n let list = map.get(nodeMapKeyIdentifier);\n if (!list) {\n list = [];\n map.set(nodeMapKeyIdentifier, list);\n }\n list.push(node);\n }\n\n nodesToMergeMap.forEach((entry) => {\n let finalNode = entry[0];\n for (let i = 1; i < entry.length; ++i) {\n finalNode = mergeInstanceNodes(finalNode, entry[i]);\n }\n ungrouped.push(finalNode);\n });\n\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n nodesToGroupMap.forEach((entry) => {\n const byLabel = entry[0].processingParams?.grouping?.byLabel;\n const groupId = typeof byLabel === \"object\" ? byLabel.groupId : undefined;\n const groupingNodeKey: LabelGroupingNodeKey = {\n type: \"label-grouping\",\n label: entry[0].label,\n groupId,\n };\n const groupedNodeParentKeys = entry[0].parentKeys;\n groupedNodes.push({\n label: entry[0].label,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),\n });\n });\n\n return {\n groupingType: \"label\",\n grouped: groupedNodes,\n ungrouped,\n };\n}\n"]}
1
+ {"version":3,"file":"LabelGrouping.js","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/LabelGrouping.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { LabelGroupingNodeKey } from \"../../../HierarchyNodeKey.js\";\nimport { ProcessedInstanceHierarchyNode } from \"../../IModelHierarchyNode.js\";\nimport { mergeInstanceNodes } from \"../../Utils.js\";\nimport { GroupingHandlerResult, ProcessedInstancesGroupingHierarchyNode } from \"../Grouping.js\";\n\n/** @internal */\nexport async function createLabelGroups(nodes: ProcessedInstanceHierarchyNode[]): Promise<GroupingHandlerResult> {\n const ungrouped = new Array<ProcessedInstanceHierarchyNode>();\n const nodesToMergeMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n const nodesToGroupMap = new Map<string, ProcessedInstanceHierarchyNode[]>();\n for (const node of nodes) {\n const byLabel = node.processingParams?.grouping?.byLabel;\n if (!byLabel) {\n ungrouped.push(node);\n continue;\n }\n const nodeMapKeyIdentifier = `label:\"${node.label}\";groupId:${JSON.stringify(typeof byLabel === \"object\" ? byLabel.groupId : undefined)}`;\n const map = typeof byLabel === \"object\" && byLabel.action === \"merge\" ? nodesToMergeMap : nodesToGroupMap;\n let list = map.get(nodeMapKeyIdentifier);\n if (!list) {\n list = [];\n map.set(nodeMapKeyIdentifier, list);\n }\n list.push(node);\n }\n\n nodesToMergeMap.forEach((entry) => {\n let finalNode = entry[0];\n for (let i = 1; i < entry.length; ++i) {\n finalNode = mergeInstanceNodes(finalNode, entry[i]);\n }\n ungrouped.push(finalNode);\n });\n\n const groupedNodes = new Array<ProcessedInstancesGroupingHierarchyNode>();\n nodesToGroupMap.forEach((entry) => {\n const byLabel = entry[0].processingParams?.grouping?.byLabel;\n const groupId = typeof byLabel === \"object\" ? byLabel.groupId : undefined;\n const groupingNodeKey: LabelGroupingNodeKey = { type: \"label-grouping\", label: entry[0].label, groupId };\n const groupedNodeParentKeys = entry[0].parentKeys;\n groupedNodes.push({\n label: entry[0].label,\n key: groupingNodeKey,\n parentKeys: groupedNodeParentKeys,\n groupedInstanceKeys: entry.flatMap((groupedInstanceNode) => groupedInstanceNode.key.instanceKeys),\n children: entry.map((gn) => Object.assign(gn, { parentKeys: [...groupedNodeParentKeys, groupingNodeKey] })),\n });\n });\n\n return { groupingType: \"label\", grouped: groupedNodes, ungrouped };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PropertiesGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,EAAE,EACF,yBAAyB,EACzB,gBAAgB,EAGhB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAYjH,gBAAgB;AAChB,MAAM,WAAW,kCAAkC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC;IAClB,8BAA8B,EAAE,8BAA8B,CAAC;IAC/D,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;CAClE;AAED,gBAAgB;AAChB,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAAC;IAAE,mBAAmB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE7H,gBAAgB;AAChB,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,EAC9D,qBAAqB,EAAE,iBAAiB,EACxC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CA8JhC;AAyED,gBAAgB;AAChB,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAqDnC;AAoCD,gBAAgB;AAChB,wBAAgB,yBAAyB,CACvC,8BAA8B,EAAE,8BAA8B,EAC9D,eAAe,EAAE,qCAAqC,GACrD,OAAO,CAUT;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,GAAG,OAAO,CAwBrJ;AAED,gBAAgB;AAChB,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,EACvC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,GACnD,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B"}
1
+ {"version":3,"file":"PropertiesGrouping.d.ts","sourceRoot":"","sources":["../../../../../../src/hierarchies/imodel/operators/grouping/PropertiesGrouping.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,EAAE,EACF,yBAAyB,EACzB,gBAAgB,EAGhB,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,uCAAuC,EAAE,MAAM,gBAAgB,CAAC;AAejH,gBAAgB;AAChB,MAAM,WAAW,kCAAkC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC;IAClB,8BAA8B,EAAE,8BAA8B,CAAC;IAC/D,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;CAClE;AAED,gBAAgB;AAChB,MAAM,MAAM,8BAA8B,GAAG,KAAK,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,gBAAgB;AAChB,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,8BAA8B,EAAE,EAC9C,mBAAmB,EAAE,uCAAuC,EAAE,EAC9D,qBAAqB,EAAE,iBAAiB,EACxC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,EACpD,uBAAuB,EAAE,yBAAyB,GACjD,OAAO,CAAC,qBAAqB,CAAC,CA4KhC;AA8ED,gBAAgB;AAChB,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,gBAAgB,EAChC,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,GACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAwDnC;AAqCD,gBAAgB;AAChB,wBAAgB,yBAAyB,CACvC,8BAA8B,EAAE,8BAA8B,EAC9D,eAAe,EAAE,qCAAqC,GACrD,OAAO,CAUT;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,EACtD,OAAO,EAAE,+BAA+B,EAAE,GAAG,SAAS,GACrD,OAAO,CA8BT;AAED,gBAAgB;AAChB,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,gBAAgB,GAAG,yBAAyB,EAC1D,UAAU,EAAE,mBAAmB,GAAG,SAAS,EAC3C,KAAK,EAAE,8BAA8B,EAAE,EACvC,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,kCAAkC,GACnD,OAAO,CAAC,eAAe,EAAE,CAAC,CAa5B"}
@@ -25,10 +25,7 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
25
25
  }
26
26
  otherValuesGrouping ??= {
27
27
  node: {
28
- key: {
29
- type: "property-grouping:other",
30
- properties: [],
31
- },
28
+ key: { type: "property-grouping:other", properties: [] },
32
29
  parentKeys: [],
33
30
  groupedInstanceKeys: [],
34
31
  label: localizedStrings.other,
@@ -58,7 +55,8 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
58
55
  };
59
56
  const propertyClass = handlerGroupingParams.ecClass;
60
57
  const property = await propertyClass.getProperty(currentProperty.propertyName);
61
- if (!property?.isNavigation() && (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry")) {
58
+ if (!property?.isNavigation() &&
59
+ (!property?.isPrimitive() || property.primitiveType === "Binary" || property.primitiveType === "IGeometry")) {
62
60
  groupings.ungrouped.push(node);
63
61
  continue;
64
62
  }
@@ -98,7 +96,8 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
98
96
  koqName,
99
97
  value: matchingRange.toValue,
100
98
  };
101
- const rangeLabel = matchingRange.rangeLabel ?? `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;
99
+ const rangeLabel = matchingRange.rangeLabel ??
100
+ `${await valueFormatter(fromValueTypedPrimitive)} - ${await valueFormatter(toValueTypedPrimitive)}`;
102
101
  addGroupingToMap(groupings.grouped, `${currentProperty.propertyName}:[${matchingRange.fromValue}-${matchingRange.toValue}]${matchingRange.rangeLabel ? `(${matchingRange.rangeLabel})` : ""}`, {
103
102
  label: rangeLabel,
104
103
  propertyGroupingNodeKey: {
@@ -147,10 +146,7 @@ async function createPropertyGroups(nodesToGroup, nodesAlreadyGrouped, handlerGr
147
146
  function addGroupingToMap(groupingMap, mapKey, propertyToAdd, node) {
148
147
  let groupingInfo = groupingMap.get(mapKey);
149
148
  if (!groupingInfo) {
150
- groupingInfo = {
151
- displayablePropertyGroupingInfo: propertyToAdd,
152
- groupedNodes: [node],
153
- };
149
+ groupingInfo = { displayablePropertyGroupingInfo: propertyToAdd, groupedNodes: [node] };
154
150
  groupingMap.set(mapKey, groupingInfo);
155
151
  return;
156
152
  }
@@ -218,11 +214,15 @@ async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, nodes) {
218
214
  const previousPropertiesInfo = new Array();
219
215
  for (const propertyGroup of byProperties.propertyGroups) {
220
216
  const mapKeyRanges = getRangesAsString(propertyGroup.ranges);
221
- const lastKey = previousPropertiesInfo.length > 0 ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey : "";
217
+ const lastKey = previousPropertiesInfo.length > 0
218
+ ? previousPropertiesInfo[previousPropertiesInfo.length - 1].propertyGroupKey
219
+ : "";
222
220
  const propertyGroupKey = `${lastKey}:${propertyGroup.propertyName}(${mapKeyRanges})`;
223
221
  const mapKey = `${byProperties.propertiesClassName}:${propertyGroupKey}`;
224
222
  let isAlreadyGrouped = false;
225
- if (!isAlreadyGrouped && parentPropertyGroupPath.length > 0 && propertyGroupIndex < parentPropertyGroupPath.length) {
223
+ if (!isAlreadyGrouped &&
224
+ parentPropertyGroupPath.length > 0 &&
225
+ propertyGroupIndex < parentPropertyGroupPath.length) {
226
226
  const groupMatcher = parentPropertyGroupPath[propertyGroupIndex];
227
227
  isAlreadyGrouped = groupMatcher({
228
228
  propertiesClassName: byProperties.propertiesClassName,
@@ -233,10 +233,7 @@ async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, nodes) {
233
233
  if (!isAlreadyGrouped && !uniqueProperties.get(mapKey)) {
234
234
  uniqueProperties.set(mapKey, {
235
235
  ecClass: await (0, presentation_shared_1.getClass)(schemaProvider, byProperties.propertiesClassName),
236
- propertyGroup: {
237
- propertyName: propertyGroup.propertyName,
238
- ranges: propertyGroup.ranges,
239
- },
236
+ propertyGroup: { propertyName: propertyGroup.propertyName, ranges: propertyGroup.ranges },
240
237
  previousPropertiesGroupingInfo: previousPropertiesInfo.map((groupingInfo) => ({
241
238
  propertiesClassName: byProperties.propertiesClassName,
242
239
  propertyName: groupingInfo.propertyGroup.propertyName,
@@ -244,10 +241,7 @@ async function getUniquePropertiesGroupInfo(schemaProvider, parentNode, nodes) {
244
241
  })),
245
242
  });
246
243
  }
247
- previousPropertiesInfo.push({
248
- propertyGroup,
249
- propertyGroupKey,
250
- });
244
+ previousPropertiesInfo.push({ propertyGroup, propertyGroupKey });
251
245
  ++propertyGroupIndex;
252
246
  }
253
247
  }
@@ -298,8 +292,12 @@ function doRangesMatch(ranges1, ranges2) {
298
292
  }
299
293
  return (
300
294
  // Check twice, to validate if both ranges have the same elements (elements can be in a different order)
301
- ranges1.every((lhsRange) => ranges2.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel)) &&
302
- ranges2.every((lhsRange) => ranges1.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue && lhsRange.toValue === rhsRange.toValue && lhsRange.rangeLabel === rhsRange.rangeLabel)));
295
+ ranges1.every((lhsRange) => ranges2.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue &&
296
+ lhsRange.toValue === rhsRange.toValue &&
297
+ lhsRange.rangeLabel === rhsRange.rangeLabel)) &&
298
+ ranges2.every((lhsRange) => ranges1.some((rhsRange) => lhsRange.fromValue === rhsRange.fromValue &&
299
+ lhsRange.toValue === rhsRange.toValue &&
300
+ lhsRange.rangeLabel === rhsRange.rangeLabel)));
303
301
  }
304
302
  /** @internal */
305
303
  async function createPropertiesGroupingHandlers(imodelAccess, parentNode, nodes, valueFormatter, localizedStrings) {