@itwin/presentation-common 4.5.0-dev.0 → 4.5.0-dev.10

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 (389) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +1 -1
  3. package/lib/cjs/assets/locales/en/Presentation.json +19 -19
  4. package/lib/cjs/presentation-common/AsyncTasks.d.ts.map +1 -1
  5. package/lib/cjs/presentation-common/AsyncTasks.js +6 -4
  6. package/lib/cjs/presentation-common/AsyncTasks.js.map +1 -1
  7. package/lib/cjs/presentation-common/CommonLoggerCategory.js +3 -3
  8. package/lib/cjs/presentation-common/CommonLoggerCategory.js.map +1 -1
  9. package/lib/cjs/presentation-common/Diagnostics.d.ts.map +1 -1
  10. package/lib/cjs/presentation-common/Diagnostics.js +27 -15
  11. package/lib/cjs/presentation-common/Diagnostics.js.map +1 -1
  12. package/lib/cjs/presentation-common/EC.d.ts +4 -4
  13. package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
  14. package/lib/cjs/presentation-common/EC.js +22 -17
  15. package/lib/cjs/presentation-common/EC.js.map +1 -1
  16. package/lib/cjs/presentation-common/ElementProperties.js +3 -3
  17. package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
  18. package/lib/cjs/presentation-common/Error.d.ts.map +1 -1
  19. package/lib/cjs/presentation-common/Error.js +5 -4
  20. package/lib/cjs/presentation-common/Error.js.map +1 -1
  21. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  22. package/lib/cjs/presentation-common/InstanceFilterDefinition.js +3 -3
  23. package/lib/cjs/presentation-common/InstanceFilterDefinition.js.map +1 -1
  24. package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
  25. package/lib/cjs/presentation-common/KeySet.js +80 -46
  26. package/lib/cjs/presentation-common/KeySet.js.map +1 -1
  27. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  28. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  29. package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
  30. package/lib/cjs/presentation-common/LabelDefinition.js +5 -4
  31. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  32. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  33. package/lib/cjs/presentation-common/PresentationIpcInterface.js +3 -3
  34. package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
  35. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +6 -0
  36. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  37. package/lib/cjs/presentation-common/PresentationManagerOptions.js +3 -3
  38. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  39. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  40. package/lib/cjs/presentation-common/PresentationRpcInterface.js +52 -20
  41. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  42. package/lib/cjs/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  43. package/lib/cjs/presentation-common/RegisteredRuleset.js +21 -9
  44. package/lib/cjs/presentation-common/RegisteredRuleset.js.map +1 -1
  45. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +1 -1
  46. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  47. package/lib/cjs/presentation-common/RpcRequestsHandler.js +19 -15
  48. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  49. package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
  50. package/lib/cjs/presentation-common/RulesetVariables.js +7 -5
  51. package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
  52. package/lib/cjs/presentation-common/RulesetsFactory.d.ts.map +1 -1
  53. package/lib/cjs/presentation-common/RulesetsFactory.js +42 -26
  54. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  55. package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
  56. package/lib/cjs/presentation-common/Update.js +4 -3
  57. package/lib/cjs/presentation-common/Update.js.map +1 -1
  58. package/lib/cjs/presentation-common/Utils.js +3 -3
  59. package/lib/cjs/presentation-common/Utils.js.map +1 -1
  60. package/lib/cjs/presentation-common/content/Category.js +3 -3
  61. package/lib/cjs/presentation-common/content/Category.js.map +1 -1
  62. package/lib/cjs/presentation-common/content/Content.d.ts.map +1 -1
  63. package/lib/cjs/presentation-common/content/Content.js +10 -9
  64. package/lib/cjs/presentation-common/content/Content.js.map +1 -1
  65. package/lib/cjs/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  66. package/lib/cjs/presentation-common/content/ContentTraverser.js +47 -25
  67. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  68. package/lib/cjs/presentation-common/content/Descriptor.d.ts.map +1 -1
  69. package/lib/cjs/presentation-common/content/Descriptor.js +56 -21
  70. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  71. package/lib/cjs/presentation-common/content/DisplayTypes.js +3 -3
  72. package/lib/cjs/presentation-common/content/DisplayTypes.js.map +1 -1
  73. package/lib/cjs/presentation-common/content/Editor.js +3 -3
  74. package/lib/cjs/presentation-common/content/Editor.js.map +1 -1
  75. package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
  76. package/lib/cjs/presentation-common/content/Fields.js +47 -23
  77. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  78. package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
  79. package/lib/cjs/presentation-common/content/Item.js +8 -6
  80. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  81. package/lib/cjs/presentation-common/content/Property.d.ts +1 -1
  82. package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
  83. package/lib/cjs/presentation-common/content/Property.js +4 -4
  84. package/lib/cjs/presentation-common/content/Property.js.map +1 -1
  85. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  86. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +13 -11
  87. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  88. package/lib/cjs/presentation-common/content/Renderer.js +3 -3
  89. package/lib/cjs/presentation-common/content/Renderer.js.map +1 -1
  90. package/lib/cjs/presentation-common/content/TypeDescription.js +3 -3
  91. package/lib/cjs/presentation-common/content/TypeDescription.js.map +1 -1
  92. package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
  93. package/lib/cjs/presentation-common/content/Value.js +46 -30
  94. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  95. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  96. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  97. package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
  98. package/lib/cjs/presentation-common/hierarchy/Key.js +14 -8
  99. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  100. package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
  101. package/lib/cjs/presentation-common/hierarchy/Node.js +7 -5
  102. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  103. package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  104. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +11 -7
  105. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  106. package/lib/cjs/presentation-common/rules/ClassSpecifications.js +3 -3
  107. package/lib/cjs/presentation-common/rules/ClassSpecifications.js.map +1 -1
  108. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  109. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  110. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +3 -3
  111. package/lib/cjs/presentation-common/rules/RelationshipDirection.js.map +1 -1
  112. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  113. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  114. package/lib/cjs/presentation-common/rules/Rule.js +3 -3
  115. package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
  116. package/lib/cjs/presentation-common/rules/Ruleset.js +3 -3
  117. package/lib/cjs/presentation-common/rules/Ruleset.js.map +1 -1
  118. package/lib/cjs/presentation-common/rules/SchemasSpecification.js +3 -3
  119. package/lib/cjs/presentation-common/rules/SchemasSpecification.js.map +1 -1
  120. package/lib/cjs/presentation-common/rules/Variables.js +3 -3
  121. package/lib/cjs/presentation-common/rules/Variables.js.map +1 -1
  122. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  123. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  124. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  125. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  126. package/lib/cjs/presentation-common/rules/content/ContentRule.js +3 -3
  127. package/lib/cjs/presentation-common/rules/content/ContentRule.js.map +1 -1
  128. package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  129. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +3 -3
  130. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  131. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  132. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  133. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +3 -3
  134. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  135. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  136. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  137. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  138. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  139. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  140. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  141. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  142. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  143. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  144. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  145. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  146. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  147. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  148. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  149. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  150. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  151. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  152. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  153. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  154. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +3 -3
  155. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  156. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  157. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  158. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +3 -3
  159. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  160. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  161. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  162. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  163. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  164. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  165. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +3 -3
  166. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  167. package/lib/cjs/presentation-common/rules/customization/SortingRule.js +3 -3
  168. package/lib/cjs/presentation-common/rules/customization/SortingRule.js.map +1 -1
  169. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +3 -3
  170. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  171. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  172. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  173. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  174. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  175. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  176. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  177. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  178. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  179. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  180. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  181. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  182. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  183. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  184. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  185. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  186. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  187. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  188. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  189. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  190. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  191. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  192. package/lib/cjs/presentation-common/selection/SelectionScope.js +3 -3
  193. package/lib/cjs/presentation-common/selection/SelectionScope.js.map +1 -1
  194. package/lib/cjs/presentation-common.js +3 -3
  195. package/lib/cjs/presentation-common.js.map +1 -1
  196. package/lib/esm/presentation-common/AsyncTasks.d.ts.map +1 -1
  197. package/lib/esm/presentation-common/AsyncTasks.js +6 -4
  198. package/lib/esm/presentation-common/AsyncTasks.js.map +1 -1
  199. package/lib/esm/presentation-common/CommonLoggerCategory.js +3 -3
  200. package/lib/esm/presentation-common/CommonLoggerCategory.js.map +1 -1
  201. package/lib/esm/presentation-common/Diagnostics.d.ts.map +1 -1
  202. package/lib/esm/presentation-common/Diagnostics.js +27 -15
  203. package/lib/esm/presentation-common/Diagnostics.js.map +1 -1
  204. package/lib/esm/presentation-common/EC.d.ts +4 -4
  205. package/lib/esm/presentation-common/EC.d.ts.map +1 -1
  206. package/lib/esm/presentation-common/EC.js +22 -17
  207. package/lib/esm/presentation-common/EC.js.map +1 -1
  208. package/lib/esm/presentation-common/ElementProperties.js +3 -3
  209. package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
  210. package/lib/esm/presentation-common/Error.d.ts.map +1 -1
  211. package/lib/esm/presentation-common/Error.js +5 -4
  212. package/lib/esm/presentation-common/Error.js.map +1 -1
  213. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  214. package/lib/esm/presentation-common/InstanceFilterDefinition.js +3 -3
  215. package/lib/esm/presentation-common/InstanceFilterDefinition.js.map +1 -1
  216. package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
  217. package/lib/esm/presentation-common/KeySet.js +80 -46
  218. package/lib/esm/presentation-common/KeySet.js.map +1 -1
  219. package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  220. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  221. package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
  222. package/lib/esm/presentation-common/LabelDefinition.js +5 -4
  223. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  224. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  225. package/lib/esm/presentation-common/PresentationIpcInterface.js +3 -3
  226. package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
  227. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +6 -0
  228. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  229. package/lib/esm/presentation-common/PresentationManagerOptions.js +3 -3
  230. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  231. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  232. package/lib/esm/presentation-common/PresentationRpcInterface.js +52 -20
  233. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  234. package/lib/esm/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  235. package/lib/esm/presentation-common/RegisteredRuleset.js +21 -9
  236. package/lib/esm/presentation-common/RegisteredRuleset.js.map +1 -1
  237. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +1 -1
  238. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  239. package/lib/esm/presentation-common/RpcRequestsHandler.js +20 -16
  240. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  241. package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
  242. package/lib/esm/presentation-common/RulesetVariables.js +7 -5
  243. package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
  244. package/lib/esm/presentation-common/RulesetsFactory.d.ts.map +1 -1
  245. package/lib/esm/presentation-common/RulesetsFactory.js +42 -26
  246. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  247. package/lib/esm/presentation-common/Update.d.ts.map +1 -1
  248. package/lib/esm/presentation-common/Update.js +4 -3
  249. package/lib/esm/presentation-common/Update.js.map +1 -1
  250. package/lib/esm/presentation-common/Utils.js +3 -3
  251. package/lib/esm/presentation-common/Utils.js.map +1 -1
  252. package/lib/esm/presentation-common/content/Category.js +3 -3
  253. package/lib/esm/presentation-common/content/Category.js.map +1 -1
  254. package/lib/esm/presentation-common/content/Content.d.ts.map +1 -1
  255. package/lib/esm/presentation-common/content/Content.js +10 -9
  256. package/lib/esm/presentation-common/content/Content.js.map +1 -1
  257. package/lib/esm/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  258. package/lib/esm/presentation-common/content/ContentTraverser.js +47 -25
  259. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  260. package/lib/esm/presentation-common/content/Descriptor.d.ts.map +1 -1
  261. package/lib/esm/presentation-common/content/Descriptor.js +56 -21
  262. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  263. package/lib/esm/presentation-common/content/DisplayTypes.js +3 -3
  264. package/lib/esm/presentation-common/content/DisplayTypes.js.map +1 -1
  265. package/lib/esm/presentation-common/content/Editor.js +3 -3
  266. package/lib/esm/presentation-common/content/Editor.js.map +1 -1
  267. package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
  268. package/lib/esm/presentation-common/content/Fields.js +47 -23
  269. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  270. package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
  271. package/lib/esm/presentation-common/content/Item.js +8 -6
  272. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  273. package/lib/esm/presentation-common/content/Property.d.ts +1 -1
  274. package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
  275. package/lib/esm/presentation-common/content/Property.js +4 -4
  276. package/lib/esm/presentation-common/content/Property.js.map +1 -1
  277. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  278. package/lib/esm/presentation-common/content/PropertyValueFormatter.js +13 -11
  279. package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  280. package/lib/esm/presentation-common/content/Renderer.js +3 -3
  281. package/lib/esm/presentation-common/content/Renderer.js.map +1 -1
  282. package/lib/esm/presentation-common/content/TypeDescription.js +3 -3
  283. package/lib/esm/presentation-common/content/TypeDescription.js.map +1 -1
  284. package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
  285. package/lib/esm/presentation-common/content/Value.js +46 -30
  286. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  287. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  288. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  289. package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
  290. package/lib/esm/presentation-common/hierarchy/Key.js +14 -8
  291. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  292. package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
  293. package/lib/esm/presentation-common/hierarchy/Node.js +7 -5
  294. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  295. package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  296. package/lib/esm/presentation-common/hierarchy/NodePathElement.js +11 -7
  297. package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  298. package/lib/esm/presentation-common/rules/ClassSpecifications.js +3 -3
  299. package/lib/esm/presentation-common/rules/ClassSpecifications.js.map +1 -1
  300. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  301. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  302. package/lib/esm/presentation-common/rules/RelationshipDirection.js +3 -3
  303. package/lib/esm/presentation-common/rules/RelationshipDirection.js.map +1 -1
  304. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  305. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  306. package/lib/esm/presentation-common/rules/Rule.js +3 -3
  307. package/lib/esm/presentation-common/rules/Rule.js.map +1 -1
  308. package/lib/esm/presentation-common/rules/Ruleset.js +3 -3
  309. package/lib/esm/presentation-common/rules/Ruleset.js.map +1 -1
  310. package/lib/esm/presentation-common/rules/SchemasSpecification.js +3 -3
  311. package/lib/esm/presentation-common/rules/SchemasSpecification.js.map +1 -1
  312. package/lib/esm/presentation-common/rules/Variables.js +3 -3
  313. package/lib/esm/presentation-common/rules/Variables.js.map +1 -1
  314. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  315. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  316. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  317. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  318. package/lib/esm/presentation-common/rules/content/ContentRule.js +3 -3
  319. package/lib/esm/presentation-common/rules/content/ContentRule.js.map +1 -1
  320. package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  321. package/lib/esm/presentation-common/rules/content/ContentSpecification.js +3 -3
  322. package/lib/esm/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  323. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  324. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  325. package/lib/esm/presentation-common/rules/content/PropertySpecification.js +3 -3
  326. package/lib/esm/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  327. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  328. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  329. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  330. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  331. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  332. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  333. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  334. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  335. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  336. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  337. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  338. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  339. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  340. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  341. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  342. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  343. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  344. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  345. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  346. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +3 -3
  347. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  348. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  349. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  350. package/lib/esm/presentation-common/rules/customization/GroupingRule.js +3 -3
  351. package/lib/esm/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  352. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  353. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  354. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  355. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  356. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  357. package/lib/esm/presentation-common/rules/customization/LabelOverride.js +3 -3
  358. package/lib/esm/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  359. package/lib/esm/presentation-common/rules/customization/SortingRule.js +3 -3
  360. package/lib/esm/presentation-common/rules/customization/SortingRule.js.map +1 -1
  361. package/lib/esm/presentation-common/rules/customization/StyleOverride.js +3 -3
  362. package/lib/esm/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  363. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  364. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  365. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  366. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  367. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  368. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  369. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  370. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  371. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  372. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  373. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  374. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  375. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  376. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  377. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  378. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  379. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  380. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  381. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  382. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  383. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  384. package/lib/esm/presentation-common/selection/SelectionScope.js +3 -3
  385. package/lib/esm/presentation-common/selection/SelectionScope.js.map +1 -1
  386. package/lib/esm/presentation-common.js +3 -3
  387. package/lib/esm/presentation-common.js.map +1 -1
  388. package/lib/public/locales/en/Presentation.json +19 -19
  389. package/package.json +14 -11
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
6
  /** @packageDocumentation
7
7
  * @module Content
8
8
  */
