@itwin/presentation-common 4.0.0-dev.8 → 4.0.0-dev.81

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 (441) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/Ruleset.schema.json +15 -0
  3. package/lib/cjs/assets/locales/en/Presentation.json +19 -0
  4. package/lib/cjs/assets/locales/en-PSEUDO/Presentation.json +19 -0
  5. package/lib/cjs/presentation-common/AsyncTasks.d.ts +22 -22
  6. package/lib/cjs/presentation-common/AsyncTasks.js +38 -38
  7. package/lib/cjs/presentation-common/CommonLoggerCategory.d.ts +12 -12
  8. package/lib/cjs/presentation-common/CommonLoggerCategory.js +20 -20
  9. package/lib/cjs/presentation-common/Diagnostics.d.ts +125 -125
  10. package/lib/cjs/presentation-common/Diagnostics.d.ts.map +1 -1
  11. package/lib/cjs/presentation-common/Diagnostics.js +72 -72
  12. package/lib/cjs/presentation-common/EC.d.ts +347 -350
  13. package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
  14. package/lib/cjs/presentation-common/EC.js +290 -290
  15. package/lib/cjs/presentation-common/EC.js.map +1 -1
  16. package/lib/cjs/presentation-common/ElementProperties.d.ts +123 -123
  17. package/lib/cjs/presentation-common/ElementProperties.d.ts.map +1 -1
  18. package/lib/cjs/presentation-common/ElementProperties.js +9 -9
  19. package/lib/cjs/presentation-common/Error.d.ts +47 -45
  20. package/lib/cjs/presentation-common/Error.d.ts.map +1 -1
  21. package/lib/cjs/presentation-common/Error.js +64 -62
  22. package/lib/cjs/presentation-common/Error.js.map +1 -1
  23. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts +93 -93
  24. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  25. package/lib/cjs/presentation-common/InstanceFilterDefinition.js +9 -9
  26. package/lib/cjs/presentation-common/KeySet.d.ts +146 -146
  27. package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
  28. package/lib/cjs/presentation-common/KeySet.js +428 -428
  29. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts +20 -0
  30. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -0
  31. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js +156 -0
  32. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -0
  33. package/lib/cjs/presentation-common/LabelDefinition.d.ts +93 -87
  34. package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
  35. package/lib/cjs/presentation-common/LabelDefinition.js +78 -73
  36. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  37. package/lib/cjs/presentation-common/LocalizationHelper.d.ts +29 -29
  38. package/lib/cjs/presentation-common/LocalizationHelper.d.ts.map +1 -1
  39. package/lib/cjs/presentation-common/LocalizationHelper.js +113 -110
  40. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  41. package/lib/cjs/presentation-common/PresentationIpcInterface.d.ts +27 -40
  42. package/lib/cjs/presentation-common/PresentationIpcInterface.d.ts.map +1 -1
  43. package/lib/cjs/presentation-common/PresentationIpcInterface.js +12 -12
  44. package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
  45. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +279 -261
  46. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  47. package/lib/cjs/presentation-common/PresentationManagerOptions.js +23 -23
  48. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  49. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts +186 -186
  50. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  51. package/lib/cjs/presentation-common/PresentationRpcInterface.js +108 -104
  52. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  53. package/lib/cjs/presentation-common/RegisteredRuleset.d.ts +26 -26
  54. package/lib/cjs/presentation-common/RegisteredRuleset.js +33 -33
  55. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +82 -83
  56. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  57. package/lib/cjs/presentation-common/RpcRequestsHandler.js +166 -171
  58. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  59. package/lib/cjs/presentation-common/RulesetVariables.d.ts +171 -171
  60. package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
  61. package/lib/cjs/presentation-common/RulesetVariables.js +55 -55
  62. package/lib/cjs/presentation-common/RulesetsFactory.d.ts +44 -44
  63. package/lib/cjs/presentation-common/RulesetsFactory.d.ts.map +1 -1
  64. package/lib/cjs/presentation-common/RulesetsFactory.js +223 -223
  65. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  66. package/lib/cjs/presentation-common/Update.d.ts +150 -213
  67. package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
  68. package/lib/cjs/presentation-common/Update.js +114 -226
  69. package/lib/cjs/presentation-common/Update.js.map +1 -1
  70. package/lib/cjs/presentation-common/Utils.d.ts +62 -62
  71. package/lib/cjs/presentation-common/Utils.d.ts.map +1 -1
  72. package/lib/cjs/presentation-common/Utils.js +43 -43
  73. package/lib/cjs/presentation-common/content/Category.d.ts +49 -49
  74. package/lib/cjs/presentation-common/content/Category.js +48 -48
  75. package/lib/cjs/presentation-common/content/Content.d.ts +38 -38
  76. package/lib/cjs/presentation-common/content/Content.js +56 -56
  77. package/lib/cjs/presentation-common/content/ContentTraverser.d.ts +271 -271
  78. package/lib/cjs/presentation-common/content/ContentTraverser.js +437 -439
  79. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  80. package/lib/cjs/presentation-common/content/Descriptor.d.ts +328 -328
  81. package/lib/cjs/presentation-common/content/Descriptor.js +191 -193
  82. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  83. package/lib/cjs/presentation-common/content/DisplayTypes.d.ts +21 -21
  84. package/lib/cjs/presentation-common/content/DisplayTypes.js +29 -29
  85. package/lib/cjs/presentation-common/content/Editor.d.ts +15 -15
  86. package/lib/cjs/presentation-common/content/Editor.js +9 -9
  87. package/lib/cjs/presentation-common/content/Fields.d.ts +298 -301
  88. package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
  89. package/lib/cjs/presentation-common/content/Fields.js +393 -397
  90. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  91. package/lib/cjs/presentation-common/content/Item.d.ts +85 -85
  92. package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
  93. package/lib/cjs/presentation-common/content/Item.js +84 -84
  94. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  95. package/lib/cjs/presentation-common/content/Property.d.ts +57 -57
  96. package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
  97. package/lib/cjs/presentation-common/content/Property.js +40 -40
  98. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts +29 -0
  99. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -0
  100. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +139 -0
  101. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -0
  102. package/lib/cjs/presentation-common/content/Renderer.d.ts +11 -11
  103. package/lib/cjs/presentation-common/content/Renderer.js +9 -9
  104. package/lib/cjs/presentation-common/content/TypeDescription.d.ts +72 -72
  105. package/lib/cjs/presentation-common/content/TypeDescription.d.ts.map +1 -1
  106. package/lib/cjs/presentation-common/content/TypeDescription.js +23 -23
  107. package/lib/cjs/presentation-common/content/Value.d.ts +204 -189
  108. package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
  109. package/lib/cjs/presentation-common/content/Value.js +281 -273
  110. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  111. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.d.ts +37 -37
  112. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +31 -31
  113. package/lib/cjs/presentation-common/hierarchy/Key.d.ts +246 -246
  114. package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
  115. package/lib/cjs/presentation-common/hierarchy/Key.js +121 -121
  116. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  117. package/lib/cjs/presentation-common/hierarchy/Node.d.ts +154 -154
  118. package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
  119. package/lib/cjs/presentation-common/hierarchy/Node.js +106 -106
  120. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  121. package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts +96 -96
  122. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +122 -122
  123. package/lib/cjs/presentation-common/rules/ClassSpecifications.d.ts +45 -45
  124. package/lib/cjs/presentation-common/rules/ClassSpecifications.js +9 -9
  125. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
  126. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +9 -9
  127. package/lib/cjs/presentation-common/rules/RelationshipDirection.d.ts +13 -13
  128. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +21 -21
  129. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.d.ts +56 -56
  130. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.d.ts.map +1 -1
  131. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +9 -9
  132. package/lib/cjs/presentation-common/rules/Rule.d.ts +76 -76
  133. package/lib/cjs/presentation-common/rules/Rule.js +35 -35
  134. package/lib/cjs/presentation-common/rules/Ruleset.d.ts +65 -65
  135. package/lib/cjs/presentation-common/rules/Ruleset.js +9 -9
  136. package/lib/cjs/presentation-common/rules/SchemasSpecification.d.ts +41 -41
  137. package/lib/cjs/presentation-common/rules/SchemasSpecification.js +9 -9
  138. package/lib/cjs/presentation-common/rules/Variables.d.ts +58 -58
  139. package/lib/cjs/presentation-common/rules/Variables.js +25 -25
  140. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
  141. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +9 -9
  142. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
  143. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +9 -9
  144. package/lib/cjs/presentation-common/rules/content/ContentRule.d.ts +30 -30
  145. package/lib/cjs/presentation-common/rules/content/ContentRule.js +9 -9
  146. package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts +58 -58
  147. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +20 -20
  148. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
  149. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +9 -9
  150. package/lib/cjs/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
  151. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +9 -9
  152. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
  153. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +9 -9
  154. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
  155. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +9 -9
  156. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.d.ts +64 -57
  157. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.d.ts.map +1 -1
  158. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +9 -9
  159. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  160. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
  161. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +9 -9
  162. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
  163. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts.map +1 -1
  164. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +9 -9
  165. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +108 -108
  166. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +21 -21
  167. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +96 -96
  168. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +43 -43
  169. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
  170. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +9 -9
  171. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
  172. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +9 -9
  173. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
  174. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +9 -9
  175. package/lib/cjs/presentation-common/rules/customization/GroupingRule.d.ts +207 -207
  176. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +51 -51
  177. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
  178. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +9 -9
  179. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts +158 -158
  180. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  181. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +25 -25
  182. package/lib/cjs/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
  183. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +9 -9
  184. package/lib/cjs/presentation-common/rules/customization/SortingRule.d.ts +58 -58
  185. package/lib/cjs/presentation-common/rules/customization/SortingRule.d.ts.map +1 -1
  186. package/lib/cjs/presentation-common/rules/customization/SortingRule.js +9 -9
  187. package/lib/cjs/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
  188. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +9 -9
  189. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +14 -14
  190. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +9 -9
  191. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +98 -98
  192. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  193. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +21 -21
  194. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
  195. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +9 -9
  196. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +79 -79
  197. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +19 -19
  198. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
  199. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +9 -9
  200. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
  201. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.d.ts.map +1 -1
  202. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +9 -9
  203. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
  204. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +9 -9
  205. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
  206. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +9 -9
  207. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.d.ts +16 -16
  208. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +9 -9
  209. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.d.ts +35 -35
  210. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +9 -9
  211. package/lib/cjs/presentation-common/selection/SelectionScope.d.ts +38 -38
  212. package/lib/cjs/presentation-common/selection/SelectionScope.d.ts.map +1 -1
  213. package/lib/cjs/presentation-common/selection/SelectionScope.js +9 -9
  214. package/lib/cjs/presentation-common.d.ts +114 -112
  215. package/lib/cjs/presentation-common.d.ts.map +1 -1
  216. package/lib/cjs/presentation-common.js +134 -128
  217. package/lib/cjs/presentation-common.js.map +1 -1
  218. package/lib/esm/presentation-common/AsyncTasks.d.ts +22 -22
  219. package/lib/esm/presentation-common/AsyncTasks.js +34 -34
  220. package/lib/esm/presentation-common/CommonLoggerCategory.d.ts +12 -12
  221. package/lib/esm/presentation-common/CommonLoggerCategory.js +17 -17
  222. package/lib/esm/presentation-common/Diagnostics.d.ts +125 -125
  223. package/lib/esm/presentation-common/Diagnostics.d.ts.map +1 -1
  224. package/lib/esm/presentation-common/Diagnostics.js +67 -67
  225. package/lib/esm/presentation-common/EC.d.ts +347 -350
  226. package/lib/esm/presentation-common/EC.d.ts.map +1 -1
  227. package/lib/esm/presentation-common/EC.js +287 -287
  228. package/lib/esm/presentation-common/EC.js.map +1 -1
  229. package/lib/esm/presentation-common/ElementProperties.d.ts +123 -123
  230. package/lib/esm/presentation-common/ElementProperties.d.ts.map +1 -1
  231. package/lib/esm/presentation-common/ElementProperties.js +8 -8
  232. package/lib/esm/presentation-common/Error.d.ts +47 -45
  233. package/lib/esm/presentation-common/Error.d.ts.map +1 -1
  234. package/lib/esm/presentation-common/Error.js +60 -58
  235. package/lib/esm/presentation-common/Error.js.map +1 -1
  236. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts +93 -93
  237. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  238. package/lib/esm/presentation-common/InstanceFilterDefinition.js +8 -8
  239. package/lib/esm/presentation-common/KeySet.d.ts +146 -146
  240. package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
  241. package/lib/esm/presentation-common/KeySet.js +424 -424
  242. package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts +20 -0
  243. package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -0
  244. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js +152 -0
  245. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -0
  246. package/lib/esm/presentation-common/LabelDefinition.d.ts +93 -87
  247. package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
  248. package/lib/esm/presentation-common/LabelDefinition.js +75 -70
  249. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  250. package/lib/esm/presentation-common/LocalizationHelper.d.ts +29 -29
  251. package/lib/esm/presentation-common/LocalizationHelper.d.ts.map +1 -1
  252. package/lib/esm/presentation-common/LocalizationHelper.js +109 -106
  253. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  254. package/lib/esm/presentation-common/PresentationIpcInterface.d.ts +27 -40
  255. package/lib/esm/presentation-common/PresentationIpcInterface.d.ts.map +1 -1
  256. package/lib/esm/presentation-common/PresentationIpcInterface.js +9 -9
  257. package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
  258. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +279 -261
  259. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  260. package/lib/esm/presentation-common/PresentationManagerOptions.js +18 -18
  261. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  262. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts +186 -186
  263. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  264. package/lib/esm/presentation-common/PresentationRpcInterface.js +105 -100
  265. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  266. package/lib/esm/presentation-common/RegisteredRuleset.d.ts +26 -26
  267. package/lib/esm/presentation-common/RegisteredRuleset.js +29 -29
  268. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +82 -83
  269. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  270. package/lib/esm/presentation-common/RpcRequestsHandler.js +162 -167
  271. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  272. package/lib/esm/presentation-common/RulesetVariables.d.ts +171 -171
  273. package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
  274. package/lib/esm/presentation-common/RulesetVariables.js +52 -52
  275. package/lib/esm/presentation-common/RulesetsFactory.d.ts +44 -44
  276. package/lib/esm/presentation-common/RulesetsFactory.d.ts.map +1 -1
  277. package/lib/esm/presentation-common/RulesetsFactory.js +219 -219
  278. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  279. package/lib/esm/presentation-common/Update.d.ts +150 -213
  280. package/lib/esm/presentation-common/Update.d.ts.map +1 -1
  281. package/lib/esm/presentation-common/Update.js +111 -223
  282. package/lib/esm/presentation-common/Update.js.map +1 -1
  283. package/lib/esm/presentation-common/Utils.d.ts +62 -62
  284. package/lib/esm/presentation-common/Utils.d.ts.map +1 -1
  285. package/lib/esm/presentation-common/Utils.js +39 -39
  286. package/lib/esm/presentation-common/content/Category.d.ts +49 -49
  287. package/lib/esm/presentation-common/content/Category.js +45 -45
  288. package/lib/esm/presentation-common/content/Content.d.ts +38 -38
  289. package/lib/esm/presentation-common/content/Content.js +52 -52
  290. package/lib/esm/presentation-common/content/ContentTraverser.d.ts +271 -271
  291. package/lib/esm/presentation-common/content/ContentTraverser.js +427 -429
  292. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  293. package/lib/esm/presentation-common/content/Descriptor.d.ts +328 -328
  294. package/lib/esm/presentation-common/content/Descriptor.js +187 -189
  295. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  296. package/lib/esm/presentation-common/content/DisplayTypes.d.ts +21 -21
  297. package/lib/esm/presentation-common/content/DisplayTypes.js +26 -26
  298. package/lib/esm/presentation-common/content/Editor.d.ts +15 -15
  299. package/lib/esm/presentation-common/content/Editor.js +8 -8
  300. package/lib/esm/presentation-common/content/Fields.d.ts +298 -301
  301. package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
  302. package/lib/esm/presentation-common/content/Fields.js +386 -390
  303. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  304. package/lib/esm/presentation-common/content/Item.d.ts +85 -85
  305. package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
  306. package/lib/esm/presentation-common/content/Item.js +80 -80
  307. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  308. package/lib/esm/presentation-common/content/Property.d.ts +57 -57
  309. package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
  310. package/lib/esm/presentation-common/content/Property.js +37 -37
  311. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts +29 -0
  312. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -0
  313. package/lib/esm/presentation-common/content/PropertyValueFormatter.js +134 -0
  314. package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -0
  315. package/lib/esm/presentation-common/content/Renderer.d.ts +11 -11
  316. package/lib/esm/presentation-common/content/Renderer.js +8 -8
  317. package/lib/esm/presentation-common/content/TypeDescription.d.ts +72 -72
  318. package/lib/esm/presentation-common/content/TypeDescription.d.ts.map +1 -1
  319. package/lib/esm/presentation-common/content/TypeDescription.js +20 -20
  320. package/lib/esm/presentation-common/content/Value.d.ts +204 -189
  321. package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
  322. package/lib/esm/presentation-common/content/Value.js +278 -270
  323. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  324. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.d.ts +37 -37
  325. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +28 -28
  326. package/lib/esm/presentation-common/hierarchy/Key.d.ts +246 -246
  327. package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
  328. package/lib/esm/presentation-common/hierarchy/Key.js +118 -118
  329. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  330. package/lib/esm/presentation-common/hierarchy/Node.d.ts +154 -154
  331. package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
  332. package/lib/esm/presentation-common/hierarchy/Node.js +103 -103
  333. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  334. package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts +96 -96
  335. package/lib/esm/presentation-common/hierarchy/NodePathElement.js +119 -119
  336. package/lib/esm/presentation-common/rules/ClassSpecifications.d.ts +45 -45
  337. package/lib/esm/presentation-common/rules/ClassSpecifications.js +8 -8
  338. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
  339. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +8 -8
  340. package/lib/esm/presentation-common/rules/RelationshipDirection.d.ts +13 -13
  341. package/lib/esm/presentation-common/rules/RelationshipDirection.js +18 -18
  342. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.d.ts +56 -56
  343. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.d.ts.map +1 -1
  344. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +8 -8
  345. package/lib/esm/presentation-common/rules/Rule.d.ts +76 -76
  346. package/lib/esm/presentation-common/rules/Rule.js +32 -32
  347. package/lib/esm/presentation-common/rules/Ruleset.d.ts +65 -65
  348. package/lib/esm/presentation-common/rules/Ruleset.js +8 -8
  349. package/lib/esm/presentation-common/rules/SchemasSpecification.d.ts +41 -41
  350. package/lib/esm/presentation-common/rules/SchemasSpecification.js +8 -8
  351. package/lib/esm/presentation-common/rules/Variables.d.ts +58 -58
  352. package/lib/esm/presentation-common/rules/Variables.js +22 -22
  353. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
  354. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +8 -8
  355. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
  356. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +8 -8
  357. package/lib/esm/presentation-common/rules/content/ContentRule.d.ts +30 -30
  358. package/lib/esm/presentation-common/rules/content/ContentRule.js +8 -8
  359. package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts +58 -58
  360. package/lib/esm/presentation-common/rules/content/ContentSpecification.js +17 -17
  361. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
  362. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +8 -8
  363. package/lib/esm/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
  364. package/lib/esm/presentation-common/rules/content/PropertySpecification.js +8 -8
  365. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
  366. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +8 -8
  367. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
  368. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +8 -8
  369. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.d.ts +64 -57
  370. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.d.ts.map +1 -1
  371. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +8 -8
  372. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  373. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
  374. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +8 -8
  375. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
  376. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts.map +1 -1
  377. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +8 -8
  378. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +108 -108
  379. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +18 -18
  380. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +96 -96
  381. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +40 -40
  382. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
  383. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +8 -8
  384. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
  385. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +8 -8
  386. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
  387. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +8 -8
  388. package/lib/esm/presentation-common/rules/customization/GroupingRule.d.ts +207 -207
  389. package/lib/esm/presentation-common/rules/customization/GroupingRule.js +48 -48
  390. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
  391. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +8 -8
  392. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts +158 -158
  393. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  394. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +22 -22
  395. package/lib/esm/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
  396. package/lib/esm/presentation-common/rules/customization/LabelOverride.js +8 -8
  397. package/lib/esm/presentation-common/rules/customization/SortingRule.d.ts +58 -58
  398. package/lib/esm/presentation-common/rules/customization/SortingRule.d.ts.map +1 -1
  399. package/lib/esm/presentation-common/rules/customization/SortingRule.js +8 -8
  400. package/lib/esm/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
  401. package/lib/esm/presentation-common/rules/customization/StyleOverride.js +8 -8
  402. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +14 -14
  403. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +8 -8
  404. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +98 -98
  405. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  406. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +18 -18
  407. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
  408. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +8 -8
  409. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +79 -79
  410. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +16 -16
  411. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
  412. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +8 -8
  413. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
  414. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.d.ts.map +1 -1
  415. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +8 -8
  416. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
  417. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +8 -8
  418. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
  419. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +8 -8
  420. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.d.ts +16 -16
  421. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +8 -8
  422. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.d.ts +35 -35
  423. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +8 -8
  424. package/lib/esm/presentation-common/selection/SelectionScope.d.ts +38 -38
  425. package/lib/esm/presentation-common/selection/SelectionScope.d.ts.map +1 -1
  426. package/lib/esm/presentation-common/selection/SelectionScope.js +8 -8
  427. package/lib/esm/presentation-common.d.ts +114 -112
  428. package/lib/esm/presentation-common.d.ts.map +1 -1
  429. package/lib/esm/presentation-common.js +118 -116
  430. package/lib/esm/presentation-common.js.map +1 -1
  431. package/lib/public/locales/en/Presentation.json +19 -0
  432. package/package.json +17 -15
  433. package/lib/cjs/assets/locales/en/BisCore.json +0 -18
  434. package/lib/cjs/assets/locales/en/ECPresentation.json +0 -9
  435. package/lib/cjs/assets/locales/en/RulesEngine.json +0 -6
  436. package/lib/cjs/assets/locales/en-PSEUDO/BisCore.json +0 -18
  437. package/lib/cjs/assets/locales/en-PSEUDO/ECPresentation.json +0 -9
  438. package/lib/cjs/assets/locales/en-PSEUDO/RulesEngine.json +0 -6
  439. package/lib/public/locales/en/BisCore.json +0 -18
  440. package/lib/public/locales/en/ECPresentation.json +0 -9
  441. package/lib/public/locales/en/RulesEngine.json +0 -6
