@itwin/presentation-common 3.6.0-dev.53 → 3.6.0-dev.55

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 (469) hide show
  1. package/lib/cjs/assets/locales/en/BisCore.json +18 -18
  2. package/lib/cjs/assets/locales/en/ECPresentation.json +9 -9
  3. package/lib/cjs/assets/locales/en/RulesEngine.json +5 -5
  4. package/lib/cjs/presentation-common/AsyncTasks.d.ts +22 -22
  5. package/lib/cjs/presentation-common/AsyncTasks.js +38 -38
  6. package/lib/cjs/presentation-common/AsyncTasks.js.map +1 -1
  7. package/lib/cjs/presentation-common/CommonLoggerCategory.d.ts +12 -12
  8. package/lib/cjs/presentation-common/CommonLoggerCategory.js +20 -20
  9. package/lib/cjs/presentation-common/CommonLoggerCategory.js.map +1 -1
  10. package/lib/cjs/presentation-common/Diagnostics.d.ts +125 -125
  11. package/lib/cjs/presentation-common/Diagnostics.js +72 -72
  12. package/lib/cjs/presentation-common/Diagnostics.js.map +1 -1
  13. package/lib/cjs/presentation-common/EC.d.ts +315 -315
  14. package/lib/cjs/presentation-common/EC.js +270 -270
  15. package/lib/cjs/presentation-common/EC.js.map +1 -1
  16. package/lib/cjs/presentation-common/ElementProperties.d.ts +123 -123
  17. package/lib/cjs/presentation-common/ElementProperties.js +9 -9
  18. package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
  19. package/lib/cjs/presentation-common/Error.d.ts +45 -45
  20. package/lib/cjs/presentation-common/Error.js +62 -62
  21. package/lib/cjs/presentation-common/Error.js.map +1 -1
  22. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts +59 -59
  23. package/lib/cjs/presentation-common/InstanceFilterDefinition.js +9 -9
  24. package/lib/cjs/presentation-common/InstanceFilterDefinition.js.map +1 -1
  25. package/lib/cjs/presentation-common/KeySet.d.ts +146 -146
  26. package/lib/cjs/presentation-common/KeySet.js +423 -423
  27. package/lib/cjs/presentation-common/KeySet.js.map +1 -1
  28. package/lib/cjs/presentation-common/LabelDefinition.d.ts +79 -79
  29. package/lib/cjs/presentation-common/LabelDefinition.js +76 -76
  30. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  31. package/lib/cjs/presentation-common/LocalizationHelper.d.ts +29 -29
  32. package/lib/cjs/presentation-common/LocalizationHelper.js +110 -110
  33. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  34. package/lib/cjs/presentation-common/PresentationIpcInterface.d.ts +40 -40
  35. package/lib/cjs/presentation-common/PresentationIpcInterface.js +12 -12
  36. package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
  37. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +256 -256
  38. package/lib/cjs/presentation-common/PresentationManagerOptions.js +23 -23
  39. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  40. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts +188 -188
  41. package/lib/cjs/presentation-common/PresentationRpcInterface.js +107 -107
  42. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  43. package/lib/cjs/presentation-common/RegisteredRuleset.d.ts +26 -26
  44. package/lib/cjs/presentation-common/RegisteredRuleset.js +33 -33
  45. package/lib/cjs/presentation-common/RegisteredRuleset.js.map +1 -1
  46. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +83 -83
  47. package/lib/cjs/presentation-common/RpcRequestsHandler.js +161 -161
  48. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  49. package/lib/cjs/presentation-common/RulesetVariables.d.ts +166 -166
  50. package/lib/cjs/presentation-common/RulesetVariables.js +55 -55
  51. package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
  52. package/lib/cjs/presentation-common/RulesetsFactory.d.ts +44 -44
  53. package/lib/cjs/presentation-common/RulesetsFactory.js +223 -223
  54. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  55. package/lib/cjs/presentation-common/Update.d.ts +196 -196
  56. package/lib/cjs/presentation-common/Update.js +196 -196
  57. package/lib/cjs/presentation-common/Update.js.map +1 -1
  58. package/lib/cjs/presentation-common/Utils.d.ts +62 -62
  59. package/lib/cjs/presentation-common/Utils.js +43 -43
  60. package/lib/cjs/presentation-common/Utils.js.map +1 -1
  61. package/lib/cjs/presentation-common/content/Category.d.ts +49 -49
  62. package/lib/cjs/presentation-common/content/Category.js +49 -49
  63. package/lib/cjs/presentation-common/content/Category.js.map +1 -1
  64. package/lib/cjs/presentation-common/content/Content.d.ts +38 -38
  65. package/lib/cjs/presentation-common/content/Content.js +56 -56
  66. package/lib/cjs/presentation-common/content/Content.js.map +1 -1
  67. package/lib/cjs/presentation-common/content/ContentTraverser.d.ts +101 -101
  68. package/lib/cjs/presentation-common/content/ContentTraverser.js +420 -420
  69. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  70. package/lib/cjs/presentation-common/content/Descriptor.d.ts +279 -279
  71. package/lib/cjs/presentation-common/content/Descriptor.js +195 -195
  72. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  73. package/lib/cjs/presentation-common/content/DisplayTypes.d.ts +21 -21
  74. package/lib/cjs/presentation-common/content/DisplayTypes.js +29 -29
  75. package/lib/cjs/presentation-common/content/DisplayTypes.js.map +1 -1
  76. package/lib/cjs/presentation-common/content/Editor.d.ts +15 -15
  77. package/lib/cjs/presentation-common/content/Editor.js +9 -9
  78. package/lib/cjs/presentation-common/content/Editor.js.map +1 -1
  79. package/lib/cjs/presentation-common/content/Fields.d.ts +282 -282
  80. package/lib/cjs/presentation-common/content/Fields.js +394 -394
  81. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  82. package/lib/cjs/presentation-common/content/Item.d.ts +87 -87
  83. package/lib/cjs/presentation-common/content/Item.js +86 -86
  84. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  85. package/lib/cjs/presentation-common/content/Property.d.ts +51 -51
  86. package/lib/cjs/presentation-common/content/Property.js +36 -36
  87. package/lib/cjs/presentation-common/content/Property.js.map +1 -1
  88. package/lib/cjs/presentation-common/content/Renderer.d.ts +11 -11
  89. package/lib/cjs/presentation-common/content/Renderer.js +9 -9
  90. package/lib/cjs/presentation-common/content/Renderer.js.map +1 -1
  91. package/lib/cjs/presentation-common/content/TypeDescription.d.ts +72 -72
  92. package/lib/cjs/presentation-common/content/TypeDescription.js +23 -23
  93. package/lib/cjs/presentation-common/content/TypeDescription.js.map +1 -1
  94. package/lib/cjs/presentation-common/content/Value.d.ts +157 -157
  95. package/lib/cjs/presentation-common/content/Value.js +217 -217
  96. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  97. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.d.ts +30 -30
  98. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +23 -23
  99. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  100. package/lib/cjs/presentation-common/hierarchy/Key.d.ts +185 -185
  101. package/lib/cjs/presentation-common/hierarchy/Key.js +112 -112
  102. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  103. package/lib/cjs/presentation-common/hierarchy/Node.d.ts +149 -149
  104. package/lib/cjs/presentation-common/hierarchy/Node.js +97 -97
  105. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  106. package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts +85 -85
  107. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +98 -98
  108. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  109. package/lib/cjs/presentation-common/rules/ClassSpecifications.d.ts +45 -45
  110. package/lib/cjs/presentation-common/rules/ClassSpecifications.js +9 -9
  111. package/lib/cjs/presentation-common/rules/ClassSpecifications.js.map +1 -1
  112. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
  113. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +9 -9
  114. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  115. package/lib/cjs/presentation-common/rules/RelationshipDirection.d.ts +13 -13
  116. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +21 -21
  117. package/lib/cjs/presentation-common/rules/RelationshipDirection.js.map +1 -1
  118. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.d.ts +53 -53
  119. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +9 -9
  120. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  121. package/lib/cjs/presentation-common/rules/Rule.d.ts +74 -74
  122. package/lib/cjs/presentation-common/rules/Rule.js +35 -35
  123. package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
  124. package/lib/cjs/presentation-common/rules/Ruleset.d.ts +66 -66
  125. package/lib/cjs/presentation-common/rules/Ruleset.js +9 -9
  126. package/lib/cjs/presentation-common/rules/Ruleset.js.map +1 -1
  127. package/lib/cjs/presentation-common/rules/SchemasSpecification.d.ts +41 -41
  128. package/lib/cjs/presentation-common/rules/SchemasSpecification.js +9 -9
  129. package/lib/cjs/presentation-common/rules/SchemasSpecification.js.map +1 -1
  130. package/lib/cjs/presentation-common/rules/Variables.d.ts +55 -55
  131. package/lib/cjs/presentation-common/rules/Variables.js +25 -25
  132. package/lib/cjs/presentation-common/rules/Variables.js.map +1 -1
  133. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
  134. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +9 -9
  135. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  136. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
  137. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +9 -9
  138. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  139. package/lib/cjs/presentation-common/rules/content/ContentRule.d.ts +30 -30
  140. package/lib/cjs/presentation-common/rules/content/ContentRule.js +9 -9
  141. package/lib/cjs/presentation-common/rules/content/ContentRule.js.map +1 -1
  142. package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts +55 -55
  143. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +20 -20
  144. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  145. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
  146. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +9 -9
  147. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  148. package/lib/cjs/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
  149. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +9 -9
  150. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  151. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
  152. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +9 -9
  153. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  154. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
  155. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +9 -9
  156. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  157. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.d.ts +57 -57
  158. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +9 -9
  159. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  160. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
  161. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +9 -9
  162. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  163. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
  164. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +9 -9
  165. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  166. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +105 -105
  167. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +21 -21
  168. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  169. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +93 -93
  170. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +43 -43
  171. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  172. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
  173. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +9 -9
  174. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  175. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
  176. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +9 -9
  177. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  178. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
  179. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +9 -9
  180. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  181. package/lib/cjs/presentation-common/rules/customization/GroupingRule.d.ts +200 -200
  182. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +51 -51
  183. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  184. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
  185. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +9 -9
  186. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  187. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts +156 -156
  188. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +25 -25
  189. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  190. package/lib/cjs/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
  191. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +9 -9
  192. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  193. package/lib/cjs/presentation-common/rules/customization/SortingRule.d.ts +58 -58
  194. package/lib/cjs/presentation-common/rules/customization/SortingRule.js +9 -9
  195. package/lib/cjs/presentation-common/rules/customization/SortingRule.js.map +1 -1
  196. package/lib/cjs/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
  197. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +9 -9
  198. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  199. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +15 -15
  200. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +9 -9
  201. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  202. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +97 -97
  203. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +22 -22
  204. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  205. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
  206. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +9 -9
  207. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  208. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +76 -76
  209. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +19 -19
  210. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  211. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
  212. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +9 -9
  213. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  214. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
  215. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +9 -9
  216. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  217. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
  218. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +9 -9
  219. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  220. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
  221. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +9 -9
  222. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  223. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.d.ts +17 -17
  224. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +9 -9
  225. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  226. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.d.ts +36 -36
  227. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +9 -9
  228. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  229. package/lib/cjs/presentation-common/selection/SelectionScope.d.ts +25 -25
  230. package/lib/cjs/presentation-common/selection/SelectionScope.js +9 -9
  231. package/lib/cjs/presentation-common/selection/SelectionScope.js.map +1 -1
  232. package/lib/cjs/presentation-common.d.ts +112 -112
  233. package/lib/cjs/presentation-common.js +128 -128
  234. package/lib/cjs/presentation-common.js.map +1 -1
  235. package/lib/esm/presentation-common/AsyncTasks.d.ts +22 -22
  236. package/lib/esm/presentation-common/AsyncTasks.js +34 -34
  237. package/lib/esm/presentation-common/AsyncTasks.js.map +1 -1
  238. package/lib/esm/presentation-common/CommonLoggerCategory.d.ts +12 -12
  239. package/lib/esm/presentation-common/CommonLoggerCategory.js +17 -17
  240. package/lib/esm/presentation-common/CommonLoggerCategory.js.map +1 -1
  241. package/lib/esm/presentation-common/Diagnostics.d.ts +125 -125
  242. package/lib/esm/presentation-common/Diagnostics.js +67 -67
  243. package/lib/esm/presentation-common/Diagnostics.js.map +1 -1
  244. package/lib/esm/presentation-common/EC.d.ts +315 -315
  245. package/lib/esm/presentation-common/EC.js +267 -267
  246. package/lib/esm/presentation-common/EC.js.map +1 -1
  247. package/lib/esm/presentation-common/ElementProperties.d.ts +123 -123
  248. package/lib/esm/presentation-common/ElementProperties.js +8 -8
  249. package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
  250. package/lib/esm/presentation-common/Error.d.ts +45 -45
  251. package/lib/esm/presentation-common/Error.js +58 -58
  252. package/lib/esm/presentation-common/Error.js.map +1 -1
  253. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts +59 -59
  254. package/lib/esm/presentation-common/InstanceFilterDefinition.js +8 -8
  255. package/lib/esm/presentation-common/InstanceFilterDefinition.js.map +1 -1
  256. package/lib/esm/presentation-common/KeySet.d.ts +146 -146
  257. package/lib/esm/presentation-common/KeySet.js +419 -419
  258. package/lib/esm/presentation-common/KeySet.js.map +1 -1
  259. package/lib/esm/presentation-common/LabelDefinition.d.ts +79 -79
  260. package/lib/esm/presentation-common/LabelDefinition.js +73 -73
  261. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  262. package/lib/esm/presentation-common/LocalizationHelper.d.ts +29 -29
  263. package/lib/esm/presentation-common/LocalizationHelper.js +106 -106
  264. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  265. package/lib/esm/presentation-common/PresentationIpcInterface.d.ts +40 -40
  266. package/lib/esm/presentation-common/PresentationIpcInterface.js +9 -9
  267. package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
  268. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +256 -256
  269. package/lib/esm/presentation-common/PresentationManagerOptions.js +18 -18
  270. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  271. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts +188 -188
  272. package/lib/esm/presentation-common/PresentationRpcInterface.js +103 -103
  273. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  274. package/lib/esm/presentation-common/RegisteredRuleset.d.ts +26 -26
  275. package/lib/esm/presentation-common/RegisteredRuleset.js +29 -29
  276. package/lib/esm/presentation-common/RegisteredRuleset.js.map +1 -1
  277. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +83 -83
  278. package/lib/esm/presentation-common/RpcRequestsHandler.js +157 -157
  279. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  280. package/lib/esm/presentation-common/RulesetVariables.d.ts +166 -166
  281. package/lib/esm/presentation-common/RulesetVariables.js +52 -52
  282. package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
  283. package/lib/esm/presentation-common/RulesetsFactory.d.ts +44 -44
  284. package/lib/esm/presentation-common/RulesetsFactory.js +219 -219
  285. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  286. package/lib/esm/presentation-common/Update.d.ts +196 -196
  287. package/lib/esm/presentation-common/Update.js +193 -193
  288. package/lib/esm/presentation-common/Update.js.map +1 -1
  289. package/lib/esm/presentation-common/Utils.d.ts +62 -62
  290. package/lib/esm/presentation-common/Utils.js +39 -39
  291. package/lib/esm/presentation-common/Utils.js.map +1 -1
  292. package/lib/esm/presentation-common/content/Category.d.ts +49 -49
  293. package/lib/esm/presentation-common/content/Category.js +46 -46
  294. package/lib/esm/presentation-common/content/Category.js.map +1 -1
  295. package/lib/esm/presentation-common/content/Content.d.ts +38 -38
  296. package/lib/esm/presentation-common/content/Content.js +52 -52
  297. package/lib/esm/presentation-common/content/Content.js.map +1 -1
  298. package/lib/esm/presentation-common/content/ContentTraverser.d.ts +101 -101
  299. package/lib/esm/presentation-common/content/ContentTraverser.js +411 -411
  300. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  301. package/lib/esm/presentation-common/content/Descriptor.d.ts +279 -279
  302. package/lib/esm/presentation-common/content/Descriptor.js +191 -191
  303. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  304. package/lib/esm/presentation-common/content/DisplayTypes.d.ts +21 -21
  305. package/lib/esm/presentation-common/content/DisplayTypes.js +26 -26
  306. package/lib/esm/presentation-common/content/DisplayTypes.js.map +1 -1
  307. package/lib/esm/presentation-common/content/Editor.d.ts +15 -15
  308. package/lib/esm/presentation-common/content/Editor.js +8 -8
  309. package/lib/esm/presentation-common/content/Editor.js.map +1 -1
  310. package/lib/esm/presentation-common/content/Fields.d.ts +282 -282
  311. package/lib/esm/presentation-common/content/Fields.js +387 -387
  312. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  313. package/lib/esm/presentation-common/content/Item.d.ts +87 -87
  314. package/lib/esm/presentation-common/content/Item.js +82 -82
  315. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  316. package/lib/esm/presentation-common/content/Property.d.ts +51 -51
  317. package/lib/esm/presentation-common/content/Property.js +33 -33
  318. package/lib/esm/presentation-common/content/Property.js.map +1 -1
  319. package/lib/esm/presentation-common/content/Renderer.d.ts +11 -11
  320. package/lib/esm/presentation-common/content/Renderer.js +8 -8
  321. package/lib/esm/presentation-common/content/Renderer.js.map +1 -1
  322. package/lib/esm/presentation-common/content/TypeDescription.d.ts +72 -72
  323. package/lib/esm/presentation-common/content/TypeDescription.js +20 -20
  324. package/lib/esm/presentation-common/content/TypeDescription.js.map +1 -1
  325. package/lib/esm/presentation-common/content/Value.d.ts +157 -157
  326. package/lib/esm/presentation-common/content/Value.js +214 -214
  327. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  328. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.d.ts +30 -30
  329. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +20 -20
  330. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  331. package/lib/esm/presentation-common/hierarchy/Key.d.ts +185 -185
  332. package/lib/esm/presentation-common/hierarchy/Key.js +109 -109
  333. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  334. package/lib/esm/presentation-common/hierarchy/Node.d.ts +149 -149
  335. package/lib/esm/presentation-common/hierarchy/Node.js +94 -94
  336. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  337. package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts +85 -85
  338. package/lib/esm/presentation-common/hierarchy/NodePathElement.js +95 -95
  339. package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  340. package/lib/esm/presentation-common/rules/ClassSpecifications.d.ts +45 -45
  341. package/lib/esm/presentation-common/rules/ClassSpecifications.js +8 -8
  342. package/lib/esm/presentation-common/rules/ClassSpecifications.js.map +1 -1
  343. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
  344. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +8 -8
  345. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  346. package/lib/esm/presentation-common/rules/RelationshipDirection.d.ts +13 -13
  347. package/lib/esm/presentation-common/rules/RelationshipDirection.js +18 -18
  348. package/lib/esm/presentation-common/rules/RelationshipDirection.js.map +1 -1
  349. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.d.ts +53 -53
  350. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +8 -8
  351. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  352. package/lib/esm/presentation-common/rules/Rule.d.ts +74 -74
  353. package/lib/esm/presentation-common/rules/Rule.js +32 -32
  354. package/lib/esm/presentation-common/rules/Rule.js.map +1 -1
  355. package/lib/esm/presentation-common/rules/Ruleset.d.ts +66 -66
  356. package/lib/esm/presentation-common/rules/Ruleset.js +8 -8
  357. package/lib/esm/presentation-common/rules/Ruleset.js.map +1 -1
  358. package/lib/esm/presentation-common/rules/SchemasSpecification.d.ts +41 -41
  359. package/lib/esm/presentation-common/rules/SchemasSpecification.js +8 -8
  360. package/lib/esm/presentation-common/rules/SchemasSpecification.js.map +1 -1
  361. package/lib/esm/presentation-common/rules/Variables.d.ts +55 -55
  362. package/lib/esm/presentation-common/rules/Variables.js +22 -22
  363. package/lib/esm/presentation-common/rules/Variables.js.map +1 -1
  364. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
  365. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +8 -8
  366. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  367. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
  368. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +8 -8
  369. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  370. package/lib/esm/presentation-common/rules/content/ContentRule.d.ts +30 -30
  371. package/lib/esm/presentation-common/rules/content/ContentRule.js +8 -8
  372. package/lib/esm/presentation-common/rules/content/ContentRule.js.map +1 -1
  373. package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts +55 -55
  374. package/lib/esm/presentation-common/rules/content/ContentSpecification.js +17 -17
  375. package/lib/esm/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  376. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
  377. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +8 -8
  378. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  379. package/lib/esm/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
  380. package/lib/esm/presentation-common/rules/content/PropertySpecification.js +8 -8
  381. package/lib/esm/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  382. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
  383. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +8 -8
  384. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  385. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
  386. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +8 -8
  387. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  388. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.d.ts +57 -57
  389. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +8 -8
  390. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  391. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
  392. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +8 -8
  393. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  394. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
  395. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +8 -8
  396. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  397. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +105 -105
  398. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +18 -18
  399. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  400. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +93 -93
  401. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +40 -40
  402. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  403. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
  404. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +8 -8
  405. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  406. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
  407. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +8 -8
  408. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  409. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
  410. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +8 -8
  411. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  412. package/lib/esm/presentation-common/rules/customization/GroupingRule.d.ts +200 -200
  413. package/lib/esm/presentation-common/rules/customization/GroupingRule.js +48 -48
  414. package/lib/esm/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  415. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
  416. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +8 -8
  417. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  418. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts +156 -156
  419. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +22 -22
  420. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  421. package/lib/esm/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
  422. package/lib/esm/presentation-common/rules/customization/LabelOverride.js +8 -8
  423. package/lib/esm/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  424. package/lib/esm/presentation-common/rules/customization/SortingRule.d.ts +58 -58
  425. package/lib/esm/presentation-common/rules/customization/SortingRule.js +8 -8
  426. package/lib/esm/presentation-common/rules/customization/SortingRule.js.map +1 -1
  427. package/lib/esm/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
  428. package/lib/esm/presentation-common/rules/customization/StyleOverride.js +8 -8
  429. package/lib/esm/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  430. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +15 -15
  431. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +8 -8
  432. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  433. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +97 -97
  434. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +19 -19
  435. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  436. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
  437. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +8 -8
  438. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  439. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +76 -76
  440. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +16 -16
  441. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  442. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
  443. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +8 -8
  444. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  445. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
  446. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +8 -8
  447. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  448. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
  449. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +8 -8
  450. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  451. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
  452. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +8 -8
  453. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  454. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.d.ts +17 -17
  455. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +8 -8
  456. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  457. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.d.ts +36 -36
  458. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +8 -8
  459. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  460. package/lib/esm/presentation-common/selection/SelectionScope.d.ts +25 -25
  461. package/lib/esm/presentation-common/selection/SelectionScope.js +8 -8
  462. package/lib/esm/presentation-common/selection/SelectionScope.js.map +1 -1
  463. package/lib/esm/presentation-common.d.ts +112 -112
  464. package/lib/esm/presentation-common.js +116 -116
  465. package/lib/esm/presentation-common.js.map +1 -1
  466. package/lib/public/locales/en/BisCore.json +18 -18
  467. package/lib/public/locales/en/ECPresentation.json +9 -9
  468. package/lib/public/locales/en/RulesEngine.json +5 -5
  469. package/package.json +9 -9