@@ -19,8 +19,9 @@ const Value_1 = require("./Value");
19
19
  * @public
20
20
  */
21
21
  function traverseFieldHierarchy(hierarchy, cb) {
22
- if (cb(hierarchy))
22
+ if (cb(hierarchy)) {
23
23
  hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));
24
+ }
24
25
  }
25
26
  exports.traverseFieldHierarchy = traverseFieldHierarchy;
26
27
  /**
@@ -29,8 +30,9 @@ exports.traverseFieldHierarchy = traverseFieldHierarchy;
29
30
  * @public
30
31
  */
31
32
  function traverseContent(visitor, content) {
32
- if (!visitor.startContent({ descriptor: content.descriptor }))
33
+ if (!visitor.startContent({ descriptor: content.descriptor })) {
33
34
  return;
35
+ }
34
36
  try {
35
37
  const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);
36
38
  visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
@@ -74,19 +76,24 @@ class VisitedCategories {
74
76
  }
75
77
  }
76
78
  dispose() {
77
- while (this._visitedCategories.pop())
79
+ while (this._visitedCategories.pop()) {
78
80
  this._visitor.finishCategory();
81
+ }
82
+ }
83
+ get shouldContinue() {
84
+ return this._didVisitAllHierarchy;
79
85
  }
80
- get shouldContinue() { return this._didVisitAllHierarchy; }
81
86
  }
82
87
  function traverseContentItemFields(visitor, fieldHierarchies, item) {
83
- if (!visitor.startItem({ item }))
88
+ if (!visitor.startItem({ item })) {
84
89
  return;
90
+ }
85
91
  try {
86
92
  fieldHierarchies.forEach((fieldHierarchy) => {
87
93
  (0, core_bentley_1.using)(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {
88
- if (res.shouldContinue)
94
+ if (res.shouldContinue) {
89
95
  traverseContentItemField(visitor, fieldHierarchy, item);
96
+ }
90
97
  });
91
98
  });
92
99
  }
@@ -95,8 +102,9 @@ function traverseContentItemFields(visitor, fieldHierarchies, item) {
95
102
  }
96
103
  }
97
104
  function traverseContentItemField(visitor, fieldHierarchy, item) {
98
- if (!visitor.startField({ hierarchy: fieldHierarchy }))
105
+ if (!visitor.startField({ hierarchy: fieldHierarchy })) {
99
106
  return;
107
+ }
100
108
  try {
101
109
  const rootToThisField = createFieldPath(fieldHierarchy.field);
102
110
  let parentFieldName;
@@ -109,8 +117,9 @@ function traverseContentItemField(visitor, fieldHierarchy, item) {
109
117
  return;
110
118
  }
111
119
  const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);
112
- if (emptyNestedItem)
120
+ if (emptyNestedItem) {
113
121
  return;
122
+ }
114
123
  item = convertedItem;
115
124
  parentFieldName = combineFieldNames(parentField.name, parentFieldName);
116
125
  }
@@ -121,8 +130,9 @@ function traverseContentItemField(visitor, fieldHierarchy, item) {
121
130
  if (fieldHierarchy.field.isNestedContentField()) {
122
131
  fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName);
123
132
  const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);
124
- if (emptyNestedItem)
133
+ if (emptyNestedItem) {
125
134
  return;
135
+ }
126
136
  item = convertedItem;
127
137
  }