@@ -1,190 +1,188 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module Content
7
- */
8
- import { assert } from "@itwin/core-bentley";
9
- import { RelatedClassInfo, RelatedClassInfoWithOptionalRelationship, } from "../EC";
10
- import { CategoryDescription } from "./Category";
11
- import { Field, getFieldByName } from "./Fields";
12
- /** @public */
13
- export var SelectClassInfo;
14
- (function (SelectClassInfo) {
15
- /** Deserialize [[SelectClassInfo]] from compressed JSON */
16
- function fromCompressedJSON(json, classesMap) {
17
- assert(classesMap.hasOwnProperty(json.selectClassInfo));
18
- return {
19
- selectClassInfo: { id: json.selectClassInfo, ...classesMap[json.selectClassInfo] },
20
- isSelectPolymorphic: json.isSelectPolymorphic,
21
- ...(json.navigationPropertyClasses ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap)) } : undefined),
22
- ...(json.relatedInstancePaths ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
23
- ...(json.pathFromInputToSelectClass ? { pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)) } : undefined),
24
- ...(json.relatedPropertyPaths ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
25
- };
26
- }
27
- SelectClassInfo.fromCompressedJSON = fromCompressedJSON;
28
- /** Serialize [[SelectClassInfo]] to compressed JSON */
29
- function toCompressedJSON(selectClass, classesMap) {
30
- const { id, ...leftOverClassInfo } = selectClass.selectClassInfo;
31
- classesMap[id] = leftOverClassInfo;
32
- return {
33
- selectClassInfo: id,
34
- isSelectPolymorphic: selectClass.isSelectPolymorphic,
35
- ...(selectClass.relatedInstancePaths ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.toCompressedJSON(item, classesMap))) } : undefined),
36
- ...(selectClass.navigationPropertyClasses ? { navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)) } : undefined),
37
- ...(selectClass.pathFromInputToSelectClass ? { pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)) } : undefined),
38
- ...(selectClass.relatedPropertyPaths ? { relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))) } : undefined),
39
- };
40
- }
41
- SelectClassInfo.toCompressedJSON = toCompressedJSON;
42
- /**
43
- * Deserialize [[SelectClassInfo]] list from JSON
44
- * @param json JSON or JSON serialized to string to deserialize from
45
- * @returns Deserialized [[SelectClassInfo]] objects list
46
- *
47
- * @internal
48
- */
49
- function listFromCompressedJSON(json, classesMap) {
50
- return json.map((sci) => fromCompressedJSON(sci, classesMap));
51
- }
52
- SelectClassInfo.listFromCompressedJSON = listFromCompressedJSON;
53
- })(SelectClassInfo || (SelectClassInfo = {}));
54
- /**
55
- * Flags that control content format.
56
- * @public
57
- */
58
- export var ContentFlags;
59
- (function (ContentFlags) {
60
- /** Each content record only has [[InstanceKey]] and no data */
61
- ContentFlags[ContentFlags["KeysOnly"] = 1] = "KeysOnly";
62
- /**
63
- * Each content record additionally has an image id
64
- * @deprecated in 3.x. Use [[ExtendedDataRule]] instead. See [extended data usage page]($docs/presentation/customization/ExtendedDataUsage.md) for more details.
65
- */
66
- ContentFlags[ContentFlags["ShowImages"] = 2] = "ShowImages";
67
- /** Each content record additionally has a display label */
68
- ContentFlags[ContentFlags["ShowLabels"] = 4] = "ShowLabels";
69
- /** All content records are merged into a single record (see [Merging values]($docs/presentation/content/terminology#value-merging)) */
70
- ContentFlags[ContentFlags["MergeResults"] = 8] = "MergeResults";
71
- /** Content has only distinct values */
72
- ContentFlags[ContentFlags["DistinctValues"] = 16] = "DistinctValues";
73
- /** Doesn't create property or calculated fields. Can be used in conjunction with [[ShowLabels]]. */
74
- ContentFlags[ContentFlags["NoFields"] = 32] = "NoFields";
75
- /**
76
- * Set related input keys on [[Item]] objects when creating content. This helps identify which [[Item]] is associated to which
77
- * given input key at the cost of performance creating those items.
78
- */
79
- ContentFlags[ContentFlags["IncludeInputKeys"] = 256] = "IncludeInputKeys";
80
- /**
81
- * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain
82
- * operations to make obtaining content descriptor faster.
83
- * @internal
84
- */
85
- ContentFlags[ContentFlags["DescriptorOnly"] = 512] = "DescriptorOnly";
86
- })(ContentFlags || (ContentFlags = {}));
87
- /**
88
- * Data sorting direction
89
- * @public
90
- */
91
- export var SortDirection;
92
- (function (SortDirection) {
93
- SortDirection[SortDirection["Ascending"] = 0] = "Ascending";
94
- SortDirection[SortDirection["Descending"] = 1] = "Descending";
95
- })(SortDirection || (SortDirection = {}));
96
- /**
97
- * Data structure that describes content: fields, sorting, filtering, format, etc.
98
- * Descriptor may be changed to control how content is created.
99
- *
100
- * @public
101
- */
102
- export class Descriptor {
103
- /** Construct a new Descriptor using a [[DescriptorSource]] */
104
- constructor(source) {
105
- var _a, _b;
106
- this.connectionId = source.connectionId;
107
- this.inputKeysHash = source.inputKeysHash;
108
- this.selectionInfo = source.selectionInfo;
109
- this.displayType = source.displayType;
110
- this.contentFlags = source.contentFlags;
111
- this.selectClasses = [...source.selectClasses];
112
- this.categories = [...source.categories];
113
- this.fields = [...source.fields];
114
- this.sortingField = source.sortingField;
115
- this.sortDirection = source.sortDirection;
116
- this.filterExpression = (_a = source.fieldsFilterExpression) !== null && _a !== void 0 ? _a : source.filterExpression; // eslint-disable-line deprecation/deprecation
117
- this.fieldsFilterExpression = (_b = source.fieldsFilterExpression) !== null && _b !== void 0 ? _b : source.filterExpression; // eslint-disable-line deprecation/deprecation
118
- this.instanceFilter = source.instanceFilter;
119
- }
120
- /** Serialize [[Descriptor]] to JSON */
121
- toJSON() {
122
- const classesMap = {};
123
- const selectClasses = this.selectClasses.map((selectClass) => SelectClassInfo.toCompressedJSON(selectClass, classesMap));
124
- const fields = this.fields.map((field) => field.toCompressedJSON(classesMap));
125
- return Object.assign({
126
- displayType: this.displayType,
127
- contentFlags: this.contentFlags,
128
- categories: this.categories.map(CategoryDescription.toJSON),
129
- fields,
130
- selectClasses,
131
- classesMap,
132
- }, this.connectionId !== undefined && { connectionId: this.connectionId }, this.inputKeysHash !== undefined && { inputKeysHash: this.inputKeysHash },
133
- // istanbul ignore next
134
- this.contentOptions !== undefined && { contentOptions: this.contentOptions }, // eslint-disable-line deprecation/deprecation
135
- this.sortingField !== undefined && { sortingFieldName: this.sortingField.name }, this.sortDirection !== undefined && { sortDirection: this.sortDirection }, this.filterExpression !== undefined && { filterExpression: this.filterExpression }, // eslint-disable-line deprecation/deprecation
136
- this.fieldsFilterExpression !== undefined && { fieldsFilterExpression: this.fieldsFilterExpression }, this.instanceFilter !== undefined && { instanceFilter: this.instanceFilter }, this.selectionInfo !== undefined && { selectionInfo: this.selectionInfo });
137
- }
138
- /** Deserialize [[Descriptor]] from JSON */
139
- static fromJSON(json) {
140
- if (!json)
141
- return undefined;
142
- const { classesMap, ...leftOverJson } = json;
143
- const categories = CategoryDescription.listFromJSON(json.categories);
144
- const selectClasses = SelectClassInfo.listFromCompressedJSON(json.selectClasses, classesMap);
145
- const fields = this.getFieldsFromJSON(json.fields, (fieldJson) => Field.fromCompressedJSON(fieldJson, classesMap, categories));
146
- return new Descriptor({
147
- ...leftOverJson,
148
- selectClasses,
149
- categories,
150
- fields,
151
- sortingField: getFieldByName(fields, json.sortingFieldName, true),
152
- });
153
- }
154
- static getFieldsFromJSON(json, factory) {
155
- return json.map((fieldJson) => {
156
- const field = factory(fieldJson);
157
- if (field)
158
- field.rebuildParentship();
159
- return field;
160
- }).filter((field) => !!field);
161
- }
162
- /**
163
- * Get field by its name
164
- * @param name Name of the field to find
165
- * @param recurse Recurse into nested fields
166
- */
167
- getFieldByName(name, recurse) {
168
- return getFieldByName(this.fields, name, recurse);
169
- }
170
- /**
171
- * Create descriptor overrides object from this descriptor.
172
- * @public
173
- */
174
- createDescriptorOverrides() {
175
- var _a, _b;
176
- const overrides = {};
177
- if (this.displayType)
178
- overrides.displayType = this.displayType;
179
- if (this.contentFlags !== 0)
180
- overrides.contentFlags = this.contentFlags;
181
- if (this.filterExpression || this.fieldsFilterExpression) // eslint-disable-line deprecation/deprecation
182
- overrides.fieldsFilterExpression = (_a = this.fieldsFilterExpression) !== null && _a !== void 0 ? _a : this.filterExpression; // eslint-disable-line deprecation/deprecation
183
- if (this.instanceFilter)
184
- overrides.instanceFilter = this.instanceFilter;
185
- if (this.sortingField)
186
- overrides.sorting = { field: this.sortingField.getFieldDescriptor(), direction: (_b = this.sortDirection) !== null && _b !== void 0 ? _b : SortDirection.Ascending };
187
- return overrides;
188
- }
189
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Content
7
+ */
8
+ import { assert } from "@itwin/core-bentley";
9
+ import { RelatedClassInfo, RelatedClassInfoWithOptionalRelationship, } from "../EC";
10
+ import { CategoryDescription } from "./Category";
11
+ import { Field, getFieldByName } from "./Fields";
12
+ /** @public */
13
+ export var SelectClassInfo;
14
+ (function (SelectClassInfo) {
15
+ /** Deserialize [[SelectClassInfo]] from compressed JSON */
16
+ function fromCompressedJSON(json, classesMap) {
17
+ assert(classesMap.hasOwnProperty(json.selectClassInfo));
18
+ return {
19
+ selectClassInfo: { id: json.selectClassInfo, ...classesMap[json.selectClassInfo] },
20
+ isSelectPolymorphic: json.isSelectPolymorphic,
21
+ ...(json.navigationPropertyClasses ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap)) } : undefined),
22
+ ...(json.relatedInstancePaths ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
23
+ ...(json.pathFromInputToSelectClass ? { pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)) } : undefined),
24
+ ...(json.relatedPropertyPaths ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),
25
+ };
26
+ }
27
+ SelectClassInfo.fromCompressedJSON = fromCompressedJSON;
28
+ /** Serialize [[SelectClassInfo]] to compressed JSON */
29
+ function toCompressedJSON(selectClass, classesMap) {
30
+ const { id, ...leftOverClassInfo } = selectClass.selectClassInfo;
31
+ classesMap[id] = leftOverClassInfo;
32
+ return {
33
+ selectClassInfo: id,
34
+ isSelectPolymorphic: selectClass.isSelectPolymorphic,
35
+ ...(selectClass.relatedInstancePaths ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.toCompressedJSON(item, classesMap))) } : undefined),
36
+ ...(selectClass.navigationPropertyClasses ? { navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)) } : undefined),
37
+ ...(selectClass.pathFromInputToSelectClass ? { pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)) } : undefined),
38
+ ...(selectClass.relatedPropertyPaths ? { relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))) } : undefined),
39
+ };
40
+ }
41
+ SelectClassInfo.toCompressedJSON = toCompressedJSON;
42
+ /**
43
+ * Deserialize [[SelectClassInfo]] list from JSON
44
+ * @param json JSON or JSON serialized to string to deserialize from
45
+ * @returns Deserialized [[SelectClassInfo]] objects list
46
+ *
47
+ * @internal
48
+ */
49
+ function listFromCompressedJSON(json, classesMap) {
50
+ return json.map((sci) => fromCompressedJSON(sci, classesMap));
51
+ }
52
+ SelectClassInfo.listFromCompressedJSON = listFromCompressedJSON;
53
+ })(SelectClassInfo || (SelectClassInfo = {}));
54
+ /**
55
+ * Flags that control content format.
56
+ * @public
57
+ */
58
+ export var ContentFlags;
59
+ (function (ContentFlags) {
60
+ /** Each content record only has [[InstanceKey]] and no data */
61
+ ContentFlags[ContentFlags["KeysOnly"] = 1] = "KeysOnly";
62
+ /**
63
+ * Each content record additionally has an image id
64
+ * @deprecated in 3.x. Use [[ExtendedDataRule]] instead. See [extended data usage page]($docs/presentation/customization/ExtendedDataUsage.md) for more details.
65
+ */
66
+ ContentFlags[ContentFlags["ShowImages"] = 2] = "ShowImages";
67
+ /** Each content record additionally has a display label */
68
+ ContentFlags[ContentFlags["ShowLabels"] = 4] = "ShowLabels";
69
+ /** All content records are merged into a single record (see [Merging values]($docs/presentation/content/terminology#value-merging)) */
70
+ ContentFlags[ContentFlags["MergeResults"] = 8] = "MergeResults";
71
+ /** Content has only distinct values */
72
+ ContentFlags[ContentFlags["DistinctValues"] = 16] = "DistinctValues";
73
+ /** Doesn't create property or calculated fields. Can be used in conjunction with [[ShowLabels]]. */
74
+ ContentFlags[ContentFlags["NoFields"] = 32] = "NoFields";
75
+ /**
76
+ * Set related input keys on [[Item]] objects when creating content. This helps identify which [[Item]] is associated to which
77
+ * given input key at the cost of performance creating those items.
78
+ */
79
+ ContentFlags[ContentFlags["IncludeInputKeys"] = 256] = "IncludeInputKeys";
80
+ /**
81
+ * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain
82
+ * operations to make obtaining content descriptor faster.
83
+ * @internal
84
+ */
85
+ ContentFlags[ContentFlags["DescriptorOnly"] = 512] = "DescriptorOnly";
86
+ })(ContentFlags || (ContentFlags = {}));
87
+ /**
88
+ * Data sorting direction
89
+ * @public
90
+ */
91
+ export var SortDirection;
92
+ (function (SortDirection) {
93
+ SortDirection[SortDirection["Ascending"] = 0] = "Ascending";
94
+ SortDirection[SortDirection["Descending"] = 1] = "Descending";
95
+ })(SortDirection || (SortDirection = {}));
96
+ /**
97
+ * Data structure that describes content: fields, sorting, filtering, format, etc.
98
+ * Descriptor may be changed to control how content is created.
99
+ *
100
+ * @public
101
+ */
102
+ export class Descriptor {
103
+ /** Construct a new Descriptor using a [[DescriptorSource]] */
104
+ constructor(source) {
105
+ this.connectionId = source.connectionId;
106
+ this.inputKeysHash = source.inputKeysHash;
107
+ this.selectionInfo = source.selectionInfo;
108
+ this.displayType = source.displayType;
109
+ this.contentFlags = source.contentFlags;
110
+ this.selectClasses = [...source.selectClasses];
111
+ this.categories = [...source.categories];
112
+ this.fields = [...source.fields];
113
+ this.sortingField = source.sortingField;
114
+ this.sortDirection = source.sortDirection;
115
+ this.filterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation
116
+ this.fieldsFilterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation
117
+ this.instanceFilter = source.instanceFilter;
118
+ }
119
+ /** Serialize [[Descriptor]] to JSON */
120
+ toJSON() {
121
+ const classesMap = {};
122
+ const selectClasses = this.selectClasses.map((selectClass) => SelectClassInfo.toCompressedJSON(selectClass, classesMap));
123
+ const fields = this.fields.map((field) => field.toCompressedJSON(classesMap));
124
+ return Object.assign({
125
+ displayType: this.displayType,
126
+ contentFlags: this.contentFlags,
127
+ categories: this.categories.map(CategoryDescription.toJSON),
128
+ fields,
129
+ selectClasses,
130
+ classesMap,
131
+ }, this.connectionId !== undefined && { connectionId: this.connectionId }, this.inputKeysHash !== undefined && { inputKeysHash: this.inputKeysHash },
132
+ // istanbul ignore next
133
+ this.contentOptions !== undefined && { contentOptions: this.contentOptions }, // eslint-disable-line deprecation/deprecation
134
+ this.sortingField !== undefined && { sortingFieldName: this.sortingField.name }, this.sortDirection !== undefined && { sortDirection: this.sortDirection }, this.filterExpression !== undefined && { filterExpression: this.filterExpression }, // eslint-disable-line deprecation/deprecation
135
+ this.fieldsFilterExpression !== undefined && { fieldsFilterExpression: this.fieldsFilterExpression }, this.instanceFilter !== undefined && { instanceFilter: this.instanceFilter }, this.selectionInfo !== undefined && { selectionInfo: this.selectionInfo });
136
+ }
137
+ /** Deserialize [[Descriptor]] from JSON */
138
+ static fromJSON(json) {
139
+ if (!json)
140
+ return undefined;
141
+ const { classesMap, ...leftOverJson } = json;
142
+ const categories = CategoryDescription.listFromJSON(json.categories);
143
+ const selectClasses = SelectClassInfo.listFromCompressedJSON(json.selectClasses, classesMap);
144
+ const fields = this.getFieldsFromJSON(json.fields, (fieldJson) => Field.fromCompressedJSON(fieldJson, classesMap, categories));
145
+ return new Descriptor({
146
+ ...leftOverJson,
147
+ selectClasses,
148
+ categories,
149
+ fields,
150
+ sortingField: getFieldByName(fields, json.sortingFieldName, true),
151
+ });
152
+ }
153
+ static getFieldsFromJSON(json, factory) {
154
+ return json.map((fieldJson) => {
155
+ const field = factory(fieldJson);
156
+ if (field)
157
+ field.rebuildParentship();
158
+ return field;
159
+ }).filter((field) => !!field);
160
+ }
161
+ /**
162
+ * Get field by its name
163
+ * @param name Name of the field to find
164
+ * @param recurse Recurse into nested fields
165
+ */
166
+ getFieldByName(name, recurse) {
167
+ return getFieldByName(this.fields, name, recurse);
168
+ }
169
+ /**
170
+ * Create descriptor overrides object from this descriptor.
171
+ * @public
172
+ */
173
+ createDescriptorOverrides() {
174
+ const overrides = {};
175
+ if (this.displayType)
176
+ overrides.displayType = this.displayType;
177
+ if (this.contentFlags !== 0)
178
+ overrides.contentFlags = this.contentFlags;
179
+ if (this.filterExpression || this.fieldsFilterExpression) // eslint-disable-line deprecation/deprecation
180
+ overrides.fieldsFilterExpression = this.fieldsFilterExpression ?? this.filterExpression; // eslint-disable-line deprecation/deprecation
181
+ if (this.instanceFilter)
182
+ overrides.instanceFilter = this.instanceFilter;
183
+ if (this.sortingField)
184
+ overrides.sorting = { field: this.sortingField.getFieldDescriptor(), direction: this.sortDirection ?? SortDirection.Ascending };
185
+ return overrides;
186
+ }
187
+ }
190
188
  //# sourceMappingURL=Descriptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Descriptor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Content\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n ClassInfo, ClassInfoJSON, CompressedClassInfoJSON, RelatedClassInfo, RelatedClassInfoJSON, RelatedClassInfoWithOptionalRelationship,\r\n RelatedClassInfoWithOptionalRelationshipJSON, RelationshipPath, RelationshipPathJSON,\r\n} from \"../EC\";\r\nimport { InstanceFilterDefinition } from \"../InstanceFilterDefinition\";\r\nimport { CategoryDescription, CategoryDescriptionJSON } from \"./Category\";\r\nimport { Field, FieldDescriptor, FieldJSON, getFieldByName } from \"./Fields\";\r\n\r\n/**\r\n * Data structure that describes an ECClass in content [[Descriptor]].\r\n * @public\r\n */\r\nexport interface SelectClassInfo {\r\n /** Information about the ECClass */\r\n selectClassInfo: ClassInfo;\r\n\r\n /** Is the class handled polymorphically */\r\n isSelectPolymorphic: boolean;\r\n\r\n /** Relationship path from input class to the select class. */\r\n pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationship[];\r\n\r\n /** Relationship paths to [related property]($docs/presentation/content/Terminology#related-properties) classes */\r\n relatedPropertyPaths?: RelationshipPath[];\r\n\r\n /** Relationship paths to navigation property classes */\r\n navigationPropertyClasses?: RelatedClassInfo[];\r\n\r\n /** Relationship paths to [related instance]($docs/presentation/content/Terminology#related-instance) classes. */\r\n relatedInstancePaths?: RelationshipPath[];\r\n}\r\n\r\n/**\r\n * Serialized [[SelectClassInfo]] JSON representation\r\n * @public\r\n */\r\n// eslint-disable-next-line deprecation/deprecation\r\nexport interface SelectClassInfoJSON<TClassInfoJSON = ClassInfoJSON> {\r\n selectClassInfo: TClassInfoJSON;\r\n isSelectPolymorphic: boolean;\r\n pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON>[];\r\n relatedPropertyPaths?: RelationshipPathJSON<TClassInfoJSON>[];\r\n navigationPropertyClasses?: RelatedClassInfoJSON<TClassInfoJSON>[];\r\n relatedInstancePaths?: RelationshipPathJSON<TClassInfoJSON>[];\r\n}\r\n\r\n/** @public */\r\nexport namespace SelectClassInfo {\r\n /** Deserialize [[SelectClassInfo]] from compressed JSON */\r\n export function fromCompressedJSON(json: SelectClassInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfo {\r\n assert(classesMap.hasOwnProperty(json.selectClassInfo));\r\n return {\r\n selectClassInfo: { id: json.selectClassInfo, ...classesMap[json.selectClassInfo] },\r\n isSelectPolymorphic: json.isSelectPolymorphic,\r\n ...(json.navigationPropertyClasses ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap)) } : undefined),\r\n ...(json.relatedInstancePaths ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),\r\n ...(json.pathFromInputToSelectClass ? { pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)) } : undefined),\r\n ...(json.relatedPropertyPaths ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),\r\n };\r\n }\r\n\r\n /** Serialize [[SelectClassInfo]] to compressed JSON */\r\n export function toCompressedJSON(selectClass: SelectClassInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfoJSON<string> {\r\n const { id, ...leftOverClassInfo } = selectClass.selectClassInfo;\r\n classesMap[id] = leftOverClassInfo;\r\n return {\r\n selectClassInfo: id,\r\n isSelectPolymorphic: selectClass.isSelectPolymorphic,\r\n ...(selectClass.relatedInstancePaths ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.toCompressedJSON(item, classesMap))) } : undefined),\r\n ...(selectClass.navigationPropertyClasses ? { navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)) } : undefined),\r\n ...(selectClass.pathFromInputToSelectClass ? { pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)) } : undefined),\r\n ...(selectClass.relatedPropertyPaths ? { relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))) } : undefined),\r\n };\r\n }\r\n\r\n /**\r\n * Deserialize [[SelectClassInfo]] list from JSON\r\n * @param json JSON or JSON serialized to string to deserialize from\r\n * @returns Deserialized [[SelectClassInfo]] objects list\r\n *\r\n * @internal\r\n */\r\n export function listFromCompressedJSON(json: SelectClassInfoJSON<Id64String>[], classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfo[] {\r\n return json.map((sci) => fromCompressedJSON(sci, classesMap));\r\n }\r\n}\r\n\r\n/**\r\n * Flags that control content format.\r\n * @public\r\n */\r\nexport enum ContentFlags {\r\n /** Each content record only has [[InstanceKey]] and no data */\r\n KeysOnly = 1 << 0,\r\n\r\n /**\r\n * Each content record additionally has an image id\r\n * @deprecated in 3.x. Use [[ExtendedDataRule]] instead. See [extended data usage page]($docs/presentation/customization/ExtendedDataUsage.md) for more details.\r\n */\r\n ShowImages = 1 << 1,\r\n\r\n /** Each content record additionally has a display label */\r\n ShowLabels = 1 << 2,\r\n\r\n /** All content records are merged into a single record (see [Merging values]($docs/presentation/content/terminology#value-merging)) */\r\n MergeResults = 1 << 3,\r\n\r\n /** Content has only distinct values */\r\n DistinctValues = 1 << 4,\r\n\r\n /** Doesn't create property or calculated fields. Can be used in conjunction with [[ShowLabels]]. */\r\n NoFields = 1 << 5,\r\n\r\n /**\r\n * Set related input keys on [[Item]] objects when creating content. This helps identify which [[Item]] is associated to which\r\n * given input key at the cost of performance creating those items.\r\n */\r\n IncludeInputKeys = 1 << 8,\r\n\r\n /**\r\n * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain\r\n * operations to make obtaining content descriptor faster.\r\n * @internal\r\n */\r\n DescriptorOnly = 1 << 9,\r\n}\r\n\r\n/**\r\n * Data sorting direction\r\n * @public\r\n */\r\nexport enum SortDirection {\r\n Ascending,\r\n Descending,\r\n}\r\n\r\n/**\r\n * Data structure that contains selection information. Used\r\n * for cases when requesting content after a selection change.\r\n *\r\n * @public\r\n */\r\nexport interface SelectionInfo {\r\n /** Name of selection provider which cause the selection change */\r\n providerName: string;\r\n /** Level of selection that changed */\r\n level?: number;\r\n}\r\n\r\n/**\r\n * Serialized [[Descriptor]] JSON representation.\r\n * @public\r\n */\r\nexport interface DescriptorJSON {\r\n classesMap: { [id: string]: CompressedClassInfoJSON };\r\n connectionId: string;\r\n inputKeysHash: string;\r\n /** @deprecated in 3.x. The attribute is not used anymore. */\r\n contentOptions: any;\r\n selectionInfo?: SelectionInfo;\r\n displayType: string;\r\n selectClasses: SelectClassInfoJSON<Id64String>[];\r\n categories: CategoryDescriptionJSON[];\r\n fields: FieldJSON<Id64String>[];\r\n sortingFieldName?: string;\r\n sortDirection?: SortDirection;\r\n contentFlags: number;\r\n /** @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]]. */\r\n filterExpression?: string;\r\n fieldsFilterExpression?: string;\r\n /** @beta */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Descriptor overrides that can be used to customize content\r\n * @public\r\n */\r\nexport interface DescriptorOverrides {\r\n /**\r\n * Content display type. Can be accessed in presentation rules and used\r\n * to modify content in various ways. Defaults to empty string.\r\n */\r\n displayType?: string;\r\n\r\n /** Content flags used for content customization. See [[ContentFlags]] */\r\n contentFlags?: number;\r\n\r\n /** Fields selector that allows excluding or including only specified fields. */\r\n fieldsSelector?: {\r\n /** Should the specified fields be included or excluded */\r\n type: \"include\" | \"exclude\";\r\n /** A list of field descriptors that identify fields to include / exclude */\r\n fields: FieldDescriptor[];\r\n };\r\n\r\n /** Specification for sorting data. */\r\n sorting?: {\r\n /** Identifier of the field to use for sorting */\r\n field: FieldDescriptor;\r\n /** Sort direction */\r\n direction: SortDirection;\r\n };\r\n\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Descriptor properties\r\n * @public\r\n */\r\nexport interface DescriptorSource {\r\n /** Id of the connection used to create the descriptor */\r\n readonly connectionId?: string;\r\n /** Hash of the input keys used to create the descriptor */\r\n readonly inputKeysHash?: string;\r\n /** Selection info used to create the descriptor */\r\n readonly selectionInfo?: SelectionInfo;\r\n /** Display type used to create the descriptor */\r\n readonly displayType: string;\r\n /** A list of classes that will be selected from when creating content with this descriptor */\r\n readonly selectClasses: SelectClassInfo[];\r\n /** A list of content field categories used in this descriptor */\r\n readonly categories: CategoryDescription[];\r\n /** A list of fields contained in the descriptor */\r\n readonly fields: Field[];\r\n /** [[ContentFlags]] used to create the descriptor */\r\n readonly contentFlags: number;\r\n /** Field used to sort the content */\r\n readonly sortingField?: Field;\r\n /** Sorting direction */\r\n readonly sortDirection?: SortDirection;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Data structure that describes content: fields, sorting, filtering, format, etc.\r\n * Descriptor may be changed to control how content is created.\r\n *\r\n * @public\r\n */\r\nexport class Descriptor implements DescriptorSource {\r\n /** Id of the connection used to create the descriptor */\r\n public readonly connectionId?: string;\r\n /** Hash of the input keys used to create the descriptor */\r\n public readonly inputKeysHash?: string;\r\n /**\r\n * Extended options used to create the descriptor.\r\n * @deprecated since 3.6. The attribute is not used anymore.\r\n */\r\n public readonly contentOptions: any;\r\n /** Selection info used to create the descriptor */\r\n public readonly selectionInfo?: SelectionInfo;\r\n /** Display type used to create the descriptor */\r\n public readonly displayType: string;\r\n /** A list of classes that will be selected when creating content with this descriptor */\r\n public readonly selectClasses: SelectClassInfo[];\r\n /** A list of content field categories used in this descriptor */\r\n public readonly categories: CategoryDescription[];\r\n /** A list of fields contained in the descriptor */\r\n public readonly fields: Field[];\r\n /** [[ContentFlags]] used to create the descriptor */\r\n public readonly contentFlags: number;\r\n /** Field used to sort the content */\r\n public sortingField?: Field;\r\n /** Sorting direction */\r\n public sortDirection?: SortDirection;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n public filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n public fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n public instanceFilter?: InstanceFilterDefinition;\r\n\r\n /** Construct a new Descriptor using a [[DescriptorSource]] */\r\n public constructor(source: DescriptorSource) {\r\n this.connectionId = source.connectionId;\r\n this.inputKeysHash = source.inputKeysHash;\r\n this.selectionInfo = source.selectionInfo;\r\n this.displayType = source.displayType;\r\n this.contentFlags = source.contentFlags;\r\n this.selectClasses = [...source.selectClasses];\r\n this.categories = [...source.categories];\r\n this.fields = [...source.fields];\r\n this.sortingField = source.sortingField;\r\n this.sortDirection = source.sortDirection;\r\n this.filterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation\r\n this.fieldsFilterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation\r\n this.instanceFilter = source.instanceFilter;\r\n }\r\n\r\n /** Serialize [[Descriptor]] to JSON */\r\n public toJSON(): DescriptorJSON {\r\n const classesMap: { [id: string]: CompressedClassInfoJSON } = {};\r\n const selectClasses: SelectClassInfoJSON<string>[] = this.selectClasses.map((selectClass) => SelectClassInfo.toCompressedJSON(selectClass, classesMap));\r\n const fields: FieldJSON<string>[] = this.fields.map((field) => field.toCompressedJSON(classesMap));\r\n return Object.assign(\r\n {\r\n displayType: this.displayType,\r\n contentFlags: this.contentFlags,\r\n categories: this.categories.map(CategoryDescription.toJSON),\r\n fields,\r\n selectClasses,\r\n classesMap,\r\n },\r\n this.connectionId !== undefined && { connectionId: this.connectionId },\r\n this.inputKeysHash !== undefined && { inputKeysHash: this.inputKeysHash },\r\n // istanbul ignore next\r\n this.contentOptions !== undefined && { contentOptions: this.contentOptions }, // eslint-disable-line deprecation/deprecation\r\n this.sortingField !== undefined && { sortingFieldName: this.sortingField.name },\r\n this.sortDirection !== undefined && { sortDirection: this.sortDirection },\r\n this.filterExpression !== undefined && { filterExpression: this.filterExpression }, // eslint-disable-line deprecation/deprecation\r\n this.fieldsFilterExpression !== undefined && { fieldsFilterExpression: this.fieldsFilterExpression },\r\n this.instanceFilter !== undefined && { instanceFilter: this.instanceFilter },\r\n this.selectionInfo !== undefined && { selectionInfo: this.selectionInfo },\r\n );\r\n }\r\n\r\n /** Deserialize [[Descriptor]] from JSON */\r\n public static fromJSON(json: DescriptorJSON | undefined): Descriptor | undefined {\r\n if (!json)\r\n return undefined;\r\n\r\n const { classesMap, ...leftOverJson } = json;\r\n const categories = CategoryDescription.listFromJSON(json.categories);\r\n const selectClasses = SelectClassInfo.listFromCompressedJSON(json.selectClasses, classesMap);\r\n const fields = this.getFieldsFromJSON(json.fields, (fieldJson) => Field.fromCompressedJSON(fieldJson, classesMap, categories));\r\n return new Descriptor({\r\n ...leftOverJson,\r\n selectClasses,\r\n categories,\r\n fields,\r\n sortingField: getFieldByName(fields, json.sortingFieldName, true),\r\n });\r\n }\r\n\r\n private static getFieldsFromJSON(json: FieldJSON[], factory: (json: FieldJSON) => Field | undefined): Field[] {\r\n return json.map((fieldJson: FieldJSON) => {\r\n const field = factory(fieldJson);\r\n if (field)\r\n field.rebuildParentship();\r\n return field;\r\n }).filter((field): field is Field => !!field);\r\n }\r\n\r\n /**\r\n * Get field by its name\r\n * @param name Name of the field to find\r\n * @param recurse Recurse into nested fields\r\n */\r\n public getFieldByName(name: string, recurse?: boolean): Field | undefined {\r\n return getFieldByName(this.fields, name, recurse);\r\n }\r\n\r\n /**\r\n * Create descriptor overrides object from this descriptor.\r\n * @public\r\n */\r\n public createDescriptorOverrides(): DescriptorOverrides {\r\n const overrides: DescriptorOverrides = {};\r\n if (this.displayType)\r\n overrides.displayType = this.displayType;\r\n if (this.contentFlags !== 0)\r\n overrides.contentFlags = this.contentFlags;\r\n if (this.filterExpression || this.fieldsFilterExpression) // eslint-disable-line deprecation/deprecation\r\n overrides.fieldsFilterExpression = this.fieldsFilterExpression ?? this.filterExpression; // eslint-disable-line deprecation/deprecation\r\n if (this.instanceFilter)\r\n overrides.instanceFilter = this.instanceFilter;\r\n if (this.sortingField)\r\n overrides.sorting = { field: this.sortingField.getFieldDescriptor(), direction: this.sortDirection ?? SortDirection.Ascending };\r\n return overrides;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Descriptor.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Descriptor.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Content\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n ClassInfo, ClassInfoJSON, CompressedClassInfoJSON, RelatedClassInfo, RelatedClassInfoJSON, RelatedClassInfoWithOptionalRelationship,\r\n RelatedClassInfoWithOptionalRelationshipJSON, RelationshipPath, RelationshipPathJSON,\r\n} from \"../EC\";\r\nimport { InstanceFilterDefinition } from \"../InstanceFilterDefinition\";\r\nimport { CategoryDescription, CategoryDescriptionJSON } from \"./Category\";\r\nimport { Field, FieldDescriptor, FieldJSON, getFieldByName } from \"./Fields\";\r\n\r\n/**\r\n * Data structure that describes an ECClass in content [[Descriptor]].\r\n * @public\r\n */\r\nexport interface SelectClassInfo {\r\n /** Information about the ECClass */\r\n selectClassInfo: ClassInfo;\r\n\r\n /** Is the class handled polymorphically */\r\n isSelectPolymorphic: boolean;\r\n\r\n /** Relationship path from input class to the select class. */\r\n pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationship[];\r\n\r\n /** Relationship paths to [related property]($docs/presentation/content/Terminology#related-properties) classes */\r\n relatedPropertyPaths?: RelationshipPath[];\r\n\r\n /** Relationship paths to navigation property classes */\r\n navigationPropertyClasses?: RelatedClassInfo[];\r\n\r\n /** Relationship paths to [related instance]($docs/presentation/content/Terminology#related-instance) classes. */\r\n relatedInstancePaths?: RelationshipPath[];\r\n}\r\n\r\n/**\r\n * Serialized [[SelectClassInfo]] JSON representation\r\n * @public\r\n */\r\n// eslint-disable-next-line deprecation/deprecation\r\nexport interface SelectClassInfoJSON<TClassInfoJSON = ClassInfoJSON> {\r\n selectClassInfo: TClassInfoJSON;\r\n isSelectPolymorphic: boolean;\r\n pathFromInputToSelectClass?: RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON>[];\r\n relatedPropertyPaths?: RelationshipPathJSON<TClassInfoJSON>[];\r\n navigationPropertyClasses?: RelatedClassInfoJSON<TClassInfoJSON>[];\r\n relatedInstancePaths?: RelationshipPathJSON<TClassInfoJSON>[];\r\n}\r\n\r\n/** @public */\r\nexport namespace SelectClassInfo {\r\n /** Deserialize [[SelectClassInfo]] from compressed JSON */\r\n export function fromCompressedJSON(json: SelectClassInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfo {\r\n assert(classesMap.hasOwnProperty(json.selectClassInfo));\r\n return {\r\n selectClassInfo: { id: json.selectClassInfo, ...classesMap[json.selectClassInfo] },\r\n isSelectPolymorphic: json.isSelectPolymorphic,\r\n ...(json.navigationPropertyClasses ? { navigationPropertyClasses: json.navigationPropertyClasses.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap)) } : undefined),\r\n ...(json.relatedInstancePaths ? { relatedInstancePaths: json.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),\r\n ...(json.pathFromInputToSelectClass ? { pathFromInputToSelectClass: json.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.fromCompressedJSON(item, classesMap)) } : undefined),\r\n ...(json.relatedPropertyPaths ? { relatedPropertyPaths: json.relatedPropertyPaths.map((path) => path.map((item) => RelatedClassInfo.fromCompressedJSON(item, classesMap))) } : undefined),\r\n };\r\n }\r\n\r\n /** Serialize [[SelectClassInfo]] to compressed JSON */\r\n export function toCompressedJSON(selectClass: SelectClassInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfoJSON<string> {\r\n const { id, ...leftOverClassInfo } = selectClass.selectClassInfo;\r\n classesMap[id] = leftOverClassInfo;\r\n return {\r\n selectClassInfo: id,\r\n isSelectPolymorphic: selectClass.isSelectPolymorphic,\r\n ...(selectClass.relatedInstancePaths ? { relatedInstancePaths: selectClass.relatedInstancePaths.map((rip) => rip.map((item) => RelatedClassInfo.toCompressedJSON(item, classesMap))) } : undefined),\r\n ...(selectClass.navigationPropertyClasses ? { navigationPropertyClasses: selectClass.navigationPropertyClasses.map((propertyClass) => RelatedClassInfo.toCompressedJSON(propertyClass, classesMap)) } : undefined),\r\n ...(selectClass.pathFromInputToSelectClass ? { pathFromInputToSelectClass: selectClass.pathFromInputToSelectClass.map((item) => RelatedClassInfoWithOptionalRelationship.toCompressedJSON(item, classesMap)) } : undefined),\r\n ...(selectClass.relatedPropertyPaths ? { relatedPropertyPaths: selectClass.relatedPropertyPaths.map((path) => path.map((relatedClass) => RelatedClassInfo.toCompressedJSON(relatedClass, classesMap))) } : undefined),\r\n };\r\n }\r\n\r\n /**\r\n * Deserialize [[SelectClassInfo]] list from JSON\r\n * @param json JSON or JSON serialized to string to deserialize from\r\n * @returns Deserialized [[SelectClassInfo]] objects list\r\n *\r\n * @internal\r\n */\r\n export function listFromCompressedJSON(json: SelectClassInfoJSON<Id64String>[], classesMap: { [id: string]: CompressedClassInfoJSON }): SelectClassInfo[] {\r\n return json.map((sci) => fromCompressedJSON(sci, classesMap));\r\n }\r\n}\r\n\r\n/**\r\n * Flags that control content format.\r\n * @public\r\n */\r\nexport enum ContentFlags {\r\n /** Each content record only has [[InstanceKey]] and no data */\r\n KeysOnly = 1 << 0,\r\n\r\n /**\r\n * Each content record additionally has an image id\r\n * @deprecated in 3.x. Use [[ExtendedDataRule]] instead. See [extended data usage page]($docs/presentation/customization/ExtendedDataUsage.md) for more details.\r\n */\r\n ShowImages = 1 << 1,\r\n\r\n /** Each content record additionally has a display label */\r\n ShowLabels = 1 << 2,\r\n\r\n /** All content records are merged into a single record (see [Merging values]($docs/presentation/content/terminology#value-merging)) */\r\n MergeResults = 1 << 3,\r\n\r\n /** Content has only distinct values */\r\n DistinctValues = 1 << 4,\r\n\r\n /** Doesn't create property or calculated fields. Can be used in conjunction with [[ShowLabels]]. */\r\n NoFields = 1 << 5,\r\n\r\n /**\r\n * Set related input keys on [[Item]] objects when creating content. This helps identify which [[Item]] is associated to which\r\n * given input key at the cost of performance creating those items.\r\n */\r\n IncludeInputKeys = 1 << 8,\r\n\r\n /**\r\n * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain\r\n * operations to make obtaining content descriptor faster.\r\n * @internal\r\n */\r\n DescriptorOnly = 1 << 9,\r\n}\r\n\r\n/**\r\n * Data sorting direction\r\n * @public\r\n */\r\nexport enum SortDirection {\r\n Ascending,\r\n Descending,\r\n}\r\n\r\n/**\r\n * Data structure that contains selection information. Used\r\n * for cases when requesting content after a selection change.\r\n *\r\n * @public\r\n */\r\nexport interface SelectionInfo {\r\n /** Name of selection provider which cause the selection change */\r\n providerName: string;\r\n /** Level of selection that changed */\r\n level?: number;\r\n}\r\n\r\n/**\r\n * Serialized [[Descriptor]] JSON representation.\r\n * @public\r\n */\r\nexport interface DescriptorJSON {\r\n classesMap: { [id: string]: CompressedClassInfoJSON };\r\n connectionId: string;\r\n inputKeysHash: string;\r\n /** @deprecated in 3.x. The attribute is not used anymore. */\r\n contentOptions: any;\r\n selectionInfo?: SelectionInfo;\r\n displayType: string;\r\n selectClasses: SelectClassInfoJSON<Id64String>[];\r\n categories: CategoryDescriptionJSON[];\r\n fields: FieldJSON<Id64String>[];\r\n sortingFieldName?: string;\r\n sortDirection?: SortDirection;\r\n contentFlags: number;\r\n /** @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]]. */\r\n filterExpression?: string;\r\n fieldsFilterExpression?: string;\r\n /** @beta */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Descriptor overrides that can be used to customize content\r\n * @public\r\n */\r\nexport interface DescriptorOverrides {\r\n /**\r\n * Content display type. Can be accessed in presentation rules and used\r\n * to modify content in various ways. Defaults to empty string.\r\n */\r\n displayType?: string;\r\n\r\n /** Content flags used for content customization. See [[ContentFlags]] */\r\n contentFlags?: number;\r\n\r\n /** Fields selector that allows excluding or including only specified fields. */\r\n fieldsSelector?: {\r\n /** Should the specified fields be included or excluded */\r\n type: \"include\" | \"exclude\";\r\n /** A list of field descriptors that identify fields to include / exclude */\r\n fields: FieldDescriptor[];\r\n };\r\n\r\n /** Specification for sorting data. */\r\n sorting?: {\r\n /** Identifier of the field to use for sorting */\r\n field: FieldDescriptor;\r\n /** Sort direction */\r\n direction: SortDirection;\r\n };\r\n\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Descriptor properties\r\n * @public\r\n */\r\nexport interface DescriptorSource {\r\n /** Id of the connection used to create the descriptor */\r\n readonly connectionId?: string;\r\n /** Hash of the input keys used to create the descriptor */\r\n readonly inputKeysHash?: string;\r\n /** Selection info used to create the descriptor */\r\n readonly selectionInfo?: SelectionInfo;\r\n /** Display type used to create the descriptor */\r\n readonly displayType: string;\r\n /** A list of classes that will be selected from when creating content with this descriptor */\r\n readonly selectClasses: SelectClassInfo[];\r\n /** A list of content field categories used in this descriptor */\r\n readonly categories: CategoryDescription[];\r\n /** A list of fields contained in the descriptor */\r\n readonly fields: Field[];\r\n /** [[ContentFlags]] used to create the descriptor */\r\n readonly contentFlags: number;\r\n /** Field used to sort the content */\r\n readonly sortingField?: Field;\r\n /** Sorting direction */\r\n readonly sortDirection?: SortDirection;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n}\r\n\r\n/**\r\n * Data structure that describes content: fields, sorting, filtering, format, etc.\r\n * Descriptor may be changed to control how content is created.\r\n *\r\n * @public\r\n */\r\nexport class Descriptor implements DescriptorSource {\r\n /** Id of the connection used to create the descriptor */\r\n public readonly connectionId?: string;\r\n /** Hash of the input keys used to create the descriptor */\r\n public readonly inputKeysHash?: string;\r\n /**\r\n * Extended options used to create the descriptor.\r\n * @deprecated in 3.6. The attribute is not used anymore.\r\n */\r\n public readonly contentOptions: any;\r\n /** Selection info used to create the descriptor */\r\n public readonly selectionInfo?: SelectionInfo;\r\n /** Display type used to create the descriptor */\r\n public readonly displayType: string;\r\n /** A list of classes that will be selected when creating content with this descriptor */\r\n public readonly selectClasses: SelectClassInfo[];\r\n /** A list of content field categories used in this descriptor */\r\n public readonly categories: CategoryDescription[];\r\n /** A list of fields contained in the descriptor */\r\n public readonly fields: Field[];\r\n /** [[ContentFlags]] used to create the descriptor */\r\n public readonly contentFlags: number;\r\n /** Field used to sort the content */\r\n public sortingField?: Field;\r\n /** Sorting direction */\r\n public sortDirection?: SortDirection;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content\r\n * @deprecated in 3.x. The attribute was replaced with [[fieldsFilterExpression]].\r\n */\r\n public filterExpression?: string;\r\n /**\r\n * [ECExpression]($docs/presentation/advanced/ECExpressions.md) for filtering content by\r\n * select fields.\r\n *\r\n * This is different from [[instanceFilter]] as filtering is applied on the union of all selects,\r\n * which removes access to content instance property values. Instead of referencing properties\r\n * through `this.PropertyName` alias, the expression should reference them by field names. In cases\r\n * when properties field merges multiple properties, this allows applying the filter on all of them\r\n * at once. This is useful for filtering table rows by column value, when content is displayed in\r\n * table format.\r\n */\r\n public fieldsFilterExpression?: string;\r\n /**\r\n * Instances filter that allows filtering content by class, properties of specific class\r\n * or properties of instances related to the content instance.\r\n *\r\n * This is different from [[fieldsFilterExpression]] as filter is applied at a lower level - on\r\n * specific select class rather than a union of multiple select classes. This means the filter has\r\n * access to properties of that class and they can be referenced using symbols like `this.Property`.\r\n * This is useful for filtering instances of specific class.\r\n *\r\n * @beta\r\n */\r\n public instanceFilter?: InstanceFilterDefinition;\r\n\r\n /** Construct a new Descriptor using a [[DescriptorSource]] */\r\n public constructor(source: DescriptorSource) {\r\n this.connectionId = source.connectionId;\r\n this.inputKeysHash = source.inputKeysHash;\r\n this.selectionInfo = source.selectionInfo;\r\n this.displayType = source.displayType;\r\n this.contentFlags = source.contentFlags;\r\n this.selectClasses = [...source.selectClasses];\r\n this.categories = [...source.categories];\r\n this.fields = [...source.fields];\r\n this.sortingField = source.sortingField;\r\n this.sortDirection = source.sortDirection;\r\n this.filterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation\r\n this.fieldsFilterExpression = source.fieldsFilterExpression ?? source.filterExpression; // eslint-disable-line deprecation/deprecation\r\n this.instanceFilter = source.instanceFilter;\r\n }\r\n\r\n /** Serialize [[Descriptor]] to JSON */\r\n public toJSON(): DescriptorJSON {\r\n const classesMap: { [id: string]: CompressedClassInfoJSON } = {};\r\n const selectClasses: SelectClassInfoJSON<string>[] = this.selectClasses.map((selectClass) => SelectClassInfo.toCompressedJSON(selectClass, classesMap));\r\n const fields: FieldJSON<string>[] = this.fields.map((field) => field.toCompressedJSON(classesMap));\r\n return Object.assign(\r\n {\r\n displayType: this.displayType,\r\n contentFlags: this.contentFlags,\r\n categories: this.categories.map(CategoryDescription.toJSON),\r\n fields,\r\n selectClasses,\r\n classesMap,\r\n },\r\n this.connectionId !== undefined && { connectionId: this.connectionId },\r\n this.inputKeysHash !== undefined && { inputKeysHash: this.inputKeysHash },\r\n // istanbul ignore next\r\n this.contentOptions !== undefined && { contentOptions: this.contentOptions }, // eslint-disable-line deprecation/deprecation\r\n this.sortingField !== undefined && { sortingFieldName: this.sortingField.name },\r\n this.sortDirection !== undefined && { sortDirection: this.sortDirection },\r\n this.filterExpression !== undefined && { filterExpression: this.filterExpression }, // eslint-disable-line deprecation/deprecation\r\n this.fieldsFilterExpression !== undefined && { fieldsFilterExpression: this.fieldsFilterExpression },\r\n this.instanceFilter !== undefined && { instanceFilter: this.instanceFilter },\r\n this.selectionInfo !== undefined && { selectionInfo: this.selectionInfo },\r\n );\r\n }\r\n\r\n /** Deserialize [[Descriptor]] from JSON */\r\n public static fromJSON(json: DescriptorJSON | undefined): Descriptor | undefined {\r\n if (!json)\r\n return undefined;\r\n\r\n const { classesMap, ...leftOverJson } = json;\r\n const categories = CategoryDescription.listFromJSON(json.categories);\r\n const selectClasses = SelectClassInfo.listFromCompressedJSON(json.selectClasses, classesMap);\r\n const fields = this.getFieldsFromJSON(json.fields, (fieldJson) => Field.fromCompressedJSON(fieldJson, classesMap, categories));\r\n return new Descriptor({\r\n ...leftOverJson,\r\n selectClasses,\r\n categories,\r\n fields,\r\n sortingField: getFieldByName(fields, json.sortingFieldName, true),\r\n });\r\n }\r\n\r\n private static getFieldsFromJSON(json: FieldJSON[], factory: (json: FieldJSON) => Field | undefined): Field[] {\r\n return json.map((fieldJson: FieldJSON) => {\r\n const field = factory(fieldJson);\r\n if (field)\r\n field.rebuildParentship();\r\n return field;\r\n }).filter((field): field is Field => !!field);\r\n }\r\n\r\n /**\r\n * Get field by its name\r\n * @param name Name of the field to find\r\n * @param recurse Recurse into nested fields\r\n */\r\n public getFieldByName(name: string, recurse?: boolean): Field | undefined {\r\n return getFieldByName(this.fields, name, recurse);\r\n }\r\n\r\n /**\r\n * Create descriptor overrides object from this descriptor.\r\n * @public\r\n */\r\n public createDescriptorOverrides(): DescriptorOverrides {\r\n const overrides: DescriptorOverrides = {};\r\n if (this.displayType)\r\n overrides.displayType = this.displayType;\r\n if (this.contentFlags !== 0)\r\n overrides.contentFlags = this.contentFlags;\r\n if (this.filterExpression || this.fieldsFilterExpression) // eslint-disable-line deprecation/deprecation\r\n overrides.fieldsFilterExpression = this.fieldsFilterExpression ?? this.filterExpression; // eslint-disable-line deprecation/deprecation\r\n if (this.instanceFilter)\r\n overrides.instanceFilter = this.instanceFilter;\r\n if (this.sortingField)\r\n overrides.sorting = { field: this.sortingField.getFieldDescriptor(), direction: this.sortDirection ?? SortDirection.Ascending };\r\n return overrides;\r\n }\r\n}\r\n"]}
