@itwin/presentation-common 4.5.0-dev.8 → 4.6.0-dev.0

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 (403) hide show
  1. package/CHANGELOG.md +58 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +1 -1
  4. package/Ruleset.schema.json +72 -19
  5. package/lib/cjs/assets/locales/en/Presentation.json +1 -1
  6. package/lib/cjs/presentation-common/AsyncTasks.d.ts.map +1 -1
  7. package/lib/cjs/presentation-common/AsyncTasks.js +6 -4
  8. package/lib/cjs/presentation-common/AsyncTasks.js.map +1 -1
  9. package/lib/cjs/presentation-common/CommonLoggerCategory.js +3 -3
  10. package/lib/cjs/presentation-common/CommonLoggerCategory.js.map +1 -1
  11. package/lib/cjs/presentation-common/Diagnostics.d.ts.map +1 -1
  12. package/lib/cjs/presentation-common/Diagnostics.js +27 -15
  13. package/lib/cjs/presentation-common/Diagnostics.js.map +1 -1
  14. package/lib/cjs/presentation-common/EC.d.ts +7 -4
  15. package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
  16. package/lib/cjs/presentation-common/EC.js +22 -17
  17. package/lib/cjs/presentation-common/EC.js.map +1 -1
  18. package/lib/cjs/presentation-common/ElementProperties.js +3 -3
  19. package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
  20. package/lib/cjs/presentation-common/Error.d.ts.map +1 -1
  21. package/lib/cjs/presentation-common/Error.js +5 -4
  22. package/lib/cjs/presentation-common/Error.js.map +1 -1
  23. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  24. package/lib/cjs/presentation-common/InstanceFilterDefinition.js +3 -3
  25. package/lib/cjs/presentation-common/InstanceFilterDefinition.js.map +1 -1
  26. package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
  27. package/lib/cjs/presentation-common/KeySet.js +80 -46
  28. package/lib/cjs/presentation-common/KeySet.js.map +1 -1
  29. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  30. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  31. package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
  32. package/lib/cjs/presentation-common/LabelDefinition.js +5 -4
  33. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  34. package/lib/cjs/presentation-common/LocalizationHelper.d.ts +1 -1
  35. package/lib/cjs/presentation-common/LocalizationHelper.d.ts.map +1 -1
  36. package/lib/cjs/presentation-common/LocalizationHelper.js +18 -1
  37. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  38. package/lib/cjs/presentation-common/PresentationIpcInterface.js +3 -3
  39. package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
  40. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  41. package/lib/cjs/presentation-common/PresentationManagerOptions.js +3 -3
  42. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  43. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  44. package/lib/cjs/presentation-common/PresentationRpcInterface.js +53 -21
  45. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  46. package/lib/cjs/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  47. package/lib/cjs/presentation-common/RegisteredRuleset.js +21 -9
  48. package/lib/cjs/presentation-common/RegisteredRuleset.js.map +1 -1
  49. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +1 -1
  50. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  51. package/lib/cjs/presentation-common/RpcRequestsHandler.js +19 -15
  52. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  53. package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
  54. package/lib/cjs/presentation-common/RulesetVariables.js +7 -5
  55. package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
  56. package/lib/cjs/presentation-common/RulesetsFactory.d.ts.map +1 -1
  57. package/lib/cjs/presentation-common/RulesetsFactory.js +42 -26
  58. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  59. package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
  60. package/lib/cjs/presentation-common/Update.js +4 -3
  61. package/lib/cjs/presentation-common/Update.js.map +1 -1
  62. package/lib/cjs/presentation-common/Utils.js +3 -3
  63. package/lib/cjs/presentation-common/Utils.js.map +1 -1
  64. package/lib/cjs/presentation-common/content/Category.js +3 -3
  65. package/lib/cjs/presentation-common/content/Category.js.map +1 -1
  66. package/lib/cjs/presentation-common/content/Content.d.ts.map +1 -1
  67. package/lib/cjs/presentation-common/content/Content.js +10 -9
  68. package/lib/cjs/presentation-common/content/Content.js.map +1 -1
  69. package/lib/cjs/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  70. package/lib/cjs/presentation-common/content/ContentTraverser.js +47 -25
  71. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  72. package/lib/cjs/presentation-common/content/Descriptor.d.ts.map +1 -1
  73. package/lib/cjs/presentation-common/content/Descriptor.js +56 -21
  74. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  75. package/lib/cjs/presentation-common/content/DisplayTypes.js +3 -3
  76. package/lib/cjs/presentation-common/content/DisplayTypes.js.map +1 -1
  77. package/lib/cjs/presentation-common/content/Editor.js +3 -3
  78. package/lib/cjs/presentation-common/content/Editor.js.map +1 -1
  79. package/lib/cjs/presentation-common/content/Fields.d.ts +78 -2
  80. package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
  81. package/lib/cjs/presentation-common/content/Fields.js +201 -45
  82. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  83. package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
  84. package/lib/cjs/presentation-common/content/Item.js +8 -6
  85. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  86. package/lib/cjs/presentation-common/content/Property.d.ts +1 -1
  87. package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
  88. package/lib/cjs/presentation-common/content/Property.js +4 -4
  89. package/lib/cjs/presentation-common/content/Property.js.map +1 -1
  90. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts +6 -1
  91. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  92. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +39 -11
  93. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  94. package/lib/cjs/presentation-common/content/Renderer.js +3 -3
  95. package/lib/cjs/presentation-common/content/Renderer.js.map +1 -1
  96. package/lib/cjs/presentation-common/content/TypeDescription.js +3 -3
  97. package/lib/cjs/presentation-common/content/TypeDescription.js.map +1 -1
  98. package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
  99. package/lib/cjs/presentation-common/content/Value.js +46 -30
  100. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  101. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  102. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  103. package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
  104. package/lib/cjs/presentation-common/hierarchy/Key.js +14 -8
  105. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  106. package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
  107. package/lib/cjs/presentation-common/hierarchy/Node.js +7 -5
  108. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  109. package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  110. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +11 -7
  111. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  112. package/lib/cjs/presentation-common/rules/ClassSpecifications.js +3 -3
  113. package/lib/cjs/presentation-common/rules/ClassSpecifications.js.map +1 -1
  114. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts +39 -11
  115. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts.map +1 -1
  116. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  117. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  118. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +3 -3
  119. package/lib/cjs/presentation-common/rules/RelationshipDirection.js.map +1 -1
  120. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  121. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  122. package/lib/cjs/presentation-common/rules/Rule.js +3 -3
  123. package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
  124. package/lib/cjs/presentation-common/rules/Ruleset.js +3 -3
  125. package/lib/cjs/presentation-common/rules/Ruleset.js.map +1 -1
  126. package/lib/cjs/presentation-common/rules/SchemasSpecification.js +3 -3
  127. package/lib/cjs/presentation-common/rules/SchemasSpecification.js.map +1 -1
  128. package/lib/cjs/presentation-common/rules/Variables.js +3 -3
  129. package/lib/cjs/presentation-common/rules/Variables.js.map +1 -1
  130. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  131. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  132. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  133. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  134. package/lib/cjs/presentation-common/rules/content/ContentRule.js +3 -3
  135. package/lib/cjs/presentation-common/rules/content/ContentRule.js.map +1 -1
  136. package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  137. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +3 -3
  138. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  139. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  140. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  141. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +3 -3
  142. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  143. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  144. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  145. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  146. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  147. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  148. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  149. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  150. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  151. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  152. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  153. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  154. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  155. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  156. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  157. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  158. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  159. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  160. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  161. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  162. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +3 -3
  163. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  164. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  165. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  166. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +3 -3
  167. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  168. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  169. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  170. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  171. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  172. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  173. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +3 -3
  174. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  175. package/lib/cjs/presentation-common/rules/customization/SortingRule.js +3 -3
  176. package/lib/cjs/presentation-common/rules/customization/SortingRule.js.map +1 -1
  177. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +3 -3
  178. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  179. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  180. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  181. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  182. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  183. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  184. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  185. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  186. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  187. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  188. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  189. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  190. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  191. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  192. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  193. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  194. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  195. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  196. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  197. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  198. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  199. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  200. package/lib/cjs/presentation-common/selection/SelectionScope.js +3 -3
  201. package/lib/cjs/presentation-common/selection/SelectionScope.js.map +1 -1
  202. package/lib/cjs/presentation-common.js +3 -3
  203. package/lib/cjs/presentation-common.js.map +1 -1
  204. package/lib/esm/presentation-common/AsyncTasks.d.ts.map +1 -1
  205. package/lib/esm/presentation-common/AsyncTasks.js +6 -4
  206. package/lib/esm/presentation-common/AsyncTasks.js.map +1 -1
  207. package/lib/esm/presentation-common/CommonLoggerCategory.js +3 -3
  208. package/lib/esm/presentation-common/CommonLoggerCategory.js.map +1 -1
  209. package/lib/esm/presentation-common/Diagnostics.d.ts.map +1 -1
  210. package/lib/esm/presentation-common/Diagnostics.js +27 -15
  211. package/lib/esm/presentation-common/Diagnostics.js.map +1 -1
  212. package/lib/esm/presentation-common/EC.d.ts +7 -4
  213. package/lib/esm/presentation-common/EC.d.ts.map +1 -1
  214. package/lib/esm/presentation-common/EC.js +22 -17
  215. package/lib/esm/presentation-common/EC.js.map +1 -1
  216. package/lib/esm/presentation-common/ElementProperties.js +3 -3
  217. package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
  218. package/lib/esm/presentation-common/Error.d.ts.map +1 -1
  219. package/lib/esm/presentation-common/Error.js +5 -4
  220. package/lib/esm/presentation-common/Error.js.map +1 -1
  221. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  222. package/lib/esm/presentation-common/InstanceFilterDefinition.js +3 -3
  223. package/lib/esm/presentation-common/InstanceFilterDefinition.js.map +1 -1
  224. package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
  225. package/lib/esm/presentation-common/KeySet.js +80 -46
  226. package/lib/esm/presentation-common/KeySet.js.map +1 -1
  227. package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  228. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  229. package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
  230. package/lib/esm/presentation-common/LabelDefinition.js +5 -4
  231. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  232. package/lib/esm/presentation-common/LocalizationHelper.d.ts +1 -1
  233. package/lib/esm/presentation-common/LocalizationHelper.d.ts.map +1 -1
  234. package/lib/esm/presentation-common/LocalizationHelper.js +19 -2
  235. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  236. package/lib/esm/presentation-common/PresentationIpcInterface.js +3 -3
  237. package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
  238. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  239. package/lib/esm/presentation-common/PresentationManagerOptions.js +3 -3
  240. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  241. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  242. package/lib/esm/presentation-common/PresentationRpcInterface.js +53 -21
  243. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  244. package/lib/esm/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  245. package/lib/esm/presentation-common/RegisteredRuleset.js +21 -9
  246. package/lib/esm/presentation-common/RegisteredRuleset.js.map +1 -1
  247. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +1 -1
  248. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  249. package/lib/esm/presentation-common/RpcRequestsHandler.js +20 -16
  250. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  251. package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
  252. package/lib/esm/presentation-common/RulesetVariables.js +7 -5
  253. package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
  254. package/lib/esm/presentation-common/RulesetsFactory.d.ts.map +1 -1
  255. package/lib/esm/presentation-common/RulesetsFactory.js +42 -26
  256. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  257. package/lib/esm/presentation-common/Update.d.ts.map +1 -1
  258. package/lib/esm/presentation-common/Update.js +4 -3
  259. package/lib/esm/presentation-common/Update.js.map +1 -1
  260. package/lib/esm/presentation-common/Utils.js +3 -3
  261. package/lib/esm/presentation-common/Utils.js.map +1 -1
  262. package/lib/esm/presentation-common/content/Category.js +3 -3
  263. package/lib/esm/presentation-common/content/Category.js.map +1 -1
  264. package/lib/esm/presentation-common/content/Content.d.ts.map +1 -1
  265. package/lib/esm/presentation-common/content/Content.js +10 -9
  266. package/lib/esm/presentation-common/content/Content.js.map +1 -1
  267. package/lib/esm/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  268. package/lib/esm/presentation-common/content/ContentTraverser.js +47 -25
  269. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  270. package/lib/esm/presentation-common/content/Descriptor.d.ts.map +1 -1
  271. package/lib/esm/presentation-common/content/Descriptor.js +56 -21
  272. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  273. package/lib/esm/presentation-common/content/DisplayTypes.js +3 -3
  274. package/lib/esm/presentation-common/content/DisplayTypes.js.map +1 -1
  275. package/lib/esm/presentation-common/content/Editor.js +3 -3
  276. package/lib/esm/presentation-common/content/Editor.js.map +1 -1
  277. package/lib/esm/presentation-common/content/Fields.d.ts +78 -2
  278. package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
  279. package/lib/esm/presentation-common/content/Fields.js +198 -44
  280. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  281. package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
  282. package/lib/esm/presentation-common/content/Item.js +8 -6
  283. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  284. package/lib/esm/presentation-common/content/Property.d.ts +1 -1
  285. package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
  286. package/lib/esm/presentation-common/content/Property.js +4 -4
  287. package/lib/esm/presentation-common/content/Property.js.map +1 -1
  288. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts +6 -1
  289. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  290. package/lib/esm/presentation-common/content/PropertyValueFormatter.js +39 -11
  291. package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  292. package/lib/esm/presentation-common/content/Renderer.js +3 -3
  293. package/lib/esm/presentation-common/content/Renderer.js.map +1 -1
  294. package/lib/esm/presentation-common/content/TypeDescription.js +3 -3
  295. package/lib/esm/presentation-common/content/TypeDescription.js.map +1 -1
  296. package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
  297. package/lib/esm/presentation-common/content/Value.js +46 -30
  298. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  299. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  300. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  301. package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
  302. package/lib/esm/presentation-common/hierarchy/Key.js +14 -8
  303. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  304. package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
  305. package/lib/esm/presentation-common/hierarchy/Node.js +7 -5
  306. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  307. package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  308. package/lib/esm/presentation-common/hierarchy/NodePathElement.js +11 -7
  309. package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  310. package/lib/esm/presentation-common/rules/ClassSpecifications.js +3 -3
  311. package/lib/esm/presentation-common/rules/ClassSpecifications.js.map +1 -1
  312. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts +39 -11
  313. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts.map +1 -1
  314. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  315. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  316. package/lib/esm/presentation-common/rules/RelationshipDirection.js +3 -3
  317. package/lib/esm/presentation-common/rules/RelationshipDirection.js.map +1 -1
  318. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  319. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  320. package/lib/esm/presentation-common/rules/Rule.js +3 -3
  321. package/lib/esm/presentation-common/rules/Rule.js.map +1 -1
  322. package/lib/esm/presentation-common/rules/Ruleset.js +3 -3
  323. package/lib/esm/presentation-common/rules/Ruleset.js.map +1 -1
  324. package/lib/esm/presentation-common/rules/SchemasSpecification.js +3 -3
  325. package/lib/esm/presentation-common/rules/SchemasSpecification.js.map +1 -1
  326. package/lib/esm/presentation-common/rules/Variables.js +3 -3
  327. package/lib/esm/presentation-common/rules/Variables.js.map +1 -1
  328. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  329. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  330. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  331. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  332. package/lib/esm/presentation-common/rules/content/ContentRule.js +3 -3
  333. package/lib/esm/presentation-common/rules/content/ContentRule.js.map +1 -1
  334. package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  335. package/lib/esm/presentation-common/rules/content/ContentSpecification.js +3 -3
  336. package/lib/esm/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  337. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  338. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  339. package/lib/esm/presentation-common/rules/content/PropertySpecification.js +3 -3
  340. package/lib/esm/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  341. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  342. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  343. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  344. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  345. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  346. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  347. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  348. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  349. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  350. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  351. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  352. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  353. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  354. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  355. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  356. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  357. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  358. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  359. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  360. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +3 -3
  361. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  362. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  363. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  364. package/lib/esm/presentation-common/rules/customization/GroupingRule.js +3 -3
  365. package/lib/esm/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  366. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  367. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  368. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  369. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  370. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  371. package/lib/esm/presentation-common/rules/customization/LabelOverride.js +3 -3
  372. package/lib/esm/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  373. package/lib/esm/presentation-common/rules/customization/SortingRule.js +3 -3
  374. package/lib/esm/presentation-common/rules/customization/SortingRule.js.map +1 -1
  375. package/lib/esm/presentation-common/rules/customization/StyleOverride.js +3 -3
  376. package/lib/esm/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  377. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  378. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  379. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  380. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  381. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  382. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  383. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  384. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  385. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  386. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  387. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  388. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  389. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  390. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  391. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  392. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  393. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  394. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  395. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  396. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  397. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  398. package/lib/esm/presentation-common/selection/SelectionScope.js +3 -3
  399. package/lib/esm/presentation-common/selection/SelectionScope.js.map +1 -1
  400. package/lib/esm/presentation-common.js +3 -3
  401. package/lib/esm/presentation-common.js.map +1 -1
  402. package/lib/public/locales/en/Presentation.json +1 -1
  403. package/package.json +14 -11