128
138
  else if (pathUpToField.length > 0) {
@@ -161,8 +171,9 @@ function traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames
161
171
  function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
162
172
  (0, core_bentley_1.assert)(rawValues.length === displayValues.length);
163
173
  (0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Array);
164
- if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
174
+ if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues })) {
165
175
  return;
176
+ }
166
177
  try {
167
178
  const itemType = valueType.memberType;
168
179
  rawValues.forEach((_, i) => {
@@ -175,11 +186,13 @@ function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedField
175
186
  }
176
187
  function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
177
188
  (0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Struct);
178
- if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
189
+ if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues })) {
179
190
  return;
191
+ }
180
192
  try {
181
- if (fieldHierarchy.field.isNestedContentField())
193
+ if (fieldHierarchy.field.isNestedContentField()) {
182
194
  parentFieldName = combineFieldNames(fieldHierarchy.field.name, parentFieldName);
195
+ }
183
196
  valueType.members.forEach((memberDescription) => {
184
197
  let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);
185
198
  if (!memberField) {
@@ -219,11 +232,12 @@ function createFieldHierarchies(fields, ignoreCategories) {
219
232
  if (field.isNestedContentField()) {
220
233
  // visit all nested fields
221
234
  childFields = visitFields(field.nestedFields, field);
222
- if (0 === childFields.length)
235
+ if (0 === childFields.length) {
223
236
  return undefined;
237
+ }
224
238
  }
225
239
  const fieldHierarchy = { field, childFields };
226
- if (category === parentField?.category || ignoreCategories && parentField) {
240
+ if (category === parentField?.category || (ignoreCategories && parentField)) {
227
241
  // if categories of this field and its parent field match - return the field hierarchy without
228
242
  // including it as a top level field
229
243
  return fieldHierarchy;
@@ -235,8 +249,9 @@ function createFieldHierarchies(fields, ignoreCategories) {
235
249
  const includedFields = [];
236
250
  visitedFields.forEach((field) => {
237
251
  const visitedField = visitField(field.category, field, parentField);
238
- if (visitedField)
252
+ if (visitedField) {
239
253
  includedFields.push(visitedField);
254
+ }
240
255
  });
241
256
  return includedFields;
242
257
  };
@@ -296,10 +311,12 @@ function mergeHierarchies(lhs, rhs) {
296
311
  };
297
312
  rhs.childFields.forEach((rhsChildHierarchy) => {
298
313
  const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);
299
- if (indexInResult !== -1)
314
+ if (indexInResult !== -1) {
300
315
  result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);
301
- else
316
+ }
317
+ else {
302
318
  result.childFields.push(rhsChildHierarchy);
319
+ }
303
320
  });
304
321
  return result;
305
322
  }
@@ -352,8 +369,9 @@ exports.parseCombinedFieldNames = parseCombinedFieldNames;
352
369
  function convertNestedContentItemToStructArrayItem(item, field, nextField) {
353
370
  const value = item.values[field.name] ?? [];
354
371
  (0, core_bentley_1.assert)(Value_1.Value.isNestedContent(value));
355
- if (value.length === 0)
372
+ if (value.length === 0) {
356
373
  return { emptyNestedItem: true, convertedItem: item };
374
+ }
357
375
  const nextFieldValues = { raw: [], display: [] };
358
376
  value.forEach((ncv) => {
359
377
  const nextRawValue = ncv.values[nextField.name];
@@ -369,14 +387,16 @@ function convertNestedContentItemToStructArrayItem(item, field, nextField) {
369
387
  nextFieldValues.display.push(nextDisplayValue);
370
388
  }
371
389
  });
372
- const convertedItem = new Item_1.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
390
+ const convertedItem = new Item_1.Item(item.primaryKeys, item.label, item.imageId, // eslint-disable-line deprecation/deprecation
391
+ item.classInfo, { [nextField.name]: nextFieldValues.raw }, { [nextField.name]: nextFieldValues.display }, item.mergedFieldNames, item.extendedData);
373
392
  return { emptyNestedItem: false, convertedItem };
374
393
  }
375
394
  function convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName) {
376
395
  const fieldName = fieldHierarchy.field.name;
377
396
  const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {
378
- if (child.field.isNestedContentField())
397
+ if (child.field.isNestedContentField()) {
379
398
  return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, combineFieldNames(fieldName, parentFieldName));
399
+ }
380
400
  return child;
381
401
  });
382
402
  const convertedFieldHierarchy = {
@@ -429,10 +449,12 @@ function convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHier
429
449
  const fieldName = fieldHierarchy.field.name;
430
450
  const rawValue = item.values[fieldName];
431
451
  (0, core_bentley_1.assert)(Value_1.Value.isNestedContent(rawValue));
432
- if (rawValue.length === 0)
452
+ if (rawValue.length === 0) {
433
453
  return { emptyNestedItem: true, convertedItem: item };
454
+ }
434
455
  const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);
435
- const convertedItem = new Item_1.Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [fieldName]: converted.raw }, { [fieldName]: converted.display }, converted.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
456
+ const convertedItem = new Item_1.Item(item.primaryKeys, item.label, item.imageId, // eslint-disable-line deprecation/deprecation
457
+ item.classInfo, { [fieldName]: converted.raw }, { [fieldName]: converted.display }, converted.mergedFieldNames, item.extendedData);
436
458
  return { emptyNestedItem: false, convertedItem };
437
459
  }