@@ -1,22 +1,22 @@
1
- /** @packageDocumentation
2
- * @module Content
3
- */
4
- /**
5
- * Displayed content types. Affects how the content is formatted, e.g.
6
- * the [[ContentFlags]].
7
- *
8
- * @public
9
- */
10
- export declare enum DefaultContentDisplayTypes {
11
- /** Unknown content type. */
12
- Undefined = "Undefined",
13
- /** Grid or table view content type. By default adds [[ContentFlags.ShowLabels]] flag. */
14
- Grid = "Grid",
15
- /** Property pane content type. By default adds [[ContentFlags.MergeResults]] flag. */
16
- PropertyPane = "PropertyPane",
17
- /** List content type. By default adds [[ContentFlags.NoFields]] and [[ContentFlags.ShowLabels]] flags */
18
- List = "List",
19
- /** Viewport content type. By default adds [[ContentFlags.KeysOnly]] flag. */
20
- Viewport = "Graphics"
21
- }
1
+ /** @packageDocumentation
2
+ * @module Content
3
+ */
4
+ /**
5
+ * Displayed content types. Affects how the content is formatted, e.g.
6
+ * the [[ContentFlags]].
7
+ *
8
+ * @public
9
+ */
10
+ export declare enum DefaultContentDisplayTypes {
11
+ /** Unknown content type. */
12
+ Undefined = "Undefined",
13
+ /** Grid or table view content type. By default adds [[ContentFlags.ShowLabels]] flag. */
14
+ Grid = "Grid",
15
+ /** Property pane content type. By default adds [[ContentFlags.MergeResults]] flag. */
16
+ PropertyPane = "PropertyPane",
17
+ /** List content type. By default adds [[ContentFlags.NoFields]] and [[ContentFlags.ShowLabels]] flags */
18
+ List = "List",
19
+ /** Viewport content type. By default adds [[ContentFlags.KeysOnly]] flag. */
20
+ Viewport = "Graphics"
21
+ }
22
22
  //# sourceMappingURL=DisplayTypes.d.ts.map