@@ -1,412 +1,412 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module Content
7
- */
8
- import { assert, using } from "@itwin/core-bentley";
9
- import { Field } from "./Fields";
10
- import { Item } from "./Item";
11
- import { PropertyValueFormat } from "./TypeDescription";
12
- import { DisplayValue, Value } from "./Value";
13
- /** @internal */
14
- export function traverseFieldHierarchy(hierarchy, cb) {
15
- if (cb(hierarchy))
16
- hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));
17
- }
18
- /** @alpha */
19
- export function traverseContent(visitor, content) {
20
- if (!visitor.startContent({ descriptor: content.descriptor }))
21
- return;
22
- try {
23
- const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);
24
- visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
25
- content.contentSet.forEach((item) => {
26
- traverseContentItemFields(visitor, fieldHierarchies, item);
27
- });
28
- }
29
- finally {
30
- visitor.finishContent();
31
- }
32
- }
33
- /** @alpha */
34
- export function traverseContentItem(visitor, descriptor, item) {
35
- if (!visitor.startContent({ descriptor }))
36
- return;
37
- try {
38
- const fieldHierarchies = createFieldHierarchies(descriptor.fields);
39
- visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
40
- traverseContentItemFields(visitor, fieldHierarchies, item);
41
- }
42
- finally {
43
- visitor.finishContent();
44
- }
45
- }
46
- class VisitedCategories {
47
- constructor(_visitor, category) {
48
- this._visitor = _visitor;
49
- const stack = [];
50
- let curr = category;
51
- while (curr) {
52
- stack.push(curr);
53
- curr = curr.parent;
54
- }
55
- stack.reverse();
56
- this._didVisitAllHierarchy = true;
57
- this._visitedCategories = [];
58
- for (curr of stack) {
59
- if (this._visitor.startCategory({ category: curr })) {
60
- this._visitedCategories.push(curr);
61
- }
62
- else {
63
- this._didVisitAllHierarchy = false;
64
- break;
65
- }
66
- }
67
- }
68
- dispose() {
69
- while (this._visitedCategories.pop())
70
- this._visitor.finishCategory();
71
- }
72
- get shouldContinue() { return this._didVisitAllHierarchy; }
73
- }
74
- function traverseContentItemFields(visitor, fieldHierarchies, item) {
75
- if (!visitor.startItem({ item }))
76
- return;
77
- try {
78
- fieldHierarchies.forEach((fieldHierarchy) => {
79
- using(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {
80
- if (res.shouldContinue)
81
- traverseContentItemField(visitor, fieldHierarchy, item);
82
- });
83
- });
84
- }
85
- finally {
86
- visitor.finishItem();
87
- }
88
- }
89
- function traverseContentItemField(visitor, fieldHierarchy, item) {
90
- if (!visitor.startField({ hierarchy: fieldHierarchy }))
91
- return;
92
- try {
93
- const rootToThisField = createFieldPath(fieldHierarchy.field);
94
- let namePrefix;
95
- const pathUpToField = rootToThisField.slice(undefined, -1);
96
- for (let i = 0; i < pathUpToField.length; ++i) {
97
- const parentField = pathUpToField[i];
98
- const nextField = rootToThisField[i + 1];
99
- if (item.isFieldMerged(parentField.name)) {
100
- visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, namePrefix });
101
- return;
102
- }
103
- const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);
104
- if (emptyNestedItem)
105
- return;
106
- item = convertedItem;
107
- namePrefix = applyOptionalPrefix(parentField.name, namePrefix);
108
- }
109
- if (item.isFieldMerged(fieldHierarchy.field.name)) {
110
- visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, namePrefix });
111
- return;
112
- }
113
- if (fieldHierarchy.field.isNestedContentField()) {
114
- fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, namePrefix);
115
- const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);
116
- if (emptyNestedItem)
117
- return;
118
- item = convertedItem;
119
- }
120
- else if (pathUpToField.length > 0) {
121
- fieldHierarchy = {
122
- ...fieldHierarchy,
123
- field: Object.assign(fieldHierarchy.field.clone(), {
124
- type: {
125
- valueFormat: PropertyValueFormat.Array,
126
- typeName: `${fieldHierarchy.field.type.typeName}[]`,
127
- memberType: fieldHierarchy.field.type,
128
- },
129
- }),
130
- };
131
- }
132
- traverseContentItemFieldValue(visitor, fieldHierarchy, item.mergedFieldNames, fieldHierarchy.field.type, namePrefix, item.values[fieldHierarchy.field.name], item.displayValues[fieldHierarchy.field.name]);
133
- }
134
- finally {
135
- visitor.finishField();
136
- }
137
- }
138
- function traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue) {
139
- if (rawValue !== undefined) {
140
- if (valueType.valueFormat === PropertyValueFormat.Array) {
141
- assert(Value.isArray(rawValue));
142
- assert(DisplayValue.isArray(displayValue));
143
- return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
144
- }
145
- if (valueType.valueFormat === PropertyValueFormat.Struct) {
146
- assert(Value.isMap(rawValue));
147
- assert(DisplayValue.isMap(displayValue));
148
- return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
149
- }
150
- }
151
- traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
152
- }
153
- function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValues, displayValues) {
154
- assert(rawValues.length === displayValues.length);
155
- assert(valueType.valueFormat === PropertyValueFormat.Array);
156
- if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, namePrefix, rawValues, displayValues }))
157
- return;
158
- try {
159
- const itemType = valueType.memberType;
160
- rawValues.forEach((_, i) => {
161
- traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, namePrefix, rawValues[i], displayValues[i]);
162
- });
163
- }
164
- finally {
165
- visitor.finishArray();
166
- }
167
- }
168
- function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValues, displayValues) {
169
- assert(valueType.valueFormat === PropertyValueFormat.Struct);
170
- if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, namePrefix, rawValues, displayValues }))
171
- return;
172
- try {
173
- if (fieldHierarchy.field.isNestedContentField())
174
- namePrefix = applyOptionalPrefix(fieldHierarchy.field.name, namePrefix);
175
- valueType.members.forEach((memberDescription) => {
176
- let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);
177
- if (!memberField) {
178
- // Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we
179
- // create a fake field to represent the member
180
- memberField = {
181
- field: new Field(fieldHierarchy.field.category, memberDescription.name, memberDescription.label, memberDescription.type, fieldHierarchy.field.isReadonly, 0),
182
- childFields: [],
183
- };
184
- }
185
- traverseContentItemFieldValue(visitor, memberField, mergedFieldNames, memberDescription.type, namePrefix, rawValues[memberDescription.name], displayValues[memberDescription.name]);
186
- });
187
- }
188
- finally {
189
- visitor.finishStruct();
190
- }
191
- }
192
- function traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue) {
193
- if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {
194
- visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, namePrefix });
195
- return;
196
- }
197
- visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, namePrefix, rawValue, displayValue });
198
- }
199
- /**
200
- * `ignoreCategories` parameter enables adding all of the `nestedFields` to parent field's `childFields`
201
- * without considering categories.
202
- * @internal
203
- */
204
- export function createFieldHierarchies(fields, ignoreCategories) {
205
- const hierarchies = new Array();
206
- const visitField = (category, field, parentField) => {
207
- let childFields = [];
208
- if (field.isNestedContentField()) {
209
- // visit all nested fields
210
- childFields = visitFields(field.nestedFields, field);
211
- if (0 === childFields.length)
212
- return undefined;
213
- }
214
- const fieldHierarchy = { field, childFields };
215
- if (category === (parentField === null || parentField === void 0 ? void 0 : parentField.category) || ignoreCategories && parentField) {
216
- // if categories of this field and its parent field match - return the field hierarchy without
217
- // including it as a top level field
218
- return fieldHierarchy;
219
- }
220
- addFieldHierarchy(hierarchies, fieldHierarchy);
221
- return undefined;
222
- };
223
- const visitFields = (visitedFields, parentField) => {
224
- const includedFields = [];
225
- visitedFields.forEach((field) => {
226
- const visitedField = visitField(field.category, field, parentField);
227
- if (visitedField)
228
- includedFields.push(visitedField);
229
- });
230
- return includedFields;
231
- };
232
- visitFields(fields, undefined);
233
- return hierarchies;
234
- }
235
- function findRelatedFields(rootFields, hierarchy) {
236
- // build a list of parent fields in hierarchy
237
- const fields = [];
238
- let currField = hierarchy.field;
239
- while (currField) {
240
- fields.push(currField);
241
- currField = currField.parent;
242
- }
243
- for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {
244
- const rootFieldHierarchy = rootFields[rootIndex];
245
- if (rootFieldHierarchy.field.category !== hierarchy.field.category) {
246
- // only interested in fields with the same category
247
- continue;
248
- }
249
- let first = true;
250
- currField = rootFieldHierarchy.field;
251
- while (currField) {
252
- const index = fields.findIndex((f) => f.name === currField.name);
253
- if (-1 !== index) {
254
- return {
255
- existing: {
256
- field: currField,
257
- hierarchy: first ? rootFieldHierarchy : undefined,
258
- index: rootIndex,
259
- },
260
- matchingField: fields[index],
261
- };
262
- }
263
- currField = currField.parent;
264
- first = false;
265
- }
266
- }
267
- return undefined;
268
- }
269
- function buildParentHierarchy(hierarchy, parentField) {
270
- // note: parentField is found by walking up the parentship relationship
271
- // from hierarchy.field, so we expect to always find it here
272
- while (hierarchy.field !== parentField) {
273
- const hierarchyParent = hierarchy.field.parent;
274
- assert(hierarchyParent !== undefined);
275
- hierarchy = { field: hierarchyParent, childFields: [hierarchy] };
276
- }
277
- return hierarchy;
278
- }
279
- function mergeHierarchies(lhs, rhs) {
280
- assert(lhs.field.name === rhs.field.name);
281
- const result = {
282
- field: lhs.field.clone(),
283
- childFields: [...lhs.childFields],
284
- };
285
- rhs.childFields.forEach((rhsChildHierarchy) => {
286
- const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);
287
- if (indexInResult !== -1)
288
- result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);
289
- else
290
- result.childFields.push(rhsChildHierarchy);
291
- });
292
- return result;
293
- }
294
- /** @alpha */
295
- export function addFieldHierarchy(rootHierarchies, hierarchy) {
296
- var _a;
297
- const match = findRelatedFields(rootHierarchies, hierarchy);
298
- if (!match) {
299
- rootHierarchies.push(hierarchy);
300
- return;
301
- }
302
- const targetHierarchy = rootHierarchies[match.existing.index];
303
- const existingHierarchy = (_a = match.existing.hierarchy) !== null && _a !== void 0 ? _a : buildParentHierarchy(targetHierarchy, match.existing.field);
304
- const insertHierarchy = buildParentHierarchy(hierarchy, match.matchingField);
305
- const mergedHierarchy = mergeHierarchies(existingHierarchy, insertHierarchy);
306
- mergedHierarchy.field.category = hierarchy.field.category;
307
- rootHierarchies[match.existing.index] = mergedHierarchy;
308
- }
309
- function createFieldPath(field) {
310
- const path = [field];
311
- let currField = field;
312
- while (currField.parent) {
313
- currField = currField.parent;
314
- path.push(currField);
315
- }
316
- path.reverse();
317
- return path;
318
- }
319
- /** @internal */
320
- export const FIELD_NAMES_SEPARATOR = "$";
321
- /** @internal */
322
- export function applyOptionalPrefix(str, prefix) {
323
- return prefix ? `${prefix}${FIELD_NAMES_SEPARATOR}${str}` : str;
324
- }
325
- function convertNestedContentItemToStructArrayItem(item, field, nextField) {
326
- var _a;
327
- const value = (_a = item.values[field.name]) !== null && _a !== void 0 ? _a : [];
328
- assert(Value.isNestedContent(value));
329
- if (value.length === 0)
330
- return { emptyNestedItem: true, convertedItem: item };
331
- const nextFieldValues = { raw: [], display: [] };
332
- value.forEach((ncv) => {
333
- const nextRawValue = ncv.values[nextField.name];
334
- const nextDisplayValue = ncv.displayValues[nextField.name];
335
- if (nextField.isNestedContentField()) {
336
- if (nextRawValue) {
337
- assert(Value.isNestedContent(nextRawValue));
338
- nextFieldValues.raw.push(...nextRawValue);
339
- }
340
- }
341
- else {
342
- nextFieldValues.raw.push(nextRawValue);
343
- nextFieldValues.display.push(nextDisplayValue);
344
- }
345
- });
346
- const convertedItem = new Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [nextField.name]: nextFieldValues.raw }, { [nextField.name]: nextFieldValues.display }, item.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
347
- return { emptyNestedItem: false, convertedItem };
348
- }
349
- function convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, namePrefix) {
350
- const fieldName = fieldHierarchy.field.name;
351
- const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {
352
- if (child.field.isNestedContentField())
353
- return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, applyOptionalPrefix(fieldName, namePrefix));
354
- return child;
355
- });
356
- const convertedFieldHierarchy = {
357
- field: Object.assign(fieldHierarchy.field.clone(), {
358
- type: {
359
- valueFormat: PropertyValueFormat.Array,
360
- typeName: `${fieldHierarchy.field.type.typeName}[]`,
361
- memberType: {
362
- valueFormat: PropertyValueFormat.Struct,
363
- typeName: fieldHierarchy.field.type.typeName,
364
- members: convertedChildFieldHierarchies.map((member) => ({
365
- name: member.field.name,
366
- label: member.field.label,
367
- type: member.field.type,
368
- })),
369
- },
370
- },
371
- }),
372
- childFields: convertedChildFieldHierarchies,
373
- };
374
- return convertedFieldHierarchy;
375
- }
376
- function convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, ncvs) {
377
- const result = { raw: [], display: [], mergedFieldNames: [] };
378
- ncvs.forEach((ncv) => {
379
- const values = { ...ncv.values };
380
- const displayValues = { ...ncv.displayValues };
381
- const mergedFieldNames = [...ncv.mergedFieldNames];
382
- fieldHierarchy.childFields.forEach((childFieldHierarchy) => {
383
- const childFieldName = childFieldHierarchy.field.name;
384
- if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {
385
- return;
386
- }
387
- if (childFieldHierarchy.field.isNestedContentField()) {
388
- const value = values[childFieldName];
389
- assert(Value.isNestedContent(value));
390
- const convertedValues = convertNestedContentValuesToStructArrayValuesRecursive(childFieldHierarchy, value);
391
- values[childFieldName] = convertedValues.raw;
392
- displayValues[childFieldName] = convertedValues.display;
393
- mergedFieldNames.push(...convertedValues.mergedFieldNames);
394
- }
395
- });
396
- result.raw.push(values);
397
- result.display.push(displayValues);
398
- result.mergedFieldNames.push(...mergedFieldNames);
399
- });
400
- return result;
401
- }
402
- function convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy) {
403
- const fieldName = fieldHierarchy.field.name;
404
- const rawValue = item.values[fieldName];
405
- assert(Value.isNestedContent(rawValue));
406
- if (rawValue.length === 0)
407
- return { emptyNestedItem: true, convertedItem: item };
408
- const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);
409
- const convertedItem = new Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [fieldName]: converted.raw }, { [fieldName]: converted.display }, converted.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
410
- return { emptyNestedItem: false, convertedItem };
411
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Content
7
+ */
8
+ import { assert, using } from "@itwin/core-bentley";
9
+ import { Field } from "./Fields";
10
+ import { Item } from "./Item";
11
+ import { PropertyValueFormat } from "./TypeDescription";
12
+ import { DisplayValue, Value } from "./Value";
13
+ /** @internal */
14
+ export function traverseFieldHierarchy(hierarchy, cb) {
15
+ if (cb(hierarchy))
16
+ hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));
17
+ }
18
+ /** @alpha */
19
+ export function traverseContent(visitor, content) {
20
+ if (!visitor.startContent({ descriptor: content.descriptor }))
21
+ return;
22
+ try {
23
+ const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);
24
+ visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
25
+ content.contentSet.forEach((item) => {
26
+ traverseContentItemFields(visitor, fieldHierarchies, item);
27
+ });
28
+ }
29
+ finally {
30
+ visitor.finishContent();
31
+ }
32
+ }
33
+ /** @alpha */
34
+ export function traverseContentItem(visitor, descriptor, item) {
35
+ if (!visitor.startContent({ descriptor }))
36
+ return;
37
+ try {
38
+ const fieldHierarchies = createFieldHierarchies(descriptor.fields);
39
+ visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
40
+ traverseContentItemFields(visitor, fieldHierarchies, item);
41
+ }
42
+ finally {
43
+ visitor.finishContent();
44
+ }
45
+ }
46
+ class VisitedCategories {
47
+ constructor(_visitor, category) {
48
+ this._visitor = _visitor;
49
+ const stack = [];
50
+ let curr = category;
51
+ while (curr) {
52
+ stack.push(curr);
53
+ curr = curr.parent;
54
+ }
55
+ stack.reverse();
56
+ this._didVisitAllHierarchy = true;
57
+ this._visitedCategories = [];
58
+ for (curr of stack) {
59
+ if (this._visitor.startCategory({ category: curr })) {
60
+ this._visitedCategories.push(curr);
61
+ }
62
+ else {
63
+ this._didVisitAllHierarchy = false;
64
+ break;
65
+ }
66
+ }
67
+ }
68
+ dispose() {
69
+ while (this._visitedCategories.pop())
70
+ this._visitor.finishCategory();
71
+ }
72
+ get shouldContinue() { return this._didVisitAllHierarchy; }
73
+ }
74
+ function traverseContentItemFields(visitor, fieldHierarchies, item) {
75
+ if (!visitor.startItem({ item }))
76
+ return;
77
+ try {
78
+ fieldHierarchies.forEach((fieldHierarchy) => {
79
+ using(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {
80
+ if (res.shouldContinue)
81
+ traverseContentItemField(visitor, fieldHierarchy, item);
82
+ });
83
+ });
84
+ }
85
+ finally {
86
+ visitor.finishItem();
87
+ }
88
+ }
89
+ function traverseContentItemField(visitor, fieldHierarchy, item) {
90
+ if (!visitor.startField({ hierarchy: fieldHierarchy }))
91
+ return;
92
+ try {
93
+ const rootToThisField = createFieldPath(fieldHierarchy.field);
94
+ let namePrefix;
95
+ const pathUpToField = rootToThisField.slice(undefined, -1);
96
+ for (let i = 0; i < pathUpToField.length; ++i) {
97
+ const parentField = pathUpToField[i];
98
+ const nextField = rootToThisField[i + 1];
99
+ if (item.isFieldMerged(parentField.name)) {
100
+ visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, namePrefix });
101
+ return;
102
+ }
103
+ const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);
104
+ if (emptyNestedItem)
105
+ return;
106
+ item = convertedItem;
107
+ namePrefix = applyOptionalPrefix(parentField.name, namePrefix);
108
+ }
109
+ if (item.isFieldMerged(fieldHierarchy.field.name)) {
110
+ visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, namePrefix });
111
+ return;
112
+ }
113
+ if (fieldHierarchy.field.isNestedContentField()) {
114
+ fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, namePrefix);
115
+ const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);
116
+ if (emptyNestedItem)
117
+ return;
118
+ item = convertedItem;
119
+ }
120
+ else if (pathUpToField.length > 0) {
121
+ fieldHierarchy = {
122
+ ...fieldHierarchy,
123
+ field: Object.assign(fieldHierarchy.field.clone(), {
124
+ type: {
125
+ valueFormat: PropertyValueFormat.Array,
126
+ typeName: `${fieldHierarchy.field.type.typeName}[]`,
127
+ memberType: fieldHierarchy.field.type,
128
+ },
129
+ }),
130
+ };
131
+ }
132
+ traverseContentItemFieldValue(visitor, fieldHierarchy, item.mergedFieldNames, fieldHierarchy.field.type, namePrefix, item.values[fieldHierarchy.field.name], item.displayValues[fieldHierarchy.field.name]);
133
+ }
134
+ finally {
135
+ visitor.finishField();
136
+ }
137
+ }
138
+ function traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue) {
139
+ if (rawValue !== undefined) {
140
+ if (valueType.valueFormat === PropertyValueFormat.Array) {
141
+ assert(Value.isArray(rawValue));
142
+ assert(DisplayValue.isArray(displayValue));
143
+ return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
144
+ }
145
+ if (valueType.valueFormat === PropertyValueFormat.Struct) {
146
+ assert(Value.isMap(rawValue));
147
+ assert(DisplayValue.isMap(displayValue));
148
+ return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
149
+ }
150
+ }
151
+ traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue);
152
+ }
153
+ function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValues, displayValues) {
154
+ assert(rawValues.length === displayValues.length);
155
+ assert(valueType.valueFormat === PropertyValueFormat.Array);
156
+ if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, namePrefix, rawValues, displayValues }))
157
+ return;
158
+ try {
159
+ const itemType = valueType.memberType;
160
+ rawValues.forEach((_, i) => {
161
+ traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, namePrefix, rawValues[i], displayValues[i]);
162
+ });
163
+ }
164
+ finally {
165
+ visitor.finishArray();
166
+ }
167
+ }
168
+ function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValues, displayValues) {
169
+ assert(valueType.valueFormat === PropertyValueFormat.Struct);
170
+ if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, namePrefix, rawValues, displayValues }))
171
+ return;
172
+ try {
173
+ if (fieldHierarchy.field.isNestedContentField())
174
+ namePrefix = applyOptionalPrefix(fieldHierarchy.field.name, namePrefix);
175
+ valueType.members.forEach((memberDescription) => {
176
+ let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);
177
+ if (!memberField) {
178
+ // Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we
179
+ // create a fake field to represent the member
180
+ memberField = {
181
+ field: new Field(fieldHierarchy.field.category, memberDescription.name, memberDescription.label, memberDescription.type, fieldHierarchy.field.isReadonly, 0),
182
+ childFields: [],
183
+ };
184
+ }
185
+ traverseContentItemFieldValue(visitor, memberField, mergedFieldNames, memberDescription.type, namePrefix, rawValues[memberDescription.name], displayValues[memberDescription.name]);
186
+ });
187
+ }
188
+ finally {
189
+ visitor.finishStruct();
190
+ }
191
+ }
192
+ function traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, namePrefix, rawValue, displayValue) {
193
+ if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {
194
+ visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, namePrefix });
195
+ return;
196
+ }
197
+ visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, namePrefix, rawValue, displayValue });
198
+ }
199
+ /**
200
+ * `ignoreCategories` parameter enables adding all of the `nestedFields` to parent field's `childFields`
201
+ * without considering categories.
202
+ * @internal
203
+ */
204
+ export function createFieldHierarchies(fields, ignoreCategories) {
205
+ const hierarchies = new Array();
206
+ const visitField = (category, field, parentField) => {
207
+ let childFields = [];
208
+ if (field.isNestedContentField()) {
209
+ // visit all nested fields
210
+ childFields = visitFields(field.nestedFields, field);
211
+ if (0 === childFields.length)
212
+ return undefined;
213
+ }
214
+ const fieldHierarchy = { field, childFields };
215
+ if (category === (parentField === null || parentField === void 0 ? void 0 : parentField.category) || ignoreCategories && parentField) {
216
+ // if categories of this field and its parent field match - return the field hierarchy without
217
+ // including it as a top level field
218
+ return fieldHierarchy;
219
+ }
220
+ addFieldHierarchy(hierarchies, fieldHierarchy);
221
+ return undefined;
222
+ };
223
+ const visitFields = (visitedFields, parentField) => {
224
+ const includedFields = [];
225
+ visitedFields.forEach((field) => {
226
+ const visitedField = visitField(field.category, field, parentField);
227
+ if (visitedField)
228
+ includedFields.push(visitedField);
229
+ });
230
+ return includedFields;
231
+ };
232
+ visitFields(fields, undefined);
233
+ return hierarchies;
234
+ }
235
+ function findRelatedFields(rootFields, hierarchy) {
236
+ // build a list of parent fields in hierarchy
237
+ const fields = [];
238
+ let currField = hierarchy.field;
239
+ while (currField) {
240
+ fields.push(currField);
241
+ currField = currField.parent;
242
+ }
243
+ for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {
244
+ const rootFieldHierarchy = rootFields[rootIndex];
245
+ if (rootFieldHierarchy.field.category !== hierarchy.field.category) {
246
+ // only interested in fields with the same category
247
+ continue;
248
+ }
249
+ let first = true;
250
+ currField = rootFieldHierarchy.field;
251
+ while (currField) {
252
+ const index = fields.findIndex((f) => f.name === currField.name);
253
+ if (-1 !== index) {
254
+ return {
255
+ existing: {
256
+ field: currField,
257
+ hierarchy: first ? rootFieldHierarchy : undefined,
258
+ index: rootIndex,
259
+ },
260
+ matchingField: fields[index],
261
+ };
262
+ }
263
+ currField = currField.parent;
264
+ first = false;
265
+ }
266
+ }
267
+ return undefined;
268
+ }
269
+ function buildParentHierarchy(hierarchy, parentField) {
270
+ // note: parentField is found by walking up the parentship relationship
271
+ // from hierarchy.field, so we expect to always find it here
272
+ while (hierarchy.field !== parentField) {
273
+ const hierarchyParent = hierarchy.field.parent;
274
+ assert(hierarchyParent !== undefined);
275
+ hierarchy = { field: hierarchyParent, childFields: [hierarchy] };
276
+ }
277
+ return hierarchy;
278
+ }
279
+ function mergeHierarchies(lhs, rhs) {
280
+ assert(lhs.field.name === rhs.field.name);
281
+ const result = {
282
+ field: lhs.field.clone(),
283
+ childFields: [...lhs.childFields],
284
+ };
285
+ rhs.childFields.forEach((rhsChildHierarchy) => {
286
+ const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);
287
+ if (indexInResult !== -1)
288
+ result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);
289
+ else
290
+ result.childFields.push(rhsChildHierarchy);
291
+ });
292
+ return result;
293
+ }
294
+ /** @alpha */
295
+ export function addFieldHierarchy(rootHierarchies, hierarchy) {
296
+ var _a;
297
+ const match = findRelatedFields(rootHierarchies, hierarchy);
298
+ if (!match) {
299
+ rootHierarchies.push(hierarchy);
300
+ return;
301
+ }
302
+ const targetHierarchy = rootHierarchies[match.existing.index];
303
+ const existingHierarchy = (_a = match.existing.hierarchy) !== null && _a !== void 0 ? _a : buildParentHierarchy(targetHierarchy, match.existing.field);
304
+ const insertHierarchy = buildParentHierarchy(hierarchy, match.matchingField);
305
+ const mergedHierarchy = mergeHierarchies(existingHierarchy, insertHierarchy);
306
+ mergedHierarchy.field.category = hierarchy.field.category;
307
+ rootHierarchies[match.existing.index] = mergedHierarchy;
308
+ }
309
+ function createFieldPath(field) {
310
+ const path = [field];
311
+ let currField = field;
312
+ while (currField.parent) {
313
+ currField = currField.parent;
314
+ path.push(currField);
315
+ }
316
+ path.reverse();
317
+ return path;
318
+ }
319
+ /** @internal */
320
+ export const FIELD_NAMES_SEPARATOR = "$";
321
+ /** @internal */
322
+ export function applyOptionalPrefix(str, prefix) {
323
+ return prefix ? `${prefix}${FIELD_NAMES_SEPARATOR}${str}` : str;
324
+ }
325
+ function convertNestedContentItemToStructArrayItem(item, field, nextField) {
326
+ var _a;
327
+ const value = (_a = item.values[field.name]) !== null && _a !== void 0 ? _a : [];
328
+ assert(Value.isNestedContent(value));
329
+ if (value.length === 0)
330
+ return { emptyNestedItem: true, convertedItem: item };
331
+ const nextFieldValues = { raw: [], display: [] };
332
+ value.forEach((ncv) => {
333
+ const nextRawValue = ncv.values[nextField.name];
334
+ const nextDisplayValue = ncv.displayValues[nextField.name];
335
+ if (nextField.isNestedContentField()) {
336
+ if (nextRawValue) {
337
+ assert(Value.isNestedContent(nextRawValue));
338
+ nextFieldValues.raw.push(...nextRawValue);
339
+ }
340
+ }
341
+ else {
342
+ nextFieldValues.raw.push(nextRawValue);
343
+ nextFieldValues.display.push(nextDisplayValue);
344
+ }
345
+ });
346
+ const convertedItem = new Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [nextField.name]: nextFieldValues.raw }, { [nextField.name]: nextFieldValues.display }, item.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
347
+ return { emptyNestedItem: false, convertedItem };
348
+ }
349
+ function convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, namePrefix) {
350
+ const fieldName = fieldHierarchy.field.name;
351
+ const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {
352
+ if (child.field.isNestedContentField())
353
+ return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, applyOptionalPrefix(fieldName, namePrefix));
354
+ return child;
355
+ });
356
+ const convertedFieldHierarchy = {
357
+ field: Object.assign(fieldHierarchy.field.clone(), {
358
+ type: {
359
+ valueFormat: PropertyValueFormat.Array,
360
+ typeName: `${fieldHierarchy.field.type.typeName}[]`,
361
+ memberType: {
362
+ valueFormat: PropertyValueFormat.Struct,
363
+ typeName: fieldHierarchy.field.type.typeName,
364
+ members: convertedChildFieldHierarchies.map((member) => ({
365
+ name: member.field.name,
366
+ label: member.field.label,
367
+ type: member.field.type,
368
+ })),
369
+ },
370
+ },
371
+ }),
372
+ childFields: convertedChildFieldHierarchies,
373
+ };
374
+ return convertedFieldHierarchy;
375
+ }
376
+ function convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, ncvs) {
377
+ const result = { raw: [], display: [], mergedFieldNames: [] };
378
+ ncvs.forEach((ncv) => {
379
+ const values = { ...ncv.values };
380
+ const displayValues = { ...ncv.displayValues };
381
+ const mergedFieldNames = [...ncv.mergedFieldNames];
382
+ fieldHierarchy.childFields.forEach((childFieldHierarchy) => {
383
+ const childFieldName = childFieldHierarchy.field.name;
384
+ if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {
385
+ return;
386
+ }
387
+ if (childFieldHierarchy.field.isNestedContentField()) {
388
+ const value = values[childFieldName];
389
+ assert(Value.isNestedContent(value));
390
+ const convertedValues = convertNestedContentValuesToStructArrayValuesRecursive(childFieldHierarchy, value);
391
+ values[childFieldName] = convertedValues.raw;
392
+ displayValues[childFieldName] = convertedValues.display;
393
+ mergedFieldNames.push(...convertedValues.mergedFieldNames);
394
+ }
395
+ });
396
+ result.raw.push(values);
397
+ result.display.push(displayValues);
398
+ result.mergedFieldNames.push(...mergedFieldNames);
399
+ });
400
+ return result;
401
+ }
402
+ function convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy) {
403
+ const fieldName = fieldHierarchy.field.name;
404
+ const rawValue = item.values[fieldName];
405
+ assert(Value.isNestedContent(rawValue));
406
+ if (rawValue.length === 0)
407
+ return { emptyNestedItem: true, convertedItem: item };
408
+ const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);
409
+ const convertedItem = new Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [fieldName]: converted.raw }, { [fieldName]: converted.display }, converted.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
410
+ return { emptyNestedItem: false, convertedItem };
411
+ }
412
412
  //# sourceMappingURL=ContentTraverser.js.map