438
460
  //# sourceMappingURL=ContentTraverser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTraverser.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/ContentTraverser.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/** @packageDocumentation\n * @module Content\n */\n\nimport { assert, IDisposable, using } from \"@itwin/core-bentley\";\nimport { CategoryDescription } from \"./Category\";\nimport { Content } from \"./Content\";\nimport { Descriptor } from \"./Descriptor\";\nimport { Field, NestedContentField } from \"./Fields\";\nimport { Item } from \"./Item\";\nimport { PropertyValueFormat, TypeDescription } from \"./TypeDescription\";\nimport { DisplayValue, DisplayValuesArray, DisplayValuesMap, NestedContentValue, Value, ValuesArray, ValuesMap } from \"./Value\";\n\n/**\n * A data structure to define a hierarchy of [[Field]] objects.\n * @public\n */\nexport interface FieldHierarchy {\n /** Parent field. */\n field: Field;\n /** Nested fields. */\n childFields: FieldHierarchy[];\n}\n\n/**\n * Props for the [[IContentVisitor.startContent]] call.\n * @public\n */\nexport interface StartContentProps {\n /** Descriptor of the visited content. */\n descriptor: Descriptor;\n}\n\n/**\n * Props for the [[IContentVisitor.processFieldHierarchies]] call.\n * @public\n */\nexport interface ProcessFieldHierarchiesProps {\n /**\n * The root list of fields, which may be mutated by the visitor to change order or the fields,\n * add new fields, etc.\n */\n hierarchies: FieldHierarchy[];\n}\n\n/**\n * Props for the [[IContentVisitor.startItem]] call.\n * @public\n */\nexport interface StartItemProps {\n /** The content item that's about to be visited. */\n item: Item;\n}\n\n/**\n * Props for the [[IContentVisitor.startCategory]] call.\n * @public\n */\nexport interface StartCategoryProps {\n /** The content category that's about to be visited. */\n category: CategoryDescription;\n}\n\n/**\n * Props for the [[IContentVisitor.startField]] call.\n * @public\n */\nexport interface StartFieldProps {\n /** The field that's about to be visited. */\n hierarchy: FieldHierarchy;\n}\n\n/**\n * Props for the [[IContentVisitor.startStruct]] call.\n * @public\n */\nexport interface StartStructProps {\n /** Field that describes the struct. */\n hierarchy: FieldHierarchy;\n /** Type of the struct. */\n valueType: TypeDescription;\n /** Name of the parent field (if there is one). */\n parentFieldName?: string;\n /** Member raw values. */\n rawValues: ValuesMap;\n /** Member display values. */\n displayValues: DisplayValuesMap;\n}\n\n/**\n * Props for the [[IContentVisitor.startArray]] call.\n * @public\n */\nexport interface StartArrayProps {\n /** Field that describes the array. */\n hierarchy: FieldHierarchy;\n /** Type of the array. */\n valueType: TypeDescription;\n /** Name of the parent field (if there is one). */\n parentFieldName?: string;\n /** Item raw values. */\n rawValues: ValuesArray;\n /** Item display values. */\n displayValues: DisplayValuesArray;\n}\n\n/**\n * Props for the [[IContentVisitor.processMergedValue]] call.\n * @public\n */\nexport interface ProcessMergedValueProps {\n /** The field whose values are merged. */\n mergedField: Field;\n /**\n * Generally this matches the [[mergedField]], but there are situations when a nested field is propagated\n * up to display it as if it wasn't nested its parent fields. In those cases, if one of the parent fields\n * is merged, the merged parent is going to be represented by [[mergedField]] and the field we wanted to\n * process is going to be represented by [[requestedField]].\n */\n requestedField: Field;\n /** Name of the parent field (if there is one). */\n parentFieldName?: string;\n}\n\n/**\n * Props for the [[IContentVisitor.processPrimitiveValue]] call.\n * @public\n */\nexport interface ProcessPrimitiveValueProps {\n /** Field whose value is being processed. */\n field: Field;\n /** Type of the value. */\n valueType: TypeDescription;\n /** Name of the parent field (if there is one). */\n parentFieldName?: string;\n /** Raw value. */\n rawValue: Value;\n /** Display value. */\n displayValue: DisplayValue;\n}\n\n/**\n * An interface for a visitor that can be passed to the [[traverseContent]] function\n * to be called on each piece of content.\n *\n * The order of calls when using the visitor with [[traverseContent]] or [[traverseContentItem]]:\n *\n * ```\n * startContent\n * processFieldHierarchies\n * for each content item:\n * startItem\n * for each field in root level:\n * for each category in field's category stack from root to field's category:\n * startCategory\n * startField\n * valueProcessing:\n * if item's value for this field is merged:\n * processMergedValue\n * else if the field is struct:\n * startStruct\n * for each struct member:\n * recurse into the valueProcessing step\n * finishStruct\n * else if the field is array:\n * startArray\n * for each array item:\n * recurse into the valueProcessing step\n * finishArray\n * else if the field is primitive:\n * processPrimitiveValue\n * finishField\n * finishItem\n * finishContent\n * ```\n * @public\n */\nexport interface IContentVisitor {\n /**\n * Called before starting [[Content]] processing. This is a good place to initialize various caches and prepare\n * for parsing content.\n *\n * Processing is skipped if the function returns `false` and [[finishContent]] is not called in that case.\n */\n startContent(props: StartContentProps): boolean;\n /** Called after processing of [[Content]] is complete. */\n finishContent(): void;\n\n /** Called to post-process field hierarchies after they're extracted from [[Descriptor]] in processed [[Content]]. */\n processFieldHierarchies(props: ProcessFieldHierarchiesProps): void;\n\n /**\n * Called before starting each [[Item]] processing. This is a good place to initialize for a new content item, e.g.\n * set up a new row in table.\n *\n * Processing is skipped if the function returns `false` and [[finishItem]] is not called in that case.\n */\n startItem(props: StartItemProps): boolean;\n /**\n * Called after processing of [[Item]] is complete. May be used to do any kind of post-processing after all\n * values for one content item have been processed.\n */\n finishItem(): void;\n\n /**\n * Called before processing a content item field ([[startField]] call) for each category in the field's\n * category stack, starting from the root and finishing with the field's category.\n *\n * Processing is skipped if the function returns `false` and [[finishCategory]] is not called in that case.\n */\n startCategory(props: StartCategoryProps): boolean;\n /** Called after processing of field is complete for every category in the field's category stack. */\n finishCategory(): void;\n\n /**\n * Called before starting [[Field]] processing for each individual [[Item]]. This is a good callback\n * to skip a field if it doesn't need to be handled.\n *\n * Processing is skipped if the function returns `false` and [[finishField]] is not called in that case.\n */\n startField(props: StartFieldProps): boolean;\n /** Called after processing of [[Field]] for individual [[Item]] is complete. */\n finishField(): void;\n\n /**\n * Called before processing a struct value. This is a good callback to skip handling the value or set up\n * for struct member values handling.\n *\n * Processing is skipped if the function returns `false` and [[finishStruct]] is not called in that case.\n */\n startStruct(props: StartStructProps): boolean;\n /** Called after processing of struct value is complete. */\n finishStruct(): void;\n\n /**\n * Called before processing an array value. This is a good callback to skip handling the value or set up\n * for array items handling.\n *\n * Processing is skipped if the function returns `false` and [[finishArray]] is not called in that case.\n */\n startArray(props: StartArrayProps): boolean;\n /** Called after processing of array value is complete. */\n finishArray(): void;\n\n /** Called to process a [merged value]($docs/presentation/content/Terminology.md#value-merging). */\n processMergedValue(props: ProcessMergedValueProps): void;\n /** Called to process a primitive value. */\n processPrimitiveValue(props: ProcessPrimitiveValueProps): void;\n}\n\n/**\n * An utility for traversing field hierarchy. Stops traversal as soon as `cb` returns `false`.\n * @public\n */\nexport function traverseFieldHierarchy(hierarchy: FieldHierarchy, cb: (h: FieldHierarchy) => boolean) {\n if (cb(hierarchy))\n hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));\n}\n\n/**\n * An utility to traverse content using provided visitor. Provides means to parse content into different formats,\n * for different components.\n * @public\n */\nexport function traverseContent(visitor: IContentVisitor, content: Content) {\n if (!visitor.startContent({ descriptor: content.descriptor }))\n return;\n\n try {\n const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);\n visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });\n content.contentSet.forEach((item) => {\n traverseContentItemFields(visitor, fieldHierarchies, item);\n });\n } finally {\n visitor.finishContent();\n }\n}\n\n/**\n * An utility for calling [[traverseContent]] when there's only one content item.\n * @public\n */\nexport function traverseContentItem(visitor: IContentVisitor, descriptor: Descriptor, item: Item) {\n traverseContent(visitor, new Content(descriptor, [item]));\n}\n\nclass VisitedCategories implements IDisposable {\n private _visitedCategories: CategoryDescription[];\n private _didVisitAllHierarchy: boolean;\n constructor(private _visitor: IContentVisitor, category: CategoryDescription) {\n const stack: CategoryDescription[] = [];\n let curr: CategoryDescription | undefined = category;\n while (curr) {\n stack.push(curr);\n curr = curr.parent;\n }\n stack.reverse();\n\n this._didVisitAllHierarchy = true;\n this._visitedCategories = [];\n for (curr of stack) {\n if (this._visitor.startCategory({ category: curr })) {\n this._visitedCategories.push(curr);\n } else {\n this._didVisitAllHierarchy = false;\n break;\n }\n }\n }\n public dispose() {\n while (this._visitedCategories.pop())\n this._visitor.finishCategory();\n }\n public get shouldContinue(): boolean { return this._didVisitAllHierarchy; }\n}\n\nfunction traverseContentItemFields(visitor: IContentVisitor, fieldHierarchies: FieldHierarchy[], item: Item) {\n if (!visitor.startItem({ item }))\n return;\n\n try {\n fieldHierarchies.forEach((fieldHierarchy) => {\n using(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {\n if (res.shouldContinue)\n traverseContentItemField(visitor, fieldHierarchy, item);\n });\n });\n } finally {\n visitor.finishItem();\n }\n}\n\nfunction traverseContentItemField(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, item: Item) {\n if (!visitor.startField({ hierarchy: fieldHierarchy }))\n return;\n\n try {\n const rootToThisField = createFieldPath(fieldHierarchy.field);\n let parentFieldName: string | undefined;\n const pathUpToField = rootToThisField.slice(undefined, -1);\n for (let i = 0; i < pathUpToField.length; ++i) {\n const parentField = pathUpToField[i] as NestedContentField;\n const nextField = rootToThisField[i + 1];\n\n if (item.isFieldMerged(parentField.name)) {\n visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, parentFieldName });\n return;\n }\n\n const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);\n if (emptyNestedItem)\n return;\n\n item = convertedItem;\n parentFieldName = combineFieldNames(parentField.name, parentFieldName);\n }\n\n if (item.isFieldMerged(fieldHierarchy.field.name)) {\n visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, parentFieldName });\n return;\n }\n\n if (fieldHierarchy.field.isNestedContentField()) {\n fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName);\n const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);\n if (emptyNestedItem)\n return;\n item = convertedItem;\n } else if (pathUpToField.length > 0) {\n fieldHierarchy = {\n ...fieldHierarchy,\n field: Object.assign(fieldHierarchy.field.clone(), {\n type: {\n valueFormat: PropertyValueFormat.Array,\n typeName: `${fieldHierarchy.field.type.typeName}[]`,\n memberType: fieldHierarchy.field.type,\n },\n }),\n };\n }\n\n traverseContentItemFieldValue(visitor, fieldHierarchy, item.mergedFieldNames, fieldHierarchy.field.type, parentFieldName, item.values[fieldHierarchy.field.name], item.displayValues[fieldHierarchy.field.name]);\n\n } finally {\n visitor.finishField();\n }\n}\n\nfunction traverseContentItemFieldValue(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, mergedFieldNames: string[], valueType: TypeDescription, parentFieldName: string | undefined, rawValue: Value, displayValue: DisplayValue) {\n if (rawValue !== undefined) {\n if (valueType.valueFormat === PropertyValueFormat.Array) {\n assert(Value.isArray(rawValue));\n assert(DisplayValue.isArray(displayValue));\n return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\n }\n if (valueType.valueFormat === PropertyValueFormat.Struct) {\n assert(Value.isMap(rawValue));\n assert(DisplayValue.isMap(displayValue));\n return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\n }\n }\n traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\n}\n\nfunction traverseContentItemArrayFieldValue(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, mergedFieldNames: string[], valueType: TypeDescription, parentFieldName: string | undefined, rawValues: ValuesArray, displayValues: DisplayValuesArray) {\n assert(rawValues.length === displayValues.length);\n assert(valueType.valueFormat === PropertyValueFormat.Array);\n if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))\n return;\n\n try {\n const itemType = valueType.memberType;\n rawValues.forEach((_, i) => {\n traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, parentFieldName, rawValues[i], displayValues[i]);\n });\n } finally {\n visitor.finishArray();\n }\n}\n\nfunction traverseContentItemStructFieldValue(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, mergedFieldNames: string[], valueType: TypeDescription, parentFieldName: string | undefined, rawValues: ValuesMap, displayValues: DisplayValuesMap) {\n assert(valueType.valueFormat === PropertyValueFormat.Struct);\n if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))\n return;\n\n try {\n if (fieldHierarchy.field.isNestedContentField())\n parentFieldName = combineFieldNames(fieldHierarchy.field.name, parentFieldName);\n\n valueType.members.forEach((memberDescription) => {\n let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);\n if (!memberField) {\n // Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we\n // create a fake field to represent the member\n memberField = {\n field: new Field(fieldHierarchy.field.category, memberDescription.name, memberDescription.label, memberDescription.type, fieldHierarchy.field.isReadonly, 0),\n childFields: [],\n };\n }\n traverseContentItemFieldValue(visitor, memberField, mergedFieldNames, memberDescription.type, parentFieldName, rawValues[memberDescription.name], displayValues[memberDescription.name]);\n });\n } finally {\n visitor.finishStruct();\n }\n}\n\nfunction traverseContentItemPrimitiveFieldValue(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, mergedFieldNames: string[], valueType: TypeDescription, parentFieldName: string | undefined, rawValue: Value, displayValue: DisplayValue) {\n if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {\n visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, parentFieldName });\n return;\n }\n\n visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, parentFieldName, rawValue, displayValue });\n}\n\n/**\n * Parses a list of [[Field]] objects into a list of [[FieldHierarchy]].\n *\n * @param ignoreCategories Enables adding all of the `nestedFields` to parent field's `childFields`\n * without considering categories.\n *\n * @public\n */\nexport function createFieldHierarchies(fields: Field[], ignoreCategories?: Boolean) {\n const hierarchies = new Array<FieldHierarchy>();\n const visitField = (category: CategoryDescription, field: Field, parentField: Field | undefined): FieldHierarchy | undefined => {\n let childFields: FieldHierarchy[] = [];\n if (field.isNestedContentField()) {\n // visit all nested fields\n childFields = visitFields(field.nestedFields, field);\n if (0 === childFields.length)\n return undefined;\n }\n const fieldHierarchy = { field, childFields };\n if (category === parentField?.category || ignoreCategories && parentField) {\n // if categories of this field and its parent field match - return the field hierarchy without\n // including it as a top level field\n return fieldHierarchy;\n }\n addFieldHierarchy(hierarchies, fieldHierarchy);\n return undefined;\n };\n const visitFields = (visitedFields: Field[], parentField: NestedContentField | undefined) => {\n const includedFields: FieldHierarchy[] = [];\n visitedFields.forEach((field) => {\n const visitedField = visitField(field.category, field, parentField);\n if (visitedField)\n includedFields.push(visitedField);\n });\n return includedFields;\n };\n visitFields(fields, undefined);\n return hierarchies;\n}\n\nfunction findRelatedFields(rootFields: FieldHierarchy[], hierarchy: FieldHierarchy) {\n // build a list of parent fields in hierarchy\n const fields: Field[] = [];\n let currField: Field | undefined = hierarchy.field;\n while (currField) {\n fields.push(currField);\n currField = currField.parent;\n }\n\n for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {\n const rootFieldHierarchy = rootFields[rootIndex];\n if (rootFieldHierarchy.field.category !== hierarchy.field.category) {\n // only interested in fields with the same category\n continue;\n }\n\n let first = true;\n currField = rootFieldHierarchy.field;\n while (currField) {\n const index = fields.findIndex((f) => f.name === currField!.name);\n if (-1 !== index) {\n return {\n existing: {\n field: currField,\n hierarchy: first ? rootFieldHierarchy : undefined,\n index: rootIndex,\n },\n matchingField: fields[index]!,\n };\n }\n currField = currField.parent;\n first = false;\n }\n }\n\n return undefined;\n}\n\nfunction buildParentHierarchy(hierarchy: FieldHierarchy, parentField: Field) {\n // note: parentField is found by walking up the parentship relationship\n // from hierarchy.field, so we expect to always find it here\n while (hierarchy.field !== parentField) {\n const hierarchyParent = hierarchy.field.parent;\n assert(hierarchyParent !== undefined);\n hierarchy = { field: hierarchyParent, childFields: [hierarchy] };\n }\n return hierarchy;\n}\n\nfunction mergeHierarchies(lhs: FieldHierarchy, rhs: FieldHierarchy) {\n assert(lhs.field.name === rhs.field.name);\n const result: FieldHierarchy = {\n field: lhs.field.clone(),\n childFields: [...lhs.childFields],\n };\n rhs.childFields.forEach((rhsChildHierarchy) => {\n const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);\n if (indexInResult !== -1)\n result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);\n else\n result.childFields.push(rhsChildHierarchy);\n });\n return result;\n}\n\n/**\n * Adds a field hierarchy into root field hierarchies list. *\n * @public\n */\nexport function addFieldHierarchy(rootHierarchies: FieldHierarchy[], hierarchy: FieldHierarchy): void {\n const match = findRelatedFields(rootHierarchies, hierarchy);\n if (!match) {\n rootHierarchies.push(hierarchy);\n return;\n }\n\n const targetHierarchy = rootHierarchies[match.existing.index];\n const existingHierarchy = match.existing.hierarchy ?? buildParentHierarchy(targetHierarchy, match.existing.field);\n const insertHierarchy = buildParentHierarchy(hierarchy, match.matchingField);\n const mergedHierarchy = mergeHierarchies(existingHierarchy, insertHierarchy);\n mergedHierarchy.field.category = hierarchy.field.category;\n rootHierarchies[match.existing.index] = mergedHierarchy;\n}\n\nfunction createFieldPath(field: Field): Field[] {\n const path = [field];\n let currField = field;\n while (currField.parent) {\n currField = currField.parent;\n path.push(currField);\n }\n path.reverse();\n return path;\n}\n\n/** @internal */\nexport const FIELD_NAMES_SEPARATOR = \"$\";\n/**\n * Combines given field names in a way that allows them to be parsed back into a list of individual names using the [[parseCombinedFieldNames]] function.\n * @public\n */\nexport function combineFieldNames(fieldName: string, parentFieldName?: string) {\n return parentFieldName ? `${parentFieldName}${FIELD_NAMES_SEPARATOR}${fieldName}` : fieldName;\n}\n/**\n * Parses given combined field names string, constructed using [[combineFieldNames]], into a list of individual field names.\n * @public\n */\nexport function parseCombinedFieldNames(combinedName: string) {\n return combinedName ? combinedName.split(FIELD_NAMES_SEPARATOR) : [];\n}\n\ninterface NestedItemConversionResult {\n emptyNestedItem: boolean;\n convertedItem: Item;\n}\n\nfunction convertNestedContentItemToStructArrayItem(item: Readonly<Item>, field: Field, nextField: Field): NestedItemConversionResult {\n const value = item.values[field.name] ?? [];\n assert(Value.isNestedContent(value));\n if (value.length === 0)\n return { emptyNestedItem: true, convertedItem: item };\n\n const nextFieldValues: { raw: ValuesArray, display: DisplayValuesArray } = { raw: [], display: [] };\n value.forEach((ncv) => {\n const nextRawValue = ncv.values[nextField.name];\n const nextDisplayValue = ncv.displayValues[nextField.name];\n if (nextField.isNestedContentField()) {\n if (nextRawValue) {\n assert(Value.isNestedContent(nextRawValue));\n nextFieldValues.raw.push(...nextRawValue);\n }\n } else {\n nextFieldValues.raw.push(nextRawValue);\n nextFieldValues.display.push(nextDisplayValue);\n }\n });\n 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\n return { emptyNestedItem: false, convertedItem };\n}\n\nfunction convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy: FieldHierarchy, parentFieldName: string | undefined) {\n const fieldName = fieldHierarchy.field.name;\n const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {\n if (child.field.isNestedContentField())\n return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, combineFieldNames(fieldName, parentFieldName));\n return child;\n });\n const convertedFieldHierarchy: FieldHierarchy = {\n field: Object.assign(fieldHierarchy.field.clone(), {\n type: {\n valueFormat: PropertyValueFormat.Array,\n typeName: `${fieldHierarchy.field.type.typeName}[]`,\n memberType: {\n valueFormat: PropertyValueFormat.Struct,\n typeName: fieldHierarchy.field.type.typeName,\n members: convertedChildFieldHierarchies.map((member) => ({\n name: member.field.name,\n label: member.field.label,\n type: member.field.type,\n })),\n },\n } as TypeDescription,\n }),\n childFields: convertedChildFieldHierarchies,\n };\n return convertedFieldHierarchy;\n}\n\nfunction convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy: FieldHierarchy, ncvs: ReadonlyArray<NestedContentValue>) {\n const result: { raw: ValuesArray, display: DisplayValuesArray, mergedFieldNames: string[] } = { raw: [], display: [], mergedFieldNames: [] };\n ncvs.forEach((ncv) => {\n const values: ValuesMap = { ...ncv.values };\n const displayValues: DisplayValuesMap = { ...ncv.displayValues };\n const mergedFieldNames: string[] = [...ncv.mergedFieldNames];\n fieldHierarchy.childFields.forEach((childFieldHierarchy) => {\n const childFieldName = childFieldHierarchy.field.name;\n if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {\n return;\n }\n if (childFieldHierarchy.field.isNestedContentField()) {\n const value = values[childFieldName];\n assert(Value.isNestedContent(value));\n const convertedValues = convertNestedContentValuesToStructArrayValuesRecursive(childFieldHierarchy, value);\n values[childFieldName] = convertedValues.raw;\n displayValues[childFieldName] = convertedValues.display;\n mergedFieldNames.push(...convertedValues.mergedFieldNames);\n }\n });\n result.raw.push(values);\n result.display.push(displayValues);\n result.mergedFieldNames.push(...mergedFieldNames);\n });\n return result;\n}\n\nfunction convertNestedContentFieldHierarchyItemToStructArrayItem(item: Readonly<Item>, fieldHierarchy: FieldHierarchy): NestedItemConversionResult {\n const fieldName = fieldHierarchy.field.name;\n const rawValue = item.values[fieldName];\n assert(Value.isNestedContent(rawValue));\n if (rawValue.length === 0)\n return { emptyNestedItem: true, convertedItem: item };\n\n const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);\n 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\n return { emptyNestedItem: false, convertedItem };\n}\n"]}
