@itwin/presentation-common 4.5.0-dev.2 → 4.5.0-dev.21

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 (393) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +1 -1
  4. package/Ruleset.schema.json +72 -19
  5. package/lib/cjs/assets/locales/en/Presentation.json +19 -19
  6. package/lib/cjs/presentation-common/AsyncTasks.d.ts.map +1 -1
  7. package/lib/cjs/presentation-common/AsyncTasks.js +6 -4
  8. package/lib/cjs/presentation-common/AsyncTasks.js.map +1 -1
  9. package/lib/cjs/presentation-common/CommonLoggerCategory.js +3 -3
  10. package/lib/cjs/presentation-common/CommonLoggerCategory.js.map +1 -1
  11. package/lib/cjs/presentation-common/Diagnostics.d.ts.map +1 -1
  12. package/lib/cjs/presentation-common/Diagnostics.js +27 -15
  13. package/lib/cjs/presentation-common/Diagnostics.js.map +1 -1
  14. package/lib/cjs/presentation-common/EC.d.ts +7 -4
  15. package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
  16. package/lib/cjs/presentation-common/EC.js +22 -17
  17. package/lib/cjs/presentation-common/EC.js.map +1 -1
  18. package/lib/cjs/presentation-common/ElementProperties.js +3 -3
  19. package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
  20. package/lib/cjs/presentation-common/Error.d.ts.map +1 -1
  21. package/lib/cjs/presentation-common/Error.js +5 -4
  22. package/lib/cjs/presentation-common/Error.js.map +1 -1
  23. package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  24. package/lib/cjs/presentation-common/InstanceFilterDefinition.js +3 -3
  25. package/lib/cjs/presentation-common/InstanceFilterDefinition.js.map +1 -1
  26. package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
  27. package/lib/cjs/presentation-common/KeySet.js +80 -46
  28. package/lib/cjs/presentation-common/KeySet.js.map +1 -1
  29. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  30. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  31. package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
  32. package/lib/cjs/presentation-common/LabelDefinition.js +5 -4
  33. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  34. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  35. package/lib/cjs/presentation-common/PresentationIpcInterface.js +3 -3
  36. package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
  37. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  38. package/lib/cjs/presentation-common/PresentationManagerOptions.js +3 -3
  39. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  40. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  41. package/lib/cjs/presentation-common/PresentationRpcInterface.js +52 -20
  42. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  43. package/lib/cjs/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  44. package/lib/cjs/presentation-common/RegisteredRuleset.js +21 -9
  45. package/lib/cjs/presentation-common/RegisteredRuleset.js.map +1 -1
  46. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +1 -1
  47. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  48. package/lib/cjs/presentation-common/RpcRequestsHandler.js +19 -15
  49. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  50. package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
  51. package/lib/cjs/presentation-common/RulesetVariables.js +7 -5
  52. package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
  53. package/lib/cjs/presentation-common/RulesetsFactory.d.ts.map +1 -1
  54. package/lib/cjs/presentation-common/RulesetsFactory.js +42 -26
  55. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  56. package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
  57. package/lib/cjs/presentation-common/Update.js +4 -3
  58. package/lib/cjs/presentation-common/Update.js.map +1 -1
  59. package/lib/cjs/presentation-common/Utils.js +3 -3
  60. package/lib/cjs/presentation-common/Utils.js.map +1 -1
  61. package/lib/cjs/presentation-common/content/Category.js +3 -3
  62. package/lib/cjs/presentation-common/content/Category.js.map +1 -1
  63. package/lib/cjs/presentation-common/content/Content.d.ts.map +1 -1
  64. package/lib/cjs/presentation-common/content/Content.js +10 -9
  65. package/lib/cjs/presentation-common/content/Content.js.map +1 -1
  66. package/lib/cjs/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  67. package/lib/cjs/presentation-common/content/ContentTraverser.js +47 -25
  68. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  69. package/lib/cjs/presentation-common/content/Descriptor.d.ts.map +1 -1
  70. package/lib/cjs/presentation-common/content/Descriptor.js +56 -21
  71. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  72. package/lib/cjs/presentation-common/content/DisplayTypes.js +3 -3
  73. package/lib/cjs/presentation-common/content/DisplayTypes.js.map +1 -1
  74. package/lib/cjs/presentation-common/content/Editor.js +3 -3
  75. package/lib/cjs/presentation-common/content/Editor.js.map +1 -1
  76. package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
  77. package/lib/cjs/presentation-common/content/Fields.js +47 -23
  78. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  79. package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
  80. package/lib/cjs/presentation-common/content/Item.js +8 -6
  81. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  82. package/lib/cjs/presentation-common/content/Property.d.ts +1 -1
  83. package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
  84. package/lib/cjs/presentation-common/content/Property.js +4 -4
  85. package/lib/cjs/presentation-common/content/Property.js.map +1 -1
  86. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  87. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +13 -11
  88. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  89. package/lib/cjs/presentation-common/content/Renderer.js +3 -3
  90. package/lib/cjs/presentation-common/content/Renderer.js.map +1 -1
  91. package/lib/cjs/presentation-common/content/TypeDescription.js +3 -3
  92. package/lib/cjs/presentation-common/content/TypeDescription.js.map +1 -1
  93. package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
  94. package/lib/cjs/presentation-common/content/Value.js +46 -30
  95. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  96. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  97. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  98. package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
  99. package/lib/cjs/presentation-common/hierarchy/Key.js +14 -8
  100. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  101. package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
  102. package/lib/cjs/presentation-common/hierarchy/Node.js +7 -5
  103. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  104. package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  105. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +11 -7
  106. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  107. package/lib/cjs/presentation-common/rules/ClassSpecifications.js +3 -3
  108. package/lib/cjs/presentation-common/rules/ClassSpecifications.js.map +1 -1
  109. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts +39 -11
  110. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts.map +1 -1
  111. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  112. package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  113. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +3 -3
  114. package/lib/cjs/presentation-common/rules/RelationshipDirection.js.map +1 -1
  115. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  116. package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  117. package/lib/cjs/presentation-common/rules/Rule.js +3 -3
  118. package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
  119. package/lib/cjs/presentation-common/rules/Ruleset.js +3 -3
  120. package/lib/cjs/presentation-common/rules/Ruleset.js.map +1 -1
  121. package/lib/cjs/presentation-common/rules/SchemasSpecification.js +3 -3
  122. package/lib/cjs/presentation-common/rules/SchemasSpecification.js.map +1 -1
  123. package/lib/cjs/presentation-common/rules/Variables.js +3 -3
  124. package/lib/cjs/presentation-common/rules/Variables.js.map +1 -1
  125. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  126. package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  127. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  128. package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  129. package/lib/cjs/presentation-common/rules/content/ContentRule.js +3 -3
  130. package/lib/cjs/presentation-common/rules/content/ContentRule.js.map +1 -1
  131. package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  132. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +3 -3
  133. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  134. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  135. package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  136. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +3 -3
  137. package/lib/cjs/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  138. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  139. package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  140. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  141. package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  142. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  143. package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  144. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  145. package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  146. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  147. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  148. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  149. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  150. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  151. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  152. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  153. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  154. package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  155. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  156. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  157. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +3 -3
  158. package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  159. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  160. package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  161. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +3 -3
  162. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  163. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  164. package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  165. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  166. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  167. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  168. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +3 -3
  169. package/lib/cjs/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  170. package/lib/cjs/presentation-common/rules/customization/SortingRule.js +3 -3
  171. package/lib/cjs/presentation-common/rules/customization/SortingRule.js.map +1 -1
  172. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +3 -3
  173. package/lib/cjs/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  174. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  175. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  176. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  177. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  178. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  179. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  180. package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  181. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  182. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  183. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  184. package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  185. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  186. package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  187. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  188. package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  189. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  190. package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  191. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  192. package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  193. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  194. package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  195. package/lib/cjs/presentation-common/selection/SelectionScope.js +3 -3
  196. package/lib/cjs/presentation-common/selection/SelectionScope.js.map +1 -1
  197. package/lib/cjs/presentation-common.js +3 -3
  198. package/lib/cjs/presentation-common.js.map +1 -1
  199. package/lib/esm/presentation-common/AsyncTasks.d.ts.map +1 -1
  200. package/lib/esm/presentation-common/AsyncTasks.js +6 -4
  201. package/lib/esm/presentation-common/AsyncTasks.js.map +1 -1
  202. package/lib/esm/presentation-common/CommonLoggerCategory.js +3 -3
  203. package/lib/esm/presentation-common/CommonLoggerCategory.js.map +1 -1
  204. package/lib/esm/presentation-common/Diagnostics.d.ts.map +1 -1
  205. package/lib/esm/presentation-common/Diagnostics.js +27 -15
  206. package/lib/esm/presentation-common/Diagnostics.js.map +1 -1
  207. package/lib/esm/presentation-common/EC.d.ts +7 -4
  208. package/lib/esm/presentation-common/EC.d.ts.map +1 -1
  209. package/lib/esm/presentation-common/EC.js +22 -17
  210. package/lib/esm/presentation-common/EC.js.map +1 -1
  211. package/lib/esm/presentation-common/ElementProperties.js +3 -3
  212. package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
  213. package/lib/esm/presentation-common/Error.d.ts.map +1 -1
  214. package/lib/esm/presentation-common/Error.js +5 -4
  215. package/lib/esm/presentation-common/Error.js.map +1 -1
  216. package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
  217. package/lib/esm/presentation-common/InstanceFilterDefinition.js +3 -3
  218. package/lib/esm/presentation-common/InstanceFilterDefinition.js.map +1 -1
  219. package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
  220. package/lib/esm/presentation-common/KeySet.js +80 -46
  221. package/lib/esm/presentation-common/KeySet.js.map +1 -1
  222. package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -1
  223. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  224. package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
  225. package/lib/esm/presentation-common/LabelDefinition.js +5 -4
  226. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  227. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  228. package/lib/esm/presentation-common/PresentationIpcInterface.js +3 -3
  229. package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
  230. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  231. package/lib/esm/presentation-common/PresentationManagerOptions.js +3 -3
  232. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  233. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  234. package/lib/esm/presentation-common/PresentationRpcInterface.js +52 -20
  235. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  236. package/lib/esm/presentation-common/RegisteredRuleset.d.ts.map +1 -1
  237. package/lib/esm/presentation-common/RegisteredRuleset.js +21 -9
  238. package/lib/esm/presentation-common/RegisteredRuleset.js.map +1 -1
  239. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +1 -1
  240. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  241. package/lib/esm/presentation-common/RpcRequestsHandler.js +20 -16
  242. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  243. package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
  244. package/lib/esm/presentation-common/RulesetVariables.js +7 -5
  245. package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
  246. package/lib/esm/presentation-common/RulesetsFactory.d.ts.map +1 -1
  247. package/lib/esm/presentation-common/RulesetsFactory.js +42 -26
  248. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  249. package/lib/esm/presentation-common/Update.d.ts.map +1 -1
  250. package/lib/esm/presentation-common/Update.js +4 -3
  251. package/lib/esm/presentation-common/Update.js.map +1 -1
  252. package/lib/esm/presentation-common/Utils.js +3 -3
  253. package/lib/esm/presentation-common/Utils.js.map +1 -1
  254. package/lib/esm/presentation-common/content/Category.js +3 -3
  255. package/lib/esm/presentation-common/content/Category.js.map +1 -1
  256. package/lib/esm/presentation-common/content/Content.d.ts.map +1 -1
  257. package/lib/esm/presentation-common/content/Content.js +10 -9
  258. package/lib/esm/presentation-common/content/Content.js.map +1 -1
  259. package/lib/esm/presentation-common/content/ContentTraverser.d.ts.map +1 -1
  260. package/lib/esm/presentation-common/content/ContentTraverser.js +47 -25
  261. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  262. package/lib/esm/presentation-common/content/Descriptor.d.ts.map +1 -1
  263. package/lib/esm/presentation-common/content/Descriptor.js +56 -21
  264. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  265. package/lib/esm/presentation-common/content/DisplayTypes.js +3 -3
  266. package/lib/esm/presentation-common/content/DisplayTypes.js.map +1 -1
  267. package/lib/esm/presentation-common/content/Editor.js +3 -3
  268. package/lib/esm/presentation-common/content/Editor.js.map +1 -1
  269. package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
  270. package/lib/esm/presentation-common/content/Fields.js +47 -23
  271. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  272. package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
  273. package/lib/esm/presentation-common/content/Item.js +8 -6
  274. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  275. package/lib/esm/presentation-common/content/Property.d.ts +1 -1
  276. package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
  277. package/lib/esm/presentation-common/content/Property.js +4 -4
  278. package/lib/esm/presentation-common/content/Property.js.map +1 -1
  279. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  280. package/lib/esm/presentation-common/content/PropertyValueFormatter.js +13 -11
  281. package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  282. package/lib/esm/presentation-common/content/Renderer.js +3 -3
  283. package/lib/esm/presentation-common/content/Renderer.js.map +1 -1
  284. package/lib/esm/presentation-common/content/TypeDescription.js +3 -3
  285. package/lib/esm/presentation-common/content/TypeDescription.js.map +1 -1
  286. package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
  287. package/lib/esm/presentation-common/content/Value.js +46 -30
  288. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  289. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +3 -3
  290. package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  291. package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
  292. package/lib/esm/presentation-common/hierarchy/Key.js +14 -8
  293. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  294. package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
  295. package/lib/esm/presentation-common/hierarchy/Node.js +7 -5
  296. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  297. package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
  298. package/lib/esm/presentation-common/hierarchy/NodePathElement.js +11 -7
  299. package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  300. package/lib/esm/presentation-common/rules/ClassSpecifications.js +3 -3
  301. package/lib/esm/presentation-common/rules/ClassSpecifications.js.map +1 -1
  302. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts +39 -11
  303. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts.map +1 -1
  304. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +3 -3
  305. package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js.map +1 -1
  306. package/lib/esm/presentation-common/rules/RelationshipDirection.js +3 -3
  307. package/lib/esm/presentation-common/rules/RelationshipDirection.js.map +1 -1
  308. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +3 -3
  309. package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js.map +1 -1
  310. package/lib/esm/presentation-common/rules/Rule.js +3 -3
  311. package/lib/esm/presentation-common/rules/Rule.js.map +1 -1
  312. package/lib/esm/presentation-common/rules/Ruleset.js +3 -3
  313. package/lib/esm/presentation-common/rules/Ruleset.js.map +1 -1
  314. package/lib/esm/presentation-common/rules/SchemasSpecification.js +3 -3
  315. package/lib/esm/presentation-common/rules/SchemasSpecification.js.map +1 -1
  316. package/lib/esm/presentation-common/rules/Variables.js +3 -3
  317. package/lib/esm/presentation-common/rules/Variables.js.map +1 -1
  318. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +3 -3
  319. package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js.map +1 -1
  320. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +3 -3
  321. package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js.map +1 -1
  322. package/lib/esm/presentation-common/rules/content/ContentRule.js +3 -3
  323. package/lib/esm/presentation-common/rules/content/ContentRule.js.map +1 -1
  324. package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
  325. package/lib/esm/presentation-common/rules/content/ContentSpecification.js +3 -3
  326. package/lib/esm/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  327. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +3 -3
  328. package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js.map +1 -1
  329. package/lib/esm/presentation-common/rules/content/PropertySpecification.js +3 -3
  330. package/lib/esm/presentation-common/rules/content/PropertySpecification.js.map +1 -1
  331. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +3 -3
  332. package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js.map +1 -1
  333. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +3 -3
  334. package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js.map +1 -1
  335. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +3 -3
  336. package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
  337. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +3 -3
  338. package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js.map +1 -1
  339. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +3 -3
  340. package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js.map +1 -1
  341. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts.map +1 -1
  342. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +3 -3
  343. package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  344. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +3 -3
  345. package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  346. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +3 -3
  347. package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js.map +1 -1
  348. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
  349. package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
  350. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +3 -3
  351. package/lib/esm/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
  352. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +3 -3
  353. package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js.map +1 -1
  354. package/lib/esm/presentation-common/rules/customization/GroupingRule.js +3 -3
  355. package/lib/esm/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  356. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +3 -3
  357. package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js.map +1 -1
  358. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
  359. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +3 -3
  360. package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  361. package/lib/esm/presentation-common/rules/customization/LabelOverride.js +3 -3
  362. package/lib/esm/presentation-common/rules/customization/LabelOverride.js.map +1 -1
  363. package/lib/esm/presentation-common/rules/customization/SortingRule.js +3 -3
  364. package/lib/esm/presentation-common/rules/customization/SortingRule.js.map +1 -1
  365. package/lib/esm/presentation-common/rules/customization/StyleOverride.js +3 -3
  366. package/lib/esm/presentation-common/rules/customization/StyleOverride.js.map +1 -1
  367. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +3 -3
  368. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js.map +1 -1
  369. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
  370. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +3 -3
  371. package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  372. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +3 -3
  373. package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
  374. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +3 -3
  375. package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  376. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +3 -3
  377. package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
  378. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +3 -3
  379. package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js.map +1 -1
  380. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +3 -3
  381. package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js.map +1 -1
  382. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +3 -3
  383. package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js.map +1 -1
  384. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +3 -3
  385. package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js.map +1 -1
  386. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +3 -3
  387. package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js.map +1 -1
  388. package/lib/esm/presentation-common/selection/SelectionScope.js +3 -3
  389. package/lib/esm/presentation-common/selection/SelectionScope.js.map +1 -1
  390. package/lib/esm/presentation-common.js +3 -3
  391. package/lib/esm/presentation-common.js.map +1 -1
  392. package/lib/public/locales/en/Presentation.json +19 -19
  393. package/package.json +14 -11