@@ -1,26 +1,30 @@
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
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.FieldDescriptor = exports.FieldDescriptorType = exports.getFieldByDescriptor = exports.getFieldByName = exports.NestedContentField = exports.PropertiesField = exports.Field = void 0;
10
+ exports.FieldDescriptor = exports.FieldDescriptorType = exports.getFieldByDescriptor = exports.getFieldByName = exports.NestedContentField = exports.StructPropertiesField = exports.ArrayPropertiesField = exports.PropertiesField = exports.Field = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const EC_1 = require("../EC");
13
13
  const Error_1 = require("../Error");
14
14
  const RelatedPropertiesSpecification_1 = require("../rules/content/modifiers/RelatedPropertiesSpecification");
15
15
  const Property_1 = require("./Property");
16
- /** Is supplied field a properties field. */
17
- const isPropertiesField = (field) => {
16
+ function isPropertiesField(field) {
18
17
  return !!field.properties;
19
- };
20
- /** Is supplied field a nested content field. */
21
- const isNestedContentField = (field) => {
18
+ }
19
+ function isArrayPropertiesField(field) {
20
+ return !!field.itemsField;
21
+ }
22
+ function isStructPropertiesField(field) {
23
+ return !!field.memberFields;
24
+ }
25
+ function isNestedContentField(field) {
22
26
  return !!field.nestedFields;
23
- };
27
+ }
24
28
  /**
25
29
  * Describes a single content field. A field is usually represented as a grid column
26
30
  * or a property pane row.
@@ -52,15 +56,21 @@ class Field {
52
56
  /**
53
57
  * Is this a [[PropertiesField]]
54
58
  */
55
- isPropertiesField() { return isPropertiesField(this); }
59
+ isPropertiesField() {
60
+ return isPropertiesField(this);
61
+ }
56
62
  /**
57
63
  * Is this a [[NestedContentField]]
58
64
  */
59
- isNestedContentField() { return isNestedContentField(this); }
65
+ isNestedContentField() {
66
+ return isNestedContentField(this);
67
+ }
60
68
  /**
61
69
  * Get parent
62
70
  */
63
- get parent() { return this._parent; }
71
+ get parent() {
72
+ return this._parent;
73
+ }
64
74
  clone() {
65
75
  const clone = new Field(this.category, this.name, this.label, this.type, this.isReadonly, this.priority, this.editor, this.renderer);
66
76
  clone.rebuildParentship(this.parent);
@@ -80,33 +90,21 @@ class Field {
80
90
  };
81
91
  }
82
92
  /** Serialize this object to compressed JSON */