1
+ {"version":3,"file":"ContentTraverser.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/ContentTraverser.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Content\r\n */\r\n\r\nimport { assert, IDisposable, using } from \"@itwin/core-bentley\";\r\nimport { CategoryDescription } from \"./Category\";\r\nimport { Content } from \"./Content\";\r\nimport { Descriptor } from \"./Descriptor\";\r\nimport { Field, NestedContentField } from \"./Fields\";\r\nimport { Item } from \"./Item\";\r\nimport { PropertyValueFormat, TypeDescription } from \"./TypeDescription\";\r\nimport { DisplayValue, DisplayValuesArray, DisplayValuesMap, NestedContentValue, Value, ValuesArray, ValuesMap } from \"./Value\";\r\n\r\n/**\r\n * A data structure to define a hierarchy of [[Field]] objects.\r\n * @public\r\n */\r\nexport interface FieldHierarchy {\r\n /** Parent field. */\r\n field: Field;\r\n /** Nested fields. */\r\n childFields: FieldHierarchy[];\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startContent]] call.\r\n * @public\r\n */\r\nexport interface StartContentProps {\r\n /** Descriptor of the visited content. */\r\n descriptor: Descriptor;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.processFieldHierarchies]] call.\r\n * @public\r\n */\r\nexport interface ProcessFieldHierarchiesProps {\r\n /**\r\n * The root list of fields, which may be mutated by the visitor to change order or the fields,\r\n * add new fields, etc.\r\n */\r\n hierarchies: FieldHierarchy[];\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startItem]] call.\r\n * @public\r\n */\r\nexport interface StartItemProps {\r\n /** The content item that's about to be visited. */\r\n item: Item;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startCategory]] call.\r\n * @public\r\n */\r\nexport interface StartCategoryProps {\r\n /** The content category that's about to be visited. */\r\n category: CategoryDescription;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startField]] call.\r\n * @public\r\n */\r\nexport interface StartFieldProps {\r\n /** The field that's about to be visited. */\r\n hierarchy: FieldHierarchy;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startStruct]] call.\r\n * @public\r\n */\r\nexport interface StartStructProps {\r\n /** Field that describes the struct. */\r\n hierarchy: FieldHierarchy;\r\n /** Type of the struct. */\r\n valueType: TypeDescription;\r\n /** Name of the parent field (if there is one). */\r\n parentFieldName?: string;\r\n /** Member raw values. */\r\n rawValues: ValuesMap;\r\n /** Member display values. */\r\n displayValues: DisplayValuesMap;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.startArray]] call.\r\n * @public\r\n */\r\nexport interface StartArrayProps {\r\n /** Field that describes the array. */\r\n hierarchy: FieldHierarchy;\r\n /** Type of the array. */\r\n valueType: TypeDescription;\r\n /** Name of the parent field (if there is one). */\r\n parentFieldName?: string;\r\n /** Item raw values. */\r\n rawValues: ValuesArray;\r\n /** Item display values. */\r\n displayValues: DisplayValuesArray;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.processMergedValue]] call.\r\n * @public\r\n */\r\nexport interface ProcessMergedValueProps {\r\n /** The field whose values are merged. */\r\n mergedField: Field;\r\n /**\r\n * Generally this matches the [[mergedField]], but there are situations when a nested field is propagated\r\n * up to display it as if it wasn't nested its parent fields. In those cases, if one of the parent fields\r\n * is merged, the merged parent is going to be represented by [[mergedField]] and the field we wanted to\r\n * process is going to be represented by [[requestedField]].\r\n */\r\n requestedField: Field;\r\n /** Name of the parent field (if there is one). */\r\n parentFieldName?: string;\r\n}\r\n\r\n/**\r\n * Props for the [[IContentVisitor.processPrimitiveValue]] call.\r\n * @public\r\n */\r\nexport interface ProcessPrimitiveValueProps {\r\n /** Field whose value is being processed. */\r\n field: Field;\r\n /** Type of the value. */\r\n valueType: TypeDescription;\r\n /** Name of the parent field (if there is one). */\r\n parentFieldName?: string;\r\n /** Raw value. */\r\n rawValue: Value;\r\n /** Display value. */\r\n displayValue: DisplayValue;\r\n}\r\n\r\n/**\r\n * An interface for a visitor that can be passed to the [[traverseContent]] function\r\n * to be called on each piece of content.\r\n *\r\n * The order of calls when using the visitor with [[traverseContent]] or [[traverseContentItem]]:\r\n *\r\n * ```\r\n * startContent\r\n * processFieldHierarchies\r\n * for each content item:\r\n * startItem\r\n * for each field in root level:\r\n * for each category in field's category stack from root to field's category:\r\n * startCategory\r\n * startField\r\n * valueProcessing:\r\n * if item's value for this field is merged:\r\n * processMergedValue\r\n * else if the field is struct:\r\n * startStruct\r\n * for each struct member:\r\n * recurse into the valueProcessing step\r\n * finishStruct\r\n * else if the field is array:\r\n * startArray\r\n * for each array item:\r\n * recurse into the valueProcessing step\r\n * finishArray\r\n * else if the field is primitive:\r\n * processPrimitiveValue\r\n * finishField\r\n * finishItem\r\n * finishContent\r\n * ```\r\n * @public\r\n */\r\nexport interface IContentVisitor {\r\n /**\r\n * Called before starting [[Content]] processing. This is a good place to initialize various caches and prepare\r\n * for parsing content.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishContent]] is not called in that case.\r\n */\r\n startContent(props: StartContentProps): boolean;\r\n /** Called after processing of [[Content]] is complete. */\r\n finishContent(): void;\r\n\r\n /** Called to post-process field hierarchies after they're extracted from [[Descriptor]] in processed [[Content]]. */\r\n processFieldHierarchies(props: ProcessFieldHierarchiesProps): void;\r\n\r\n /**\r\n * Called before starting each [[Item]] processing. This is a good place to initialize for a new content item, e.g.\r\n * set up a new row in table.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishItem]] is not called in that case.\r\n */\r\n startItem(props: StartItemProps): boolean;\r\n /**\r\n * Called after processing of [[Item]] is complete. May be used to do any kind of post-processing after all\r\n * values for one content item have been processed.\r\n */\r\n finishItem(): void;\r\n\r\n /**\r\n * Called before processing a content item field ([[startField]] call) for each category in the field's\r\n * category stack, starting from the root and finishing with the field's category.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishCategory]] is not called in that case.\r\n */\r\n startCategory(props: StartCategoryProps): boolean;\r\n /** Called after processing of field is complete for every category in the field's category stack. */\r\n finishCategory(): void;\r\n\r\n /**\r\n * Called before starting [[Field]] processing for each individual [[Item]]. This is a good callback\r\n * to skip a field if it doesn't need to be handled.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishField]] is not called in that case.\r\n */\r\n startField(props: StartFieldProps): boolean;\r\n /** Called after processing of [[Field]] for individual [[Item]] is complete. */\r\n finishField(): void;\r\n\r\n /**\r\n * Called before processing a struct value. This is a good callback to skip handling the value or set up\r\n * for struct member values handling.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishStruct]] is not called in that case.\r\n */\r\n startStruct(props: StartStructProps): boolean;\r\n /** Called after processing of struct value is complete. */\r\n finishStruct(): void;\r\n\r\n /**\r\n * Called before processing an array value. This is a good callback to skip handling the value or set up\r\n * for array items handling.\r\n *\r\n * Processing is skipped if the function returns `false` and [[finishArray]] is not called in that case.\r\n */\r\n startArray(props: StartArrayProps): boolean;\r\n /** Called after processing of array value is complete. */\r\n finishArray(): void;\r\n\r\n /** Called to process a [merged value]($docs/presentation/content/Terminology.md#value-merging). */\r\n processMergedValue(props: ProcessMergedValueProps): void;\r\n /** Called to process a primitive value. */\r\n processPrimitiveValue(props: ProcessPrimitiveValueProps): void;\r\n}\r\n\r\n/**\r\n * An utility for traversing field hierarchy. Stops traversal as soon as `cb` returns `false`.\r\n * @public\r\n */\r\nexport function traverseFieldHierarchy(hierarchy: FieldHierarchy, cb: (h: FieldHierarchy) => boolean) {\r\n if (cb(hierarchy)) {\r\n hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));\r\n }\r\n}\r\n\r\n/**\r\n * An utility to traverse content using provided visitor. Provides means to parse content into different formats,\r\n * for different components.\r\n * @public\r\n */\r\nexport function traverseContent(visitor: IContentVisitor, content: Content) {\r\n if (!visitor.startContent({ descriptor: content.descriptor })) {\r\n return;\r\n }\r\n\r\n try {\r\n const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);\r\n visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });\r\n content.contentSet.forEach((item) => {\r\n traverseContentItemFields(visitor, fieldHierarchies, item);\r\n });\r\n } finally {\r\n visitor.finishContent();\r\n }\r\n}\r\n\r\n/**\r\n * An utility for calling [[traverseContent]] when there's only one content item.\r\n * @public\r\n */\r\nexport function traverseContentItem(visitor: IContentVisitor, descriptor: Descriptor, item: Item) {\r\n traverseContent(visitor, new Content(descriptor, [item]));\r\n}\r\n\r\nclass VisitedCategories implements IDisposable {\r\n private _visitedCategories: CategoryDescription[];\r\n private _didVisitAllHierarchy: boolean;\r\n constructor(\r\n private _visitor: IContentVisitor,\r\n category: CategoryDescription,\r\n ) {\r\n const stack: CategoryDescription[] = [];\r\n let curr: CategoryDescription | undefined = category;\r\n while (curr) {\r\n stack.push(curr);\r\n curr = curr.parent;\r\n }\r\n stack.reverse();\r\n\r\n this._didVisitAllHierarchy = true;\r\n this._visitedCategories = [];\r\n for (curr of stack) {\r\n if (this._visitor.startCategory({ category: curr })) {\r\n this._visitedCategories.push(curr);\r\n } else {\r\n this._didVisitAllHierarchy = false;\r\n break;\r\n }\r\n }\r\n }\r\n public dispose() {\r\n while (this._visitedCategories.pop()) {\r\n this._visitor.finishCategory();\r\n }\r\n }\r\n public get shouldContinue(): boolean {\r\n return this._didVisitAllHierarchy;\r\n }\r\n}\r\n\r\nfunction traverseContentItemFields(visitor: IContentVisitor, fieldHierarchies: FieldHierarchy[], item: Item) {\r\n if (!visitor.startItem({ item })) {\r\n return;\r\n }\r\n\r\n try {\r\n fieldHierarchies.forEach((fieldHierarchy) => {\r\n using(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {\r\n if (res.shouldContinue) {\r\n traverseContentItemField(visitor, fieldHierarchy, item);\r\n }\r\n });\r\n });\r\n } finally {\r\n visitor.finishItem();\r\n }\r\n}\r\n\r\nfunction traverseContentItemField(visitor: IContentVisitor, fieldHierarchy: FieldHierarchy, item: Item) {\r\n if (!visitor.startField({ hierarchy: fieldHierarchy })) {\r\n return;\r\n }\r\n\r\n try {\r\n const rootToThisField = createFieldPath(fieldHierarchy.field);\r\n let parentFieldName: string | undefined;\r\n const pathUpToField = rootToThisField.slice(undefined, -1);\r\n for (let i = 0; i < pathUpToField.length; ++i) {\r\n const parentField = pathUpToField[i] as NestedContentField;\r\n const nextField = rootToThisField[i + 1];\r\n\r\n if (item.isFieldMerged(parentField.name)) {\r\n visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, parentFieldName });\r\n return;\r\n }\r\n\r\n const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);\r\n if (emptyNestedItem) {\r\n return;\r\n }\r\n\r\n item = convertedItem;\r\n parentFieldName = combineFieldNames(parentField.name, parentFieldName);\r\n }\r\n\r\n if (item.isFieldMerged(fieldHierarchy.field.name)) {\r\n visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, parentFieldName });\r\n return;\r\n }\r\n\r\n if (fieldHierarchy.field.isNestedContentField()) {\r\n fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName);\r\n const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);\r\n if (emptyNestedItem) {\r\n return;\r\n }\r\n item = convertedItem;\r\n } else if (pathUpToField.length > 0) {\r\n fieldHierarchy = {\r\n ...fieldHierarchy,\r\n field: Object.assign(fieldHierarchy.field.clone(), {\r\n type: {\r\n valueFormat: PropertyValueFormat.Array,\r\n typeName: `${fieldHierarchy.field.type.typeName}[]`,\r\n memberType: fieldHierarchy.field.type,\r\n },\r\n }),\r\n };\r\n }\r\n\r\n traverseContentItemFieldValue(\r\n visitor,\r\n fieldHierarchy,\r\n item.mergedFieldNames,\r\n fieldHierarchy.field.type,\r\n parentFieldName,\r\n item.values[fieldHierarchy.field.name],\r\n item.displayValues[fieldHierarchy.field.name],\r\n );\r\n } finally {\r\n visitor.finishField();\r\n }\r\n}\r\n\r\nfunction traverseContentItemFieldValue(\r\n visitor: IContentVisitor,\r\n fieldHierarchy: FieldHierarchy,\r\n mergedFieldNames: string[],\r\n valueType: TypeDescription,\r\n parentFieldName: string | undefined,\r\n rawValue: Value,\r\n displayValue: DisplayValue,\r\n) {\r\n if (rawValue !== undefined) {\r\n if (valueType.valueFormat === PropertyValueFormat.Array) {\r\n assert(Value.isArray(rawValue));\r\n assert(DisplayValue.isArray(displayValue));\r\n return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\r\n }\r\n if (valueType.valueFormat === PropertyValueFormat.Struct) {\r\n assert(Value.isMap(rawValue));\r\n assert(DisplayValue.isMap(displayValue));\r\n return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\r\n }\r\n }\r\n traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);\r\n}\r\n\r\nfunction traverseContentItemArrayFieldValue(\r\n visitor: IContentVisitor,\r\n fieldHierarchy: FieldHierarchy,\r\n mergedFieldNames: string[],\r\n valueType: TypeDescription,\r\n parentFieldName: string | undefined,\r\n rawValues: ValuesArray,\r\n displayValues: DisplayValuesArray,\r\n) {\r\n assert(rawValues.length === displayValues.length);\r\n assert(valueType.valueFormat === PropertyValueFormat.Array);\r\n if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues })) {\r\n return;\r\n }\r\n\r\n try {\r\n const itemType = valueType.memberType;\r\n rawValues.forEach((_, i) => {\r\n traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, parentFieldName, rawValues[i], displayValues[i]);\r\n });\r\n } finally {\r\n visitor.finishArray();\r\n }\r\n}\r\n\r\nfunction traverseContentItemStructFieldValue(\r\n visitor: IContentVisitor,\r\n fieldHierarchy: FieldHierarchy,\r\n mergedFieldNames: string[],\r\n valueType: TypeDescription,\r\n parentFieldName: string | undefined,\r\n rawValues: ValuesMap,\r\n displayValues: DisplayValuesMap,\r\n) {\r\n assert(valueType.valueFormat === PropertyValueFormat.Struct);\r\n if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues })) {\r\n return;\r\n }\r\n\r\n try {\r\n if (fieldHierarchy.field.isNestedContentField()) {\r\n parentFieldName = combineFieldNames(fieldHierarchy.field.name, parentFieldName);\r\n }\r\n\r\n valueType.members.forEach((memberDescription) => {\r\n let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);\r\n if (!memberField) {\r\n // Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we\r\n // create a fake field to represent the member\r\n memberField = {\r\n field: new Field(\r\n fieldHierarchy.field.category,\r\n memberDescription.name,\r\n memberDescription.label,\r\n memberDescription.type,\r\n fieldHierarchy.field.isReadonly,\r\n 0,\r\n ),\r\n childFields: [],\r\n };\r\n }\r\n traverseContentItemFieldValue(\r\n visitor,\r\n memberField,\r\n mergedFieldNames,\r\n memberDescription.type,\r\n parentFieldName,\r\n rawValues[memberDescription.name],\r\n displayValues[memberDescription.name],\r\n );\r\n });\r\n } finally {\r\n visitor.finishStruct();\r\n }\r\n}\r\n\r\nfunction traverseContentItemPrimitiveFieldValue(\r\n visitor: IContentVisitor,\r\n fieldHierarchy: FieldHierarchy,\r\n mergedFieldNames: string[],\r\n valueType: TypeDescription,\r\n parentFieldName: string | undefined,\r\n rawValue: Value,\r\n displayValue: DisplayValue,\r\n) {\r\n if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {\r\n visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, parentFieldName });\r\n return;\r\n }\r\n\r\n visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, parentFieldName, rawValue, displayValue });\r\n}\r\n\r\n/**\r\n * Parses a list of [[Field]] objects into a list of [[FieldHierarchy]].\r\n *\r\n * @param ignoreCategories Enables adding all of the `nestedFields` to parent field's `childFields`\r\n * without considering categories.\r\n *\r\n * @public\r\n */\r\nexport function createFieldHierarchies(fields: Field[], ignoreCategories?: Boolean) {\r\n const hierarchies = new Array<FieldHierarchy>();\r\n const visitField = (category: CategoryDescription, field: Field, parentField: Field | undefined): FieldHierarchy | undefined => {\r\n let childFields: FieldHierarchy[] = [];\r\n if (field.isNestedContentField()) {\r\n // visit all nested fields\r\n childFields = visitFields(field.nestedFields, field);\r\n if (0 === childFields.length) {\r\n return undefined;\r\n }\r\n }\r\n const fieldHierarchy = { field, childFields };\r\n if (category === parentField?.category || (ignoreCategories && parentField)) {\r\n // if categories of this field and its parent field match - return the field hierarchy without\r\n // including it as a top level field\r\n return fieldHierarchy;\r\n }\r\n addFieldHierarchy(hierarchies, fieldHierarchy);\r\n return undefined;\r\n };\r\n const visitFields = (visitedFields: Field[], parentField: NestedContentField | undefined) => {\r\n const includedFields: FieldHierarchy[] = [];\r\n visitedFields.forEach((field) => {\r\n const visitedField = visitField(field.category, field, parentField);\r\n if (visitedField) {\r\n includedFields.push(visitedField);\r\n }\r\n });\r\n return includedFields;\r\n };\r\n visitFields(fields, undefined);\r\n return hierarchies;\r\n}\r\n\r\nfunction findRelatedFields(rootFields: FieldHierarchy[], hierarchy: FieldHierarchy) {\r\n // build a list of parent fields in hierarchy\r\n const fields: Field[] = [];\r\n let currField: Field | undefined = hierarchy.field;\r\n while (currField) {\r\n fields.push(currField);\r\n currField = currField.parent;\r\n }\r\n\r\n for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {\r\n const rootFieldHierarchy = rootFields[rootIndex];\r\n if (rootFieldHierarchy.field.category !== hierarchy.field.category) {\r\n // only interested in fields with the same category\r\n continue;\r\n }\r\n\r\n let first = true;\r\n currField = rootFieldHierarchy.field;\r\n while (currField) {\r\n const index = fields.findIndex((f) => f.name === currField!.name);\r\n if (-1 !== index) {\r\n return {\r\n existing: {\r\n field: currField,\r\n hierarchy: first ? rootFieldHierarchy : undefined,\r\n index: rootIndex,\r\n },\r\n matchingField: fields[index]!,\r\n };\r\n }\r\n currField = currField.parent;\r\n first = false;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction buildParentHierarchy(hierarchy: FieldHierarchy, parentField: Field) {\r\n // note: parentField is found by walking up the parentship relationship\r\n // from hierarchy.field, so we expect to always find it here\r\n while (hierarchy.field !== parentField) {\r\n const hierarchyParent = hierarchy.field.parent;\r\n assert(hierarchyParent !== undefined);\r\n hierarchy = { field: hierarchyParent, childFields: [hierarchy] };\r\n }\r\n return hierarchy;\r\n}\r\n\r\nfunction mergeHierarchies(lhs: FieldHierarchy, rhs: FieldHierarchy) {\r\n assert(lhs.field.name === rhs.field.name);\r\n const result: FieldHierarchy = {\r\n field: lhs.field.clone(),\r\n childFields: [...lhs.childFields],\r\n };\r\n rhs.childFields.forEach((rhsChildHierarchy) => {\r\n const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);\r\n if (indexInResult !== -1) {\r\n result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);\r\n } else {\r\n result.childFields.push(rhsChildHierarchy);\r\n }\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * Adds a field hierarchy into root field hierarchies list. *\r\n * @public\r\n */\r\nexport function addFieldHierarchy(rootHierarchies: FieldHierarchy[], hierarchy: FieldHierarchy): void {\r\n const match = findRelatedFields(rootHierarchies, hierarchy);\r\n if (!match) {\r\n rootHierarchies.push(hierarchy);\r\n return;\r\n }\r\n\r\n const targetHierarchy = rootHierarchies[match.existing.index];\r\n const existingHierarchy = match.existing.hierarchy ?? buildParentHierarchy(targetHierarchy, match.existing.field);\r\n const insertHierarchy = buildParentHierarchy(hierarchy, match.matchingField);\r\n const mergedHierarchy = mergeHierarchies(existingHierarchy, insertHierarchy);\r\n mergedHierarchy.field.category = hierarchy.field.category;\r\n rootHierarchies[match.existing.index] = mergedHierarchy;\r\n}\r\n\r\nfunction createFieldPath(field: Field): Field[] {\r\n const path = [field];\r\n let currField = field;\r\n while (currField.parent) {\r\n currField = currField.parent;\r\n path.push(currField);\r\n }\r\n path.reverse();\r\n return path;\r\n}\r\n\r\n/** @internal */\r\nexport const FIELD_NAMES_SEPARATOR = \"$\";\r\n/**\r\n * Combines given field names in a way that allows them to be parsed back into a list of individual names using the [[parseCombinedFieldNames]] function.\r\n * @public\r\n */\r\nexport function combineFieldNames(fieldName: string, parentFieldName?: string) {\r\n return parentFieldName ? `${parentFieldName}${FIELD_NAMES_SEPARATOR}${fieldName}` : fieldName;\r\n}\r\n/**\r\n * Parses given combined field names string, constructed using [[combineFieldNames]], into a list of individual field names.\r\n * @public\r\n */\r\nexport function parseCombinedFieldNames(combinedName: string) {\r\n return combinedName ? combinedName.split(FIELD_NAMES_SEPARATOR) : [];\r\n}\r\n\r\ninterface NestedItemConversionResult {\r\n emptyNestedItem: boolean;\r\n convertedItem: Item;\r\n}\r\n\r\nfunction convertNestedContentItemToStructArrayItem(item: Readonly<Item>, field: Field, nextField: Field): NestedItemConversionResult {\r\n const value = item.values[field.name] ?? [];\r\n assert(Value.isNestedContent(value));\r\n if (value.length === 0) {\r\n return { emptyNestedItem: true, convertedItem: item };\r\n }\r\n\r\n const nextFieldValues: { raw: ValuesArray; display: DisplayValuesArray } = { raw: [], display: [] };\r\n value.forEach((ncv) => {\r\n const nextRawValue = ncv.values[nextField.name];\r\n const nextDisplayValue = ncv.displayValues[nextField.name];\r\n if (nextField.isNestedContentField()) {\r\n if (nextRawValue) {\r\n assert(Value.isNestedContent(nextRawValue));\r\n nextFieldValues.raw.push(...nextRawValue);\r\n }\r\n } else {\r\n nextFieldValues.raw.push(nextRawValue);\r\n nextFieldValues.display.push(nextDisplayValue);\r\n }\r\n });\r\n const convertedItem = new Item(\r\n item.primaryKeys,\r\n item.label,\r\n item.imageId, // eslint-disable-line deprecation/deprecation\r\n item.classInfo,\r\n { [nextField.name]: nextFieldValues.raw },\r\n { [nextField.name]: nextFieldValues.display },\r\n item.mergedFieldNames,\r\n item.extendedData,\r\n );\r\n return { emptyNestedItem: false, convertedItem };\r\n}\r\n\r\nfunction convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy: FieldHierarchy, parentFieldName: string | undefined) {\r\n const fieldName = fieldHierarchy.field.name;\r\n const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {\r\n if (child.field.isNestedContentField()) {\r\n return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, combineFieldNames(fieldName, parentFieldName));\r\n }\r\n return child;\r\n });\r\n const convertedFieldHierarchy: FieldHierarchy = {\r\n field: Object.assign(fieldHierarchy.field.clone(), {\r\n type: {\r\n valueFormat: PropertyValueFormat.Array,\r\n typeName: `${fieldHierarchy.field.type.typeName}[]`,\r\n memberType: {\r\n valueFormat: PropertyValueFormat.Struct,\r\n typeName: fieldHierarchy.field.type.typeName,\r\n members: convertedChildFieldHierarchies.map((member) => ({\r\n name: member.field.name,\r\n label: member.field.label,\r\n type: member.field.type,\r\n })),\r\n },\r\n } as TypeDescription,\r\n }),\r\n childFields: convertedChildFieldHierarchies,\r\n };\r\n return convertedFieldHierarchy;\r\n}\r\n\r\nfunction convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy: FieldHierarchy, ncvs: ReadonlyArray<NestedContentValue>) {\r\n const result: { raw: ValuesArray; display: DisplayValuesArray; mergedFieldNames: string[] } = { raw: [], display: [], mergedFieldNames: [] };\r\n ncvs.forEach((ncv) => {\r\n const values: ValuesMap = { ...ncv.values };\r\n const displayValues: DisplayValuesMap = { ...ncv.displayValues };\r\n const mergedFieldNames: string[] = [...ncv.mergedFieldNames];\r\n fieldHierarchy.childFields.forEach((childFieldHierarchy) => {\r\n const childFieldName = childFieldHierarchy.field.name;\r\n if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {\r\n return;\r\n }\r\n if (childFieldHierarchy.field.isNestedContentField()) {\r\n const value = values[childFieldName];\r\n assert(Value.isNestedContent(value));\r\n const convertedValues = convertNestedContentValuesToStructArrayValuesRecursive(childFieldHierarchy, value);\r\n values[childFieldName] = convertedValues.raw;\r\n displayValues[childFieldName] = convertedValues.display;\r\n mergedFieldNames.push(...convertedValues.mergedFieldNames);\r\n }\r\n });\r\n result.raw.push(values);\r\n result.display.push(displayValues);\r\n result.mergedFieldNames.push(...mergedFieldNames);\r\n });\r\n return result;\r\n}\r\n\r\nfunction convertNestedContentFieldHierarchyItemToStructArrayItem(item: Readonly<Item>, fieldHierarchy: FieldHierarchy): NestedItemConversionResult {\r\n const fieldName = fieldHierarchy.field.name;\r\n const rawValue = item.values[fieldName];\r\n assert(Value.isNestedContent(rawValue));\r\n if (rawValue.length === 0) {\r\n return { emptyNestedItem: true, convertedItem: item };\r\n }\r\n\r\n const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);\r\n const convertedItem = new Item(\r\n item.primaryKeys,\r\n item.label,\r\n item.imageId, // eslint-disable-line deprecation/deprecation\r\n item.classInfo,\r\n { [fieldName]: converted.raw },\r\n { [fieldName]: converted.display },\r\n converted.mergedFieldNames,\r\n item.extendedData,\r\n );\r\n return { emptyNestedItem: false, convertedItem };\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Descriptor.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Descriptor.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Descriptor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,wCAAwC,EACxC,4CAA4C,EAC5C,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAwC,MAAM,UAAU,CAAC;AAEnG;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,eAAe,EAAE,SAAS,CAAC;IAE3B,2CAA2C;IAC3C,mBAAmB,EAAE,OAAO,CAAC;IAE7B,8DAA8D;IAC9D,0BAA0B,CAAC,EAAE,wCAAwC,EAAE,CAAC;IAExE,kHAAkH;IAClH,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE1C,wDAAwD;IACxD,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/C,iHAAiH;IACjH,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC3C;AAED;;;GAGG;AAEH,MAAM,WAAW,mBAAmB,CAAC,cAAc,GAAG,aAAa;IACjE,eAAe,EAAE,cAAc,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,0BAA0B,CAAC,EAAE,4CAA4C,CAAC,cAAc,CAAC,EAAE,CAAC;IAC5F,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;IAC9D,yBAAyB,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;IACnE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;CAC/D;AAED,cAAc;AACd,yBAAiB,eAAe,CAAC;IAC/B,2DAA2D;IAC3D,SAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAE,GAAG,eAAe,CAsB5I;IAED,uDAAuD;IACvD,SAAgB,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CA+BjJ;IAED;;;;;;OAMG;IACH,SAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAE,GAAG,eAAe,EAAE,CAExJ;CACF;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,+DAA+D;IAC/D,QAAQ,IAAS;IAEjB;;;OAGG;IACH,UAAU,IAAS;IAEnB,2DAA2D;IAC3D,UAAU,IAAS;IAEnB,uIAAuI;IACvI,YAAY,IAAS;IAErB,uCAAuC;IACvC,cAAc,KAAS;IAEvB,oGAAoG;IACpG,QAAQ,KAAS;IAEjB;;;OAGG;IACH,gBAAgB,MAAS;IAEzB;;;;OAIG;IACH,cAAc,MAAS;CACxB;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,SAAS,IAAA;IACT,UAAU,IAAA;CACX;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAAA;KAAE,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,YAAY;IACZ,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gFAAgF;IAChF,cAAc,CAAC,EAAE;QACf,0DAA0D;QAC1D,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;QAC5B,4EAA4E;QAC5E,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B,CAAC;IAEF,sCAAsC;IACtC,OAAO,CAAC,EAAE;QACR,iDAAiD;QACjD,KAAK,EAAE,eAAe,CAAC;QACvB,qBAAqB;QACrB,SAAS,EAAE,aAAa,CAAC;KAC1B,CAAC;IAEF;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,mDAAmD;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8FAA8F;IAC9F,QAAQ,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAC3C,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,wBAAwB;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAED;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,gBAAgB;IACjD,yDAAyD;IACzD,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,2DAA2D;IAC3D,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvC;;;OAGG;IACH,SAAgB,cAAc,EAAE,GAAG,CAAC;IACpC,mDAAmD;IACnD,SAAgB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9C,iDAAiD;IACjD,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,yFAAyF;IACzF,SAAgB,aAAa,EAAE,eAAe,EAAE,CAAC;IACjD,iEAAiE;IACjE,SAAgB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClD,mDAAmD;IACnD,SAAgB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChC,qDAAqD;IACrD,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC;;;;OAIG;IACH,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClC,qCAAqC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC;IAC5B,wBAAwB;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IACrC;;;OAGG;IACI,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;;;OAUG;IACI,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;;;;;;OAUG;IACI,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAEjD,8DAA8D;gBAC3C,MAAM,EAAE,gBAAgB;IAiB3C,uCAAuC;IAChC,MAAM,IAAI,cAAc;IA2B/B,2CAA2C;WAC7B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS;IAkBhF,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC;;;;OAIG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS;IAIzE;;;OAGG;IACI,oBAAoB,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS;IAInG;;;OAGG;IACI,yBAAyB,IAAI,mBAAmB;CAqBxD"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
6
  /** @packageDocumentation
7
7
  * @module Content
8
8
  */
@@ -21,10 +21,20 @@ var SelectClassInfo;
21
21
  return {
22
22
  selectClassInfo: { id: json.selectClassInfo, ...classesMap[json.selectClassInfo] },
23
23
  isSelectPolymorphic: json.isSelectPolymorphic,
24
- ...(json.navigationPropertyClasses ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap)) } : undefined),
25
- ...(json.relatedInstancePaths ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
26
- ...(json.pathFromInputToSelectClass ? { pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => EC_1.RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)) } : undefined),
27
- ...(json.relatedPropertyPaths ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
24
+ ...(json.navigationPropertyClasses
25
+ ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap)) }
26
+ : undefined),
27
+ ...(json.relatedInstancePaths
28
+ ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap))) }
29
+ : undefined),
30
+ ...(json.pathFromInputToSelectClass
31
+ ? {
32
+ pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => EC_1.RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)),
33
+ }
34
+ : undefined),
35
+ ...(json.relatedPropertyPaths
36
+ ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => EC_1.RelatedClassInfo.fromCompressedJSON(item, classesMap))) }
37
+ : undefined),
28
38
  };
