@itwin/presentation-common 3.7.7 → 3.7.9

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