83
- toCompressedJSON(classesMap) {
84
- if (this.isPropertiesField())
85
- return {
86
- ...this.toJSON(),
87
- properties: this.properties.map((property) => Property_1.Property.toCompressedJSON(property, classesMap)),
88
- };
89
- if (this.isNestedContentField()) {
90
- const { id, ...leftOverInfo } = this.contentClassInfo;
91
- classesMap[id] = leftOverInfo;
92
- return {
93
- ...this.toJSON(),
94
- contentClassInfo: id,
95
- pathToPrimaryClass: this.pathToPrimaryClass.map((classInfo) => EC_1.RelatedClassInfo.toCompressedJSON(classInfo, classesMap)),
96
- nestedFields: this.nestedFields.map((field) => field.toCompressedJSON(classesMap)),
97
- };
98
- }
93
+ toCompressedJSON(_classesMap) {
99
94
  return this.toJSON();
100
95
  }
101
96
  /** Deserialize [[Field]] from JSON */
102
97
  static fromJSON(json, categories) {
103
- if (!json)
98
+ if (!json) {
104
99
  return undefined;
105
- if (isPropertiesField(json))
100
+ }
101
+ if (isPropertiesField(json)) {
106
102
  return PropertiesField.fromJSON(json, categories);
107
- if (isNestedContentField(json))
103
+ }
104
+ if (isNestedContentField(json)) {
108
105
  // eslint-disable-next-line deprecation/deprecation
109
106
  return NestedContentField.fromJSON(json, categories);
107
+ }
110
108
  const field = Object.create(Field.prototype);
111
109
  return Object.assign(field, json, {
112
110
  category: Field.getCategoryFromFieldJson(json, categories),
@@ -114,12 +112,15 @@ class Field {
114
112
  }
115
113
  /** Deserialize a [[Field]] from compressed JSON. */
116
114
  static fromCompressedJSON(json, classesMap, categories) {
117
- if (!json)
115
+ if (!json) {
118
116
  return undefined;
119
- if (isPropertiesField(json))
117
+ }
118
+ if (isPropertiesField(json)) {
120
119
  return PropertiesField.fromCompressedJSON(json, classesMap, categories);
121
- if (isNestedContentField(json))
120
+ }
121
+ if (isNestedContentField(json)) {
122
122
  return NestedContentField.fromCompressedJSON(json, classesMap, categories);
123
+ }
123
124
  const field = Object.create(Field.prototype);
124
125
  return Object.assign(field, json, {
125
126
  category: Field.getCategoryFromFieldJson(json, categories),
@@ -127,8 +128,9 @@ class Field {
127
128
  }
128
129
  static getCategoryFromFieldJson(fieldJson, categories) {
129
130
  const category = categories.find((c) => c.name === fieldJson.category);
130
- if (!category)
131
+ if (!category) {
131
132
  throw new Error_1.PresentationError(Error_1.PresentationStatus.InvalidArgument, `Invalid content field category`);
133
+ }
132
134
  return category;
133
135
  }
134
136
  /** Resets field's parent. */
@@ -182,6 +184,14 @@ class PropertiesField extends Field {
182
184
  super(category, name, label, description, isReadonly, priority, editor, renderer);
183
185
  this.properties = properties;
184
186
  }
187
+ /** Is this a an array property field */
188
+ isArrayPropertiesField() {
189
+ return false;
190
+ }
191
+ /** Is this a an struct property field */
192
+ isStructPropertiesField() {
193
+ return false;
194
+ }
185
195
  clone() {
186
196
  const clone = new PropertiesField(this.category, this.name, this.label, this.type, this.isReadonly, this.priority, this.properties, this.editor, this.renderer);
187
197
  clone.rebuildParentship(this.parent);
@@ -194,10 +204,24 @@ class PropertiesField extends Field {
194
204
  properties: this.properties,
195
205
  };
196
206
  }
207
+ /** Serialize this object to compressed JSON */
208
+ toCompressedJSON(classesMap) {
209
+ return {
210
+ ...super.toCompressedJSON(classesMap),
211
+ properties: this.properties.map((property) => Property_1.Property.toCompressedJSON(property, classesMap)),
212
+ };
213
+ }
197
214
  /** Deserialize [[PropertiesField]] from JSON */
198
215
  static fromJSON(json, categories) {
199
- if (!json)
216
+ if (!json) {
200
217
  return undefined;
218
+ }
219
+ if (isArrayPropertiesField(json)) {
220
+ return ArrayPropertiesField.fromJSON(json, categories);
221
+ }
222
+ if (isStructPropertiesField(json)) {
223
+ return StructPropertiesField.fromJSON(json, categories);
224
+ }
201
225
  const field = Object.create(PropertiesField.prototype);
202
226
  return Object.assign(field, json, {
203
227
  category: this.getCategoryFromFieldJson(json, categories),
@@ -208,6 +232,12 @@ class PropertiesField extends Field {
208
232
  * @public
209
233
  */
210
234
  static fromCompressedJSON(json, classesMap, categories) {
235
+ if (isArrayPropertiesField(json)) {
236
+ return ArrayPropertiesField.fromCompressedJSON(json, classesMap, categories);
237
+ }
238
+ if (isStructPropertiesField(json)) {
239
+ return StructPropertiesField.fromCompressedJSON(json, classesMap, categories);
240
+ }
211
241
  const field = Object.create(PropertiesField.prototype);
212
242
  return Object.assign(field, json, {
213
243
  category: this.getCategoryFromFieldJson(json, categories),
@@ -267,6 +297,112 @@ class PropertiesField extends Field {
267
297
  }
268
298
  }
269
299
  exports.PropertiesField = PropertiesField;
300
+ /**
301
+ * Describes a content field that's based on one or more similar EC array properties.
302
+ * @public
303
+ */
304
+ class ArrayPropertiesField extends PropertiesField {
305
+ constructor(category, name, label, description, itemsField, isReadonly, priority, properties, editor, renderer) {
306
+ super(category, name, label, description, isReadonly, priority, properties, editor, renderer);
307
+ this.itemsField = itemsField;
308
+ }
309
+ isArrayPropertiesField() {
310
+ return true;
311
+ }
312
+ clone() {
313
+ const clone = new ArrayPropertiesField(this.category, this.name, this.label, this.type, this.itemsField.clone(), this.isReadonly, this.priority, this.properties, this.editor, this.renderer);
314
+ clone.rebuildParentship(this.parent);
315
+ return clone;
316
+ }
317
+ /** Serialize this object to JSON */
318
+ toJSON() {
319
+ return {
320
+ ...super.toJSON(),
321
+ itemsField: this.itemsField.toJSON(),
322
+ };
323
+ }
324
+ /** Serialize this object to compressed JSON */
325
+ toCompressedJSON(classesMap) {
326
+ return {
327
+ ...super.toCompressedJSON(classesMap),
328
+ itemsField: this.itemsField.toCompressedJSON(classesMap),
329
+ };
330
+ }
331
+ /** Deserialize [[ArrayPropertiesField]] from JSON */
332
+ static fromJSON(json, categories) {
333
+ const field = Object.create(ArrayPropertiesField.prototype);
334
+ return Object.assign(field, json, {
335
+ category: this.getCategoryFromFieldJson(json, categories),
336
+ itemsField: PropertiesField.fromJSON(json.itemsField, categories),
337
+ });
338
+ }
339
+ /**
340
+ * Deserialize an [[ArrayPropertiesField]] from compressed JSON.
341
+ * @public
342
+ */
343
+ static fromCompressedJSON(json, classesMap, categories) {
344
+ const field = Object.create(ArrayPropertiesField.prototype);
345
+ return Object.assign(field, json, {
346
+ category: this.getCategoryFromFieldJson(json, categories),
347
+ properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),
348
+ itemsField: PropertiesField.fromCompressedJSON(json.itemsField, classesMap, categories),
349
+ });
350
+ }
351
+ }
352
+ exports.ArrayPropertiesField = ArrayPropertiesField;
353
+ /**
354
+ * Describes a content field that's based on one or more similar EC struct properties.
355
+ * @public
356
+ */
357
+ class StructPropertiesField extends PropertiesField {
358
+ constructor(category, name, label, description, memberFields, isReadonly, priority, properties, editor, renderer) {
359
+ super(category, name, label, description, isReadonly, priority, properties, editor, renderer);
360
+ this.memberFields = memberFields;
361
+ }
362
+ isStructPropertiesField() {
363
+ return true;
364
+ }
365
+ clone() {
366
+ const clone = new StructPropertiesField(this.category, this.name, this.label, this.type, this.memberFields.map((m) => m.clone()), this.isReadonly, this.priority, this.properties, this.editor, this.renderer);
367
+ clone.rebuildParentship(this.parent);
368
+ return clone;
369
+ }
370
+ /** Serialize this object to JSON */
371
+ toJSON() {
372
+ return {
373
+ ...super.toJSON(),
374
+ memberFields: this.memberFields.map((m) => m.toJSON()),
375
+ };
376
+ }
377
+ /** Serialize this object to compressed JSON */
378
+ toCompressedJSON(classesMap) {
379
+ return {
380
+ ...super.toCompressedJSON(classesMap),
381
+ memberFields: this.memberFields.map((m) => m.toCompressedJSON(classesMap)),
382
+ };
383
+ }
384
+ /** Deserialize [[StructPropertiesField]] from JSON */
385
+ static fromJSON(json, categories) {
386
+ const field = Object.create(StructPropertiesField.prototype);
387
+ return Object.assign(field, json, {
388
+ category: this.getCategoryFromFieldJson(json, categories),
389
+ memberFields: json.memberFields.map((m) => PropertiesField.fromJSON(m, categories)),
390
+ });
391
+ }
392
+ /**
393
+ * Deserialize a [[StructPropertiesField]] from compressed JSON.
394
+ * @public
395
+ */
396
+ static fromCompressedJSON(json, classesMap, categories) {
397
+ const field = Object.create(StructPropertiesField.prototype);
398
+ return Object.assign(field, json, {
399
+ category: this.getCategoryFromFieldJson(json, categories),
400
+ properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),
401
+ memberFields: json.memberFields.map((m) => PropertiesField.fromCompressedJSON(m, classesMap, categories)),
402
+ });
403
+ }
404
+ }
405
+ exports.StructPropertiesField = StructPropertiesField;
270
406
  /**
271
407
  * Describes a content field that contains [Nested content]($docs/presentation/content/Terminology#nested-content).
272
408
  *
@@ -325,13 +461,25 @@ class NestedContentField extends Field {
325
461
  autoExpand: this.autoExpand,
326
462
  };
327
463
  }
464
+ /** Serialize this object to compressed JSON */
465
+ toCompressedJSON(classesMap) {
466
+ const { id, ...leftOverInfo } = this.contentClassInfo;
467
+ classesMap[id] = leftOverInfo;
468
+ return {
469
+ ...super.toCompressedJSON(classesMap),
470
+ contentClassInfo: id,
471
+ pathToPrimaryClass: this.pathToPrimaryClass.map((classInfo) => EC_1.RelatedClassInfo.toCompressedJSON(classInfo, classesMap)),
472
+ nestedFields: this.nestedFields.map((field) => field.toCompressedJSON(classesMap)),
473
+ };
474
+ }
328
475
  /**
329
476
  * Deserialize [[NestedContentField]] from JSON
330
477
  * @deprecated in 3.x. Use [[NestedContentField.fromCompressedJSON]]
331
478
  */
332
479
  static fromJSON(json, categories) {
333
- if (!json)
480
+ if (!json) {
334
481
  return undefined;
482
+ }
335
483
  const field = Object.create(NestedContentField.prototype);
336
484
  return Object.assign(field, json, this.fromCommonJSON(json, categories), {
337
485
  nestedFields: json.nestedFields
@@ -345,7 +493,8 @@ class NestedContentField extends Field {
345
493
  const field = Object.create(NestedContentField.prototype);
346
494
  return Object.assign(field, json, this.fromCommonJSON(json, categories), {
347
495
  category: this.getCategoryFromFieldJson(json, categories),
348
- nestedFields: json.nestedFields.map((nestedFieldJson) => Field.fromCompressedJSON(nestedFieldJson, classesMap, categories))
496
+ nestedFields: json.nestedFields
497
+ .map((nestedFieldJson) => Field.fromCompressedJSON(nestedFieldJson, classesMap, categories))
349
498
  .filter((nestedField) => !!nestedField),
350
499
  contentClassInfo: { id: json.contentClassInfo, ...classesMap[json.contentClassInfo] },
351
500
  pathToPrimaryClass: json.pathToPrimaryClass.map((stepJson) => EC_1.RelatedClassInfo.fromCompressedJSON(stepJson, classesMap)),
@@ -363,8 +512,9 @@ class NestedContentField extends Field {
363
512
  /** Resets parent of this field and all nested fields. */
364
513
  resetParentship() {
365
514
  super.resetParentship();
366
- for (const nestedField of this.nestedFields)
515
+ for (const nestedField of this.nestedFields) {
367
516
  nestedField.resetParentship();
517
+ }
368
518
  }
369
519
  /**
370
520
  * Sets provided [[NestedContentField]] as parent of this fields and recursively updates
@@ -372,8 +522,9 @@ class NestedContentField extends Field {
372
522
  */
373
523
  rebuildParentship(parentField) {
374
524
  super.rebuildParentship(parentField);
375
- for (const nestedField of this.nestedFields)
525
+ for (const nestedField of this.nestedFields) {
376
526
  nestedField.rebuildParentship(this);
527
+ }
377
528
  }
378
529
  }
379
530
  exports.NestedContentField = NestedContentField;
@@ -381,12 +532,14 @@ exports.NestedContentField = NestedContentField;
381
532
  const getFieldByName = (fields, name, recurse) => {
382
533
  if (name) {
383
534
  for (const field of fields) {
384
- if (field.name === name)
535
+ if (field.name === name) {
385
536
  return field;
537
+ }
386
538
  if (recurse && field.isNestedContentField()) {
387
539
  const nested = (0, exports.getFieldByName)(field.nestedFields, name, recurse);
388
- if (nested)
540
+ if (nested) {
389
541
  return nested;
542
+ }
390
543
  }
391
544
  }
392
545
  }
@@ -396,12 +549,14 @@ exports.getFieldByName = getFieldByName;
396
549
  /** @internal */
397
550
  const getFieldByDescriptor = (fields, fieldDescriptor, recurse) => {
398
551
  for (const field of fields) {
399
- if (field.matchesDescriptor(fieldDescriptor))
552
+ if (field.matchesDescriptor(fieldDescriptor)) {
400
553
  return field;
554
+ }
401
555
  if (recurse && field.isNestedContentField()) {
402
556
  const nested = (0, exports.getFieldByDescriptor)(field.nestedFields, fieldDescriptor, recurse);
403
- if (nested)
557
+ if (nested) {
404
558
  return nested;
559
+ }
405
560
  }
406
561
  }
407
562
  return undefined;
@@ -417,6 +572,7 @@ var FieldDescriptorType;
417
572
  FieldDescriptorType["Properties"] = "properties";
418
573
  })(FieldDescriptorType = exports.FieldDescriptorType || (exports.FieldDescriptorType = {}));
419
574
  /** @public */
575
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
420
576
  var FieldDescriptor;
421
577
  (function (FieldDescriptor) {
422
578
  /** Is this a named field descriptor */
@@ -1 +1 @@
1
- {"version":3,"file":"Fields.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Fields.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AACzD,8BAGe;AACf,oCAAiE;AACjE,8GAAgG;AAGhG,yCAAoD;AAkDpD,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,CAAC,KAAwB,EAAuD,EAAE;IAC1G,OAAO,CAAC,CAAE,KAAa,CAAC,UAAU,CAAC;AACrC,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,oBAAoB,GAAG,CAAC,KAAwB,EAA6D,EAAE;IACnH,OAAO,CAAC,CAAE,KAAa,CAAC,YAAY,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAa,KAAK;IAoBhB;;;;;;;;;;OAUG;IACH,YAAmB,QAA6B,EAAE,IAAY,EAAE,KAAa,EAAE,IAAqB,EAClG,UAAmB,EAAE,QAAgB,EAAE,MAA0B,EAAE,QAA8B;QACjG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,iBAAiB,KAA8B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvF;;OAEG;IACI,oBAAoB,KAAiC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhG;;OAEG;IACH,IAAW,MAAM,KAAqC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAErE,KAAK;QACV,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC;IAC7B,MAAM;QACX,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,+CAA+C;IACxC,gBAAgB,CAAC,UAAqD;QAC3E,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO;gBACL,GAAG,IAAI,CAAC,MAAM,EAAE;gBAChB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,mBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC/F,CAAC;QAEJ,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtD,UAAU,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;YAC9B,OAAO;gBACL,GAAG,IAAI,CAAC,MAAM,EAAE;gBAChB,gBAAgB,EAAE,EAAE;gBACpB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,qBAAgB,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACxH,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;aACnF,CAAC;SACH;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,sCAAsC;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAA2B,EAAE,UAAiC;QACnF,IAAI,CAAC,IAAI;YACP,OAAO,SAAS,CAAC;QACnB,IAAI,iBAAiB,CAAC,IAAI,CAAC;YACzB,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,oBAAoB,CAAC,IAAI,CAAC;YAC5B,mDAAmD;YACnD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IAC7C,MAAM,CAAC,kBAAkB,CAAC,IAAmC,EAAE,UAAqD,EAAE,UAAiC;QAC5J,IAAI,CAAC,IAAI;YACP,OAAO,SAAS,CAAC;QAEnB,IAAI,iBAAiB,CAAC,IAAI,CAAC;YACzB,OAAO,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE1E,IAAI,oBAAoB,CAAC,IAAI,CAAC;YAC5B,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAES,MAAM,CAAC,wBAAwB,CAAC,SAAoB,EAAE,UAAiC;QAC/F,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ;YACX,MAAM,IAAI,yBAAiB,CAAC,0BAAkB,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,6BAA6B;IACtB,eAAe;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED,oEAAoE;IAC7D,iBAAiB,CAAC,WAAgC;QACvD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,kBAAkB;QACvB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,SAAS,EAAE,IAAI,CAAC,IAAI;SACG,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,iBAAiB,CAAC,UAA2B;QAClD,OAAO,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC;IACnF,CAAC;CACF;AAjLD,sBAiLC;AAED;;;;;GAKG;AACH,MAAa,eAAgB,SAAQ,KAAK;IAIxC;;;;;;;;;;;OAWG;IACH,YACE,QAA6B,EAC7B,IAAY,EACZ,KAAa,EACb,WAA4B,EAC5B,UAAmB,EACnB,QAAgB,EAChB,UAAsB,EACtB,MAA0B,EAC1B,QAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEe,KAAK;QACnB,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC;IACpB,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAU,QAAQ,CAAC,IAAqC,EAAE,UAAiC;QACtG,IAAI,CAAC,IAAI;YACP,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAU,kBAAkB,CAAC,IAAqC,EAAE,UAAqD,EAAE,UAAiC;QACvK,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,0BAA0B,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;SACxG,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACa,kBAAkB;QAChC,MAAM,6BAA6B,GAAG,IAAI,KAAK,EAAoB,CAAC;QACpE,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,YAAY,EAAE;YACnB,6BAA6B,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;YACvE,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;SACpC;QACD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,UAAU;YACpC,6BAA6B,EAAE,qBAAgB,CAAC,KAAK,CAAC,qBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YAC9G,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;gBAChC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI;aACtB,CAAC,CAAC;SACyB,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACa,iBAAiB,CAAC,UAA2B;QAC3D,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YAC7C,OAAO,KAAK,CAAC;SACd;QAED,sFAAsF;QACtF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3N,OAAO,KAAK,CAAC;SACd;QAED,yEAAyE;QACzE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,YAAY,EAAE;YACnB,MAAM,0BAA0B,GAAG,qBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAC7F,KAAK,MAAM,IAAI,IAAI,0BAA0B,EAAE;gBAC7C,IAAI,UAAU,CAAC,6BAA6B,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,EAAE;oBACpE,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,qBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,6BAA6B,CAAC,UAAU,CAAC,6BAA6B,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC9I,OAAO,KAAK,CAAC;iBACd;gBACD,EAAE,UAAU,CAAC;aACd;YACD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;SACpC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApID,0CAoIC;AAED;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,KAAK;IA+B3C;;;;;;;;;;;;;;;OAeG;IACH,YACE,QAA6B,EAC7B,IAAY,EACZ,KAAa,EACb,WAA4B,EAC5B,UAAmB,EACnB,QAAgB,EAChB,gBAA2B,EAC3B,kBAAoC,EACpC,YAAqB,EACrB,MAA0B,EAC1B,UAAoB,EACpB,QAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,oDAAmB,CAAC,eAAe,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;IAClC,CAAC;IAEe,KAAK;QACnB,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAClC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EACvC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzD,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACrD,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,IAAY,EAAE,OAAiB;QACnD,OAAO,IAAA,sBAAc,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,oCAAoC;IACpB,MAAM;QACpB,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrE,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,MAAM,CAAU,QAAQ,CAAC,IAAwC,EAAE,UAAiC;QACzG,IAAI,CAAC,IAAI;YACP,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YACvE,YAAY,EAAE,IAAI,CAAC,YAAY;iBAC5B,GAAG,CAAC,CAAC,eAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;iBAChF,MAAM,CAAC,CAAC,WAAW,EAAwB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IAC1D,MAAM,CAAU,kBAAkB,CAAC,IAAwC,EAAE,UAAqD,EAAE,UAAiC;QAC1K,IAAA,qBAAM,EAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YACvE,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;YACzD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,eAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,eAAe,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACnI,MAAM,CAAC,CAAC,WAAW,EAAwB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC/D,gBAAgB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YACrF,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,qBAAgB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SACzH,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IAC3C,MAAM,CAAC,cAAc,CAAC,IAAoD,EAAE,UAAiC;QACnH,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC;YACzD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,oDAAmB,CAAC,eAAe;YACpF,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,EAAE;YACvD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzC,eAAe;QAC7B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY;YACzC,WAAW,CAAC,eAAe,EAAE,CAAC;IAClC,CAAC;IAED;;;OAGG;IACa,iBAAiB,CAAC,WAAgC;QAChE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACrC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY;YACzC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAxKD,gDAwKC;AAED,gBAAgB;AACT,MAAM,cAAc,GAAG,CAAC,MAAe,EAAE,IAAwB,EAAE,OAAiB,EAAqB,EAAE;IAChH,IAAI,IAAI,EAAE;QACR,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBACrB,OAAO,KAAK,CAAC;YAEf,IAAI,OAAO,IAAI,KAAK,CAAC,oBAAoB,EAAE,EAAE;gBAC3C,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjE,IAAI,MAAM;oBACR,OAAO,MAAM,CAAC;aACjB;SACF;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAdW,QAAA,cAAc,kBAczB;AAEF,gBAAgB;AACT,MAAM,oBAAoB,GAAG,CAAC,MAAe,EAAE,eAAgC,EAAE,OAAiB,EAAqB,EAAE;IAC9H,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC;YAC1C,OAAO,KAAK,CAAC;QAEf,IAAI,OAAO,IAAI,KAAK,CAAC,oBAAoB,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAClF,IAAI,MAAM;gBACR,OAAO,MAAM,CAAC;SACjB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,oBAAoB,wBAY/B;AAEF;;;GAGG;AACH,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,gDAAyB,CAAA;AAC3B,CAAC,EAHW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAG9B;AAeD,cAAc;AACd,IAAiB,eAAe,CAS/B;AATD,WAAiB,eAAe;IAC9B,uCAAuC;IACvC,SAAgB,OAAO,CAAC,CAAkB;QACxC,OAAO,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,IAAI,CAAC;IAC7C,CAAC;IAFe,uBAAO,UAEtB,CAAA;IACD,4CAA4C;IAC5C,SAAgB,YAAY,CAAC,CAAkB;QAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,UAAU,CAAC;IACnD,CAAC;IAFe,4BAAY,eAE3B,CAAA;AACH,CAAC,EATgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAS/B;AA+BD,SAAS,0BAA0B,CAAC,sBAA4C,EAAE,UAAqD;IACrI,OAAO;QACL,QAAQ,EAAE,8BAA8B,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC;KACtF,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,sBAAgD,EAAE,UAAqD;IAC7I,IAAA,qBAAM,EAAC,UAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,MAAM,EAAE,sBAAsB,EAAE,GAAG,oBAAoB,EAAE,GAAG,sBAAsB,CAAC;IAEnF,OAAO;QACL,GAAG,oBAAoB;QACvB,SAAS,EAAE,EAAE,EAAE,EAAE,sBAAsB,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE;QACpG,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,2BAAsB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KACpJ,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Content\n */\n\nimport { assert, Id64String } from \"@itwin/core-bentley\";\nimport {\n ClassInfo, ClassInfoJSON, CompressedClassInfoJSON, NavigationPropertyInfo, PropertyInfo, PropertyInfoJSON, RelatedClassInfo, RelationshipPath,\n RelationshipPathJSON, StrippedRelationshipPath,\n} from \"../EC\";\nimport { PresentationError, PresentationStatus } from \"../Error\";\nimport { RelationshipMeaning } from \"../rules/content/modifiers/RelatedPropertiesSpecification\";\nimport { CategoryDescription } from \"./Category\";\nimport { EditorDescription } from \"./Editor\";\nimport { Property, PropertyJSON } from \"./Property\";\nimport { RendererDescription } from \"./Renderer\";\nimport { TypeDescription } from \"./TypeDescription\";\n\n/**\n * Data structure for a [[Field]] serialized to JSON.\n * @public\n */\nexport interface BaseFieldJSON {\n category: string;\n name: string;\n label: string;\n type: TypeDescription;\n isReadonly: boolean;\n priority: number;\n renderer?: RendererDescription;\n editor?: EditorDescription;\n}\n\n/**\n * Data structure for a [[PropertiesField]] serialized to JSON.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface PropertiesFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {\n properties: PropertyJSON<TClassInfoJSON>[];\n}\n\n/**\n * Data structure for a [[NestedContentField]] serialized to JSON.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface NestedContentFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {\n contentClassInfo: TClassInfoJSON;\n pathToPrimaryClass: RelationshipPathJSON<TClassInfoJSON>;\n relationshipMeaning?: RelationshipMeaning;\n /** @beta */\n actualPrimaryClassIds?: Id64String[];\n autoExpand?: boolean;\n nestedFields: FieldJSON<TClassInfoJSON>[];\n}\n\n/**\n * JSON representation of a [[Field]]\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport type FieldJSON<TClassInfoJSON = ClassInfoJSON> = BaseFieldJSON | PropertiesFieldJSON<TClassInfoJSON> | NestedContentFieldJSON<TClassInfoJSON>;\n\n/** Is supplied field a properties field. */\nconst isPropertiesField = (field: FieldJSON | Field): field is PropertiesFieldJSON<any> | PropertiesField => {\n return !!(field as any).properties;\n};\n\n/** Is supplied field a nested content field. */\nconst isNestedContentField = (field: FieldJSON | Field): field is NestedContentFieldJSON<any> | NestedContentField => {\n return !!(field as any).nestedFields;\n};\n\n/**\n * Describes a single content field. A field is usually represented as a grid column\n * or a property pane row.\n *\n * @public\n */\nexport class Field {\n /** Category information */\n public category: CategoryDescription;\n /** Unique name */\n public name: string;\n /** Display label */\n public label: string;\n /** Description of this field's values data type */\n public type: TypeDescription;\n /** Are values in this field read-only */\n public isReadonly: boolean;\n /** Priority of the field. Higher priority fields should appear first in the UI */\n public priority: number;\n /** Property renderer used to render values of this field */\n public renderer?: RendererDescription;\n /** Property editor used to edit values of this field */\n public editor?: EditorDescription;\n /** Parent field */\n private _parent?: NestedContentField;\n\n /**\n * Creates an instance of Field.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param editor Property editor used to edit values of this field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(category: CategoryDescription, name: string, label: string, type: TypeDescription,\n isReadonly: boolean, priority: number, editor?: EditorDescription, renderer?: RendererDescription) {\n this.category = category;\n this.name = name;\n this.label = label;\n this.type = type;\n this.isReadonly = isReadonly;\n this.priority = priority;\n this.editor = editor;\n this.renderer = renderer;\n }\n\n /**\n * Is this a [[PropertiesField]]\n */\n public isPropertiesField(): this is PropertiesField { return isPropertiesField(this); }\n\n /**\n * Is this a [[NestedContentField]]\n */\n public isNestedContentField(): this is NestedContentField { return isNestedContentField(this); }\n\n /**\n * Get parent\n */\n public get parent(): NestedContentField | undefined { return this._parent; }\n\n public clone() {\n const clone = new Field(\n this.category,\n this.name,\n this.label,\n this.type,\n this.isReadonly,\n this.priority,\n this.editor,\n this.renderer,\n );\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public toJSON(): FieldJSON {\n return {\n category: this.category.name,\n name: this.name,\n label: this.label,\n type: this.type,\n isReadonly: this.isReadonly,\n priority: this.priority,\n renderer: this.renderer,\n editor: this.editor,\n };\n }\n\n /** Serialize this object to compressed JSON */\n public toCompressedJSON(classesMap: { [id: string]: CompressedClassInfoJSON }): FieldJSON<string> {\n if (this.isPropertiesField())\n return {\n ...this.toJSON(),\n properties: this.properties.map((property) => Property.toCompressedJSON(property, classesMap)),\n };\n\n if (this.isNestedContentField()) {\n const { id, ...leftOverInfo } = this.contentClassInfo;\n classesMap[id] = leftOverInfo;\n return {\n ...this.toJSON(),\n contentClassInfo: id,\n pathToPrimaryClass: this.pathToPrimaryClass.map((classInfo) => RelatedClassInfo.toCompressedJSON(classInfo, classesMap)),\n nestedFields: this.nestedFields.map((field) => field.toCompressedJSON(classesMap)),\n };\n }\n\n return this.toJSON();\n }\n\n /** Deserialize [[Field]] from JSON */\n public static fromJSON(json: FieldJSON | undefined, categories: CategoryDescription[]): Field | undefined {\n if (!json)\n return undefined;\n if (isPropertiesField(json))\n return PropertiesField.fromJSON(json, categories);\n if (isNestedContentField(json))\n // eslint-disable-next-line deprecation/deprecation\n return NestedContentField.fromJSON(json, categories);\n const field = Object.create(Field.prototype);\n return Object.assign(field, json, {\n category: Field.getCategoryFromFieldJson(json, categories),\n });\n }\n\n /** Deserialize a [[Field]] from compressed JSON. */\n public static fromCompressedJSON(json: FieldJSON<string> | undefined, classesMap: { [id: string]: CompressedClassInfoJSON }, categories: CategoryDescription[]): Field | undefined {\n if (!json)\n return undefined;\n\n if (isPropertiesField(json))\n return PropertiesField.fromCompressedJSON(json, classesMap, categories);\n\n if (isNestedContentField(json))\n return NestedContentField.fromCompressedJSON(json, classesMap, categories);\n\n const field = Object.create(Field.prototype);\n return Object.assign(field, json, {\n category: Field.getCategoryFromFieldJson(json, categories),\n });\n }\n\n protected static getCategoryFromFieldJson(fieldJson: FieldJSON, categories: CategoryDescription[]): CategoryDescription {\n const category = categories.find((c) => c.name === fieldJson.category);\n if (!category)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid content field category`);\n return category;\n }\n\n /** Resets field's parent. */\n public resetParentship(): void {\n this._parent = undefined;\n }\n\n /** Sets provided [[NestedContentField]] as parent of this field. */\n public rebuildParentship(parentField?: NestedContentField): void {\n this._parent = parentField;\n }\n\n /**\n * Get descriptor for this field.\n * @public\n */\n public getFieldDescriptor(): FieldDescriptor {\n return {\n type: FieldDescriptorType.Name,\n fieldName: this.name,\n } as NamedFieldDescriptor;\n }\n\n /**\n * Checks if this field matches given field descriptor\n * @see [[getFieldDescriptor]]\n * @beta\n */\n public matchesDescriptor(descriptor: FieldDescriptor) {\n return FieldDescriptor.isNamed(descriptor) && descriptor.fieldName === this.name;\n }\n}\n\n/**\n * Describes a content field that's based on one or more similar\n * EC properties.\n *\n * @public\n */\nexport class PropertiesField extends Field {\n /** A list of properties this field is created from */\n public properties: Property[];\n\n /**\n * Creates an instance of PropertiesField.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param properties A list of properties this field is created from\n * @param editor Property editor used to edit values of this field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n isReadonly: boolean,\n priority: number,\n properties: Property[],\n editor?: EditorDescription,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, editor, renderer);\n this.properties = properties;\n }\n\n public override clone() {\n const clone = new PropertiesField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.isReadonly,\n this.priority,\n this.properties,\n this.editor,\n this.renderer,\n );\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): PropertiesFieldJSON {\n return {\n ...super.toJSON(),\n properties: this.properties,\n };\n }\n\n /** Deserialize [[PropertiesField]] from JSON */\n public static override fromJSON(json: PropertiesFieldJSON | undefined, categories: CategoryDescription[]): PropertiesField | undefined {\n if (!json)\n return undefined;\n\n const field = Object.create(PropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n });\n }\n\n /**\n * Deserialize a [[PropertiesField]] from compressed JSON.\n * @public\n */\n public static override fromCompressedJSON(json: PropertiesFieldJSON<Id64String>, classesMap: { [id: string]: CompressedClassInfoJSON }, categories: CategoryDescription[]): PropertiesField | undefined {\n const field = Object.create(PropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),\n });\n }\n\n /**\n * Get descriptor for this field.\n * @public\n */\n public override getFieldDescriptor(): FieldDescriptor {\n const pathFromPropertyToSelectClass = new Array<RelatedClassInfo>();\n let currAncestor = this.parent;\n while (currAncestor) {\n pathFromPropertyToSelectClass.push(...currAncestor.pathToPrimaryClass);\n currAncestor = currAncestor.parent;\n }\n return {\n type: FieldDescriptorType.Properties,\n pathFromSelectToPropertyClass: RelationshipPath.strip(RelationshipPath.reverse(pathFromPropertyToSelectClass)),\n properties: this.properties.map((p) => ({\n class: p.property.classInfo.name,\n name: p.property.name,\n })),\n } as PropertiesFieldDescriptor;\n }\n\n /**\n * Checks if this field matches given field descriptor\n * @see [[getFieldDescriptor]]\n * @beta\n */\n public override matchesDescriptor(descriptor: FieldDescriptor) {\n if (!FieldDescriptor.isProperties(descriptor)) {\n return false;\n }\n\n // ensure at least one descriptor property matches at least one property of this field\n if (!this.properties.some(({ property: fieldProperty }) => descriptor.properties.some((descriptorProperty) => fieldProperty.name === descriptorProperty.name && fieldProperty.classInfo.name === descriptorProperty.class))) {\n return false;\n }\n\n // ensure path from select to property in field and in descriptor matches\n let stepsCount = 0;\n let currAncestor = this.parent;\n while (currAncestor) {\n const pathFromCurrentToItsParent = RelationshipPath.reverse(currAncestor.pathToPrimaryClass);\n for (const step of pathFromCurrentToItsParent) {\n if (descriptor.pathFromSelectToPropertyClass.length < stepsCount + 1) {\n return false;\n }\n if (!RelatedClassInfo.equals(step, descriptor.pathFromSelectToPropertyClass[descriptor.pathFromSelectToPropertyClass.length - stepsCount - 1])) {\n return false;\n }\n ++stepsCount;\n }\n currAncestor = currAncestor.parent;\n }\n return true;\n }\n}\n\n/**\n * Describes a content field that contains [Nested content]($docs/presentation/content/Terminology#nested-content).\n *\n * @public\n */\nexport class NestedContentField extends Field {\n /** Information about an ECClass whose properties are nested inside this field */\n public contentClassInfo: ClassInfo;\n /** Relationship path to [Primary class]($docs/presentation/content/Terminology#primary-class) */\n public pathToPrimaryClass: RelationshipPath;\n /**\n * Meaning of the relationship between the [primary class]($docs/presentation/content/Terminology#primary-class)\n * and content class of this field.\n *\n * The value is set up through [[RelatedPropertiesSpecification.relationshipMeaning]] attribute when setting up\n * presentation rules for creating the content.\n */\n public relationshipMeaning: RelationshipMeaning;\n /**\n * When content descriptor is requested in a polymorphic fashion, fields get created if at least one of the concrete classes\n * has it. In certain situations it's necessary to know which concrete classes caused that and this attribute is\n * here to help.\n *\n * **Example:** There's a base class `A` and it has two derived classes `B` and `C` and class `B` has a relationship to class `D`.\n * When content descriptor is requested for class `A` polymorphically, it's going to contain fields for all properties of class `B`,\n * class `C` and a nested content field for the `B -> D` relationship. The nested content field's `actualPrimaryClassIds` attribute\n * will contain ID of class `B`, identifying that only this specific class has the relationship.\n *\n * @beta\n */\n public actualPrimaryClassIds: Id64String[];\n /** Contained nested fields */\n public nestedFields: Field[];\n /** Flag specifying whether field should be expanded */\n public autoExpand?: boolean;\n\n /**\n * Creates an instance of NestedContentField.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param contentClassInfo Information about an ECClass whose properties are nested inside this field\n * @param pathToPrimaryClass Relationship path to [Primary class]($docs/presentation/content/Terminology#primary-class)\n * @param nestedFields Contained nested fields\n * @param editor Property editor used to edit values of this field\n * @param autoExpand Flag specifying whether field should be expanded\n * @param relationshipMeaning RelationshipMeaning of the field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n isReadonly: boolean,\n priority: number,\n contentClassInfo: ClassInfo,\n pathToPrimaryClass: RelationshipPath,\n nestedFields: Field[],\n editor?: EditorDescription,\n autoExpand?: boolean,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, editor, renderer);\n this.contentClassInfo = contentClassInfo;\n this.pathToPrimaryClass = pathToPrimaryClass;\n this.relationshipMeaning = RelationshipMeaning.RelatedInstance;\n this.nestedFields = nestedFields;\n this.autoExpand = autoExpand;\n this.actualPrimaryClassIds = [];\n }\n\n public override clone() {\n const clone = new NestedContentField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.isReadonly,\n this.priority,\n this.contentClassInfo,\n this.pathToPrimaryClass,\n this.nestedFields.map((n) => n.clone()),\n this.editor,\n this.autoExpand,\n this.renderer,\n );\n clone.actualPrimaryClassIds = this.actualPrimaryClassIds;\n clone.relationshipMeaning = this.relationshipMeaning;\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /**\n * Get field by its name\n * @param name Name of the field to find\n * @param recurse Recurse into nested fields\n */\n public getFieldByName(name: string, recurse?: boolean): Field | undefined {\n return getFieldByName(this.nestedFields, name, recurse);\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): NestedContentFieldJSON {\n return {\n ...super.toJSON(),\n contentClassInfo: this.contentClassInfo,\n pathToPrimaryClass: this.pathToPrimaryClass,\n relationshipMeaning: this.relationshipMeaning,\n actualPrimaryClassIds: this.actualPrimaryClassIds,\n nestedFields: this.nestedFields.map((field: Field) => field.toJSON()),\n autoExpand: this.autoExpand,\n };\n }\n\n /**\n * Deserialize [[NestedContentField]] from JSON\n * @deprecated in 3.x. Use [[NestedContentField.fromCompressedJSON]]\n */\n public static override fromJSON(json: NestedContentFieldJSON | undefined, categories: CategoryDescription[]): NestedContentField | undefined {\n if (!json)\n return undefined;\n\n const field = Object.create(NestedContentField.prototype);\n return Object.assign(field, json, this.fromCommonJSON(json, categories), {\n nestedFields: json.nestedFields\n .map((nestedFieldJson: FieldJSON) => Field.fromJSON(nestedFieldJson, categories))\n .filter((nestedField): nestedField is Field => !!nestedField),\n });\n }\n\n /** Deserialize a [[NestedContentField]] from compressed JSON. */\n public static override fromCompressedJSON(json: NestedContentFieldJSON<Id64String>, classesMap: { [id: string]: CompressedClassInfoJSON }, categories: CategoryDescription[]) {\n assert(classesMap.hasOwnProperty(json.contentClassInfo));\n const field = Object.create(NestedContentField.prototype);\n return Object.assign(field, json, this.fromCommonJSON(json, categories), {\n category: this.getCategoryFromFieldJson(json, categories),\n nestedFields: json.nestedFields.map((nestedFieldJson: FieldJSON) => Field.fromCompressedJSON(nestedFieldJson, classesMap, categories))\n .filter((nestedField): nestedField is Field => !!nestedField),\n contentClassInfo: { id: json.contentClassInfo, ...classesMap[json.contentClassInfo] },\n pathToPrimaryClass: json.pathToPrimaryClass.map((stepJson) => RelatedClassInfo.fromCompressedJSON(stepJson, classesMap)),\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n private static fromCommonJSON(json: NestedContentFieldJSON<ClassInfoJSON | string>, categories: CategoryDescription[]): Partial<NestedContentField> {\n return {\n category: this.getCategoryFromFieldJson(json, categories),\n relationshipMeaning: json.relationshipMeaning ?? RelationshipMeaning.RelatedInstance,\n actualPrimaryClassIds: json.actualPrimaryClassIds ?? [],\n autoExpand: json.autoExpand,\n };\n }\n\n /** Resets parent of this field and all nested fields. */\n public override resetParentship(): void {\n super.resetParentship();\n for (const nestedField of this.nestedFields)\n nestedField.resetParentship();\n }\n\n /**\n * Sets provided [[NestedContentField]] as parent of this fields and recursively updates\n * all nested fields parents.\n */\n public override rebuildParentship(parentField?: NestedContentField): void {\n super.rebuildParentship(parentField);\n for (const nestedField of this.nestedFields)\n nestedField.rebuildParentship(this);\n }\n}\n\n/** @internal */\nexport const getFieldByName = (fields: Field[], name: string | undefined, recurse?: boolean): Field | undefined => {\n if (name) {\n for (const field of fields) {\n if (field.name === name)\n return field;\n\n if (recurse && field.isNestedContentField()) {\n const nested = getFieldByName(field.nestedFields, name, recurse);\n if (nested)\n return nested;\n }\n }\n }\n return undefined;\n};\n\n/** @internal */\nexport const getFieldByDescriptor = (fields: Field[], fieldDescriptor: FieldDescriptor, recurse?: boolean): Field | undefined => {\n for (const field of fields) {\n if (field.matchesDescriptor(fieldDescriptor))\n return field;\n\n if (recurse && field.isNestedContentField()) {\n const nested = getFieldByDescriptor(field.nestedFields, fieldDescriptor, recurse);\n if (nested)\n return nested;\n }\n }\n return undefined;\n};\n\n/**\n * Types of different field descriptors.\n * @public\n */\nexport enum FieldDescriptorType {\n Name = \"name\",\n Properties = \"properties\",\n}\n\n/**\n * Base for a field descriptor\n * @public\n */\nexport interface FieldDescriptorBase {\n type: FieldDescriptorType;\n}\n\n/**\n * A union of all possible field descriptor types\n * @public\n */\nexport type FieldDescriptor = NamedFieldDescriptor | PropertiesFieldDescriptor;\n/** @public */\nexport namespace FieldDescriptor { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is this a named field descriptor */\n export function isNamed(d: FieldDescriptor): d is NamedFieldDescriptor {\n return d.type === FieldDescriptorType.Name;\n }\n /** Is this a properties field descriptor */\n export function isProperties(d: FieldDescriptor): d is PropertiesFieldDescriptor {\n return d.type === FieldDescriptorType.Properties;\n }\n}\n\n/**\n * Field descriptor that identifies a content field by its unique name.\n * @public\n */\nexport interface NamedFieldDescriptor extends FieldDescriptorBase {\n type: FieldDescriptorType.Name;\n fieldName: string;\n}\n\n/**\n * Field descriptor that identifies a properties field using a list of\n * properties that the field contains.\n * @public\n */\nexport interface PropertiesFieldDescriptor extends FieldDescriptorBase {\n type: FieldDescriptorType.Properties;\n pathFromSelectToPropertyClass: StrippedRelationshipPath;\n /**\n * A list of properties that describe the field. At least one property in the list must\n * match at least one property in the field for the descriptor to be considered matching.\n */\n properties: Array<{\n /** Full class name */\n class: string;\n /** Property name */\n name: string;\n }>;\n}\n\nfunction fromCompressedPropertyJSON(compressedPropertyJSON: PropertyJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): Property {\n return {\n property: fromCompressedPropertyInfoJSON(compressedPropertyJSON.property, classesMap),\n };\n}\n\nfunction fromCompressedPropertyInfoJSON(compressedPropertyJSON: PropertyInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): PropertyInfo {\n assert(classesMap.hasOwnProperty(compressedPropertyJSON.classInfo));\n\n const { navigationPropertyInfo, ...leftOverPropertyJSON } = compressedPropertyJSON;\n\n return {\n ...leftOverPropertyJSON,\n classInfo: { id: compressedPropertyJSON.classInfo, ...classesMap[compressedPropertyJSON.classInfo] },\n ...(navigationPropertyInfo ? { navigationPropertyInfo: NavigationPropertyInfo.fromCompressedJSON(navigationPropertyInfo, classesMap) } : undefined),\n };\n}\n"]}
1
+ {"version":3,"file":"Fields.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Fields.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, Id64String } from \"@itwin/core-bentley\";\nimport {\n ClassInfo,\n ClassInfoJSON,\n CompressedClassInfoJSON,\n NavigationPropertyInfo,\n PropertyInfo,\n PropertyInfoJSON,\n RelatedClassInfo,\n RelationshipPath,\n RelationshipPathJSON,\n StrippedRelationshipPath,\n} from \"../EC\";\nimport { PresentationError, PresentationStatus } from \"../Error\";\nimport { RelationshipMeaning } from \"../rules/content/modifiers/RelatedPropertiesSpecification\";\nimport { CategoryDescription } from \"./Category\";\nimport { EditorDescription } from \"./Editor\";\nimport { Property, PropertyJSON } from \"./Property\";\nimport { RendererDescription } from \"./Renderer\";\nimport { TypeDescription } from \"./TypeDescription\";\n\n/**\n * Data structure for a [[Field]] serialized to JSON.\n * @public\n */\nexport interface BaseFieldJSON {\n category: string;\n name: string;\n label: string;\n type: TypeDescription;\n isReadonly: boolean;\n priority: number;\n renderer?: RendererDescription;\n editor?: EditorDescription;\n}\n\n/**\n * Data structure for a [[PropertiesField]] serialized to JSON.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface PropertiesFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {\n properties: PropertyJSON<TClassInfoJSON>[];\n}\n\n/**\n * Data structure for a [[ArrayPropertiesField]] serialized to JSON.\n * @public\n */\nexport interface ArrayPropertiesFieldJSON<TClassInfoJSON = ClassInfo> extends PropertiesFieldJSON<TClassInfoJSON> {\n itemsField: PropertiesFieldJSON<TClassInfoJSON>;\n}\n\n/**\n * Data structure for a [[StructPropertiesField]] serialized to JSON.\n * @public\n */\nexport interface StructPropertiesFieldJSON<TClassInfoJSON = ClassInfo> extends PropertiesFieldJSON<TClassInfoJSON> {\n memberFields: PropertiesFieldJSON<TClassInfoJSON>[];\n}\n\n/**\n * Data structure for a [[NestedContentField]] serialized to JSON.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface NestedContentFieldJSON<TClassInfoJSON = ClassInfoJSON> extends BaseFieldJSON {\n contentClassInfo: TClassInfoJSON;\n pathToPrimaryClass: RelationshipPathJSON<TClassInfoJSON>;\n relationshipMeaning?: RelationshipMeaning;\n /** @beta */\n actualPrimaryClassIds?: Id64String[];\n autoExpand?: boolean;\n nestedFields: FieldJSON<TClassInfoJSON>[];\n}\n\n/**\n * JSON representation of a [[Field]]\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport type FieldJSON<TClassInfoJSON = ClassInfoJSON> =\n | BaseFieldJSON\n | PropertiesFieldJSON<TClassInfoJSON>\n | ArrayPropertiesFieldJSON<TClassInfoJSON>\n | StructPropertiesFieldJSON<TClassInfoJSON>\n | NestedContentFieldJSON<TClassInfoJSON>;\n\n/** Is supplied field a properties field. */\nfunction isPropertiesField(field: FieldJSON): field is PropertiesFieldJSON<any>;\nfunction isPropertiesField(field: Field): field is PropertiesField;\nfunction isPropertiesField(field: FieldJSON | Field) {\n return !!(field as any).properties;\n}\n\n/** Is supplied field an array properties field. */\nfunction isArrayPropertiesField(field: FieldJSON): field is ArrayPropertiesFieldJSON<any>;\nfunction isArrayPropertiesField(field: Field): field is ArrayPropertiesField;\nfunction isArrayPropertiesField(field: FieldJSON | Field) {\n return !!(field as ArrayPropertiesFieldJSON).itemsField;\n}\n\n/** Is supplied field an array properties field. */\nfunction isStructPropertiesField(field: FieldJSON): field is StructPropertiesFieldJSON<any>;\nfunction isStructPropertiesField(field: Field): field is StructPropertiesField;\nfunction isStructPropertiesField(field: FieldJSON | Field) {\n return !!(field as StructPropertiesFieldJSON).memberFields;\n}\n\n/** Is supplied field a nested content field. */\nfunction isNestedContentField(field: FieldJSON): field is NestedContentFieldJSON<any>;\nfunction isNestedContentField(field: Field): field is NestedContentField;\nfunction isNestedContentField(field: FieldJSON | Field) {\n return !!(field as any).nestedFields;\n}\n\n/**\n * Describes a single content field. A field is usually represented as a grid column\n * or a property pane row.\n *\n * @public\n */\nexport class Field {\n /** Category information */\n public category: CategoryDescription;\n /** Unique name */\n public name: string;\n /** Display label */\n public label: string;\n /** Description of this field's values data type */\n public type: TypeDescription;\n /** Are values in this field read-only */\n public isReadonly: boolean;\n /** Priority of the field. Higher priority fields should appear first in the UI */\n public priority: number;\n /** Property renderer used to render values of this field */\n public renderer?: RendererDescription;\n /** Property editor used to edit values of this field */\n public editor?: EditorDescription;\n /** Parent field */\n private _parent?: NestedContentField;\n\n /**\n * Creates an instance of Field.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param editor Property editor used to edit values of this field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n type: TypeDescription,\n isReadonly: boolean,\n priority: number,\n editor?: EditorDescription,\n renderer?: RendererDescription,\n ) {\n this.category = category;\n this.name = name;\n this.label = label;\n this.type = type;\n this.isReadonly = isReadonly;\n this.priority = priority;\n this.editor = editor;\n this.renderer = renderer;\n }\n\n /**\n * Is this a [[PropertiesField]]\n */\n public isPropertiesField(): this is PropertiesField {\n return isPropertiesField(this);\n }\n\n /**\n * Is this a [[NestedContentField]]\n */\n public isNestedContentField(): this is NestedContentField {\n return isNestedContentField(this);\n }\n\n /**\n * Get parent\n */\n public get parent(): NestedContentField | undefined {\n return this._parent;\n }\n\n public clone() {\n const clone = new Field(this.category, this.name, this.label, this.type, this.isReadonly, this.priority, this.editor, this.renderer);\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public toJSON(): FieldJSON {\n return {\n category: this.category.name,\n name: this.name,\n label: this.label,\n type: this.type,\n isReadonly: this.isReadonly,\n priority: this.priority,\n renderer: this.renderer,\n editor: this.editor,\n };\n }\n\n /** Serialize this object to compressed JSON */\n public toCompressedJSON(_classesMap: { [id: string]: CompressedClassInfoJSON }): FieldJSON<string> {\n return this.toJSON();\n }\n\n /** Deserialize [[Field]] from JSON */\n public static fromJSON(json: FieldJSON | undefined, categories: CategoryDescription[]): Field | undefined {\n if (!json) {\n return undefined;\n }\n if (isPropertiesField(json)) {\n return PropertiesField.fromJSON(json, categories);\n }\n if (isNestedContentField(json)) {\n // eslint-disable-next-line deprecation/deprecation\n return NestedContentField.fromJSON(json, categories);\n }\n const field = Object.create(Field.prototype);\n return Object.assign(field, json, {\n category: Field.getCategoryFromFieldJson(json, categories),\n });\n }\n\n /** Deserialize a [[Field]] from compressed JSON. */\n public static fromCompressedJSON(\n json: FieldJSON<string> | undefined,\n classesMap: { [id: string]: CompressedClassInfoJSON },\n categories: CategoryDescription[],\n ): Field | undefined {\n if (!json) {\n return undefined;\n }\n\n if (isPropertiesField(json)) {\n return PropertiesField.fromCompressedJSON(json, classesMap, categories);\n }\n\n if (isNestedContentField(json)) {\n return NestedContentField.fromCompressedJSON(json, classesMap, categories);\n }\n\n const field = Object.create(Field.prototype);\n return Object.assign(field, json, {\n category: Field.getCategoryFromFieldJson(json, categories),\n });\n }\n\n protected static getCategoryFromFieldJson(fieldJson: FieldJSON, categories: CategoryDescription[]): CategoryDescription {\n const category = categories.find((c) => c.name === fieldJson.category);\n if (!category) {\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid content field category`);\n }\n return category;\n }\n\n /** Resets field's parent. */\n public resetParentship(): void {\n this._parent = undefined;\n }\n\n /** Sets provided [[NestedContentField]] as parent of this field. */\n public rebuildParentship(parentField?: NestedContentField): void {\n this._parent = parentField;\n }\n\n /**\n * Get descriptor for this field.\n * @public\n */\n public getFieldDescriptor(): FieldDescriptor {\n return {\n type: FieldDescriptorType.Name,\n fieldName: this.name,\n } as NamedFieldDescriptor;\n }\n\n /**\n * Checks if this field matches given field descriptor\n * @see [[getFieldDescriptor]]\n * @beta\n */\n public matchesDescriptor(descriptor: FieldDescriptor) {\n return FieldDescriptor.isNamed(descriptor) && descriptor.fieldName === this.name;\n }\n}\n\n/**\n * Describes a content field that's based on one or more similar\n * EC properties.\n *\n * @public\n */\nexport class PropertiesField extends Field {\n /** A list of properties this field is created from */\n public properties: Property[];\n\n /**\n * Creates an instance of PropertiesField.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param properties A list of properties this field is created from\n * @param editor Property editor used to edit values of this field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n isReadonly: boolean,\n priority: number,\n properties: Property[],\n editor?: EditorDescription,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, editor, renderer);\n this.properties = properties;\n }\n\n /** Is this a an array property field */\n public isArrayPropertiesField(): this is ArrayPropertiesField {\n return false;\n }\n /** Is this a an struct property field */\n public isStructPropertiesField(): this is StructPropertiesField {\n return false;\n }\n\n public override clone() {\n const clone = new PropertiesField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.isReadonly,\n this.priority,\n this.properties,\n this.editor,\n this.renderer,\n );\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): PropertiesFieldJSON {\n return {\n ...super.toJSON(),\n properties: this.properties,\n };\n }\n\n /** Serialize this object to compressed JSON */\n public override toCompressedJSON(classesMap: { [id: string]: CompressedClassInfoJSON }): PropertiesFieldJSON<string> {\n return {\n ...super.toCompressedJSON(classesMap),\n properties: this.properties.map((property) => Property.toCompressedJSON(property, classesMap)),\n };\n }\n\n /** Deserialize [[PropertiesField]] from JSON */\n public static override fromJSON(json: PropertiesFieldJSON | undefined, categories: CategoryDescription[]): PropertiesField | undefined {\n if (!json) {\n return undefined;\n }\n\n if (isArrayPropertiesField(json)) {\n return ArrayPropertiesField.fromJSON(json, categories);\n }\n if (isStructPropertiesField(json)) {\n return StructPropertiesField.fromJSON(json, categories);\n }\n\n const field = Object.create(PropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n });\n }\n\n /**\n * Deserialize a [[PropertiesField]] from compressed JSON.\n * @public\n */\n public static override fromCompressedJSON(\n json: PropertiesFieldJSON<Id64String>,\n classesMap: { [id: string]: CompressedClassInfoJSON },\n categories: CategoryDescription[],\n ): PropertiesField | undefined {\n if (isArrayPropertiesField(json)) {\n return ArrayPropertiesField.fromCompressedJSON(json, classesMap, categories);\n }\n if (isStructPropertiesField(json)) {\n return StructPropertiesField.fromCompressedJSON(json, classesMap, categories);\n }\n const field = Object.create(PropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),\n });\n }\n\n /**\n * Get descriptor for this field.\n * @public\n */\n public override getFieldDescriptor(): FieldDescriptor {\n const pathFromPropertyToSelectClass = new Array<RelatedClassInfo>();\n let currAncestor = this.parent;\n while (currAncestor) {\n pathFromPropertyToSelectClass.push(...currAncestor.pathToPrimaryClass);\n currAncestor = currAncestor.parent;\n }\n return {\n type: FieldDescriptorType.Properties,\n pathFromSelectToPropertyClass: RelationshipPath.strip(RelationshipPath.reverse(pathFromPropertyToSelectClass)),\n properties: this.properties.map((p) => ({\n class: p.property.classInfo.name,\n name: p.property.name,\n })),\n } as PropertiesFieldDescriptor;\n }\n\n /**\n * Checks if this field matches given field descriptor\n * @see [[getFieldDescriptor]]\n * @beta\n */\n public override matchesDescriptor(descriptor: FieldDescriptor) {\n if (!FieldDescriptor.isProperties(descriptor)) {\n return false;\n }\n\n // ensure at least one descriptor property matches at least one property of this field\n if (\n !this.properties.some(({ property: fieldProperty }) =>\n descriptor.properties.some(\n (descriptorProperty) => fieldProperty.name === descriptorProperty.name && fieldProperty.classInfo.name === descriptorProperty.class,\n ),\n )\n ) {\n return false;\n }\n\n // ensure path from select to property in field and in descriptor matches\n let stepsCount = 0;\n let currAncestor = this.parent;\n while (currAncestor) {\n const pathFromCurrentToItsParent = RelationshipPath.reverse(currAncestor.pathToPrimaryClass);\n for (const step of pathFromCurrentToItsParent) {\n if (descriptor.pathFromSelectToPropertyClass.length < stepsCount + 1) {\n return false;\n }\n if (!RelatedClassInfo.equals(step, descriptor.pathFromSelectToPropertyClass[descriptor.pathFromSelectToPropertyClass.length - stepsCount - 1])) {\n return false;\n }\n ++stepsCount;\n }\n currAncestor = currAncestor.parent;\n }\n return true;\n }\n}\n\n/**\n * Describes a content field that's based on one or more similar EC array properties.\n * @public\n */\nexport class ArrayPropertiesField extends PropertiesField {\n public itemsField: PropertiesField;\n\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n itemsField: PropertiesField,\n isReadonly: boolean,\n priority: number,\n properties: Property[],\n editor?: EditorDescription,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, properties, editor, renderer);\n this.itemsField = itemsField;\n }\n\n public override isArrayPropertiesField(): this is ArrayPropertiesField {\n return true;\n }\n\n public override clone() {\n const clone = new ArrayPropertiesField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.itemsField.clone(),\n this.isReadonly,\n this.priority,\n this.properties,\n this.editor,\n this.renderer,\n );\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): ArrayPropertiesFieldJSON {\n return {\n ...super.toJSON(),\n itemsField: this.itemsField.toJSON(),\n };\n }\n\n /** Serialize this object to compressed JSON */\n public override toCompressedJSON(classesMap: { [id: string]: CompressedClassInfoJSON }): ArrayPropertiesFieldJSON<string> {\n return {\n ...super.toCompressedJSON(classesMap),\n itemsField: this.itemsField.toCompressedJSON(classesMap),\n };\n }\n\n /** Deserialize [[ArrayPropertiesField]] from JSON */\n public static override fromJSON(json: ArrayPropertiesFieldJSON, categories: CategoryDescription[]): ArrayPropertiesField {\n const field = Object.create(ArrayPropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n itemsField: PropertiesField.fromJSON(json.itemsField, categories),\n });\n }\n\n /**\n * Deserialize an [[ArrayPropertiesField]] from compressed JSON.\n * @public\n */\n public static override fromCompressedJSON(\n json: ArrayPropertiesFieldJSON<Id64String>,\n classesMap: { [id: string]: CompressedClassInfoJSON },\n categories: CategoryDescription[],\n ): ArrayPropertiesField {\n const field = Object.create(ArrayPropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),\n itemsField: PropertiesField.fromCompressedJSON(json.itemsField, classesMap, categories),\n });\n }\n}\n\n/**\n * Describes a content field that's based on one or more similar EC struct properties.\n * @public\n */\nexport class StructPropertiesField extends PropertiesField {\n public memberFields: PropertiesField[];\n\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n memberFields: PropertiesField[],\n isReadonly: boolean,\n priority: number,\n properties: Property[],\n editor?: EditorDescription,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, properties, editor, renderer);\n this.memberFields = memberFields;\n }\n\n public override isStructPropertiesField(): this is StructPropertiesField {\n return true;\n }\n\n public override clone() {\n const clone = new StructPropertiesField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.memberFields.map((m) => m.clone()),\n this.isReadonly,\n this.priority,\n this.properties,\n this.editor,\n this.renderer,\n );\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): StructPropertiesFieldJSON {\n return {\n ...super.toJSON(),\n memberFields: this.memberFields.map((m) => m.toJSON()),\n };\n }\n\n /** Serialize this object to compressed JSON */\n public override toCompressedJSON(classesMap: { [id: string]: CompressedClassInfoJSON }): StructPropertiesFieldJSON<string> {\n return {\n ...super.toCompressedJSON(classesMap),\n memberFields: this.memberFields.map((m) => m.toCompressedJSON(classesMap)),\n };\n }\n\n /** Deserialize [[StructPropertiesField]] from JSON */\n public static override fromJSON(json: StructPropertiesFieldJSON, categories: CategoryDescription[]): StructPropertiesField {\n const field = Object.create(StructPropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n memberFields: json.memberFields.map((m) => PropertiesField.fromJSON(m, categories)),\n });\n }\n\n /**\n * Deserialize a [[StructPropertiesField]] from compressed JSON.\n * @public\n */\n public static override fromCompressedJSON(\n json: StructPropertiesFieldJSON<Id64String>,\n classesMap: { [id: string]: CompressedClassInfoJSON },\n categories: CategoryDescription[],\n ): StructPropertiesField {\n const field = Object.create(StructPropertiesField.prototype);\n return Object.assign(field, json, {\n category: this.getCategoryFromFieldJson(json, categories),\n properties: json.properties.map((propertyJson) => fromCompressedPropertyJSON(propertyJson, classesMap)),\n memberFields: json.memberFields.map((m) => PropertiesField.fromCompressedJSON(m, classesMap, categories)),\n });\n }\n}\n\n/**\n * Describes a content field that contains [Nested content]($docs/presentation/content/Terminology#nested-content).\n *\n * @public\n */\nexport class NestedContentField extends Field {\n /** Information about an ECClass whose properties are nested inside this field */\n public contentClassInfo: ClassInfo;\n /** Relationship path to [Primary class]($docs/presentation/content/Terminology#primary-class) */\n public pathToPrimaryClass: RelationshipPath;\n /**\n * Meaning of the relationship between the [primary class]($docs/presentation/content/Terminology#primary-class)\n * and content class of this field.\n *\n * The value is set up through [[RelatedPropertiesSpecification.relationshipMeaning]] attribute when setting up\n * presentation rules for creating the content.\n */\n public relationshipMeaning: RelationshipMeaning;\n /**\n * When content descriptor is requested in a polymorphic fashion, fields get created if at least one of the concrete classes\n * has it. In certain situations it's necessary to know which concrete classes caused that and this attribute is\n * here to help.\n *\n * **Example:** There's a base class `A` and it has two derived classes `B` and `C` and class `B` has a relationship to class `D`.\n * When content descriptor is requested for class `A` polymorphically, it's going to contain fields for all properties of class `B`,\n * class `C` and a nested content field for the `B -> D` relationship. The nested content field's `actualPrimaryClassIds` attribute\n * will contain ID of class `B`, identifying that only this specific class has the relationship.\n *\n * @beta\n */\n public actualPrimaryClassIds: Id64String[];\n /** Contained nested fields */\n public nestedFields: Field[];\n /** Flag specifying whether field should be expanded */\n public autoExpand?: boolean;\n\n /**\n * Creates an instance of NestedContentField.\n * @param category Category information\n * @param name Unique name\n * @param label Display label\n * @param type Description of this field's values data type\n * @param isReadonly Are values in this field read-only\n * @param priority Priority of the field\n * @param contentClassInfo Information about an ECClass whose properties are nested inside this field\n * @param pathToPrimaryClass Relationship path to [Primary class]($docs/presentation/content/Terminology#primary-class)\n * @param nestedFields Contained nested fields\n * @param editor Property editor used to edit values of this field\n * @param autoExpand Flag specifying whether field should be expanded\n * @param relationshipMeaning RelationshipMeaning of the field\n * @param renderer Property renderer used to render values of this field\n */\n public constructor(\n category: CategoryDescription,\n name: string,\n label: string,\n description: TypeDescription,\n isReadonly: boolean,\n priority: number,\n contentClassInfo: ClassInfo,\n pathToPrimaryClass: RelationshipPath,\n nestedFields: Field[],\n editor?: EditorDescription,\n autoExpand?: boolean,\n renderer?: RendererDescription,\n ) {\n super(category, name, label, description, isReadonly, priority, editor, renderer);\n this.contentClassInfo = contentClassInfo;\n this.pathToPrimaryClass = pathToPrimaryClass;\n this.relationshipMeaning = RelationshipMeaning.RelatedInstance;\n this.nestedFields = nestedFields;\n this.autoExpand = autoExpand;\n this.actualPrimaryClassIds = [];\n }\n\n public override clone() {\n const clone = new NestedContentField(\n this.category,\n this.name,\n this.label,\n this.type,\n this.isReadonly,\n this.priority,\n this.contentClassInfo,\n this.pathToPrimaryClass,\n this.nestedFields.map((n) => n.clone()),\n this.editor,\n this.autoExpand,\n this.renderer,\n );\n clone.actualPrimaryClassIds = this.actualPrimaryClassIds;\n clone.relationshipMeaning = this.relationshipMeaning;\n clone.rebuildParentship(this.parent);\n return clone;\n }\n\n /**\n * Get field by its name\n * @param name Name of the field to find\n * @param recurse Recurse into nested fields\n */\n public getFieldByName(name: string, recurse?: boolean): Field | undefined {\n return getFieldByName(this.nestedFields, name, recurse);\n }\n\n /** Serialize this object to JSON */\n public override toJSON(): NestedContentFieldJSON {\n return {\n ...super.toJSON(),\n contentClassInfo: this.contentClassInfo,\n pathToPrimaryClass: this.pathToPrimaryClass,\n relationshipMeaning: this.relationshipMeaning,\n actualPrimaryClassIds: this.actualPrimaryClassIds,\n nestedFields: this.nestedFields.map((field: Field) => field.toJSON()),\n autoExpand: this.autoExpand,\n };\n }\n\n /** Serialize this object to compressed JSON */\n public override toCompressedJSON(classesMap: { [id: string]: CompressedClassInfoJSON }): NestedContentFieldJSON<string> {\n const { id, ...leftOverInfo } = this.contentClassInfo;\n classesMap[id] = leftOverInfo;\n return {\n ...super.toCompressedJSON(classesMap),\n contentClassInfo: id,\n pathToPrimaryClass: this.pathToPrimaryClass.map((classInfo) => RelatedClassInfo.toCompressedJSON(classInfo, classesMap)),\n nestedFields: this.nestedFields.map((field) => field.toCompressedJSON(classesMap)),\n };\n }\n\n /**\n * Deserialize [[NestedContentField]] from JSON\n * @deprecated in 3.x. Use [[NestedContentField.fromCompressedJSON]]\n */\n public static override fromJSON(json: NestedContentFieldJSON | undefined, categories: CategoryDescription[]): NestedContentField | undefined {\n if (!json) {\n return undefined;\n }\n\n const field = Object.create(NestedContentField.prototype);\n return Object.assign(field, json, this.fromCommonJSON(json, categories), {\n nestedFields: json.nestedFields\n .map((nestedFieldJson: FieldJSON) => Field.fromJSON(nestedFieldJson, categories))\n .filter((nestedField): nestedField is Field => !!nestedField),\n });\n }\n\n /** Deserialize a [[NestedContentField]] from compressed JSON. */\n public static override fromCompressedJSON(\n json: NestedContentFieldJSON<Id64String>,\n classesMap: { [id: string]: CompressedClassInfoJSON },\n categories: CategoryDescription[],\n ) {\n assert(classesMap.hasOwnProperty(json.contentClassInfo));\n const field = Object.create(NestedContentField.prototype);\n return Object.assign(field, json, this.fromCommonJSON(json, categories), {\n category: this.getCategoryFromFieldJson(json, categories),\n nestedFields: json.nestedFields\n .map((nestedFieldJson: FieldJSON) => Field.fromCompressedJSON(nestedFieldJson, classesMap, categories))\n .filter((nestedField): nestedField is Field => !!nestedField),\n contentClassInfo: { id: json.contentClassInfo, ...classesMap[json.contentClassInfo] },\n pathToPrimaryClass: json.pathToPrimaryClass.map((stepJson) => RelatedClassInfo.fromCompressedJSON(stepJson, classesMap)),\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n private static fromCommonJSON(json: NestedContentFieldJSON<ClassInfoJSON | string>, categories: CategoryDescription[]): Partial<NestedContentField> {\n return {\n category: this.getCategoryFromFieldJson(json, categories),\n relationshipMeaning: json.relationshipMeaning ?? RelationshipMeaning.RelatedInstance,\n actualPrimaryClassIds: json.actualPrimaryClassIds ?? [],\n autoExpand: json.autoExpand,\n };\n }\n\n /** Resets parent of this field and all nested fields. */\n public override resetParentship(): void {\n super.resetParentship();\n for (const nestedField of this.nestedFields) {\n nestedField.resetParentship();\n }\n }\n\n /**\n * Sets provided [[NestedContentField]] as parent of this fields and recursively updates\n * all nested fields parents.\n */\n public override rebuildParentship(parentField?: NestedContentField): void {\n super.rebuildParentship(parentField);\n for (const nestedField of this.nestedFields) {\n nestedField.rebuildParentship(this);\n }\n }\n}\n\n/** @internal */\nexport const getFieldByName = (fields: Field[], name: string | undefined, recurse?: boolean): Field | undefined => {\n if (name) {\n for (const field of fields) {\n if (field.name === name) {\n return field;\n }\n\n if (recurse && field.isNestedContentField()) {\n const nested = getFieldByName(field.nestedFields, name, recurse);\n if (nested) {\n return nested;\n }\n }\n }\n }\n return undefined;\n};\n\n/** @internal */\nexport const getFieldByDescriptor = (fields: Field[], fieldDescriptor: FieldDescriptor, recurse?: boolean): Field | undefined => {\n for (const field of fields) {\n if (field.matchesDescriptor(fieldDescriptor)) {\n return field;\n }\n\n if (recurse && field.isNestedContentField()) {\n const nested = getFieldByDescriptor(field.nestedFields, fieldDescriptor, recurse);\n if (nested) {\n return nested;\n }\n }\n }\n return undefined;\n};\n\n/**\n * Types of different field descriptors.\n * @public\n */\nexport enum FieldDescriptorType {\n Name = \"name\",\n Properties = \"properties\",\n}\n\n/**\n * Base for a field descriptor\n * @public\n */\nexport interface FieldDescriptorBase {\n type: FieldDescriptorType;\n}\n\n/**\n * A union of all possible field descriptor types\n * @public\n */\nexport type FieldDescriptor = NamedFieldDescriptor | PropertiesFieldDescriptor;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace FieldDescriptor {\n /** Is this a named field descriptor */\n export function isNamed(d: FieldDescriptor): d is NamedFieldDescriptor {\n return d.type === FieldDescriptorType.Name;\n }\n /** Is this a properties field descriptor */\n export function isProperties(d: FieldDescriptor): d is PropertiesFieldDescriptor {\n return d.type === FieldDescriptorType.Properties;\n }\n}\n\n/**\n * Field descriptor that identifies a content field by its unique name.\n * @public\n */\nexport interface NamedFieldDescriptor extends FieldDescriptorBase {\n type: FieldDescriptorType.Name;\n fieldName: string;\n}\n\n/**\n * Field descriptor that identifies a properties field using a list of\n * properties that the field contains.\n * @public\n */\nexport interface PropertiesFieldDescriptor extends FieldDescriptorBase {\n type: FieldDescriptorType.Properties;\n pathFromSelectToPropertyClass: StrippedRelationshipPath;\n /**\n * A list of properties that describe the field. At least one property in the list must\n * match at least one property in the field for the descriptor to be considered matching.\n */\n properties: Array<{\n /** Full class name */\n class: string;\n /** Property name */\n name: string;\n }>;\n}\n\nfunction fromCompressedPropertyJSON(compressedPropertyJSON: PropertyJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): Property {\n return {\n property: fromCompressedPropertyInfoJSON(compressedPropertyJSON.property, classesMap),\n };\n}\n\nfunction fromCompressedPropertyInfoJSON(compressedPropertyJSON: PropertyInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): PropertyInfo {\n assert(classesMap.hasOwnProperty(compressedPropertyJSON.classInfo));\n\n const { navigationPropertyInfo, ...leftOverPropertyJSON } = compressedPropertyJSON;\n\n return {\n ...leftOverPropertyJSON,\n classInfo: { id: compressedPropertyJSON.classInfo, ...classesMap[compressedPropertyJSON.classInfo] },\n ...(navigationPropertyInfo ? { navigationPropertyInfo: NavigationPropertyInfo.fromCompressedJSON(navigationPropertyInfo, classesMap) } : undefined),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Item.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAwB,KAAK,EAAE,SAAS,EAAiB,MAAM,SAAS,CAAC;AAEhH;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,WAAW,EAAE,WAAW,EAAE,CAAC;IAG3B,eAAe,EAAE,mBAAmB,CAAC;IACrC,gKAAgK;IAChK,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEpC,aAAa,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,IAAI;IACf;;;OAGG;IACI,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IACjC,6DAA6D;IACtD,WAAW,EAAE,WAAW,EAAE,CAAC;IAClC,gCAAgC;IACzB,KAAK,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IACvB,+FAA+F;IACxF,SAAS,CAAC,EAAE,SAAS,CAAC;IAC7B,4BAA4B;IACrB,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,gCAAgC;IACzB,aAAa,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACrD,+HAA+H;IACxH,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAClC,oDAAoD;IAC7C,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAE7C;;;;;;;;;;OAUG;gBACgB,WAAW,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,EAC/H,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAWnJ;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD,oCAAoC;IAC7B,MAAM,IAAI,QAAQ;IAazB,qCAAqC;WACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS;IAiB7E;;;;OAIG;WACW,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAInD;;;;;OAKG;WACW,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE;IAS7D;;;;OAIG;WACW,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;CAGxD"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Item.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAwB,KAAK,EAAE,SAAS,EAAiB,MAAM,SAAS,CAAC;AAEhH;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,WAAW,EAAE,WAAW,EAAE,CAAC;IAG3B,eAAe,EAAE,mBAAmB,CAAC;IACrC,gKAAgK;IAChK,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEpC,aAAa,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,IAAI;IACf;;;OAGG;IACI,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IACjC,6DAA6D;IACtD,WAAW,EAAE,WAAW,EAAE,CAAC;IAClC,gCAAgC;IACzB,KAAK,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IACvB,+FAA+F;IACxF,SAAS,CAAC,EAAE,SAAS,CAAC;IAC7B,4BAA4B;IACrB,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,gCAAgC;IACzB,aAAa,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACrD,+HAA+H;IACxH,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAClC,oDAAoD;IAC7C,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAE7C;;;;;;;;;;OAUG;gBAED,WAAW,EAAE,WAAW,EAAE,EAC1B,KAAK,EAAE,MAAM,GAAG,eAAe,EAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,aAAa,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAC7C,gBAAgB,EAAE,MAAM,EAAE,EAC1B,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAYvC;;OAEG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhD,oCAAoC;IAC7B,MAAM,IAAI,QAAQ;IAazB,qCAAqC;WACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS;IAmB7E;;;;OAIG;WACW,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IAInD;;;;;OAKG;WACW,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE;IAS7D;;;;OAIG;WACW,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;CAGxD"}