29
39
  }
30
40
  SelectClassInfo.fromCompressedJSON = fromCompressedJSON;
@@ -35,10 +45,24 @@ var SelectClassInfo;
35
45
  return {
36
46
  selectClassInfo: id,
37
47
  isSelectPolymorphic: selectClass.isSelectPolymorphic,
38
- ...(selectClass.relatedInstancePaths ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => EC_1.RelatedClassInfo.toCompressedJSON(item, classesMap))) } : undefined),
39
- ...(selectClass.navigationPropertyClasses ? { navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => EC_1.RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)) } : undefined),
40
- ...(selectClass.pathFromInputToSelectClass ? { pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => EC_1.RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)) } : undefined),
41
- ...(selectClass.relatedPropertyPaths ? { relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => EC_1.RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))) } : undefined),
48
+ ...(selectClass.relatedInstancePaths
49
+ ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => EC_1.RelatedClassInfo.toCompressedJSON(item, classesMap))) }
50
+ : undefined),
51
+ ...(selectClass.navigationPropertyClasses
52
+ ? {
53
+ navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => EC_1.RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)),
54
+ }
55
+ : undefined),
56
+ ...(selectClass.pathFromInputToSelectClass
57
+ ? {
58
+ pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => EC_1.RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)),
59
+ }
60
+ : undefined),
61
+ ...(selectClass.relatedPropertyPaths
62
+ ? {
63
+ relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => EC_1.RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))),
64
+ }
65
+ : undefined),
42
66
  };