@@ -1,7 +1,7 @@
1
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
- *--------------------------------------------------------------------------------------------*/
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
5
  /** @packageDocumentation
6
6
  * @module Core
7
7
  */
@@ -9,6 +9,7 @@ import { CompressedId64Set, Guid, Id64 } from "@itwin/core-bentley";
9
9
  import { PresentationError, PresentationStatus } from "./Error";
10
10
  import { NodeKey } from "./hierarchy/Key";
11
11
  /** @public */
12
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
12
13
  export var Key;
13
14
  (function (Key) {
14
15
  /** Check if the supplied key is a `NodeKey` */
@@ -43,8 +44,9 @@ export class KeySet {
43
44
  this._lowerCaseMap = new Map();
44
45
  this._nodeKeys = new Set();
45
46
  this.recalculateGuid();
46
- if (source)
47
+ if (source) {
47
48
  this.add(source);
49
+ }
48
50
  }
49
51
  recalculateGuid() {
50
52
  // empty keyset should have empty guid, otherwise use a random guid value
@@ -55,7 +57,9 @@ export class KeySet {
55
57
  * does not uniquely identify contents of the keyset, but it can be
56
58
  * used to check whether keyset has changed.
57
59
  */
58
- get guid() { return this._guid; }
60
+ get guid() {
61
+ return this._guid;
62
+ }
59
63
  /**
60
64
  * Get a map of instance keys stored in this KeySet
61
65
  *
@@ -64,8 +68,9 @@ export class KeySet {
64
68
  */
65
69
  get instanceKeys() {
66
70
  const map = new Map();
67
- for (const entry of this._instanceKeys)
71
+ for (const entry of this._instanceKeys) {
68
72
  map.set(this._lowerCaseMap.get(entry["0"]), new Set([...entry["1"]].map((key) => Id64.fromJSON(key))));
73
+ }
69
74
  return map;
70
75
  }
71
76
  /**
@@ -73,7 +78,7 @@ export class KeySet {
73
78
  */
74
79
  get instanceKeysCount() {
75
80
  let count = 0;
76
- this._instanceKeys.forEach((set) => count += set.size);
81
+ this._instanceKeys.forEach((set) => (count += set.size));
77
82
  return count;
78
83
  }
79
84
  /**
@@ -108,8 +113,9 @@ export class KeySet {
108
113
  * @returns itself
109
114
  */
110
115
  clear() {
111
- if (this.isEmpty)
116
+ if (this.isEmpty) {
112
117
  return this;
118
+ }
113
119
  this._instanceKeys = new Map();
114
120
  this._lowerCaseMap = new Map();
115
121
  this._nodeKeys = new Set();
@@ -119,8 +125,9 @@ export class KeySet {
119
125
  addKeySet(keyset, pred) {
120
126
  for (const key of keyset._nodeKeys) {
121
127
  // eslint-disable-next-line deprecation/deprecation
122
- if (!pred || pred(NodeKey.fromJSON(JSON.parse(key))))
128
+ if (!pred || pred(NodeKey.fromJSON(JSON.parse(key)))) {
123
129
  this._nodeKeys.add(key);
130
+ }
124
131
  }
125
132
  for (const entry of keyset._instanceKeys) {
126
133
  let set = this._instanceKeys.get(entry["0"]);
@@ -131,22 +138,20 @@ export class KeySet {
131
138
  this._lowerCaseMap.set(entry["0"], className);
132
139
  }
133
140
  entry["1"].forEach((id) => {
134
- if (!pred || pred({ className, id }))
141
+ if (!pred || pred({ className, id })) {
135
142
  set.add(id);
143
+ }
136
144
  });
137
145
  }
138
146
  }
139
147
  addKeySetJSON(keyset) {
140
- for (const key of keyset.nodeKeys)
148
+ for (const key of keyset.nodeKeys) {
141
149
  this._nodeKeys.add(JSON.stringify(key));
150
+ }
142
151
  for (const entry of keyset.instanceKeys) {
143
152
  const lcClassName = entry["0"].toLowerCase();
144
153
  const idsJson = entry["1"];
145
- const ids = typeof idsJson === "string"
146
- ? idsJson === Id64.invalid
147
- ? new Set([Id64.invalid])
148
- : CompressedId64Set.decompressSet(idsJson)
149
- : new Set(idsJson);
154
+ const ids = typeof idsJson === "string" ? (idsJson === Id64.invalid ? new Set([Id64.invalid]) : CompressedId64Set.decompressSet(idsJson)) : new Set(idsJson);
150
155
  this._instanceKeys.set(lcClassName, ids);
151
156
  this._lowerCaseMap.set(lcClassName, entry["0"]);
152
157
  }
@@ -158,8 +163,9 @@ export class KeySet {
158
163
  * @returns itself
159
164
  */
160
165
  add(value, pred) {
161
- if (!value)
166
+ if (!value) {
162
167
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
168
+ }
163
169
  const sizeBefore = this.size;
164
170
  if (this.isKeySet(value)) {
165
171
  this.addKeySet(value, pred);
@@ -187,13 +193,15 @@ export class KeySet {
187
193
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
188
194
  }
189
195
  }
190
- if (this.size !== sizeBefore)
196
+ if (this.size !== sizeBefore) {
191
197
  this.recalculateGuid();
198
+ }
192
199
  return this;
193
200
  }
194
201
  deleteKeySet(keyset) {
195
- for (const key of keyset._nodeKeys)
202
+ for (const key of keyset._nodeKeys) {
196
203
  this._nodeKeys.delete(key);
204
+ }
197
205
  for (const entry of keyset._instanceKeys) {
198
206
  const set = this._instanceKeys.get(entry["0"].toLowerCase());
199
207
  if (set) {
@@ -209,23 +217,26 @@ export class KeySet {
209
217
  * @returns itself
210
218
  */
211
219
  delete(value) {
212
- if (!value)
220
+ if (!value) {
213
221
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
222
+ }
214
223
  const sizeBefore = this.size;
215
224
  if (this.isKeySet(value)) {
216
225
  this.deleteKeySet(value);
217
226
  }
218
227
  else if (this.isKeysArray(value)) {
219
- for (const key of value)
228
+ for (const key of value) {
220
229
  this.delete(key);
230
+ }
221
231
  }
222
232
  else if (Key.isEntityProps(value)) {
223
233
  this.delete({ className: value.classFullName, id: value.id });
224
234
  }
225
235
  else if (Key.isInstanceKey(value)) {
226
236
  const set = this._instanceKeys.get(value.className.toLowerCase());
227
- if (set)
237
+ if (set) {
228
238
  set.delete(value.id);
239
+ }
229
240
  }
230
241
  else if (Key.isNodeKey(value)) {
231
242
  this._nodeKeys.delete(JSON.stringify(value));
@@ -233,8 +244,9 @@ export class KeySet {
233
244
  else {
234
245
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
235
246
  }
236
- if (this.size !== sizeBefore)
247
+ if (this.size !== sizeBefore) {
237
248
  this.recalculateGuid();
249
+ }
238
250
  return this;
239
251
  }
240
252
  /**
@@ -242,59 +254,71 @@ export class KeySet {
242
254
  * @param value The key to check.
243
255
  */
244
256
  has(value) {
245
- if (!value)
257
+ if (!value) {
246
258
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
247
- if (Key.isEntityProps(value))
259
+ }
260
+ if (Key.isEntityProps(value)) {
248
261
  return this.has({ className: value.classFullName, id: value.id });
262
+ }
249
263
  if (Key.isInstanceKey(value)) {
250
264
  const set = this._instanceKeys.get(value.className.toLowerCase());
251
265
  return !!(set && set.has(value.id));
252
266
  }
253
- if (Key.isNodeKey(value))
267
+ if (Key.isNodeKey(value)) {
254
268
  return this._nodeKeys.has(JSON.stringify(value));
269
+ }
255
270
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
256
271
  }
257
272
  hasKeySet(readonlyKeys, checkType) {
258
273
  // note: cast-away read-onlyness to access private members...
259
274
  const keys = readonlyKeys;
260
275
  if (checkType === "all") {
261
- if (this._nodeKeys.size < keys._nodeKeys.size || this._instanceKeys.size < keys._instanceKeys.size)
276
+ if (this._nodeKeys.size < keys._nodeKeys.size || this._instanceKeys.size < keys._instanceKeys.size) {
262
277
  return false;
263
- if ([...keys._nodeKeys].some((key) => !this._nodeKeys.has(key)))
278
+ }
279
+ if ([...keys._nodeKeys].some((key) => !this._nodeKeys.has(key))) {
264
280
  return false;
281
+ }
265
282
  for (const otherEntry of keys._instanceKeys) {
266
283
  const thisEntryKeys = this._instanceKeys.get(otherEntry["0"].toLowerCase());
267
- if (!thisEntryKeys || thisEntryKeys.size < otherEntry["1"].size)
284
+ if (!thisEntryKeys || thisEntryKeys.size < otherEntry["1"].size) {
268
285
  return false;
269
- if ([...otherEntry["1"]].some((key) => !thisEntryKeys.has(key)))
286
+ }
287
+ if ([...otherEntry["1"]].some((key) => !thisEntryKeys.has(key))) {
270
288
  return false;
289
+ }
271
290
  }
272
291
  return true;
273
292
  }
274
293
  // "any" check type
275
- if ([...keys._nodeKeys].some((key) => this._nodeKeys.has(key)))
294
+ if ([...keys._nodeKeys].some((key) => this._nodeKeys.has(key))) {
276
295
  return true;
296
+ }
277
297
  for (const otherEntry of keys._instanceKeys) {
278
298
  const thisEntryKeys = this._instanceKeys.get(otherEntry["0"].toLowerCase());
279
- if (thisEntryKeys && [...otherEntry["1"]].some((key) => thisEntryKeys.has(key)))
299
+ if (thisEntryKeys && [...otherEntry["1"]].some((key) => thisEntryKeys.has(key))) {
280
300
  return true;
301
+ }
281
302
  }
282
303
  return false;
283
304
  }
284
305
  hasKeysArray(keys, checkType) {
285
306
  if (checkType === "all") {
286
- if (this.size < keys.length)
307
+ if (this.size < keys.length) {
287
308
  return false;
309
+ }
288
310
  for (const key of keys) {
289
- if (!this.has(key))
311
+ if (!this.has(key)) {
290
312
  return false;
313
+ }
291
314
  }
292
315
  return true;
293
316
  }
294
317
  // "any" check type
295
318
  for (const key of keys) {
296
- if (this.has(key))
319
+ if (this.has(key)) {
297
320
  return true;
321
+ }
298
322
  }
299
323
  return false;
300
324
  }
@@ -303,12 +327,15 @@ export class KeySet {
303
327
  * @param keys The keys to check.
304
328
  */
305
329
  hasAll(keys) {
306
- if (!keys)
330
+ if (!keys) {
307
331
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);
308
- if (this.isKeySet(keys))
332
+ }
333
+ if (this.isKeySet(keys)) {
309
334
  return this.hasKeySet(keys, "all");
310
- if (this.isKeysArray(keys))
335
+ }
336
+ if (this.isKeysArray(keys)) {
311
337
  return this.hasKeysArray(keys, "all");
338
+ }
312
339
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);
313
340
  }
314
341
  /**
@@ -316,12 +343,15 @@ export class KeySet {
316
343
  * @param keys The keys to check.
317
344
  */
318
345
  hasAny(keys) {
319
- if (!keys)
346
+ if (!keys) {
320
347
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);
321
- if (this.isKeySet(keys))
348
+ }
349
+ if (this.isKeySet(keys)) {
322
350
  return this.hasKeySet(keys, "any");
323
- if (this.isKeysArray(keys))
351
+ }
352
+ if (this.isKeysArray(keys)) {
324
353
  return this.hasKeysArray(keys, "any");
354
+ }
325
355
  throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);
326
356
  }
327
357
  /**
@@ -330,8 +360,9 @@ export class KeySet {
330
360
  get size() {
331
361
  const nodeKeysCount = this._nodeKeys.size;
332
362
  let instanceIdsCount = 0;
333
- for (const set of this._instanceKeys.values())
363
+ for (const set of this._instanceKeys.values()) {
334
364
  instanceIdsCount += set.size;
365
+ }
335
366
  return nodeKeysCount + instanceIdsCount;
336
367
  }
337
368
  /**
@@ -344,8 +375,9 @@ export class KeySet {
344
375
  some(callback) {
345
376
  for (const entry of this._instanceKeys) {
346
377
  const className = this._lowerCaseMap.get(entry["0"].toLowerCase());
347
- if (some(entry[1], (id) => callback({ className, id })))
378
+ if (some(entry[1], (id) => callback({ className, id }))) {
348
379
  return true;
380
+ }
349
381
  }
350
382
  // eslint-disable-next-line deprecation/deprecation
351
383
  return some(this._nodeKeys, (serializedKey) => callback(NodeKey.fromJSON(JSON.parse(serializedKey))));
@@ -376,7 +408,7 @@ export class KeySet {
376
408
  this.forEach((key, index) => {
377
409
  batch.add(key);
378
410
  ++currBatchSize;
379
- if (currBatchSize === batchSize || index === (size - 1)) {
411
+ if (currBatchSize === batchSize || index === size - 1) {
380
412
  callback(batch, batchIndex++);
381
413
  batch = new KeySet();
382
414
  currBatchSize = 0;
@@ -398,8 +430,9 @@ export class KeySet {
398
430
  }
399
431
  // eslint-disable-next-line deprecation/deprecation
400
432
  const nodeKeys = [];
401
- for (const serializedKey of this._nodeKeys.values())
433
+ for (const serializedKey of this._nodeKeys.values()) {
402
434
  nodeKeys.push(JSON.parse(serializedKey));
435
+ }
403
436
  return {
404
437
  instanceKeys,
405
438
  nodeKeys,
@@ -417,8 +450,9 @@ export class KeySet {
417
450
  }
418
451
  const some = (set, cb) => {
419
452
  for (const item of set) {
420
- if (cb(item))
453
+ if (cb(item)) {
421
454
  return true;
455
+ }
422
456
  }
423
457
  return false;
424
458
  };
@@ -1 +1 @@
1
- {"version":3,"file":"KeySet.js","sourceRoot":"","sources":["../../../src/presentation-common/KeySet.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { CompressedId64Set, Guid, GuidString, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { EntityProps } from \"@itwin/core-common\";\nimport { InstanceId, InstanceKey } from \"./EC\";\nimport { PresentationError, PresentationStatus } from \"./Error\";\nimport { NodeKey, NodeKeyJSON } from \"./hierarchy/Key\";\n\n/**\n * A single key that identifies something in an iTwin.js application\n * @public\n */\nexport type Key = Readonly<NodeKey> | Readonly<InstanceKey> | Readonly<EntityProps>;\n\n/** @public */\nexport namespace Key { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Check if the supplied key is a `NodeKey` */\n export function isNodeKey(key: Key): key is NodeKey {\n return !!(key as NodeKey).type;\n }\n\n /** Check if the supplied key is an `InstanceKey` */\n export function isInstanceKey(key: Key): key is InstanceKey {\n return !!(key as InstanceKey).className && !!(key as InstanceKey).id;\n }\n\n /** Check if the supplied key is an `EntityProps` */\n export function isEntityProps(key: Key): key is EntityProps {\n return !!(key as EntityProps).classFullName && !!(key as EntityProps).id;\n }\n}\n\n/**\n * A type for multiple keys that identify something in iModel.js application\n * @public\n */\nexport type Keys = ReadonlyArray<Key> | Readonly<KeySet>;\n\n/**\n * A data structure of serialized [[KeySet]]\n * @public\n */\nexport interface KeySetJSON {\n /** JSON representation of a list of instance keys */\n instanceKeys: Array<[string, string]>;\n /** An array of serialized node keys */\n // eslint-disable-next-line deprecation/deprecation\n nodeKeys: NodeKeyJSON[];\n}\n\n/**\n * A class that holds multiple [[Key]] objects. It's basically\n * used as a container that holds multiple keys of different types.\n *\n * @public\n */\nexport class KeySet {\n // note: all keys are stored as strings because we need ability to find them by value\n private _instanceKeys: Map<string, Set<string>>; // lower case class name => instance ids\n private _lowerCaseMap: Map<string, string>; // lower case class name => most recent class name\n private _nodeKeys: Set<string>;\n private _guid!: GuidString;\n\n /**\n * Creates an instance of KeySet.\n * @param source Optional source to initialize from.\n */\n constructor(source?: Keys) {\n this._instanceKeys = new Map();\n this._lowerCaseMap = new Map();\n this._nodeKeys = new Set();\n this.recalculateGuid();\n if (source)\n this.add(source);\n }\n\n private recalculateGuid() {\n // empty keyset should have empty guid, otherwise use a random guid value\n this._guid = this.isEmpty ? Guid.empty : Guid.createValue();\n }\n\n /**\n * Get a GUID that identifies changes in this keyset. The value\n * does not uniquely identify contents of the keyset, but it can be\n * used to check whether keyset has changed.\n */\n public get guid(): GuidString { return this._guid; }\n\n /**\n * Get a map of instance keys stored in this KeySet\n *\n * **Warning**: getting instance keys might be expensive for\n * large KeySets.\n */\n public get instanceKeys(): Map<string, Set<InstanceId>> {\n const map = new Map<string, Set<InstanceId>>();\n for (const entry of this._instanceKeys)\n map.set(this._lowerCaseMap.get(entry[\"0\"])!, new Set([...entry[\"1\"]].map((key: string) => Id64.fromJSON(key))));\n return map;\n }\n\n /**\n * Get instance keys count\n */\n public get instanceKeysCount(): number {\n let count = 0;\n this._instanceKeys.forEach((set: Set<string>) => count += set.size);\n return count;\n }\n\n /**\n * Get a set of node keys stored in this KeySet\n *\n * **Warning**: getting node keys might be expensive for\n * large KeySets.\n */\n public get nodeKeys(): Set<NodeKey> {\n const set = new Set<NodeKey>();\n for (const serialized of this._nodeKeys) {\n // eslint-disable-next-line deprecation/deprecation\n const key = NodeKey.fromJSON(JSON.parse(serialized));\n set.add(key);\n }\n return set;\n }\n\n /**\n * Get node keys count\n */\n public get nodeKeysCount(): number {\n return this._nodeKeys.size;\n }\n\n private isKeySet(set: Keys | Key): set is Readonly<KeySet> {\n return !!(set as KeySet)._nodeKeys && !!(set as KeySet)._instanceKeys;\n }\n\n private isKeysArray(keys: Keys | Key): keys is ReadonlyArray<Key> {\n return Array.isArray(keys);\n }\n\n /**\n * Clear this KeySet.\n * @returns itself\n */\n public clear(): KeySet {\n if (this.isEmpty)\n return this;\n\n this._instanceKeys = new Map();\n this._lowerCaseMap = new Map();\n this._nodeKeys = new Set();\n this.recalculateGuid();\n return this;\n }\n\n private addKeySet(keyset: Readonly<KeySet>, pred?: (key: Key) => boolean): void {\n for (const key of (keyset as any)._nodeKeys) {\n // eslint-disable-next-line deprecation/deprecation\n if (!pred || pred(NodeKey.fromJSON(JSON.parse(key))))\n this._nodeKeys.add(key);\n }\n for (const entry of (keyset as any)._instanceKeys) {\n let set = this._instanceKeys.get(entry[\"0\"]);\n const className = (keyset as KeySet)._lowerCaseMap.get(entry[\"0\"])!;\n if (!set) {\n set = new Set();\n this._instanceKeys.set(entry[\"0\"], set);\n this._lowerCaseMap.set(entry[\"0\"], className);\n }\n entry[\"1\"].forEach((id: Id64String) => {\n if (!pred || pred({ className, id }))\n set!.add(id);\n });\n }\n }\n\n private addKeySetJSON(keyset: Readonly<KeySetJSON>): void {\n for (const key of keyset.nodeKeys)\n this._nodeKeys.add(JSON.stringify(key));\n for (const entry of keyset.instanceKeys) {\n const lcClassName = entry[\"0\"].toLowerCase();\n const idsJson: string | Id64String[] = entry[\"1\"];\n const ids: Set<Id64String> =\n typeof idsJson === \"string\"\n ? idsJson === Id64.invalid\n ? new Set([Id64.invalid])\n : CompressedId64Set.decompressSet(idsJson)\n : new Set(idsJson);\n this._instanceKeys.set(lcClassName, ids);\n this._lowerCaseMap.set(lcClassName, entry[\"0\"]);\n }\n }\n\n /**\n * Add a key or keys to this KeySet.\n * @param value A key or keys to add.\n * @param pred An optional predicate function that indicates whether a key should be added\n * @returns itself\n */\n public add(value: Keys | Key, pred?: (key: Key) => boolean): KeySet {\n if (!value)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n const sizeBefore = this.size;\n if (this.isKeySet(value)) {\n this.addKeySet(value, pred);\n } else if (this.isKeysArray(value)) {\n value.forEach((key) => this.add(key, pred));\n } else if (!pred || pred(value)) {\n if (Key.isEntityProps(value)) {\n this.add({ className: value.classFullName, id: Id64.fromJSON(value.id) } as InstanceKey);\n } else if (Key.isInstanceKey(value)) {\n const lcClassName = value.className.toLowerCase();\n if (!this._instanceKeys.has(lcClassName)) {\n this._instanceKeys.set(lcClassName, new Set());\n this._lowerCaseMap.set(lcClassName, value.className);\n }\n this._lowerCaseMap.set(lcClassName, value.className);\n this._instanceKeys.get(lcClassName)!.add(value.id);\n } else if (Key.isNodeKey(value)) {\n this._nodeKeys.add(JSON.stringify(value));\n } else {\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n }\n }\n if (this.size !== sizeBefore)\n this.recalculateGuid();\n return this;\n }\n\n private deleteKeySet(keyset: Readonly<KeySet>): void {\n for (const key of (keyset as any)._nodeKeys)\n this._nodeKeys.delete(key);\n for (const entry of (keyset as any)._instanceKeys) {\n const set = this._instanceKeys.get(entry[\"0\"].toLowerCase());\n if (set) {\n entry[\"1\"].forEach((key: string) => {\n set.delete(key);\n });\n }\n }\n }\n\n /**\n * Deletes a key or keys from this KeySet.\n * @param value A key or keys to delete.\n * @returns itself\n */\n public delete(value: Keys | Key): KeySet {\n if (!value)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n const sizeBefore = this.size;\n if (this.isKeySet(value)) {\n this.deleteKeySet(value);\n } else if (this.isKeysArray(value)) {\n for (const key of value)\n this.delete(key);\n } else if (Key.isEntityProps(value)) {\n this.delete({ className: value.classFullName, id: value.id! } as InstanceKey);\n } else if (Key.isInstanceKey(value)) {\n const set = this._instanceKeys.get(value.className.toLowerCase());\n if (set)\n set.delete(value.id);\n } else if (Key.isNodeKey(value)) {\n this._nodeKeys.delete(JSON.stringify(value));\n } else {\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n }\n if (this.size !== sizeBefore)\n this.recalculateGuid();\n return this;\n }\n\n /**\n * Check if this KeySet contains the specified key.\n * @param value The key to check.\n */\n public has(value: Key): boolean {\n if (!value)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n if (Key.isEntityProps(value))\n return this.has({ className: value.classFullName, id: value.id! } as InstanceKey);\n if (Key.isInstanceKey(value)) {\n const set = this._instanceKeys.get(value.className.toLowerCase());\n return !!(set && set.has(value.id));\n }\n if (Key.isNodeKey(value))\n return this._nodeKeys.has(JSON.stringify(value));\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\n }\n\n private hasKeySet(readonlyKeys: Readonly<KeySet>, checkType: \"all\" | \"any\"): boolean {\n // note: cast-away read-onlyness to access private members...\n const keys = readonlyKeys as KeySet;\n\n if (checkType === \"all\") {\n if (this._nodeKeys.size < keys._nodeKeys.size || this._instanceKeys.size < keys._instanceKeys.size)\n return false;\n if ([...keys._nodeKeys].some((key) => !this._nodeKeys.has(key)))\n return false;\n for (const otherEntry of keys._instanceKeys) {\n const thisEntryKeys = this._instanceKeys.get(otherEntry[\"0\"].toLowerCase());\n if (!thisEntryKeys || thisEntryKeys.size < otherEntry[\"1\"].size)\n return false;\n if ([...otherEntry[\"1\"]].some((key) => !thisEntryKeys.has(key)))\n return false;\n }\n return true;\n }\n\n // \"any\" check type\n if ([...keys._nodeKeys].some((key) => this._nodeKeys.has(key)))\n return true;\n for (const otherEntry of keys._instanceKeys) {\n const thisEntryKeys = this._instanceKeys.get(otherEntry[\"0\"].toLowerCase());\n if (thisEntryKeys && [...otherEntry[\"1\"]].some((key) => thisEntryKeys.has(key)))\n return true;\n }\n return false;\n }\n\n private hasKeysArray(keys: ReadonlyArray<Key>, checkType: \"all\" | \"any\"): boolean {\n if (checkType === \"all\") {\n if (this.size < keys.length)\n return false;\n for (const key of keys) {\n if (!this.has(key))\n return false;\n }\n return true;\n }\n\n // \"any\" check type\n for (const key of keys) {\n if (this.has(key))\n return true;\n }\n return false;\n }\n\n /**\n * Check if this KeySet contains all the specified keys.\n * @param keys The keys to check.\n */\n public hasAll(keys: Keys): boolean {\n if (!keys)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);\n if (this.isKeySet(keys))\n return this.hasKeySet(keys, \"all\");\n if (this.isKeysArray(keys))\n return this.hasKeysArray(keys, \"all\");\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);\n }\n\n /**\n * Check if this KeySet contains any of the specified keys.\n * @param keys The keys to check.\n */\n public hasAny(keys: Keys): boolean {\n if (!keys)\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);\n if (this.isKeySet(keys))\n return this.hasKeySet(keys, \"any\");\n if (this.isKeysArray(keys))\n return this.hasKeysArray(keys, \"any\");\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);\n }\n\n /**\n * Get the number of keys stored in this KeySet.\n */\n public get size(): number {\n const nodeKeysCount = this._nodeKeys.size;\n let instanceIdsCount = 0;\n for (const set of this._instanceKeys.values())\n instanceIdsCount += set.size;\n return nodeKeysCount + instanceIdsCount;\n }\n\n /**\n * Is this KeySet currently empty.\n */\n public get isEmpty(): boolean {\n return 0 === this.size;\n }\n\n /** Iterate over all keys in this keyset. */\n public some(callback: (key: Key) => boolean) {\n for (const entry of this._instanceKeys) {\n const className = this._lowerCaseMap.get(entry[\"0\"].toLowerCase())!;\n if (some(entry[1], (id: Id64String) => callback({ className, id })))\n return true;\n }\n // eslint-disable-next-line deprecation/deprecation\n return some(this._nodeKeys, (serializedKey: string) => callback(NodeKey.fromJSON(JSON.parse(serializedKey))));\n }\n\n /** Iterate over all keys in this keyset. */\n public forEach(callback: (key: InstanceKey | NodeKey, index: number) => void) {\n let index = 0;\n this._instanceKeys.forEach((ids: Set<Id64String>, className: string) => {\n const recentClassName = this._lowerCaseMap.get(className.toLowerCase())!;\n ids.forEach((id: Id64String) => callback({ className: recentClassName, id }, index++));\n });\n this._nodeKeys.forEach((serializedKey: string) => {\n // eslint-disable-next-line deprecation/deprecation\n callback(NodeKey.fromJSON(JSON.parse(serializedKey)), index++);\n });\n }\n\n /** Iterate over all keys in this keyset in batches */\n public forEachBatch(batchSize: number, callback: (batch: KeySet, index: number) => void) {\n const size = this.size;\n const count = Math.ceil(size / batchSize);\n if (1 === count) {\n callback(this, 0);\n return;\n }\n let batch = new KeySet();\n let batchIndex = 0;\n let currBatchSize = 0;\n this.forEach((key, index) => {\n batch.add(key);\n ++currBatchSize;\n if (currBatchSize === batchSize || index === (size - 1)) {\n callback(batch, batchIndex++);\n batch = new KeySet();\n currBatchSize = 0;\n }\n });\n }\n\n /**\n * Serializes this KeySet to JSON\n * @public\n */\n public toJSON(): KeySetJSON {\n const instanceKeys: [string, string][] = [];\n for (const entry of this._instanceKeys.entries()) {\n if (entry[\"1\"].size > 0) {\n const className = this._lowerCaseMap.get(entry[\"0\"].toLowerCase());\n const compressedIds = CompressedId64Set.sortAndCompress(entry[\"1\"]);\n instanceKeys.push([className!, compressedIds.length > 0 ? compressedIds : Id64.invalid]);\n }\n }\n // eslint-disable-next-line deprecation/deprecation\n const nodeKeys: NodeKeyJSON[] = [];\n for (const serializedKey of this._nodeKeys.values())\n nodeKeys.push(JSON.parse(serializedKey));\n return {\n instanceKeys,\n nodeKeys,\n };\n }\n\n /**\n * Creates a KeySet from JSON\n * @public\n */\n public static fromJSON(json: KeySetJSON): KeySet {\n const keyset = new KeySet();\n keyset.addKeySetJSON(json);\n return keyset;\n }\n}\n\nconst some = <TItem>(set: Set<TItem>, cb: (item: TItem) => boolean) => {\n for (const item of set) {\n if (cb(item))\n return true;\n }\n return false;\n};\n"]}
1
+ {"version":3,"file":"KeySet.js","sourceRoot":"","sources":["../../../src/presentation-common/KeySet.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 Core\r\n */\r\n\r\nimport { CompressedId64Set, Guid, GuidString, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { EntityProps } from \"@itwin/core-common\";\r\nimport { InstanceId, InstanceKey } from \"./EC\";\r\nimport { PresentationError, PresentationStatus } from \"./Error\";\r\nimport { NodeKey, NodeKeyJSON } from \"./hierarchy/Key\";\r\n\r\n/**\r\n * A single key that identifies something in an iTwin.js application\r\n * @public\r\n */\r\nexport type Key = Readonly<NodeKey> | Readonly<InstanceKey> | Readonly<EntityProps>;\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace Key {\r\n /** Check if the supplied key is a `NodeKey` */\r\n export function isNodeKey(key: Key): key is NodeKey {\r\n return !!(key as NodeKey).type;\r\n }\r\n\r\n /** Check if the supplied key is an `InstanceKey` */\r\n export function isInstanceKey(key: Key): key is InstanceKey {\r\n return !!(key as InstanceKey).className && !!(key as InstanceKey).id;\r\n }\r\n\r\n /** Check if the supplied key is an `EntityProps` */\r\n export function isEntityProps(key: Key): key is EntityProps {\r\n return !!(key as EntityProps).classFullName && !!(key as EntityProps).id;\r\n }\r\n}\r\n\r\n/**\r\n * A type for multiple keys that identify something in iModel.js application\r\n * @public\r\n */\r\nexport type Keys = ReadonlyArray<Key> | Readonly<KeySet>;\r\n\r\n/**\r\n * A data structure of serialized [[KeySet]]\r\n * @public\r\n */\r\nexport interface KeySetJSON {\r\n /** JSON representation of a list of instance keys */\r\n instanceKeys: Array<[string, string]>;\r\n /** An array of serialized node keys */\r\n // eslint-disable-next-line deprecation/deprecation\r\n nodeKeys: NodeKeyJSON[];\r\n}\r\n\r\n/**\r\n * A class that holds multiple [[Key]] objects. It's basically\r\n * used as a container that holds multiple keys of different types.\r\n *\r\n * @public\r\n */\r\nexport class KeySet {\r\n // note: all keys are stored as strings because we need ability to find them by value\r\n private _instanceKeys: Map<string, Set<string>>; // lower case class name => instance ids\r\n private _lowerCaseMap: Map<string, string>; // lower case class name => most recent class name\r\n private _nodeKeys: Set<string>;\r\n private _guid!: GuidString;\r\n\r\n /**\r\n * Creates an instance of KeySet.\r\n * @param source Optional source to initialize from.\r\n */\r\n constructor(source?: Keys) {\r\n this._instanceKeys = new Map();\r\n this._lowerCaseMap = new Map();\r\n this._nodeKeys = new Set();\r\n this.recalculateGuid();\r\n if (source) {\r\n this.add(source);\r\n }\r\n }\r\n\r\n private recalculateGuid() {\r\n // empty keyset should have empty guid, otherwise use a random guid value\r\n this._guid = this.isEmpty ? Guid.empty : Guid.createValue();\r\n }\r\n\r\n /**\r\n * Get a GUID that identifies changes in this keyset. The value\r\n * does not uniquely identify contents of the keyset, but it can be\r\n * used to check whether keyset has changed.\r\n */\r\n public get guid(): GuidString {\r\n return this._guid;\r\n }\r\n\r\n /**\r\n * Get a map of instance keys stored in this KeySet\r\n *\r\n * **Warning**: getting instance keys might be expensive for\r\n * large KeySets.\r\n */\r\n public get instanceKeys(): Map<string, Set<InstanceId>> {\r\n const map = new Map<string, Set<InstanceId>>();\r\n for (const entry of this._instanceKeys) {\r\n map.set(this._lowerCaseMap.get(entry[\"0\"])!, new Set([...entry[\"1\"]].map((key: string) => Id64.fromJSON(key))));\r\n }\r\n return map;\r\n }\r\n\r\n /**\r\n * Get instance keys count\r\n */\r\n public get instanceKeysCount(): number {\r\n let count = 0;\r\n this._instanceKeys.forEach((set: Set<string>) => (count += set.size));\r\n return count;\r\n }\r\n\r\n /**\r\n * Get a set of node keys stored in this KeySet\r\n *\r\n * **Warning**: getting node keys might be expensive for\r\n * large KeySets.\r\n */\r\n public get nodeKeys(): Set<NodeKey> {\r\n const set = new Set<NodeKey>();\r\n for (const serialized of this._nodeKeys) {\r\n // eslint-disable-next-line deprecation/deprecation\r\n const key = NodeKey.fromJSON(JSON.parse(serialized));\r\n set.add(key);\r\n }\r\n return set;\r\n }\r\n\r\n /**\r\n * Get node keys count\r\n */\r\n public get nodeKeysCount(): number {\r\n return this._nodeKeys.size;\r\n }\r\n\r\n private isKeySet(set: Keys | Key): set is Readonly<KeySet> {\r\n return !!(set as KeySet)._nodeKeys && !!(set as KeySet)._instanceKeys;\r\n }\r\n\r\n private isKeysArray(keys: Keys | Key): keys is ReadonlyArray<Key> {\r\n return Array.isArray(keys);\r\n }\r\n\r\n /**\r\n * Clear this KeySet.\r\n * @returns itself\r\n */\r\n public clear(): KeySet {\r\n if (this.isEmpty) {\r\n return this;\r\n }\r\n\r\n this._instanceKeys = new Map();\r\n this._lowerCaseMap = new Map();\r\n this._nodeKeys = new Set();\r\n this.recalculateGuid();\r\n return this;\r\n }\r\n\r\n private addKeySet(keyset: Readonly<KeySet>, pred?: (key: Key) => boolean): void {\r\n for (const key of (keyset as any)._nodeKeys) {\r\n // eslint-disable-next-line deprecation/deprecation\r\n if (!pred || pred(NodeKey.fromJSON(JSON.parse(key)))) {\r\n this._nodeKeys.add(key);\r\n }\r\n }\r\n for (const entry of (keyset as any)._instanceKeys) {\r\n let set = this._instanceKeys.get(entry[\"0\"]);\r\n const className = (keyset as KeySet)._lowerCaseMap.get(entry[\"0\"])!;\r\n if (!set) {\r\n set = new Set();\r\n this._instanceKeys.set(entry[\"0\"], set);\r\n this._lowerCaseMap.set(entry[\"0\"], className);\r\n }\r\n entry[\"1\"].forEach((id: Id64String) => {\r\n if (!pred || pred({ className, id })) {\r\n set!.add(id);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private addKeySetJSON(keyset: Readonly<KeySetJSON>): void {\r\n for (const key of keyset.nodeKeys) {\r\n this._nodeKeys.add(JSON.stringify(key));\r\n }\r\n for (const entry of keyset.instanceKeys) {\r\n const lcClassName = entry[\"0\"].toLowerCase();\r\n const idsJson: string | Id64String[] = entry[\"1\"];\r\n const ids: Set<Id64String> =\r\n typeof idsJson === \"string\" ? (idsJson === Id64.invalid ? new Set([Id64.invalid]) : CompressedId64Set.decompressSet(idsJson)) : new Set(idsJson);\r\n this._instanceKeys.set(lcClassName, ids);\r\n this._lowerCaseMap.set(lcClassName, entry[\"0\"]);\r\n }\r\n }\r\n\r\n /**\r\n * Add a key or keys to this KeySet.\r\n * @param value A key or keys to add.\r\n * @param pred An optional predicate function that indicates whether a key should be added\r\n * @returns itself\r\n */\r\n public add(value: Keys | Key, pred?: (key: Key) => boolean): KeySet {\r\n if (!value) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n const sizeBefore = this.size;\r\n if (this.isKeySet(value)) {\r\n this.addKeySet(value, pred);\r\n } else if (this.isKeysArray(value)) {\r\n value.forEach((key) => this.add(key, pred));\r\n } else if (!pred || pred(value)) {\r\n if (Key.isEntityProps(value)) {\r\n this.add({ className: value.classFullName, id: Id64.fromJSON(value.id) } as InstanceKey);\r\n } else if (Key.isInstanceKey(value)) {\r\n const lcClassName = value.className.toLowerCase();\r\n if (!this._instanceKeys.has(lcClassName)) {\r\n this._instanceKeys.set(lcClassName, new Set());\r\n this._lowerCaseMap.set(lcClassName, value.className);\r\n }\r\n this._lowerCaseMap.set(lcClassName, value.className);\r\n this._instanceKeys.get(lcClassName)!.add(value.id);\r\n } else if (Key.isNodeKey(value)) {\r\n this._nodeKeys.add(JSON.stringify(value));\r\n } else {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n }\r\n if (this.size !== sizeBefore) {\r\n this.recalculateGuid();\r\n }\r\n return this;\r\n }\r\n\r\n private deleteKeySet(keyset: Readonly<KeySet>): void {\r\n for (const key of (keyset as any)._nodeKeys) {\r\n this._nodeKeys.delete(key);\r\n }\r\n for (const entry of (keyset as any)._instanceKeys) {\r\n const set = this._instanceKeys.get(entry[\"0\"].toLowerCase());\r\n if (set) {\r\n entry[\"1\"].forEach((key: string) => {\r\n set.delete(key);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a key or keys from this KeySet.\r\n * @param value A key or keys to delete.\r\n * @returns itself\r\n */\r\n public delete(value: Keys | Key): KeySet {\r\n if (!value) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n const sizeBefore = this.size;\r\n if (this.isKeySet(value)) {\r\n this.deleteKeySet(value);\r\n } else if (this.isKeysArray(value)) {\r\n for (const key of value) {\r\n this.delete(key);\r\n }\r\n } else if (Key.isEntityProps(value)) {\r\n this.delete({ className: value.classFullName, id: value.id! } as InstanceKey);\r\n } else if (Key.isInstanceKey(value)) {\r\n const set = this._instanceKeys.get(value.className.toLowerCase());\r\n if (set) {\r\n set.delete(value.id);\r\n }\r\n } else if (Key.isNodeKey(value)) {\r\n this._nodeKeys.delete(JSON.stringify(value));\r\n } else {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n if (this.size !== sizeBefore) {\r\n this.recalculateGuid();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Check if this KeySet contains the specified key.\r\n * @param value The key to check.\r\n */\r\n public has(value: Key): boolean {\r\n if (!value) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n if (Key.isEntityProps(value)) {\r\n return this.has({ className: value.classFullName, id: value.id! } as InstanceKey);\r\n }\r\n if (Key.isInstanceKey(value)) {\r\n const set = this._instanceKeys.get(value.className.toLowerCase());\r\n return !!(set && set.has(value.id));\r\n }\r\n if (Key.isNodeKey(value)) {\r\n return this._nodeKeys.has(JSON.stringify(value));\r\n }\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);\r\n }\r\n\r\n private hasKeySet(readonlyKeys: Readonly<KeySet>, checkType: \"all\" | \"any\"): boolean {\r\n // note: cast-away read-onlyness to access private members...\r\n const keys = readonlyKeys as KeySet;\r\n\r\n if (checkType === \"all\") {\r\n if (this._nodeKeys.size < keys._nodeKeys.size || this._instanceKeys.size < keys._instanceKeys.size) {\r\n return false;\r\n }\r\n if ([...keys._nodeKeys].some((key) => !this._nodeKeys.has(key))) {\r\n return false;\r\n }\r\n for (const otherEntry of keys._instanceKeys) {\r\n const thisEntryKeys = this._instanceKeys.get(otherEntry[\"0\"].toLowerCase());\r\n if (!thisEntryKeys || thisEntryKeys.size < otherEntry[\"1\"].size) {\r\n return false;\r\n }\r\n if ([...otherEntry[\"1\"]].some((key) => !thisEntryKeys.has(key))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // \"any\" check type\r\n if ([...keys._nodeKeys].some((key) => this._nodeKeys.has(key))) {\r\n return true;\r\n }\r\n for (const otherEntry of keys._instanceKeys) {\r\n const thisEntryKeys = this._instanceKeys.get(otherEntry[\"0\"].toLowerCase());\r\n if (thisEntryKeys && [...otherEntry[\"1\"]].some((key) => thisEntryKeys.has(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private hasKeysArray(keys: ReadonlyArray<Key>, checkType: \"all\" | \"any\"): boolean {\r\n if (checkType === \"all\") {\r\n if (this.size < keys.length) {\r\n return false;\r\n }\r\n for (const key of keys) {\r\n if (!this.has(key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // \"any\" check type\r\n for (const key of keys) {\r\n if (this.has(key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if this KeySet contains all the specified keys.\r\n * @param keys The keys to check.\r\n */\r\n public hasAll(keys: Keys): boolean {\r\n if (!keys) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);\r\n }\r\n if (this.isKeySet(keys)) {\r\n return this.hasKeySet(keys, \"all\");\r\n }\r\n if (this.isKeysArray(keys)) {\r\n return this.hasKeysArray(keys, \"all\");\r\n }\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);\r\n }\r\n\r\n /**\r\n * Check if this KeySet contains any of the specified keys.\r\n * @param keys The keys to check.\r\n */\r\n public hasAny(keys: Keys): boolean {\r\n if (!keys) {\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${keys}`);\r\n }\r\n if (this.isKeySet(keys)) {\r\n return this.hasKeySet(keys, \"any\");\r\n }\r\n if (this.isKeysArray(keys)) {\r\n return this.hasKeysArray(keys, \"any\");\r\n }\r\n throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: keys = ${keys}`);\r\n }\r\n\r\n /**\r\n * Get the number of keys stored in this KeySet.\r\n */\r\n public get size(): number {\r\n const nodeKeysCount = this._nodeKeys.size;\r\n let instanceIdsCount = 0;\r\n for (const set of this._instanceKeys.values()) {\r\n instanceIdsCount += set.size;\r\n }\r\n return nodeKeysCount + instanceIdsCount;\r\n }\r\n\r\n /**\r\n * Is this KeySet currently empty.\r\n */\r\n public get isEmpty(): boolean {\r\n return 0 === this.size;\r\n }\r\n\r\n /** Iterate over all keys in this keyset. */\r\n public some(callback: (key: Key) => boolean) {\r\n for (const entry of this._instanceKeys) {\r\n const className = this._lowerCaseMap.get(entry[\"0\"].toLowerCase())!;\r\n if (some(entry[1], (id: Id64String) => callback({ className, id }))) {\r\n return true;\r\n }\r\n }\r\n // eslint-disable-next-line deprecation/deprecation\r\n return some(this._nodeKeys, (serializedKey: string) => callback(NodeKey.fromJSON(JSON.parse(serializedKey))));\r\n }\r\n\r\n /** Iterate over all keys in this keyset. */\r\n public forEach(callback: (key: InstanceKey | NodeKey, index: number) => void) {\r\n let index = 0;\r\n this._instanceKeys.forEach((ids: Set<Id64String>, className: string) => {\r\n const recentClassName = this._lowerCaseMap.get(className.toLowerCase())!;\r\n ids.forEach((id: Id64String) => callback({ className: recentClassName, id }, index++));\r\n });\r\n this._nodeKeys.forEach((serializedKey: string) => {\r\n // eslint-disable-next-line deprecation/deprecation\r\n callback(NodeKey.fromJSON(JSON.parse(serializedKey)), index++);\r\n });\r\n }\r\n\r\n /** Iterate over all keys in this keyset in batches */\r\n public forEachBatch(batchSize: number, callback: (batch: KeySet, index: number) => void) {\r\n const size = this.size;\r\n const count = Math.ceil(size / batchSize);\r\n if (1 === count) {\r\n callback(this, 0);\r\n return;\r\n }\r\n let batch = new KeySet();\r\n let batchIndex = 0;\r\n let currBatchSize = 0;\r\n this.forEach((key, index) => {\r\n batch.add(key);\r\n ++currBatchSize;\r\n if (currBatchSize === batchSize || index === size - 1) {\r\n callback(batch, batchIndex++);\r\n batch = new KeySet();\r\n currBatchSize = 0;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Serializes this KeySet to JSON\r\n * @public\r\n */\r\n public toJSON(): KeySetJSON {\r\n const instanceKeys: [string, string][] = [];\r\n for (const entry of this._instanceKeys.entries()) {\r\n if (entry[\"1\"].size > 0) {\r\n const className = this._lowerCaseMap.get(entry[\"0\"].toLowerCase());\r\n const compressedIds = CompressedId64Set.sortAndCompress(entry[\"1\"]);\r\n instanceKeys.push([className!, compressedIds.length > 0 ? compressedIds : Id64.invalid]);\r\n }\r\n }\r\n // eslint-disable-next-line deprecation/deprecation\r\n const nodeKeys: NodeKeyJSON[] = [];\r\n for (const serializedKey of this._nodeKeys.values()) {\r\n nodeKeys.push(JSON.parse(serializedKey));\r\n }\r\n return {\r\n instanceKeys,\r\n nodeKeys,\r\n };\r\n }\r\n\r\n /**\r\n * Creates a KeySet from JSON\r\n * @public\r\n */\r\n public static fromJSON(json: KeySetJSON): KeySet {\r\n const keyset = new KeySet();\r\n keyset.addKeySetJSON(json);\r\n return keyset;\r\n }\r\n}\r\n\r\nconst some = <TItem>(set: Set<TItem>, cb: (item: TItem) => boolean) => {\r\n for (const item of set) {\r\n if (cb(item)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KoqPropertyValueFormatter.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/KoqPropertyValueFormatter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,WAAW,EAAE,aAAa,EAAE,UAAU,EAAiB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAIL,aAAa,EAMd,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;CAC7D;AAED,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED,aAAa;AACb,qBAAa,yBAAyB;IAIxB,OAAO,CAAC,cAAc;IAHlC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAEjB,cAAc,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,UAAU;IAOjE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAQ5C,gBAAgB,CAAC,OAAO,EAAE,aAAa;IAWvC,aAAa,CAAC,OAAO,EAAE,aAAa;CAUlD"}
1
+ {"version":3,"file":"KoqPropertyValueFormatter.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/KoqPropertyValueFormatter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,WAAW,EAAE,aAAa,EAAE,UAAU,EAAiB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAIL,aAAa,EAMd,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;CAC7D;AAED,aAAa;AACb,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED,aAAa;AACb,qBAAa,yBAAyB;IAKlC,OAAO,CAAC,cAAc;IAJxB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAG3B,cAAc,EAAE,aAAa,EACrC,cAAc,CAAC,EAAE,UAAU;IAQhB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAQ5C,gBAAgB,CAAC,OAAO,EAAE,aAAa;IAWvC,aAAa,CAAC,OAAO,EAAE,aAAa;CAUlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"KoqPropertyValueFormatter.js","sourceRoot":"","sources":["../../../src/presentation-common/KoqPropertyValueFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { Format, FormatProps, FormatterSpec, ParserSpec, UnitsProvider, UnitSystemKey } from \"@itwin/core-quantity\";\nimport {\n getFormatProps,\n InvertedUnit,\n KindOfQuantity,\n SchemaContext,\n SchemaKey,\n SchemaMatchType,\n SchemaUnitProvider,\n Unit,\n UnitSystem,\n} from \"@itwin/ecschema-metadata\";\n\n/**\n * A data structure that associates unit systems with property value formatting props. The associations are used for\n * assigning formatting props for specific phenomenon and unit system combinations (see [[FormatsMap]]).\n *\n * @public\n */\nexport interface UnitSystemFormat {\n unitSystems: UnitSystemKey[];\n format: FormatProps;\n}\n\n/**\n * A data structure that associates specific phenomenon with one or more formatting props for specific unit system.\n *\n * Example:\n * ```json\n * {\n * length: [{\n * unitSystems: [\"metric\"],\n * format: formatForCentimeters,\n * }, {\n * unitSystems: [\"imperial\", \"usCustomary\"],\n * format: formatForInches,\n * }, {\n * unitSystems: [\"usSurvey\"],\n * format: formatForUsSurveyInches,\n * }]\n * }\n * ```\n *\n * @public\n */\nexport interface FormatsMap {\n [phenomenon: string]: UnitSystemFormat | UnitSystemFormat[];\n}\n\n/** @alpha */\nexport interface FormatOptions {\n koqName: string;\n unitSystem?: UnitSystemKey;\n}\n\n/** @alpha */\nexport class KoqPropertyValueFormatter {\n private _unitsProvider: UnitsProvider;\n private _defaultFormats?: FormatsMap;\n\n constructor(private _schemaContext: SchemaContext, defaultFormats?: FormatsMap) {\n this._unitsProvider = new SchemaUnitProvider(_schemaContext);\n this._defaultFormats = defaultFormats\n ? Object.entries(defaultFormats).reduce((acc, [phenomenon, unitSystemFormats]) => ({ ...acc, [phenomenon.toUpperCase()]: unitSystemFormats }), {})\n : /* istanbul ignore next */ undefined;\n }\n\n public async format(value: number, options: FormatOptions) {\n const formatterSpec = await this.getFormatterSpec(options);\n if (!formatterSpec) {\n return undefined;\n }\n return formatterSpec.applyFormatting(value);\n }\n\n public async getFormatterSpec(options: FormatOptions) {\n const formattingProps = await getFormattingProps(this._schemaContext, this._defaultFormats, options);\n if (!formattingProps) {\n return undefined;\n }\n const { formatProps, persistenceUnitName } = formattingProps;\n const persistenceUnit = await this._unitsProvider.findUnitByName(persistenceUnitName);\n const format = await Format.createFromJSON(\"\", this._unitsProvider, formatProps);\n return FormatterSpec.create(\"\", format, this._unitsProvider, persistenceUnit);\n }\n\n public async getParserSpec(options: FormatOptions) {\n const formattingProps = await getFormattingProps(this._schemaContext, this._defaultFormats, options);\n if (!formattingProps) {\n return undefined;\n }\n const { formatProps, persistenceUnitName } = formattingProps;\n const persistenceUnit = await this._unitsProvider.findUnitByName(persistenceUnitName);\n const format = await Format.createFromJSON(\"\", this._unitsProvider, formatProps);\n return ParserSpec.create(format, this._unitsProvider, persistenceUnit);\n }\n}\n\ninterface FormattingProps {\n formatProps: FormatProps;\n persistenceUnitName: string;\n}\n\nasync function getFormattingProps(\n schemaLocater: SchemaContext,\n defaultFormats: FormatsMap | undefined,\n options: FormatOptions,\n): Promise<FormattingProps | undefined> {\n const { koqName, unitSystem } = options;\n\n const koq = await getKoq(schemaLocater, koqName);\n if (!koq) {\n return undefined;\n }\n\n const persistenceUnit = await koq.persistenceUnit;\n // istanbul ignore if\n if (!persistenceUnit) {\n return undefined;\n }\n\n const formatProps = await getKoqFormatProps(koq, persistenceUnit, defaultFormats, unitSystem);\n if (!formatProps) {\n return undefined;\n }\n\n return { formatProps, persistenceUnitName: persistenceUnit.fullName };\n}\n\nasync function getKoq(schemaLocater: SchemaContext, fullName: string) {\n const [schemaName, propKoqName] = fullName.split(\":\");\n const schema = await schemaLocater.getSchema(new SchemaKey(schemaName), SchemaMatchType.Latest);\n if (!schema) {\n return undefined;\n }\n return schema.getItem<KindOfQuantity>(propKoqName);\n}\n\nasync function getKoqFormatProps(\n koq: KindOfQuantity,\n persistenceUnit: Unit | InvertedUnit,\n defaultFormats: FormatsMap | undefined,\n unitSystem?: UnitSystemKey,\n) {\n const unitSystemMatchers = getUnitSystemGroupMatchers(unitSystem);\n // use one of KOQ presentation format that matches requested unit system\n const presentationFormat = await getKoqPresentationFormat(koq, unitSystemMatchers);\n if (presentationFormat) {\n return getFormatProps(presentationFormat);\n }\n\n // use one of the formats in default formats map if there is one for matching phenomena and requested unit\n // system combination\n if (defaultFormats && unitSystem) {\n const actualPersistenceUnit = persistenceUnit instanceof InvertedUnit ? /* istanbul ignore next */ await persistenceUnit.invertsUnit : persistenceUnit;\n const phenomenon = await actualPersistenceUnit?.phenomenon;\n // istanbul ignore else\n if (phenomenon && defaultFormats[phenomenon.name.toUpperCase()]) {\n const defaultPhenomenonFormats = defaultFormats[phenomenon.name.toUpperCase()];\n for (const defaultUnitSystemFormat of Array.isArray(defaultPhenomenonFormats)\n ? /* istanbul ignore next */ defaultPhenomenonFormats\n : [defaultPhenomenonFormats]) {\n if (defaultUnitSystemFormat.unitSystems.includes(unitSystem)) {\n return defaultUnitSystemFormat.format;\n }\n }\n }\n }\n\n // use persistence unit format if it matches requested unit system and matching presentation format was not found\n const persistenceUnitSystem = await persistenceUnit.unitSystem;\n if (persistenceUnitSystem && unitSystemMatchers.some((matcher) => matcher(persistenceUnitSystem))) {\n return getPersistenceUnitFormatProps(persistenceUnit);\n }\n\n // use default presentation format if persistence unit does not match requested unit system\n if (koq.defaultPresentationFormat) {\n return getFormatProps(koq.defaultPresentationFormat);\n }\n\n return undefined;\n}\n\nasync function getKoqPresentationFormat(koq: KindOfQuantity, unitSystemMatchers: Array<(unitSystem: UnitSystem) => boolean>) {\n const presentationFormats = koq.presentationFormats;\n for (const matcher of unitSystemMatchers) {\n for (const format of presentationFormats) {\n const unit = format.units && format.units[0][0];\n // istanbul ignore if\n if (!unit) {\n continue;\n }\n const currentUnitSystem = await unit.unitSystem;\n if (currentUnitSystem && matcher(currentUnitSystem)) {\n return format;\n }\n }\n }\n return undefined;\n}\n\nfunction getPersistenceUnitFormatProps(persistenceUnit: Unit | InvertedUnit): FormatProps {\n // Same as Format \"DefaultRealU\" in Formats ecschema\n return {\n formatTraits: [\"keepSingleZero\", \"keepDecimalPoint\", \"showUnitLabel\"],\n precision: 6,\n type: \"Decimal\",\n uomSeparator: \" \",\n decimalSeparator: \".\",\n composite: {\n units: [\n {\n name: persistenceUnit.fullName,\n label: persistenceUnit.label,\n },\n ],\n },\n };\n}\n\nfunction getUnitSystemGroupMatchers(groupKey?: UnitSystemKey) {\n function createMatcher(name: string | string[]) {\n const names = Array.isArray(name) ? name : [name];\n return (unitSystem: UnitSystem) => names.some((n) => n === unitSystem.name.toUpperCase());\n }\n switch (groupKey) {\n case \"imperial\":\n return [\"IMPERIAL\", \"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\n case \"metric\":\n return [[\"SI\", \"METRIC\"], \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\n case \"usCustomary\":\n return [\"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\n case \"usSurvey\":\n return [\"USSURVEY\", \"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\n }\n return [];\n}\n"]}
1
+ {"version":3,"file":"KoqPropertyValueFormatter.js","sourceRoot":"","sources":["../../../src/presentation-common/KoqPropertyValueFormatter.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 Core\r\n */\r\n\r\nimport { Format, FormatProps, FormatterSpec, ParserSpec, UnitsProvider, UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n getFormatProps,\r\n InvertedUnit,\r\n KindOfQuantity,\r\n SchemaContext,\r\n SchemaKey,\r\n SchemaMatchType,\r\n SchemaUnitProvider,\r\n Unit,\r\n UnitSystem,\r\n} from \"@itwin/ecschema-metadata\";\r\n\r\n/**\r\n * A data structure that associates unit systems with property value formatting props. The associations are used for\r\n * assigning formatting props for specific phenomenon and unit system combinations (see [[FormatsMap]]).\r\n *\r\n * @public\r\n */\r\nexport interface UnitSystemFormat {\r\n unitSystems: UnitSystemKey[];\r\n format: FormatProps;\r\n}\r\n\r\n/**\r\n * A data structure that associates specific phenomenon with one or more formatting props for specific unit system.\r\n *\r\n * Example:\r\n * ```json\r\n * {\r\n * length: [{\r\n * unitSystems: [\"metric\"],\r\n * format: formatForCentimeters,\r\n * }, {\r\n * unitSystems: [\"imperial\", \"usCustomary\"],\r\n * format: formatForInches,\r\n * }, {\r\n * unitSystems: [\"usSurvey\"],\r\n * format: formatForUsSurveyInches,\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport interface FormatsMap {\r\n [phenomenon: string]: UnitSystemFormat | UnitSystemFormat[];\r\n}\r\n\r\n/** @alpha */\r\nexport interface FormatOptions {\r\n koqName: string;\r\n unitSystem?: UnitSystemKey;\r\n}\r\n\r\n/** @alpha */\r\nexport class KoqPropertyValueFormatter {\r\n private _unitsProvider: UnitsProvider;\r\n private _defaultFormats?: FormatsMap;\r\n\r\n constructor(\r\n private _schemaContext: SchemaContext,\r\n defaultFormats?: FormatsMap,\r\n ) {\r\n this._unitsProvider = new SchemaUnitProvider(_schemaContext);\r\n this._defaultFormats = defaultFormats\r\n ? Object.entries(defaultFormats).reduce((acc, [phenomenon, unitSystemFormats]) => ({ ...acc, [phenomenon.toUpperCase()]: unitSystemFormats }), {})\r\n : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public async format(value: number, options: FormatOptions) {\r\n const formatterSpec = await this.getFormatterSpec(options);\r\n if (!formatterSpec) {\r\n return undefined;\r\n }\r\n return formatterSpec.applyFormatting(value);\r\n }\r\n\r\n public async getFormatterSpec(options: FormatOptions) {\r\n const formattingProps = await getFormattingProps(this._schemaContext, this._defaultFormats, options);\r\n if (!formattingProps) {\r\n return undefined;\r\n }\r\n const { formatProps, persistenceUnitName } = formattingProps;\r\n const persistenceUnit = await this._unitsProvider.findUnitByName(persistenceUnitName);\r\n const format = await Format.createFromJSON(\"\", this._unitsProvider, formatProps);\r\n return FormatterSpec.create(\"\", format, this._unitsProvider, persistenceUnit);\r\n }\r\n\r\n public async getParserSpec(options: FormatOptions) {\r\n const formattingProps = await getFormattingProps(this._schemaContext, this._defaultFormats, options);\r\n if (!formattingProps) {\r\n return undefined;\r\n }\r\n const { formatProps, persistenceUnitName } = formattingProps;\r\n const persistenceUnit = await this._unitsProvider.findUnitByName(persistenceUnitName);\r\n const format = await Format.createFromJSON(\"\", this._unitsProvider, formatProps);\r\n return ParserSpec.create(format, this._unitsProvider, persistenceUnit);\r\n }\r\n}\r\n\r\ninterface FormattingProps {\r\n formatProps: FormatProps;\r\n persistenceUnitName: string;\r\n}\r\n\r\nasync function getFormattingProps(\r\n schemaLocater: SchemaContext,\r\n defaultFormats: FormatsMap | undefined,\r\n options: FormatOptions,\r\n): Promise<FormattingProps | undefined> {\r\n const { koqName, unitSystem } = options;\r\n\r\n const koq = await getKoq(schemaLocater, koqName);\r\n if (!koq) {\r\n return undefined;\r\n }\r\n\r\n const persistenceUnit = await koq.persistenceUnit;\r\n // istanbul ignore if\r\n if (!persistenceUnit) {\r\n return undefined;\r\n }\r\n\r\n const formatProps = await getKoqFormatProps(koq, persistenceUnit, defaultFormats, unitSystem);\r\n if (!formatProps) {\r\n return undefined;\r\n }\r\n\r\n return { formatProps, persistenceUnitName: persistenceUnit.fullName };\r\n}\r\n\r\nasync function getKoq(schemaLocater: SchemaContext, fullName: string) {\r\n const [schemaName, propKoqName] = fullName.split(\":\");\r\n const schema = await schemaLocater.getSchema(new SchemaKey(schemaName), SchemaMatchType.Latest);\r\n if (!schema) {\r\n return undefined;\r\n }\r\n return schema.getItem<KindOfQuantity>(propKoqName);\r\n}\r\n\r\nasync function getKoqFormatProps(\r\n koq: KindOfQuantity,\r\n persistenceUnit: Unit | InvertedUnit,\r\n defaultFormats: FormatsMap | undefined,\r\n unitSystem?: UnitSystemKey,\r\n) {\r\n const unitSystemMatchers = getUnitSystemGroupMatchers(unitSystem);\r\n // use one of KOQ presentation format that matches requested unit system\r\n const presentationFormat = await getKoqPresentationFormat(koq, unitSystemMatchers);\r\n if (presentationFormat) {\r\n return getFormatProps(presentationFormat);\r\n }\r\n\r\n // use one of the formats in default formats map if there is one for matching phenomena and requested unit\r\n // system combination\r\n if (defaultFormats && unitSystem) {\r\n const actualPersistenceUnit = persistenceUnit instanceof InvertedUnit ? /* istanbul ignore next */ await persistenceUnit.invertsUnit : persistenceUnit;\r\n const phenomenon = await actualPersistenceUnit?.phenomenon;\r\n // istanbul ignore else\r\n if (phenomenon && defaultFormats[phenomenon.name.toUpperCase()]) {\r\n const defaultPhenomenonFormats = defaultFormats[phenomenon.name.toUpperCase()];\r\n for (const defaultUnitSystemFormat of Array.isArray(defaultPhenomenonFormats)\r\n ? /* istanbul ignore next */ defaultPhenomenonFormats\r\n : [defaultPhenomenonFormats]) {\r\n if (defaultUnitSystemFormat.unitSystems.includes(unitSystem)) {\r\n return defaultUnitSystemFormat.format;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // use persistence unit format if it matches requested unit system and matching presentation format was not found\r\n const persistenceUnitSystem = await persistenceUnit.unitSystem;\r\n if (persistenceUnitSystem && unitSystemMatchers.some((matcher) => matcher(persistenceUnitSystem))) {\r\n return getPersistenceUnitFormatProps(persistenceUnit);\r\n }\r\n\r\n // use default presentation format if persistence unit does not match requested unit system\r\n if (koq.defaultPresentationFormat) {\r\n return getFormatProps(koq.defaultPresentationFormat);\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nasync function getKoqPresentationFormat(koq: KindOfQuantity, unitSystemMatchers: Array<(unitSystem: UnitSystem) => boolean>) {\r\n const presentationFormats = koq.presentationFormats;\r\n for (const matcher of unitSystemMatchers) {\r\n for (const format of presentationFormats) {\r\n const unit = format.units && format.units[0][0];\r\n // istanbul ignore if\r\n if (!unit) {\r\n continue;\r\n }\r\n const currentUnitSystem = await unit.unitSystem;\r\n if (currentUnitSystem && matcher(currentUnitSystem)) {\r\n return format;\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getPersistenceUnitFormatProps(persistenceUnit: Unit | InvertedUnit): FormatProps {\r\n // Same as Format \"DefaultRealU\" in Formats ecschema\r\n return {\r\n formatTraits: [\"keepSingleZero\", \"keepDecimalPoint\", \"showUnitLabel\"],\r\n precision: 6,\r\n type: \"Decimal\",\r\n uomSeparator: \" \",\r\n decimalSeparator: \".\",\r\n composite: {\r\n units: [\r\n {\r\n name: persistenceUnit.fullName,\r\n label: persistenceUnit.label,\r\n },\r\n ],\r\n },\r\n };\r\n}\r\n\r\nfunction getUnitSystemGroupMatchers(groupKey?: UnitSystemKey) {\r\n function createMatcher(name: string | string[]) {\r\n const names = Array.isArray(name) ? name : [name];\r\n return (unitSystem: UnitSystem) => names.some((n) => n === unitSystem.name.toUpperCase());\r\n }\r\n switch (groupKey) {\r\n case \"imperial\":\r\n return [\"IMPERIAL\", \"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\r\n case \"metric\":\r\n return [[\"SI\", \"METRIC\"], \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\r\n case \"usCustomary\":\r\n return [\"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\r\n case \"usSurvey\":\r\n return [\"USSURVEY\", \"USCUSTOM\", \"INTERNATIONAL\", \"FINANCE\"].map(createMatcher);\r\n }\r\n return [];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LabelDefinition.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/LabelDefinition.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,cAAc;AACd,yBAAiB,mBAAmB,CAAC;IACnC;;;OAGG;IAEH,SAAgB,MAAM,CAAC,cAAc,EAAE,mBAAmB,GAAG,uBAAuB,CAEnF;IAED;;;OAGG;IAEH,SAAgB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAE3E;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAE5E;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,cAAc;AACd,yBAAiB,eAAe,CAAC;IAC/B;;;OAGG;IAEH,SAAgB,MAAM,CAAC,eAAe,EAAE,eAAe,GAAG,mBAAmB,CAE5E;IAED;;;OAGG;IAEH,SAAgB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,GAAG,eAAe,CAI5E;IAED,gBAAgB;IACT,MAAM,6BAA6B,cAAc,CAAC;IAEzD;;;OAGG;IACH,SAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,eAAe,GAAG;QAAE,QAAQ,EAAE,mBAAmB,CAAA;KAAE,CAEtH;IAED;;;OAGG;IACH,SAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAM9D;CACF"}
1
+ {"version":3,"file":"LabelDefinition.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/LabelDefinition.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,cAAc;AACd,yBAAiB,mBAAmB,CAAC;IACnC;;;OAGG;IAEH,SAAgB,MAAM,CAAC,cAAc,EAAE,mBAAmB,GAAG,uBAAuB,CAEnF;IAED;;;OAGG;IAEH,SAAgB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAE3E;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAE5E;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,cAAc;AACd,yBAAiB,eAAe,CAAC;IAC/B;;;OAGG;IAEH,SAAgB,MAAM,CAAC,eAAe,EAAE,eAAe,GAAG,mBAAmB,CAE5E;IAED;;;OAGG;IAEH,SAAgB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,GAAG,eAAe,CAK5E;IAED,gBAAgB;IACT,MAAM,6BAA6B,cAAc,CAAC;IAEzD;;;OAGG;IACH,SAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,GAAG,IAAI,eAAe,GAAG;QAAE,QAAQ,EAAE,mBAAmB,CAAA;KAAE,CAEtH;IAED;;;OAGG;IACH,SAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAM9D;CACF"}
@@ -1,7 +1,7 @@
1
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
- *--------------------------------------------------------------------------------------------*/
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
5
  /** @packageDocumentation
6
6
  * @module Hierarchies
7
7
  */
@@ -45,8 +45,9 @@ export var LabelDefinition;
45
45
  */
46
46
  // eslint-disable-next-line deprecation/deprecation
47
47
  function fromJSON(json) {
48
- if (typeof json === "string")
48
+ if (typeof json === "string") {
49
49
  return JSON.parse(json);
50
+ }
50
51
  return { ...json };
51
52
  }
52
53
  LabelDefinition.fromJSON = fromJSON;