43
67
  }
44
68
  SelectClassInfo.toCompressedJSON = toCompressedJSON;
@@ -140,8 +164,9 @@ class Descriptor {
140
164
  }
141
165
  /** Deserialize [[Descriptor]] from JSON */
142
166
  static fromJSON(json) {
143
- if (!json)
167
+ if (!json) {
144
168
  return undefined;
169
+ }
145
170
  const { classesMap, ...leftOverJson } = json;
146
171
  const categories = Category_1.CategoryDescription.listFromJSON(json.categories);
147
172
  const selectClasses = SelectClassInfo.listFromCompressedJSON(json.selectClasses, classesMap);
@@ -155,12 +180,15 @@ class Descriptor {
155
180
  });
156
181
  }
157
182
  static getFieldsFromJSON(json, factory) {
158
- return json.map((fieldJson) => {
183
+ return json
184
+ .map((fieldJson) => {
159
185
  const field = factory(fieldJson);
160
- if (field)
186
+ if (field) {
161
187
  field.rebuildParentship();
188
+ }
162
189
  return field;
163
- }).filter((field) => !!field);
190
+ })
191
+ .filter((field) => !!field);
164
192
  }
165
193
  /**
166
194
  * Get field by its name
@@ -183,16 +211,23 @@ class Descriptor {
183
211
  */
184
212
  createDescriptorOverrides() {
185
213
  const overrides = {};
186
- if (this.displayType)
214
+ if (this.displayType) {
187
215
  overrides.displayType = this.displayType;
188
- if (this.contentFlags !== 0)
216
+ }
217
+ if (this.contentFlags !== 0) {
189
218
  overrides.contentFlags = this.contentFlags;
190
- if (this.filterExpression || this.fieldsFilterExpression) // eslint-disable-line deprecation/deprecation
191
- overrides.fieldsFilterExpression = this.fieldsFilterExpression ?? this.filterExpression; // eslint-disable-line deprecation/deprecation
192
- if (this.instanceFilter)
219
+ }
220
+ // eslint-disable-next-line deprecation/deprecation
221
+ if (this.filterExpression || this.fieldsFilterExpression) {
222
+ // eslint-disable-next-line deprecation/deprecation
223
+ overrides.fieldsFilterExpression = this.fieldsFilterExpression ?? this.filterExpression;
224
+ }
225
+ if (this.instanceFilter) {
193
226
  overrides.instanceFilter = this.instanceFilter;
194
- if (this.sortingField)
227
+ }
228
+ if (this.sortingField) {
195
229
  overrides.sorting = { field: this.sortingField.getFieldDescriptor(), direction: this.sortDirection ?? SortDirection.Ascending };
230
+ }
196
231
  return overrides;
197
232
  }
198
233
  }