@itwin/core-frontend 4.1.0-dev.3 → 4.1.0-dev.30

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 (880) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +8 -0
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/BackgroundMapGeometry.d.ts +2 -2
  6. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js +18 -7
  8. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  9. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  10. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  11. package/lib/cjs/BriefcaseTxns.js +3 -3
  12. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  13. package/lib/cjs/CheckpointConnection.js +1 -1
  14. package/lib/cjs/CheckpointConnection.js.map +1 -1
  15. package/lib/cjs/DrawingViewState.js +1 -1
  16. package/lib/cjs/DrawingViewState.js.map +1 -1
  17. package/lib/cjs/ElementLocateManager.js +1 -1
  18. package/lib/cjs/ElementLocateManager.js.map +1 -1
  19. package/lib/cjs/EnvironmentDecorations.js +1 -1
  20. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  21. package/lib/cjs/GeoServices.d.ts +37 -7
  22. package/lib/cjs/GeoServices.d.ts.map +1 -1
  23. package/lib/cjs/GeoServices.js +75 -25
  24. package/lib/cjs/GeoServices.js.map +1 -1
  25. package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
  26. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  27. package/lib/cjs/GraphicalEditingScope.js +1 -1
  28. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  29. package/lib/cjs/IModelApp.js +1 -1
  30. package/lib/cjs/IModelApp.js.map +1 -1
  31. package/lib/cjs/IModelConnection.d.ts +26 -9
  32. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  33. package/lib/cjs/IModelConnection.js +78 -11
  34. package/lib/cjs/IModelConnection.js.map +1 -1
  35. package/lib/cjs/IpcApp.d.ts.map +1 -1
  36. package/lib/cjs/IpcApp.js +3 -3
  37. package/lib/cjs/IpcApp.js.map +1 -1
  38. package/lib/cjs/LocalhostIpcApp.js +1 -1
  39. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  40. package/lib/cjs/Marker.d.ts +1 -1
  41. package/lib/cjs/Marker.d.ts.map +1 -1
  42. package/lib/cjs/Marker.js +3 -3
  43. package/lib/cjs/Marker.js.map +1 -1
  44. package/lib/cjs/NativeApp.d.ts.map +1 -1
  45. package/lib/cjs/NativeApp.js +4 -4
  46. package/lib/cjs/NativeApp.js.map +1 -1
  47. package/lib/cjs/NoRenderApp.d.ts +1 -1
  48. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  49. package/lib/cjs/NoRenderApp.js +1 -1
  50. package/lib/cjs/NoRenderApp.js.map +1 -1
  51. package/lib/cjs/RealityDataSource.js +1 -1
  52. package/lib/cjs/RealityDataSource.js.map +1 -1
  53. package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
  54. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  55. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  56. package/lib/cjs/SheetViewState.js +2 -2
  57. package/lib/cjs/SheetViewState.js.map +1 -1
  58. package/lib/cjs/Sprites.js +2 -2
  59. package/lib/cjs/Sprites.js.map +1 -1
  60. package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
  61. package/lib/cjs/ViewGlobalLocation.js +4 -3
  62. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  63. package/lib/cjs/ViewState.d.ts +22 -4
  64. package/lib/cjs/ViewState.d.ts.map +1 -1
  65. package/lib/cjs/ViewState.js +36 -6
  66. package/lib/cjs/ViewState.js.map +1 -1
  67. package/lib/cjs/ViewingSpace.js +1 -1
  68. package/lib/cjs/ViewingSpace.js.map +1 -1
  69. package/lib/cjs/Viewport.d.ts +1 -1
  70. package/lib/cjs/Viewport.d.ts.map +1 -1
  71. package/lib/cjs/Viewport.js +2 -2
  72. package/lib/cjs/Viewport.js.map +1 -1
  73. package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
  74. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
  75. package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
  76. package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +2 -0
  77. package/lib/cjs/common/ImageUtil.js.map +1 -0
  78. package/lib/cjs/common/ViewRect.d.ts.map +1 -0
  79. package/lib/cjs/common/ViewRect.js.map +1 -0
  80. package/lib/cjs/common/WorkerProxy.d.ts +73 -0
  81. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
  82. package/lib/cjs/common/WorkerProxy.js +54 -0
  83. package/lib/cjs/common/WorkerProxy.js.map +1 -0
  84. package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
  85. package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
  86. package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
  87. package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
  88. package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
  89. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
  90. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
  91. package/lib/cjs/common/imdl/CompactEdges.d.ts +27 -0
  92. package/lib/cjs/common/imdl/CompactEdges.d.ts.map +1 -0
  93. package/lib/cjs/common/imdl/CompactEdges.js +96 -0
  94. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -0
  95. package/lib/cjs/common/imdl/ImdlModel.d.ts +186 -0
  96. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
  97. package/lib/cjs/common/imdl/ImdlModel.js +71 -0
  98. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
  99. package/lib/cjs/common/imdl/ImdlSchema.d.ts +412 -0
  100. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
  101. package/lib/cjs/common/imdl/ImdlSchema.js +23 -0
  102. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
  103. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +45 -0
  104. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  105. package/lib/cjs/common/imdl/ParseImdlDocument.js +1011 -0
  106. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
  107. package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
  108. package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
  109. package/lib/cjs/common/render/AnimationNodeId.js +19 -0
  110. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
  111. package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
  112. package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
  113. package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  114. package/lib/cjs/common/render/MaterialParams.js.map +1 -0
  115. package/lib/cjs/common/render/TextureParams.d.ts +30 -0
  116. package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
  117. package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  118. package/lib/cjs/common/render/TextureParams.js.map +1 -0
  119. package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  120. package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  121. package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  122. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
  123. package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
  124. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
  125. package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
  126. package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
  127. package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
  128. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
  129. package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
  130. package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
  131. package/lib/cjs/common/render/primitives/MeshParams.js +10 -0
  132. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
  133. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
  134. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  135. package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
  136. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
  137. package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
  138. package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
  139. package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
  140. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
  141. package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
  142. package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
  143. package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
  144. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
  145. package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
  146. package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  147. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
  148. package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
  149. package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
  150. package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
  151. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
  152. package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
  153. package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
  154. package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
  155. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
  156. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  157. package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  158. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +46 -35
  159. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
  160. package/lib/cjs/core-frontend.d.ts +26 -6
  161. package/lib/cjs/core-frontend.d.ts.map +1 -1
  162. package/lib/cjs/core-frontend.js +26 -6
  163. package/lib/cjs/core-frontend.js.map +1 -1
  164. package/lib/cjs/extension/ExtensionAdmin.js +1 -1
  165. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  166. package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
  167. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  168. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
  169. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  170. package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
  171. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
  172. package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
  173. package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
  174. package/lib/cjs/render/CreateTextureArgs.js +10 -0
  175. package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
  176. package/lib/cjs/render/GraphicBranch.d.ts +1 -7
  177. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  178. package/lib/cjs/render/GraphicBranch.js +1 -9
  179. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  180. package/lib/cjs/render/MockRender.d.ts +4 -4
  181. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  182. package/lib/cjs/render/MockRender.js +1 -1
  183. package/lib/cjs/render/MockRender.js.map +1 -1
  184. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  185. package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
  186. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  187. package/lib/cjs/render/RealityMeshParams.js +2 -2
  188. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  189. package/lib/cjs/render/RenderSystem.d.ts +7 -6
  190. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  191. package/lib/cjs/render/RenderSystem.js +6 -6
  192. package/lib/cjs/render/RenderSystem.js.map +1 -1
  193. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  194. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  195. package/lib/cjs/render/RenderTarget.js.map +1 -1
  196. package/lib/cjs/render/VisibleFeature.d.ts +1 -1
  197. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  198. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  199. package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
  200. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  201. package/lib/cjs/render/primitives/EdgeParams.js +35 -71
  202. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  203. package/lib/cjs/render/primitives/PointStringParams.d.ts +2 -11
  204. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
  205. package/lib/cjs/render/primitives/PointStringParams.js +26 -30
  206. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  207. package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
  208. package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
  209. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  210. package/lib/cjs/render/primitives/PolylineParams.d.ts +4 -36
  211. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  212. package/lib/cjs/render/primitives/PolylineParams.js +29 -40
  213. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  214. package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
  215. package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
  216. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  217. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +28 -0
  218. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  219. package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +61 -175
  220. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
  221. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  222. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  223. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  224. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  225. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  226. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
  227. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  228. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  229. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  230. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
  231. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  232. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  233. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  234. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  235. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  236. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  237. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +3 -2
  238. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  239. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  240. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  241. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +9 -14
  242. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  243. package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
  244. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  245. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  246. package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
  247. package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
  248. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  249. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
  250. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  251. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  252. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  253. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  254. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  255. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  256. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  257. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  258. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  259. package/lib/cjs/render/webgl/Material.js.map +1 -1
  260. package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
  261. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/Mesh.js +1 -1
  263. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  264. package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
  265. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  266. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  267. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  268. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  269. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  270. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  271. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  272. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  273. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  274. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  275. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  276. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  277. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  278. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  279. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  280. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  281. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  282. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  283. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  284. package/lib/cjs/render/webgl/System.d.ts +7 -6
  285. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  286. package/lib/cjs/render/webgl/System.js +1 -1
  287. package/lib/cjs/render/webgl/System.js.map +1 -1
  288. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  289. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  290. package/lib/cjs/render/webgl/Target.js +4 -4
  291. package/lib/cjs/render/webgl/Target.js.map +1 -1
  292. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  293. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  294. package/lib/cjs/render/webgl/Texture.js +1 -1
  295. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  296. package/lib/cjs/render/webgl/UniformHandle.js +1 -1
  297. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  298. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  299. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  300. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  302. package/lib/cjs/render-primitives.d.ts +1 -4
  303. package/lib/cjs/render-primitives.d.ts.map +1 -1
  304. package/lib/cjs/render-primitives.js +1 -4
  305. package/lib/cjs/render-primitives.js.map +1 -1
  306. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  307. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  308. package/lib/cjs/tile/B3dmReader.js +1 -1
  309. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  310. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  311. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  312. package/lib/cjs/tile/GltfReader.d.ts +3 -3
  313. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  314. package/lib/cjs/tile/GltfReader.js +12 -21
  315. package/lib/cjs/tile/GltfReader.js.map +1 -1
  316. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  317. package/lib/cjs/tile/IModelTile.js +11 -17
  318. package/lib/cjs/tile/IModelTile.js.map +1 -1
  319. package/lib/cjs/tile/IModelTileTree.d.ts +4 -1
  320. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  321. package/lib/cjs/tile/IModelTileTree.js +15 -0
  322. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  323. package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
  324. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
  325. package/lib/cjs/tile/ImdlDecoder.js +35 -0
  326. package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
  327. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +19 -0
  328. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  329. package/lib/cjs/tile/ImdlGraphicsCreator.js +328 -0
  330. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
  331. package/lib/cjs/tile/ImdlParser.d.ts +26 -0
  332. package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
  333. package/lib/cjs/tile/ImdlParser.js +72 -0
  334. package/lib/cjs/tile/ImdlParser.js.map +1 -0
  335. package/lib/cjs/tile/ImdlReader.d.ts +16 -420
  336. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  337. package/lib/cjs/tile/ImdlReader.js +69 -902
  338. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  339. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
  340. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  341. package/lib/cjs/tile/PntsReader.js +1 -1
  342. package/lib/cjs/tile/PntsReader.js.map +1 -1
  343. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  344. package/lib/cjs/tile/PrimaryTileTree.js +2 -1
  345. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  346. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  347. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  348. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  349. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  350. package/lib/cjs/tile/TileAdmin.d.ts +14 -10
  351. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  352. package/lib/cjs/tile/TileAdmin.js +6 -15
  353. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  354. package/lib/cjs/tile/internal.d.ts +3 -0
  355. package/lib/cjs/tile/internal.d.ts.map +1 -1
  356. package/lib/cjs/tile/internal.js +3 -0
  357. package/lib/cjs/tile/internal.js.map +1 -1
  358. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
  359. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  360. package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
  361. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  362. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  363. package/lib/cjs/tile/map/ImageryTileTree.js +14 -7
  364. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  365. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  366. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
  367. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  368. package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
  369. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  370. package/lib/cjs/tile/map/MapLayerSources.js +3 -0
  371. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  372. package/lib/cjs/tile/map/MapTile.d.ts +6 -1
  373. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  374. package/lib/cjs/tile/map/MapTile.js +8 -7
  375. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  376. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  377. package/lib/cjs/tile/map/MapTileTree.js +9 -3
  378. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  379. package/lib/cjs/tools/ElementSetTool.js +1 -1
  380. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  381. package/lib/cjs/tools/SelectTool.js +1 -1
  382. package/lib/cjs/tools/SelectTool.js.map +1 -1
  383. package/lib/cjs/tools/ToolAdmin.js +1 -1
  384. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  385. package/lib/cjs/tools/ViewTool.js +1 -1
  386. package/lib/cjs/tools/ViewTool.js.map +1 -1
  387. package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
  388. package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
  389. package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
  390. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
  391. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
  392. package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
  393. package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
  394. package/lib/cjs/workers/RegisterWorker.js +36 -0
  395. package/lib/cjs/workers/RegisterWorker.js.map +1 -0
  396. package/lib/esm/AccuSnap.d.ts.map +1 -1
  397. package/lib/esm/AccuSnap.js +8 -0
  398. package/lib/esm/AccuSnap.js.map +1 -1
  399. package/lib/esm/BackgroundMapGeometry.d.ts +2 -2
  400. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  401. package/lib/esm/BackgroundMapGeometry.js +18 -7
  402. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  403. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  404. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  405. package/lib/esm/BriefcaseTxns.js +3 -3
  406. package/lib/esm/BriefcaseTxns.js.map +1 -1
  407. package/lib/esm/CheckpointConnection.js +1 -1
  408. package/lib/esm/CheckpointConnection.js.map +1 -1
  409. package/lib/esm/DrawingViewState.js +1 -1
  410. package/lib/esm/DrawingViewState.js.map +1 -1
  411. package/lib/esm/ElementLocateManager.js +1 -1
  412. package/lib/esm/ElementLocateManager.js.map +1 -1
  413. package/lib/esm/EnvironmentDecorations.js +1 -1
  414. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  415. package/lib/esm/GeoServices.d.ts +37 -7
  416. package/lib/esm/GeoServices.d.ts.map +1 -1
  417. package/lib/esm/GeoServices.js +75 -25
  418. package/lib/esm/GeoServices.js.map +1 -1
  419. package/lib/esm/GraphicalEditingScope.d.ts +2 -2
  420. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  421. package/lib/esm/GraphicalEditingScope.js +2 -2
  422. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  423. package/lib/esm/IModelApp.js +1 -1
  424. package/lib/esm/IModelApp.js.map +1 -1
  425. package/lib/esm/IModelConnection.d.ts +26 -9
  426. package/lib/esm/IModelConnection.d.ts.map +1 -1
  427. package/lib/esm/IModelConnection.js +78 -11
  428. package/lib/esm/IModelConnection.js.map +1 -1
  429. package/lib/esm/IpcApp.d.ts.map +1 -1
  430. package/lib/esm/IpcApp.js +4 -4
  431. package/lib/esm/IpcApp.js.map +1 -1
  432. package/lib/esm/LocalhostIpcApp.js +2 -2
  433. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  434. package/lib/esm/Marker.d.ts +1 -1
  435. package/lib/esm/Marker.d.ts.map +1 -1
  436. package/lib/esm/Marker.js +3 -3
  437. package/lib/esm/Marker.js.map +1 -1
  438. package/lib/esm/NativeApp.d.ts.map +1 -1
  439. package/lib/esm/NativeApp.js +5 -5
  440. package/lib/esm/NativeApp.js.map +1 -1
  441. package/lib/esm/NoRenderApp.d.ts +1 -1
  442. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  443. package/lib/esm/NoRenderApp.js +1 -1
  444. package/lib/esm/NoRenderApp.js.map +1 -1
  445. package/lib/esm/RealityDataSource.js +1 -1
  446. package/lib/esm/RealityDataSource.js.map +1 -1
  447. package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
  448. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  449. package/lib/esm/SheetViewState.d.ts.map +1 -1
  450. package/lib/esm/SheetViewState.js +2 -2
  451. package/lib/esm/SheetViewState.js.map +1 -1
  452. package/lib/esm/Sprites.js +2 -2
  453. package/lib/esm/Sprites.js.map +1 -1
  454. package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
  455. package/lib/esm/ViewGlobalLocation.js +4 -3
  456. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  457. package/lib/esm/ViewState.d.ts +22 -4
  458. package/lib/esm/ViewState.d.ts.map +1 -1
  459. package/lib/esm/ViewState.js +36 -6
  460. package/lib/esm/ViewState.js.map +1 -1
  461. package/lib/esm/ViewingSpace.js +1 -1
  462. package/lib/esm/ViewingSpace.js.map +1 -1
  463. package/lib/esm/Viewport.d.ts +1 -1
  464. package/lib/esm/Viewport.d.ts.map +1 -1
  465. package/lib/esm/Viewport.js +2 -2
  466. package/lib/esm/Viewport.js.map +1 -1
  467. package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
  468. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
  469. package/lib/esm/common/ImageUtil.d.ts.map +1 -0
  470. package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +2 -0
  471. package/lib/esm/common/ImageUtil.js.map +1 -0
  472. package/lib/esm/common/ViewRect.d.ts.map +1 -0
  473. package/lib/esm/common/ViewRect.js.map +1 -0
  474. package/lib/esm/common/WorkerProxy.d.ts +73 -0
  475. package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
  476. package/lib/esm/common/WorkerProxy.js +50 -0
  477. package/lib/esm/common/WorkerProxy.js.map +1 -0
  478. package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
  479. package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
  480. package/lib/esm/common/gltf/GltfModel.js.map +1 -0
  481. package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
  482. package/lib/esm/common/gltf/GltfParser.js.map +1 -0
  483. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
  484. package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
  485. package/lib/esm/common/imdl/CompactEdges.d.ts +27 -0
  486. package/lib/esm/common/imdl/CompactEdges.d.ts.map +1 -0
  487. package/lib/esm/common/imdl/CompactEdges.js +92 -0
  488. package/lib/esm/common/imdl/CompactEdges.js.map +1 -0
  489. package/lib/esm/common/imdl/ImdlModel.d.ts +186 -0
  490. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
  491. package/lib/esm/common/imdl/ImdlModel.js +67 -0
  492. package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
  493. package/lib/esm/common/imdl/ImdlSchema.d.ts +412 -0
  494. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
  495. package/lib/esm/common/imdl/ImdlSchema.js +20 -0
  496. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
  497. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +45 -0
  498. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  499. package/lib/esm/common/imdl/ParseImdlDocument.js +1003 -0
  500. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
  501. package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
  502. package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
  503. package/lib/esm/common/render/AnimationNodeId.js +16 -0
  504. package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
  505. package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
  506. package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
  507. package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  508. package/lib/esm/common/render/MaterialParams.js.map +1 -0
  509. package/lib/esm/common/render/TextureParams.d.ts +30 -0
  510. package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
  511. package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  512. package/lib/esm/common/render/TextureParams.js.map +1 -0
  513. package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  514. package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  515. package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  516. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
  517. package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
  518. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
  519. package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
  520. package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
  521. package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
  522. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
  523. package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
  524. package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
  525. package/lib/esm/common/render/primitives/MeshParams.js +9 -0
  526. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
  527. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
  528. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  529. package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
  530. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
  531. package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
  532. package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
  533. package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
  534. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
  535. package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
  536. package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
  537. package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
  538. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
  539. package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
  540. package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  541. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
  542. package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
  543. package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
  544. package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
  545. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
  546. package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
  547. package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
  548. package/lib/esm/common/render/primitives/VertexTable.js +34 -0
  549. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
  550. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  551. package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  552. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +44 -33
  553. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
  554. package/lib/esm/core-frontend.d.ts +26 -6
  555. package/lib/esm/core-frontend.d.ts.map +1 -1
  556. package/lib/esm/core-frontend.js +26 -6
  557. package/lib/esm/core-frontend.js.map +1 -1
  558. package/lib/esm/extension/ExtensionAdmin.js +1 -1
  559. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  560. package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
  561. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  562. package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
  563. package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  564. package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
  565. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
  566. package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
  567. package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
  568. package/lib/esm/render/CreateTextureArgs.js +9 -0
  569. package/lib/esm/render/CreateTextureArgs.js.map +1 -0
  570. package/lib/esm/render/GraphicBranch.d.ts +1 -7
  571. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  572. package/lib/esm/render/GraphicBranch.js +0 -8
  573. package/lib/esm/render/GraphicBranch.js.map +1 -1
  574. package/lib/esm/render/MockRender.d.ts +4 -4
  575. package/lib/esm/render/MockRender.d.ts.map +1 -1
  576. package/lib/esm/render/MockRender.js +1 -1
  577. package/lib/esm/render/MockRender.js.map +1 -1
  578. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  579. package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
  580. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  581. package/lib/esm/render/RealityMeshParams.js +2 -2
  582. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  583. package/lib/esm/render/RenderSystem.d.ts +7 -6
  584. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  585. package/lib/esm/render/RenderSystem.js +7 -7
  586. package/lib/esm/render/RenderSystem.js.map +1 -1
  587. package/lib/esm/render/RenderTarget.d.ts +1 -1
  588. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  589. package/lib/esm/render/RenderTarget.js.map +1 -1
  590. package/lib/esm/render/VisibleFeature.d.ts +1 -1
  591. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  592. package/lib/esm/render/VisibleFeature.js.map +1 -1
  593. package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
  594. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  595. package/lib/esm/render/primitives/EdgeParams.js +29 -65
  596. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  597. package/lib/esm/render/primitives/PointStringParams.d.ts +2 -11
  598. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
  599. package/lib/esm/render/primitives/PointStringParams.js +24 -28
  600. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  601. package/lib/esm/render/primitives/Polyface.d.ts +1 -1
  602. package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
  603. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  604. package/lib/esm/render/primitives/PolylineParams.d.ts +4 -36
  605. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  606. package/lib/esm/render/primitives/PolylineParams.js +24 -36
  607. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  608. package/lib/esm/render/primitives/Strokes.d.ts +1 -1
  609. package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
  610. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  611. package/lib/esm/render/primitives/VertexTableBuilder.d.ts +28 -0
  612. package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  613. package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +60 -171
  614. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
  615. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  616. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  617. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  618. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  619. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  620. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
  621. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  622. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  623. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  624. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
  625. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  626. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  627. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  628. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  629. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  630. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  631. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +4 -3
  632. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  633. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  634. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  635. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +9 -14
  636. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  637. package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
  638. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  639. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  640. package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
  641. package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
  642. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  643. package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
  644. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  645. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  646. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  647. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  648. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  649. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  650. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  651. package/lib/esm/render/webgl/Material.d.ts +1 -1
  652. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  653. package/lib/esm/render/webgl/Material.js.map +1 -1
  654. package/lib/esm/render/webgl/Mesh.d.ts +2 -2
  655. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  656. package/lib/esm/render/webgl/Mesh.js +1 -1
  657. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  658. package/lib/esm/render/webgl/MeshData.d.ts +2 -2
  659. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  660. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  661. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  662. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  663. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  664. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  665. package/lib/esm/render/webgl/PointString.js.map +1 -1
  666. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  667. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  668. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  669. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  670. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  671. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  672. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  673. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  674. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  675. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  676. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  677. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  678. package/lib/esm/render/webgl/System.d.ts +7 -6
  679. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  680. package/lib/esm/render/webgl/System.js +1 -1
  681. package/lib/esm/render/webgl/System.js.map +1 -1
  682. package/lib/esm/render/webgl/Target.d.ts +1 -1
  683. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  684. package/lib/esm/render/webgl/Target.js +3 -3
  685. package/lib/esm/render/webgl/Target.js.map +1 -1
  686. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  687. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  688. package/lib/esm/render/webgl/Texture.js +1 -1
  689. package/lib/esm/render/webgl/Texture.js.map +1 -1
  690. package/lib/esm/render/webgl/UniformHandle.js +1 -1
  691. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  692. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  693. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  694. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  696. package/lib/esm/render-primitives.d.ts +1 -4
  697. package/lib/esm/render-primitives.d.ts.map +1 -1
  698. package/lib/esm/render-primitives.js +1 -4
  699. package/lib/esm/render-primitives.js.map +1 -1
  700. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  701. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  702. package/lib/esm/tile/B3dmReader.js +1 -1
  703. package/lib/esm/tile/B3dmReader.js.map +1 -1
  704. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  705. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  706. package/lib/esm/tile/GltfReader.d.ts +3 -3
  707. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  708. package/lib/esm/tile/GltfReader.js +12 -21
  709. package/lib/esm/tile/GltfReader.js.map +1 -1
  710. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  711. package/lib/esm/tile/IModelTile.js +12 -18
  712. package/lib/esm/tile/IModelTile.js.map +1 -1
  713. package/lib/esm/tile/IModelTileTree.d.ts +4 -1
  714. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  715. package/lib/esm/tile/IModelTileTree.js +16 -1
  716. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  717. package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
  718. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
  719. package/lib/esm/tile/ImdlDecoder.js +31 -0
  720. package/lib/esm/tile/ImdlDecoder.js.map +1 -0
  721. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +19 -0
  722. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  723. package/lib/esm/tile/ImdlGraphicsCreator.js +324 -0
  724. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
  725. package/lib/esm/tile/ImdlParser.d.ts +26 -0
  726. package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
  727. package/lib/esm/tile/ImdlParser.js +68 -0
  728. package/lib/esm/tile/ImdlParser.js.map +1 -0
  729. package/lib/esm/tile/ImdlReader.d.ts +16 -420
  730. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  731. package/lib/esm/tile/ImdlReader.js +71 -903
  732. package/lib/esm/tile/ImdlReader.js.map +1 -1
  733. package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
  734. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  735. package/lib/esm/tile/PntsReader.js +1 -1
  736. package/lib/esm/tile/PntsReader.js.map +1 -1
  737. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  738. package/lib/esm/tile/PrimaryTileTree.js +2 -1
  739. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  740. package/lib/esm/tile/RealityTileLoader.js +1 -1
  741. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  742. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  743. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  744. package/lib/esm/tile/TileAdmin.d.ts +14 -10
  745. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  746. package/lib/esm/tile/TileAdmin.js +6 -15
  747. package/lib/esm/tile/TileAdmin.js.map +1 -1
  748. package/lib/esm/tile/internal.d.ts +3 -0
  749. package/lib/esm/tile/internal.d.ts.map +1 -1
  750. package/lib/esm/tile/internal.js +3 -0
  751. package/lib/esm/tile/internal.js.map +1 -1
  752. package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
  753. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  754. package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
  755. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  756. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  757. package/lib/esm/tile/map/ImageryTileTree.js +14 -7
  758. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  759. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  760. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
  761. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  762. package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
  763. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  764. package/lib/esm/tile/map/MapLayerSources.js +3 -0
  765. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  766. package/lib/esm/tile/map/MapTile.d.ts +6 -1
  767. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  768. package/lib/esm/tile/map/MapTile.js +8 -7
  769. package/lib/esm/tile/map/MapTile.js.map +1 -1
  770. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  771. package/lib/esm/tile/map/MapTileTree.js +9 -3
  772. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  773. package/lib/esm/tools/ElementSetTool.js +1 -1
  774. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  775. package/lib/esm/tools/SelectTool.js +1 -1
  776. package/lib/esm/tools/SelectTool.js.map +1 -1
  777. package/lib/esm/tools/ToolAdmin.js +1 -1
  778. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  779. package/lib/esm/tools/ViewTool.js +1 -1
  780. package/lib/esm/tools/ViewTool.js.map +1 -1
  781. package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
  782. package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
  783. package/lib/esm/workers/ImdlParser/Worker.js +30 -0
  784. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
  785. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
  786. package/lib/esm/workers/RegisterWorker.d.ts +9 -0
  787. package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
  788. package/lib/esm/workers/RegisterWorker.js +32 -0
  789. package/lib/esm/workers/RegisterWorker.js.map +1 -0
  790. package/lib/public/scripts/parse-imdl-worker.js +1 -0
  791. package/lib/workers/webpack/parse-imdl-worker.js +1 -0
  792. package/package.json +23 -20
  793. package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
  794. package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
  795. package/lib/cjs/ImageUtil.d.ts.map +0 -1
  796. package/lib/cjs/ImageUtil.js.map +0 -1
  797. package/lib/cjs/ViewRect.d.ts.map +0 -1
  798. package/lib/cjs/ViewRect.js.map +0 -1
  799. package/lib/cjs/WebWorkerManager.d.ts +0 -49
  800. package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
  801. package/lib/cjs/WebWorkerManager.js +0 -155
  802. package/lib/cjs/WebWorkerManager.js.map +0 -1
  803. package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
  804. package/lib/cjs/gltf/GltfModel.js.map +0 -1
  805. package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
  806. package/lib/cjs/gltf/GltfParser.js.map +0 -1
  807. package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
  808. package/lib/cjs/gltf/GltfSchema.js.map +0 -1
  809. package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
  810. package/lib/cjs/render/RenderMaterial.js.map +0 -1
  811. package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
  812. package/lib/cjs/render/RenderTexture.js.map +0 -1
  813. package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
  814. package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
  815. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
  816. package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
  817. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
  818. package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
  819. package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
  820. package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
  821. package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
  822. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  823. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
  824. package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
  825. package/lib/esm/FrontendLoggerCategory.js.map +0 -1
  826. package/lib/esm/ImageUtil.d.ts.map +0 -1
  827. package/lib/esm/ImageUtil.js.map +0 -1
  828. package/lib/esm/ViewRect.d.ts.map +0 -1
  829. package/lib/esm/ViewRect.js.map +0 -1
  830. package/lib/esm/WebWorkerManager.d.ts +0 -49
  831. package/lib/esm/WebWorkerManager.d.ts.map +0 -1
  832. package/lib/esm/WebWorkerManager.js +0 -150
  833. package/lib/esm/WebWorkerManager.js.map +0 -1
  834. package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
  835. package/lib/esm/gltf/GltfModel.js.map +0 -1
  836. package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
  837. package/lib/esm/gltf/GltfParser.js.map +0 -1
  838. package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
  839. package/lib/esm/gltf/GltfSchema.js.map +0 -1
  840. package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
  841. package/lib/esm/render/RenderMaterial.js.map +0 -1
  842. package/lib/esm/render/RenderTexture.d.ts.map +0 -1
  843. package/lib/esm/render/RenderTexture.js.map +0 -1
  844. package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
  845. package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
  846. package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
  847. package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
  848. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
  849. package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
  850. package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
  851. package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
  852. package/lib/esm/render/primitives/VertexTable.js.map +0 -1
  853. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  854. package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
  855. /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  856. /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  857. /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  858. /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  859. /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
  860. /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
  861. /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  862. /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
  863. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  864. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
  865. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  866. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
  867. /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
  868. /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  869. /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  870. /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  871. /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  872. /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
  873. /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
  874. /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  875. /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
  876. /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  877. /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
  878. /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  879. /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
  880. /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"QuantityFormatter.js","sourceRoot":"","sources":["../../../src/quantity-formatting/QuantityFormatter.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 QuantityFormatting\r\n */\r\n\r\nimport { BentleyError, BeUiEvent, Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n AlternateUnitLabelsProvider, Format, FormatProps, FormatterSpec, ParseError, ParserSpec, QuantityParseResult,\r\n UnitConversionProps, UnitProps, UnitsProvider, UnitSystemKey,\r\n} from \"@itwin/core-quantity\";\r\nimport { FrontendLoggerCategory } from \"../FrontendLoggerCategory\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { BasicUnitsProvider, getDefaultAlternateUnitLabels } from \"./BasicUnitsProvider\";\r\nimport { CustomFormatPropEditorSpec } from \"./QuantityTypesEditorSpecs\";\r\n\r\n// cSpell:ignore FORMATPROPS FORMATKEY ussurvey uscustomary USCUSTOM\r\n\r\n/**\r\n * Defines standard format types for tools that need to display measurements to user.\r\n * @public\r\n */\r\nexport enum QuantityType {\r\n /** Length which is stored in meters. Typically formatted to display in meters or feet-inches based on active unit system. */\r\n Length = 1,\r\n /** Angular value which is stored in radians. Typically formatted to display degrees or Degrees-Minute-Seconds based on active unit system. */\r\n Angle = 2,\r\n /** Area value store in meters squared. Typically formatted to display in meters squared or feet squared based on active unit system. */\r\n Area = 3,\r\n /** Volume value which is stored in meters cubed. Typically formatted to display in meters cubed or feet cubed based on active unit system. */\r\n Volume = 4,\r\n /** LatLong is an angular value which is stored in radians. Typically formatted to display degrees or Degrees-Minute-Seconds based on active unit system. */\r\n LatLong = 5,\r\n /** Coordinate/Location value which is stored in meters. Typically formatted to display in meters or feet based on active unit system. */\r\n Coordinate = 6,\r\n /** Stationing is a distance value stored in meters. Typically formatted to display `xxx+xx` or `xx+xxx` based on active unit system. */\r\n Stationing = 7,\r\n /** LengthSurvey is a distance value stored in meters. Typically formatted to display in meters or US Survey Feet based on active unit system.. */\r\n LengthSurvey = 8,\r\n /** LengthEngineering is a distance value stored in meters. Typically formatted to display either meters or feet based on active unit system. */\r\n LengthEngineering = 9\r\n}\r\n\r\n/**\r\n * Used to uniquely identify the type or quantity. [[QuantityType]] are built-in types and `string` are used for custom quantity types.\r\n * @public\r\n */\r\nexport type QuantityTypeArg = QuantityType | string;\r\n\r\n/** String used to uniquely identify a QuantityType in the quantity registry. See function [[QuantityType.getQuantityTypeKey]].\r\n * @public\r\n */\r\nexport type QuantityTypeKey = string;\r\n\r\n/** String used to uniquely identify a UnitProp.\r\n * @public\r\n */\r\nexport type UnitNameKey = string;\r\n\r\n/**\r\n * Class that contains alternate Unit Labels. These labels are used when parsing strings to quantities.\r\n * One use case is to allow a \"^\", which is easily input, to be used to specify \"°\".\r\n * @internal\r\n */\r\nexport class AlternateUnitLabelsRegistry implements AlternateUnitLabelsProvider {\r\n private _alternateLabelRegistry = new Map<UnitNameKey, Set<string>>();\r\n\r\n public addAlternateLabels(key: UnitNameKey, ...labels: string[]) {\r\n [...labels].forEach((value) => this._alternateLabelRegistry.get(key)?.add(value));\r\n }\r\n\r\n constructor(defaultAlternates?: Map<UnitNameKey, Set<string>>) {\r\n if (defaultAlternates) {\r\n this._alternateLabelRegistry = defaultAlternates;\r\n }\r\n }\r\n\r\n public getAlternateUnitLabels(unit: UnitProps): string[] | undefined {\r\n const key: UnitNameKey = unit.name;\r\n const labels = this._alternateLabelRegistry.get(key);\r\n if (labels)\r\n return [...labels.values()];\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Function to return a QuantityTypeKey given either a QuantityType enum value or a string. This allows caching and\r\n * retrieving standard and custom quantity types.\r\n * @public\r\n */\r\nexport function getQuantityTypeKey(type: QuantityTypeArg): QuantityTypeKey {\r\n // For QuantityType enum values, build a string that shouldn't collide with anything a user may come up with\r\n if (typeof type === \"number\")\r\n return `QuantityTypeEnumValue-${type.toString()}`;\r\n return type;\r\n}\r\n\r\n/**\r\n * This interface supplies the definition of a `standard` quantity type that is registered with the QuantityFormatter.\r\n * A `standard` quantity type could be one of the nine delivered QuantityTypes or a CustomQuantityTypeDefinition.\r\n * @public\r\n */\r\nexport interface QuantityTypeDefinition {\r\n /** String used as a key to look up the quantity type. If defining a [[CustomQuantityTypeDefinition]] the QuantityTypeKey\r\n * should match the QuantityTypeArg. */\r\n readonly key: QuantityTypeKey;\r\n /** The type value which can be one of the standard QuantityType enum values or a unique string if defining a custom type. */\r\n readonly type: QuantityTypeArg;\r\n /** The unit that the magnitude of the quantity is stored ie. (Meter for Length and Radian for Angle). The persistence unit is\r\n * also used during formatting if the FormatProps does not define one or more composite units. */\r\n readonly persistenceUnit: UnitProps;\r\n /** Localized label to display in UI */\r\n label: string;\r\n /** Localized description that may be used to provide detailed description for the Quantity type. */\r\n description: string;\r\n /* Provide a default FormatProps for a unit system. */\r\n getDefaultFormatPropsBySystem: (requestedSystem: UnitSystemKey) => FormatProps;\r\n /** Async function to generate a [FormatterSpec]$(core-quantity) that will be called to format values.*/\r\n generateFormatterSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider) => Promise<FormatterSpec>;\r\n /** Async function to generate a [ParserSpec]$(core-quantity) that will be called to parse a string into a quantity value.*/\r\n generateParserSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider, alternateUnitLabelsProvider?: AlternateUnitLabelsProvider) => Promise<ParserSpec>;\r\n}\r\n\r\n/** CustomQuantityTypeDefinition interface is used to define a Custom quantity type that can be registered with the [[QuantityFormatter]].\r\n * A custom quantity formatter must be able to generate a FormatterSpec and ParserSpec that will be called to format and parse values.\r\n * Optionally it can provide specification of custom properties that it will use to define any formatting options. CustomQuantityTypeDefinitions\r\n * must be registered with the [[QuantityFormatter]] using the method `IModelApp.quantityFormatter.registerQuantityType`.\r\n * @public\r\n */\r\nexport interface CustomQuantityTypeDefinition extends QuantityTypeDefinition {\r\n /** Return true if the FormatProps have the necessary `custom` property definition */\r\n isCompatibleFormatProps: (formatProps: FormatProps) => boolean;\r\n /** An array of specifications that are used to generate a label and editor in the UI used to display and edit the FormatProps.\r\n * UI items defined as primary will be shown higher in the list of UI components. */\r\n primaryPropEditorSpecs?: CustomFormatPropEditorSpec[];\r\n /** An array of specifications that are used to generate a label and editor in the UI used to display and edit the FormatProps.\r\n * UI items defined as secondary will be shown below other UI components that edit FormatProps. */\r\n secondaryPropEditorSpecs?: CustomFormatPropEditorSpec[];\r\n}\r\n\r\n/** CustomQuantityTypeDefinition type guard.\r\n * @public\r\n*/\r\nexport function isCustomQuantityTypeDefinition(item: QuantityTypeDefinition): item is CustomQuantityTypeDefinition {\r\n return !!(item as CustomQuantityTypeDefinition).isCompatibleFormatProps;\r\n}\r\n\r\n/** private class to hold standard quantity definitions as defined by QuantityType enum and implement QuantityTypeDefinition interface */\r\nclass StandardQuantityTypeDefinition implements QuantityTypeDefinition {\r\n private _label: string | undefined;\r\n private _description: string | undefined;\r\n private _key: string;\r\n\r\n constructor(public type: QuantityType, public persistenceUnit: UnitProps, private _labelKey: string, private _descriptionKey: string) {\r\n this._key = getQuantityTypeKey(type);\r\n }\r\n\r\n public get key(): string { return this._key; }\r\n\r\n public get label(): string {\r\n if (!this._label) {\r\n this._label = IModelApp.localization.getLocalizedString(this._labelKey);\r\n }\r\n return this._label ?? \"\";\r\n }\r\n\r\n public get description(): string {\r\n if (!this._description) {\r\n this._description = IModelApp.localization.getLocalizedString(this._descriptionKey);\r\n }\r\n return this._description ?? this.label;\r\n }\r\n\r\n /** Get a default format to show quantity in persistence unit with precision or 6 decimal places. */\r\n public getDefaultFormatPropsBySystem(requestedSystem: UnitSystemKey): FormatProps {\r\n // Fallback same as Format \"DefaultRealU\" in Formats ecschema\r\n const fallbackProps: FormatProps = {\r\n formatTraits: [\"keepSingleZero\", \"keepDecimalPoint\", \"showUnitLabel\"],\r\n precision: 6,\r\n type: \"Decimal\",\r\n uomSeparator: \" \",\r\n decimalSeparator: \".\",\r\n };\r\n\r\n const defaultUnitSystemData = DEFAULT_FORMATKEY_BY_UNIT_SYSTEM.find((value) => value.system === requestedSystem);\r\n if (defaultUnitSystemData) {\r\n const defaultFormatEntry = defaultUnitSystemData.entries.find((value) => value.type === this.key);\r\n if (defaultFormatEntry) {\r\n const defaultFormatPropsEntry = DEFAULT_FORMATPROPS.find((props) => props.key === defaultFormatEntry.formatKey);\r\n if (defaultFormatPropsEntry)\r\n return defaultFormatPropsEntry.format;\r\n }\r\n }\r\n\r\n return fallbackProps;\r\n }\r\n\r\n public async generateFormatterSpec(formatProps: FormatProps, unitsProvider: UnitsProvider): Promise<FormatterSpec> {\r\n const format = await Format.createFromJSON(this.key, unitsProvider, formatProps);\r\n return FormatterSpec.create(format.name, format, unitsProvider, this.persistenceUnit);\r\n }\r\n\r\n public async generateParserSpec(formatProps: FormatProps, unitsProvider: UnitsProvider, alternateUnitLabelsProvider?: AlternateUnitLabelsProvider) {\r\n const format = await Format.createFromJSON(this.key, unitsProvider, formatProps);\r\n return ParserSpec.create(format, unitsProvider, this.persistenceUnit, alternateUnitLabelsProvider);\r\n }\r\n}\r\n\r\n/** Override format entries can define formats for any of the different unit systems.\r\n * @public\r\n */\r\nexport interface OverrideFormatEntry {\r\n /** Override format for \"imperial\" unit system */\r\n imperial?: FormatProps;\r\n /** Override format for \"metric\" unit system */\r\n metric?: FormatProps;\r\n /** Override format for \"usCustomary\" unit system */\r\n usCustomary?: FormatProps;\r\n /** Override format for \"usSurvey\" unit system */\r\n usSurvey?: FormatProps;\r\n}\r\n\r\n/** Interface that defines the functions required to be implemented to provide custom formatting and parsing of a custom quantity type.\r\n * @public\r\n */\r\nexport interface FormatterParserSpecsProvider {\r\n /** Custom quantity id */\r\n quantityType: QuantityTypeArg;\r\n /** Async function to return FormatterSpec for a custom quantity type */\r\n createFormatterSpec: (unitSystem: UnitSystemKey) => Promise<FormatterSpec>;\r\n /** Async function to return ParserSpec for a custom quantity type */\r\n createParserSpec: (unitSystem: UnitSystemKey) => Promise<ParserSpec>;\r\n}\r\n\r\n/** Arguments sent to FormattingUnitSystemChanged event listeners.\r\n * @public\r\n */\r\nexport interface FormattingUnitSystemChangedArgs {\r\n /** string that defines unit system activated. */\r\n readonly system: UnitSystemKey;\r\n}\r\n\r\n/** Arguments sent to QuantityFormatsChanged event listeners.\r\n * @public\r\n */\r\nexport interface QuantityFormatsChangedArgs {\r\n /** string that represents the QuantityType that has been overriden or the overrides cleared. */\r\n readonly quantityType: string;\r\n}\r\n\r\n/** Arguments sent to [[UnitFormattingSettingsProvider]] when overrides are changed.\r\n * @public\r\n */\r\nexport interface QuantityFormatOverridesChangedArgs {\r\n /** string that represents the QuantityType that has been overriden or the overrides cleared. */\r\n readonly typeKey: QuantityTypeKey;\r\n /** overrideEntry will be undefined when clearing overrides */\r\n readonly overrideEntry?: OverrideFormatEntry;\r\n /** used only when change applies to a single unit system */\r\n readonly unitSystem?: UnitSystemKey;\r\n}\r\n\r\n/**\r\n * The UnitFormattingSettingsProvider interface is used to store and retrieve override FormatProps and Presentation Unit System\r\n * for use by the QuantityFormatter. If no UnitFormattingSettingsProvider is supplied to the QuantityFormatter then any overrides\r\n * set are lost when the session is closed. The `ui-test-app` has and example implementation that uses browser local storage via the\r\n * class [[LocalUnitFormatProvider]] [here](https://github.com/iTwin/itwinjs-core/blob/d341e030d4c1427effd80ea54b3d57fec8ad1bc1/test-apps/ui-test-app/src/frontend/index.tsx#L315).\r\n * @public\r\n */\r\nexport interface UnitFormattingSettingsProvider {\r\n /** serializes JSON object containing format overrides for a specific quantity type. */\r\n store(quantityTypeKey: QuantityTypeKey, overrideProps: OverrideFormatEntry): Promise<boolean>;\r\n /** retrieves serialized JSON object containing format overrides for a specific quantity type. */\r\n retrieve(quantityTypeKey: QuantityTypeKey): Promise<OverrideFormatEntry | undefined>;\r\n /** removes the override formats for a specific quantity type. */\r\n remove(quantityTypeKey: QuantityTypeKey): Promise<boolean>;\r\n /** retrieves the active unit system typically based on the \"active\" iModelConnection */\r\n retrieveUnitSystem(defaultKey: UnitSystemKey): Promise<UnitSystemKey>;\r\n /** store the active unit system typically for the \"active\" iModelConnection */\r\n storeUnitSystemKey(unitSystemKey: UnitSystemKey): Promise<boolean>;\r\n /** Function to load overrides for a specific IModelConnection. Typically this is not called often since typical\r\n * implementations monitor for IModelConnection changes and call this method internally. */\r\n loadOverrides(imodel: IModelConnection | undefined): Promise<void>;\r\n /** function called to save changes to Presentation Unit System */\r\n storeUnitSystemSetting(args: FormattingUnitSystemChangedArgs): Promise<void>;\r\n /** function called to save format overrides */\r\n storeFormatOverrides(args: QuantityFormatOverridesChangedArgs): Promise<void>;\r\n /** property that is set by the implementation to inform the BaseUnitFormattingSettingsProvider if the provider\r\n * should trigger reloading of the overrides when the \"active\" imodel changes. */\r\n readonly maintainOverridesPerIModel: boolean;\r\n}\r\n\r\n/** Class that supports formatting quantity values into strings and parsing strings into quantity values. This class also maintains\r\n * the \"active\" unit system and caches FormatterSpecs and ParserSpecs for the \"active\" unit system to allow synchronous access to\r\n * parsing and formatting values. The support unit systems are defined by [[UnitSystemKey]] and is kept in synch with the unit systems\r\n * provided by the Presentation Manager on the backend. The QuantityFormatter contains a registry of quantity type definitions. These definitions implement\r\n * the [[QuantityTypeDefinition]] interface, which among other things, provide default [FormatProps]$(core-quantity), and provide methods\r\n * to generate both a [FormatterSpec]$(core-quantity) and a [ParserSpec]$(core-quantity). There are built-in quantity types that are\r\n * identified by the [[QuantityType]] enum. [[CustomQuantityTypeDefinition]] can be registered to extend the available quantity types available\r\n * by frontend tools. The QuantityFormatter also allows the default formats to be overriden.\r\n *\r\n * @public\r\n */\r\nexport class QuantityFormatter implements UnitsProvider {\r\n private _unitsProvider: UnitsProvider = new BasicUnitsProvider();\r\n private _alternateUnitLabelsRegistry = new AlternateUnitLabelsRegistry(getDefaultAlternateUnitLabels());\r\n /** Registry containing available quantity type definitions. */\r\n protected _quantityTypeRegistry: Map<QuantityTypeKey, QuantityTypeDefinition> = new Map<QuantityTypeKey, QuantityTypeDefinition>();\r\n /** Active UnitSystem key - must be one of \"imperial\", \"metric\", \"usCustomary\", or \"usSurvey\". */\r\n protected _activeUnitSystem: UnitSystemKey = \"imperial\";\r\n /** Map of FormatSpecs for all available QuantityTypes and the active Unit System */\r\n protected _activeFormatSpecsByType = new Map<QuantityTypeKey, FormatterSpec>();\r\n /** Map of ParserSpecs for all available QuantityTypes and the active Unit System */\r\n protected _activeParserSpecsByType = new Map<QuantityTypeKey, ParserSpec>();\r\n /** Map of FormatSpecs that have been overriden from the default. */\r\n protected _overrideFormatPropsByUnitSystem = new Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>();\r\n /** Optional object that gets called to store and retrieve format overrides. */\r\n protected _unitFormattingSettingsProvider: UnitFormattingSettingsProvider | undefined;\r\n\r\n /** Set the settings provider and if not iModel specific initialize setting for user. */\r\n public async setUnitFormattingSettingsProvider(provider: UnitFormattingSettingsProvider) {\r\n this._unitFormattingSettingsProvider = provider;\r\n if (!provider.maintainOverridesPerIModel)\r\n await provider.loadOverrides(undefined);\r\n }\r\n\r\n /** Called after the active unit system is changed.\r\n * The system will report the UnitSystemKey/name of the the system that was activated.\r\n */\r\n public readonly onActiveFormattingUnitSystemChanged = new BeUiEvent<FormattingUnitSystemChangedArgs>();\r\n\r\n /** Called when the format of a QuantityType is overriden or the override is cleared. The string returned will\r\n * be a QuantityTypeKey generated by method `getQuantityTypeKey`.\r\n */\r\n public readonly onQuantityFormatsChanged = new BeUiEvent<QuantityFormatsChangedArgs>();\r\n\r\n /** Fired when the active UnitsProvider is updated. This will allow cached Formatter and Parser specs to be updated if necessary. */\r\n public readonly onUnitsProviderChanged = new BeUiEvent<void>();\r\n\r\n /**\r\n * constructor\r\n * @param showMetricOrUnitSystem - Pass in `true` to show Metric formatted quantity values. Defaults to Imperial. To explicitly\r\n * set it to a specific unit system pass a UnitSystemKey.\r\n */\r\n constructor(showMetricOrUnitSystem?: boolean | UnitSystemKey) {\r\n if (undefined !== showMetricOrUnitSystem) {\r\n if (typeof showMetricOrUnitSystem === \"boolean\")\r\n this._activeUnitSystem = showMetricOrUnitSystem ? \"metric\" : \"imperial\";\r\n else\r\n this._activeUnitSystem = showMetricOrUnitSystem;\r\n }\r\n }\r\n\r\n private getOverrideFormatPropsByQuantityType(quantityTypeKey: QuantityTypeKey, unitSystem?: UnitSystemKey): FormatProps | undefined {\r\n const requestedUnitSystem = unitSystem ?? this.activeUnitSystem;\r\n const overrideMap = this._overrideFormatPropsByUnitSystem.get(requestedUnitSystem);\r\n if (!overrideMap)\r\n return undefined;\r\n\r\n return overrideMap.get(quantityTypeKey);\r\n }\r\n\r\n /** Method used to register all QuantityTypes defined in QuantityType enum. */\r\n protected async initializeQuantityTypesRegistry() {\r\n // QuantityType.Length\r\n const lengthUnit = await this.findUnitByName(\"Units.M\");\r\n const lengthDefinition = new StandardQuantityTypeDefinition(QuantityType.Length, lengthUnit,\r\n \"iModelJs:QuantityType.Length.label\", \"iModelJs:QuantityType.Length.description\");\r\n this._quantityTypeRegistry.set(lengthDefinition.key, lengthDefinition);\r\n\r\n // QuantityType.LengthEngineering\r\n const lengthEngineeringDefinition = new StandardQuantityTypeDefinition(QuantityType.LengthEngineering, lengthUnit,\r\n \"iModelJs:QuantityType.LengthEngineering.label\", \"iModelJs:QuantityType.LengthEngineering.description\");\r\n this._quantityTypeRegistry.set(lengthEngineeringDefinition.key, lengthEngineeringDefinition);\r\n\r\n // QuantityType.Coordinate\r\n const coordinateDefinition = new StandardQuantityTypeDefinition(QuantityType.Coordinate, lengthUnit,\r\n \"iModelJs:QuantityType.Coordinate.label\", \"iModelJs:QuantityType.Coordinate.description\");\r\n this._quantityTypeRegistry.set(coordinateDefinition.key, coordinateDefinition);\r\n\r\n // QuantityType.Stationing\r\n const stationingDefinition = new StandardQuantityTypeDefinition(QuantityType.Stationing, lengthUnit,\r\n \"iModelJs:QuantityType.Stationing.label\", \"iModelJs:QuantityType.Stationing.description\");\r\n this._quantityTypeRegistry.set(stationingDefinition.key, stationingDefinition);\r\n\r\n // QuantityType.LengthSurvey\r\n const lengthSurveyDefinition = new StandardQuantityTypeDefinition(QuantityType.LengthSurvey, lengthUnit,\r\n \"iModelJs:QuantityType.LengthSurvey.label\", \"iModelJs:QuantityType.LengthSurvey.description\");\r\n this._quantityTypeRegistry.set(lengthSurveyDefinition.key, lengthSurveyDefinition);\r\n\r\n // QuantityType.Angle\r\n const radUnit = await this.findUnitByName(\"Units.RAD\");\r\n const angleDefinition = new StandardQuantityTypeDefinition(QuantityType.Angle, radUnit,\r\n \"iModelJs:QuantityType.Angle.label\", \"iModelJs:QuantityType.Angle.description\");\r\n this._quantityTypeRegistry.set(angleDefinition.key, angleDefinition);\r\n\r\n // QuantityType.LatLong\r\n const latLongDefinition = new StandardQuantityTypeDefinition(QuantityType.LatLong, radUnit,\r\n \"iModelJs:QuantityType.LatLong.label\", \"iModelJs:QuantityType.LatLong.description\");\r\n this._quantityTypeRegistry.set(latLongDefinition.key, latLongDefinition);\r\n\r\n // QuantityType.Area\r\n const sqMetersUnit = await this.findUnitByName(\"Units.SQ_M\");\r\n const areaDefinition = new StandardQuantityTypeDefinition(QuantityType.Area, sqMetersUnit,\r\n \"iModelJs:QuantityType.Area.label\", \"iModelJs:QuantityType.Area.description\");\r\n this._quantityTypeRegistry.set(areaDefinition.key, areaDefinition);\r\n\r\n // QuantityType.Volume\r\n const cubicMetersUnit = await this.findUnitByName(\"Units.CUB_M\");\r\n const volumeDefinition = new StandardQuantityTypeDefinition(QuantityType.Volume, cubicMetersUnit,\r\n \"iModelJs:QuantityType.Volume.label\", \"iModelJs:QuantityType.Volume.description\");\r\n this._quantityTypeRegistry.set(volumeDefinition.key, volumeDefinition);\r\n }\r\n\r\n /** Asynchronous call to load Formatting and ParsingSpecs for a unit system. This method ends up caching FormatterSpecs and ParserSpecs\r\n * so they can be quickly accessed.\r\n * @internal public for unit test usage\r\n */\r\n protected async loadFormatAndParsingMapsForSystem(systemType?: UnitSystemKey): Promise<void> {\r\n const systemKey = (undefined !== systemType) ? systemType : this._activeUnitSystem;\r\n const formatPropsByType = new Map<QuantityTypeDefinition, FormatProps>();\r\n\r\n // load cache for every registered QuantityType\r\n [...this.quantityTypesRegistry.keys()].forEach((key) => {\r\n const entry = this.quantityTypesRegistry.get(key)!;\r\n formatPropsByType.set(entry, this.getFormatPropsByQuantityTypeEntryAndSystem(entry, systemKey));\r\n });\r\n\r\n for (const [entry, formatProps] of formatPropsByType) {\r\n await this.loadFormatAndParserSpec(entry, formatProps);\r\n }\r\n }\r\n\r\n private getFormatPropsByQuantityTypeEntryAndSystem(quantityEntry: QuantityTypeDefinition, requestedSystem: UnitSystemKey, ignoreOverrides?: boolean): FormatProps {\r\n if (!ignoreOverrides) {\r\n const overrideProps = this.getOverrideFormatPropsByQuantityType(quantityEntry.key, requestedSystem);\r\n if (overrideProps)\r\n return overrideProps;\r\n }\r\n\r\n return quantityEntry.getDefaultFormatPropsBySystem(requestedSystem);\r\n }\r\n\r\n private async loadFormatAndParserSpec(quantityTypeDefinition: QuantityTypeDefinition, formatProps: FormatProps) {\r\n const formatterSpec = await quantityTypeDefinition.generateFormatterSpec(formatProps, this.unitsProvider);\r\n const parserSpec = await quantityTypeDefinition.generateParserSpec(formatProps, this.unitsProvider, this.alternateUnitLabelsProvider);\r\n this._activeFormatSpecsByType.set(quantityTypeDefinition.key, formatterSpec);\r\n this._activeParserSpecsByType.set(quantityTypeDefinition.key, parserSpec);\r\n }\r\n\r\n // repopulate formatSpec and parserSpec entries using only default format\r\n private async loadDefaultFormatAndParserSpecForQuantity(typeKey: QuantityTypeKey) {\r\n const quantityTypeDefinition = this.quantityTypesRegistry.get(typeKey);\r\n if (!quantityTypeDefinition)\r\n throw new Error(`Unable to locate QuantityType by key ${typeKey}`);\r\n\r\n const defaultFormat = quantityTypeDefinition.getDefaultFormatPropsBySystem(this.activeUnitSystem);\r\n await this.loadFormatAndParserSpec(quantityTypeDefinition, defaultFormat);\r\n }\r\n\r\n private async setOverrideFormatsByQuantityTypeKey(typeKey: QuantityTypeKey, overrideEntry: OverrideFormatEntry) {\r\n // extract overrides and insert into appropriate override map entry\r\n Object.keys(overrideEntry).forEach((systemKey) => {\r\n const unitSystemKey = systemKey as UnitSystemKey;\r\n const props = overrideEntry[unitSystemKey];\r\n if (props) {\r\n if (this._overrideFormatPropsByUnitSystem.has(unitSystemKey)) {\r\n this._overrideFormatPropsByUnitSystem.get(unitSystemKey)!.set(typeKey, props);\r\n } else {\r\n const newMap = new Map<string, FormatProps>();\r\n newMap.set(typeKey, props);\r\n this._overrideFormatPropsByUnitSystem.set(unitSystemKey, newMap);\r\n }\r\n }\r\n });\r\n\r\n await this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey, overrideEntry });\r\n\r\n const formatProps = this.getOverrideFormatPropsByQuantityType(typeKey, this.activeUnitSystem);\r\n if (formatProps) {\r\n const typeEntry = this.quantityTypesRegistry.get(typeKey);\r\n if (typeEntry) {\r\n await this.loadFormatAndParserSpec(typeEntry, formatProps);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: typeKey });\r\n }\r\n }\r\n }\r\n\r\n /** Method called to clear override and restore defaults formatter and parser spec */\r\n private async clearOverrideFormatsByQuantityTypeKey(type: QuantityTypeKey) {\r\n const unitSystem = this.activeUnitSystem;\r\n if (this.getOverrideFormatPropsByQuantityType(type, unitSystem)) {\r\n const overrideMap = this._overrideFormatPropsByUnitSystem.get(unitSystem);\r\n if (overrideMap && overrideMap.has(type)) {\r\n overrideMap.delete(type);\r\n await this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey: type, unitSystem });\r\n\r\n await this.loadDefaultFormatAndParserSpecForQuantity(type);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: type });\r\n }\r\n }\r\n }\r\n\r\n /** This method is called during IModelApp initialization to load the standard quantity types into the registry and to initialize the cache.\r\n * @internal\r\n */\r\n public async onInitialized() {\r\n await this.initializeQuantityTypesRegistry();\r\n\r\n // initialize default format and parsing specs\r\n await this.loadFormatAndParsingMapsForSystem();\r\n }\r\n\r\n /** Return a map that serves as a registry of all standard and custom quantity types. */\r\n public get quantityTypesRegistry() {\r\n return this._quantityTypeRegistry;\r\n }\r\n\r\n /** Return the class the contain map of all alternate labels for units. These alternate labels are used when parsing strings in quantity values. */\r\n public get alternateUnitLabelsProvider(): AlternateUnitLabelsProvider {\r\n return this._alternateUnitLabelsRegistry;\r\n }\r\n\r\n /**\r\n * Add one or more alternate labels for a unit - these labels are used during string parsing.\r\n * @param key UnitNameKey which comes from `UnitProps.name`\r\n * @param labels one or more unit labels\r\n */\r\n public addAlternateLabels(key: UnitNameKey, ...labels: string[]) {\r\n this._alternateUnitLabelsRegistry.addAlternateLabels(key, ...labels);\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\r\n /** Get/Set the active UnitsProvider class. */\r\n public get unitsProvider() {\r\n return this._unitsProvider;\r\n }\r\n\r\n public set unitsProvider(unitsProvider: UnitsProvider) {\r\n this.setUnitsProvider(unitsProvider); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** async method to set a units provider and reload caches */\r\n public async setUnitsProvider(unitsProvider: UnitsProvider) {\r\n this._unitsProvider = unitsProvider;\r\n\r\n try {\r\n // force all cached data to be reinitialized\r\n await IModelApp.quantityFormatter.onInitialized();\r\n } catch(err) {\r\n Logger.logWarning(`${FrontendLoggerCategory.Package}.quantityFormatter`, BentleyError.getErrorMessage(err), BentleyError.getErrorMetadata(err));\r\n Logger.logWarning(`${FrontendLoggerCategory.Package}.quantityFormatter`, \"An exception occurred initializing the iModelApp.quantityFormatter with the given UnitsProvider. Defaulting back to the internal units provider.\");\r\n // If there is a problem initializing with the given provider, default back to the internal provider\r\n await IModelApp.quantityFormatter.resetToUseInternalUnitsProvider();\r\n return;\r\n }\r\n\r\n // force default tool to start so any tool that may be using cached data will not be using bad data.\r\n if (IModelApp.toolAdmin)\r\n await IModelApp.toolAdmin.startDefaultTool();\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\r\n /** Async call typically used after IModel is closed to reset UnitsProvider to default one that does not require an Units schema. */\r\n public async resetToUseInternalUnitsProvider() {\r\n if (this._unitsProvider instanceof BasicUnitsProvider)\r\n return;\r\n\r\n await this.setUnitsProvider(new BasicUnitsProvider());\r\n }\r\n\r\n /** Async call to register a CustomQuantityType and load the FormatSpec and ParserSpec for the new type. */\r\n public async registerQuantityType(entry: CustomQuantityTypeDefinition, replace?: boolean) {\r\n if (!replace && this._quantityTypeRegistry.has(entry.key))\r\n return false;\r\n\r\n this._quantityTypeRegistry.set(entry.key, entry);\r\n // load any overrides so any saved overrides for the type being registered are applied\r\n if (this._unitFormattingSettingsProvider)\r\n await this._unitFormattingSettingsProvider.loadOverrides(undefined);\r\n\r\n if (entry.getDefaultFormatPropsBySystem) {\r\n const formatProps = entry.getDefaultFormatPropsBySystem(this.activeUnitSystem);\r\n await this.loadFormatAndParserSpec(entry, formatProps);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Reinitialize caches. Typically called by active UnitFormattingSettingsProvider.\r\n * startDefaultTool - set to true to start the Default to instead of leaving any active tool pointing to cached unit data that is no longer valid\r\n * @public\r\n */\r\n public async reinitializeFormatAndParsingsMaps(overrideFormatPropsByUnitSystem: Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>,\r\n unitSystemKey?: UnitSystemKey, fireUnitSystemChanged?: boolean, startDefaultTool?: boolean): Promise<void> {\r\n this._overrideFormatPropsByUnitSystem.clear();\r\n if (overrideFormatPropsByUnitSystem.size) {\r\n this._overrideFormatPropsByUnitSystem = overrideFormatPropsByUnitSystem;\r\n }\r\n\r\n unitSystemKey && (this._activeUnitSystem = unitSystemKey);\r\n await this.loadFormatAndParsingMapsForSystem(this._activeUnitSystem);\r\n fireUnitSystemChanged && this.onActiveFormattingUnitSystemChanged.emit({ system: this._activeUnitSystem });\r\n IModelApp.toolAdmin && startDefaultTool && await IModelApp.toolAdmin.startDefaultTool();\r\n }\r\n\r\n /** Set the Active unit system to one of the supported types. This will asynchronously load the formatter and parser specs for the activated system. */\r\n public async setActiveUnitSystem(isImperialOrUnitSystem: UnitSystemKey | boolean, restartActiveTool?: boolean): Promise<void> {\r\n let systemType: UnitSystemKey;\r\n if (typeof isImperialOrUnitSystem === \"boolean\")\r\n systemType = isImperialOrUnitSystem ? \"imperial\" : \"metric\";\r\n else\r\n systemType = isImperialOrUnitSystem;\r\n\r\n if (this._activeUnitSystem === systemType)\r\n return;\r\n\r\n this._activeUnitSystem = systemType;\r\n await this.loadFormatAndParsingMapsForSystem(systemType);\r\n // allow settings provider to store the change\r\n await this._unitFormattingSettingsProvider?.storeUnitSystemSetting({ system: systemType });\r\n // fire current event\r\n this.onActiveFormattingUnitSystemChanged.emit({ system: systemType });\r\n if (IModelApp.toolAdmin && restartActiveTool)\r\n return IModelApp.toolAdmin.startDefaultTool();\r\n }\r\n\r\n /** Retrieve the active [[UnitSystemKey]] which is used to determine what formats are to be used to display quantities */\r\n public get activeUnitSystem(): UnitSystemKey { return this._activeUnitSystem; }\r\n\r\n /** Clear any formatting override for specified quantity type, but only for the \"active\" Unit System. */\r\n public async clearOverrideFormats(type: QuantityTypeArg) {\r\n await this.clearOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Set formatting override for specified quantity type, but only for the \"active\" Unit System. */\r\n public async setOverrideFormats(type: QuantityTypeArg, overrideEntry: OverrideFormatEntry) {\r\n await this.setOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type), overrideEntry);\r\n }\r\n\r\n /** Set Override Format for a quantity type, but only in the \"active\" Unit System. */\r\n public async setOverrideFormat(type: QuantityTypeArg, overrideFormat: FormatProps) {\r\n const typeKey = this.getQuantityTypeKey(type);\r\n let overrideEntry: OverrideFormatEntry = {};\r\n if (this.activeUnitSystem === \"imperial\")\r\n overrideEntry = { imperial: overrideFormat };\r\n else if (this.activeUnitSystem === \"metric\")\r\n overrideEntry = { metric: overrideFormat };\r\n else if (this.activeUnitSystem === \"usCustomary\")\r\n overrideEntry = { usCustomary: overrideFormat };\r\n else\r\n overrideEntry = { usSurvey: overrideFormat };\r\n\r\n await this.setOverrideFormatsByQuantityTypeKey(typeKey, overrideEntry);\r\n }\r\n\r\n /** Clear formatting override for all quantity types, but only for the \"active\" Unit System. */\r\n public async clearAllOverrideFormats() {\r\n if (0 === this._overrideFormatPropsByUnitSystem.size)\r\n return;\r\n\r\n if (this._overrideFormatPropsByUnitSystem.has(this.activeUnitSystem)) {\r\n const overrides = this._overrideFormatPropsByUnitSystem.get(this.activeUnitSystem);\r\n const typesRemoved: string[] = [];\r\n if (overrides && overrides.size) {\r\n const promises = new Array<Promise<void> | undefined>();\r\n overrides.forEach((_props, typeKey) => {\r\n typesRemoved.push(typeKey);\r\n promises.push(this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey, unitSystem: this.activeUnitSystem }));\r\n });\r\n await Promise.all(promises);\r\n }\r\n\r\n if (typesRemoved.length) {\r\n const promises = new Array<Promise<void>>();\r\n typesRemoved.forEach((typeRemoved) => promises.push(this.loadDefaultFormatAndParserSpecForQuantity(typeRemoved)));\r\n await Promise.all(promises);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: typesRemoved.join(\"|\") });\r\n }\r\n }\r\n }\r\n\r\n /** Converts a QuantityTypeArg into a QuantityTypeKey/string value that can be used to lookup custom and standard quantity types. */\r\n public getQuantityTypeKey(type: QuantityTypeArg): string {\r\n return getQuantityTypeKey(type);\r\n }\r\n\r\n /** Return [[QuantityTypeDefinition]] if type has been registered. Standard QuantityTypes are automatically registered. */\r\n public getQuantityDefinition(type: QuantityTypeArg) {\r\n return this.quantityTypesRegistry.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Synchronous call to get a FormatterSpec of a QuantityType. If the FormatterSpec is not yet cached an undefined object is returned. The\r\n * cache is populated by the async call loadFormatAndParsingMapsForSystem.\r\n */\r\n public findFormatterSpecByQuantityType(type: QuantityTypeArg, _unused?: boolean): FormatterSpec | undefined {\r\n return this._activeFormatSpecsByType.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType. This formatter spec can be used to synchronously format quantities. */\r\n public async generateFormatterSpecByType(type: QuantityTypeArg, formatProps: FormatProps) {\r\n const quantityTypeDefinition = this.quantityTypesRegistry.get(this.getQuantityTypeKey(type));\r\n if (quantityTypeDefinition)\r\n return quantityTypeDefinition.generateFormatterSpec(formatProps, this.unitsProvider);\r\n\r\n throw new Error(`Unable to generate FormatSpec for QuantityType ${type}`);\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType and a Unit System. This formatter spec can be used to synchronously format quantities.\r\n * @param type One of the built-in quantity types supported.\r\n * @param system Requested unit system key. Note it is more efficient to use setActiveUnitSystem to set up formatters for all\r\n * quantity types of a unit system.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getFormatterSpecByQuantityTypeAndSystem(type: QuantityTypeArg, system?: UnitSystemKey): Promise<FormatterSpec | undefined> {\r\n const quantityKey = this.getQuantityTypeKey(type);\r\n const requestedSystem = system ?? this.activeUnitSystem;\r\n\r\n if (requestedSystem === this.activeUnitSystem) {\r\n const formatterSpec = this._activeFormatSpecsByType.get(quantityKey);\r\n if (formatterSpec)\r\n return formatterSpec;\r\n }\r\n\r\n const entry = this.quantityTypesRegistry.get(quantityKey);\r\n if (!entry)\r\n throw new Error(`Unable to find registered quantity type with key ${quantityKey}`);\r\n return entry.generateFormatterSpec(this.getFormatPropsByQuantityTypeEntryAndSystem(entry, requestedSystem), this.unitsProvider);\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType.\r\n * @param type One of the built-in quantity types supported.\r\n * @param isImperial Argument to specify use of imperial or metric unit system. If left undefined the active unit system is used.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getFormatterSpecByQuantityType(type: QuantityTypeArg, isImperial?: boolean): Promise<FormatterSpec | undefined> {\r\n let requestedSystem = this.activeUnitSystem;\r\n if (undefined !== isImperial)\r\n requestedSystem = isImperial ? \"imperial\" : \"metric\";\r\n return this.getFormatterSpecByQuantityTypeAndSystem(type, requestedSystem);\r\n }\r\n\r\n /** Synchronous call to get a ParserSpec for a QuantityType. If the ParserSpec is not yet cached an undefined object is returned. The\r\n * cache is populated when the active units system is set.\r\n */\r\n public findParserSpecByQuantityType(type: QuantityTypeArg): ParserSpec | undefined {\r\n return this._activeParserSpecsByType.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Asynchronous Call to get a ParserSpec for a QuantityType. If the UnitSystemKey is not specified the active Unit System is used. **/\r\n public async getParserSpecByQuantityTypeAndSystem(type: QuantityTypeArg, system?: UnitSystemKey): Promise<ParserSpec | undefined> {\r\n const quantityKey = this.getQuantityTypeKey(type);\r\n const requestedSystem = system ?? this.activeUnitSystem;\r\n\r\n if (requestedSystem === this.activeUnitSystem) {\r\n const parserSpec = this._activeParserSpecsByType.get(quantityKey);\r\n if (parserSpec)\r\n return parserSpec;\r\n }\r\n\r\n const entry = this.quantityTypesRegistry.get(quantityKey);\r\n if (!entry)\r\n throw new Error(`Unable to find registered quantity type with key ${quantityKey}`);\r\n return entry.generateParserSpec(this.getFormatPropsByQuantityTypeEntryAndSystem(entry, requestedSystem), this.unitsProvider);\r\n }\r\n\r\n /** Asynchronous Call to get a ParserSpec for a QuantityType.\r\n * @param type One of the built-in quantity types supported.\r\n * @param isImperial Argument to specify use of imperial or metric unit system. If left undefined the active unit system is used.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getParserSpecByQuantityType(type: QuantityTypeArg, isImperial?: boolean): Promise<ParserSpec | undefined> {\r\n let requestedSystem = this.activeUnitSystem;\r\n if (undefined !== isImperial)\r\n requestedSystem = isImperial ? \"imperial\" : \"metric\";\r\n return this.getParserSpecByQuantityTypeAndSystem(type, requestedSystem);\r\n }\r\n\r\n /** Generates a formatted string for a quantity given its format spec.\r\n * @param magnitude The magnitude of the quantity.\r\n * @param formatSpec The format specification. See methods getFormatterSpecByQuantityType and findFormatterSpecByQuantityType.\r\n * @return the formatted string.\r\n */\r\n public formatQuantity(magnitude: number, formatSpec: FormatterSpec | undefined): string {\r\n /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */\r\n if (formatSpec)\r\n return formatSpec.applyFormatting(magnitude);\r\n return magnitude.toString();\r\n }\r\n\r\n /** Parse input string into quantity given the ParserSpec\r\n * @param inString The magnitude of the quantity.\r\n * @param parserSpec The parse specification the defines the expected format of the string and the conversion to the output unit.\r\n * @return QuantityParseResult object containing either the parsed value or an error value if unsuccessful.\r\n */\r\n public parseToQuantityValue(inString: string, parserSpec: ParserSpec | undefined): QuantityParseResult {\r\n if (parserSpec)\r\n return parserSpec.parseToQuantityValue(inString);\r\n return { ok: false, error: ParseError.InvalidParserSpec };\r\n }\r\n\r\n /**\r\n * Get a UnitSystemKey from a string that may have been entered via a key-in. Supports different variation of\r\n * unit system names that have been used in the past.\r\n */\r\n public getUnitSystemFromString(inputSystem: string, fallback?: UnitSystemKey): UnitSystemKey {\r\n switch (inputSystem.toLowerCase()) {\r\n case \"metric\":\r\n case \"si\":\r\n return \"metric\";\r\n case \"imperial\":\r\n case \"british-imperial\":\r\n return \"imperial\";\r\n case \"uscustomary\":\r\n case \"us-customary\":\r\n case \"us\":\r\n return \"usCustomary\";\r\n case \"ussurvey\":\r\n case \"us-survey\":\r\n case \"survey\":\r\n return \"usSurvey\";\r\n default:\r\n if (undefined !== fallback)\r\n return fallback;\r\n break;\r\n }\r\n return \"imperial\";\r\n }\r\n\r\n /** Return true if the QuantityType is using an override format. */\r\n public hasActiveOverride(type: QuantityTypeArg, checkOnlyActiveUnitSystem?: boolean): boolean {\r\n const quantityTypeKey = this.getQuantityTypeKey(type);\r\n\r\n if (checkOnlyActiveUnitSystem) {\r\n const overrides = this._overrideFormatPropsByUnitSystem.get(this.activeUnitSystem);\r\n if (overrides && overrides.has(quantityTypeKey))\r\n return true;\r\n return false;\r\n }\r\n\r\n for (const [_key, overrideMap] of this._overrideFormatPropsByUnitSystem) {\r\n if (overrideMap.has(quantityTypeKey))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Get the cached FormatProps give a quantity type. If ignoreOverrides is false then if the format has been overridden\r\n * the overridden format is returned, else the standard format is returned.\r\n */\r\n public getFormatPropsByQuantityType(quantityType: QuantityTypeArg, requestedSystem?: UnitSystemKey, ignoreOverrides?: boolean) {\r\n const quantityEntry = this.quantityTypesRegistry.get(this.getQuantityTypeKey(quantityType));\r\n if (quantityEntry)\r\n return this.getFormatPropsByQuantityTypeEntryAndSystem(quantityEntry, requestedSystem ?? this.activeUnitSystem, ignoreOverrides);\r\n return undefined;\r\n }\r\n\r\n // keep following to maintain existing API of implementing UnitsProvider\r\n /** Find [UnitProp] for a specific unit label. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnit(unitLabel, schemaName, phenomenon, unitSystem);\r\n }\r\n\r\n /** Returns all defined units for the specified Unit Family/Phenomenon. */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n return this._unitsProvider.getUnitsByFamily(phenomenon);\r\n }\r\n\r\n /** Find [UnitProp] for a specific unit name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnitByName(unitName);\r\n }\r\n\r\n /** Returns data needed to convert from one Unit to another in the same Unit Family/Phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n return this._unitsProvider.getConversion(fromUnit, toUnit);\r\n }\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Default Data\r\n// ========================================================================================================================================\r\nconst DEFAULT_FORMATKEY_BY_UNIT_SYSTEM = [\r\n {\r\n system: \"metric\", // PresentationUnitSystem.Metric,\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]meter4\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]degree2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]mSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]mCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]meter2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]m-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]meter4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]meter4\" },\r\n ],\r\n },\r\n {\r\n system: \"imperial\", // PresentationUnitSystem.BritishImperial,\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]fi8\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]fSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]fCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]feet2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4-labeled\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]feet4\" },\r\n ],\r\n },\r\n {\r\n system: \"usCustomary\", // PresentationUnitSystem.UsCustomary\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]fi8\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]fSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]fCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]feet2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]feet4\" },\r\n ],\r\n },\r\n {\r\n system: \"usSurvey\", // PresentationUnitSystem.UsSurvey\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]usSurveyFtSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]usSurveyFtCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]f-survey-2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-survey-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]f-survey-4\" },\r\n ],\r\n },\r\n];\r\n\r\n/** Interface used to define structure of default format definitions. */\r\ninterface UniqueFormatsProps {\r\n readonly key: string;\r\n readonly description?: string;\r\n readonly format: FormatProps;\r\n}\r\n\r\n/** List of default format definitions used by the Standard QuantityTypes. */\r\nconst DEFAULT_FORMATPROPS: UniqueFormatsProps[] = [\r\n {\r\n key: \"[units:length]meter4\",\r\n description: \"meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]meter2\",\r\n description: \"meters (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]feet4\",\r\n description: \"feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]feet2\",\r\n description: \"feet (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]fi8\",\r\n description: \"feet-inch 1/8 (labeled)\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"-\",\r\n units: [{ label: \"'\", name: \"Units.FT\" }, { label: \"\\\"\", name: \"Units.IN\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 8,\r\n type: \"Fractional\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-sta2\",\r\n description: \"stationing feet-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 2,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-sta2\",\r\n description: \"stationing feet-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 2,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]m-sta2\",\r\n description: \"stationing meters-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 3,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-2\",\r\n description: \"survey feet (labeled)-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-4-labeled\",\r\n description: \"survey feet (labeled)-4 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft (US Survey)\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]f-survey-4\",\r\n description: \"survey feet (labeled)-4 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]degree2\",\r\n description: \"degrees (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]dms\",\r\n description: \"degrees minutes seconds (labeled) 0 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }, { label: \"'\", name: \"Units.ARC_MINUTE\" }, { label: \"\\\"\", name: \"Units.ARC_SECOND\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]dms2\",\r\n description: \"degrees minutes seconds (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }, { label: \"'\", name: \"Units.ARC_MINUTE\" }, { label: \"\\\"\", name: \"Units.ARC_SECOND\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]mSquared4\",\r\n description: \"square meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m²\", name: \"Units.SQ_M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]fSquared4\",\r\n description: \"square feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft²\", name: \"Units.SQ_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]usSurveyFtSquared4\",\r\n description: \"square survey feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft²\", name: \"Units.SQ_US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]mCubed4\",\r\n description: \"cubic meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m³\", name: \"Units.CUB_M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]fCubed4\",\r\n description: \"cubic feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft³\", name: \"Units.CUB_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]usSurveyFtCubed4\",\r\n description: \"cubic survey feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft³\", name: \"Units.CUB_US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n];\r\n"]}
1
+ {"version":3,"file":"QuantityFormatter.js","sourceRoot":"","sources":["../../../src/quantity-formatting/QuantityFormatter.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 QuantityFormatting\r\n */\r\n\r\nimport { BentleyError, BeUiEvent, Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n AlternateUnitLabelsProvider, Format, FormatProps, FormatterSpec, ParseError, ParserSpec, QuantityParseResult,\r\n UnitConversionProps, UnitProps, UnitsProvider, UnitSystemKey,\r\n} from \"@itwin/core-quantity\";\r\nimport { FrontendLoggerCategory } from \"../common/FrontendLoggerCategory\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { BasicUnitsProvider, getDefaultAlternateUnitLabels } from \"./BasicUnitsProvider\";\r\nimport { CustomFormatPropEditorSpec } from \"./QuantityTypesEditorSpecs\";\r\n\r\n// cSpell:ignore FORMATPROPS FORMATKEY ussurvey uscustomary USCUSTOM\r\n\r\n/**\r\n * Defines standard format types for tools that need to display measurements to user.\r\n * @public\r\n */\r\nexport enum QuantityType {\r\n /** Length which is stored in meters. Typically formatted to display in meters or feet-inches based on active unit system. */\r\n Length = 1,\r\n /** Angular value which is stored in radians. Typically formatted to display degrees or Degrees-Minute-Seconds based on active unit system. */\r\n Angle = 2,\r\n /** Area value store in meters squared. Typically formatted to display in meters squared or feet squared based on active unit system. */\r\n Area = 3,\r\n /** Volume value which is stored in meters cubed. Typically formatted to display in meters cubed or feet cubed based on active unit system. */\r\n Volume = 4,\r\n /** LatLong is an angular value which is stored in radians. Typically formatted to display degrees or Degrees-Minute-Seconds based on active unit system. */\r\n LatLong = 5,\r\n /** Coordinate/Location value which is stored in meters. Typically formatted to display in meters or feet based on active unit system. */\r\n Coordinate = 6,\r\n /** Stationing is a distance value stored in meters. Typically formatted to display `xxx+xx` or `xx+xxx` based on active unit system. */\r\n Stationing = 7,\r\n /** LengthSurvey is a distance value stored in meters. Typically formatted to display in meters or US Survey Feet based on active unit system.. */\r\n LengthSurvey = 8,\r\n /** LengthEngineering is a distance value stored in meters. Typically formatted to display either meters or feet based on active unit system. */\r\n LengthEngineering = 9\r\n}\r\n\r\n/**\r\n * Used to uniquely identify the type or quantity. [[QuantityType]] are built-in types and `string` are used for custom quantity types.\r\n * @public\r\n */\r\nexport type QuantityTypeArg = QuantityType | string;\r\n\r\n/** String used to uniquely identify a QuantityType in the quantity registry. See function [[QuantityType.getQuantityTypeKey]].\r\n * @public\r\n */\r\nexport type QuantityTypeKey = string;\r\n\r\n/** String used to uniquely identify a UnitProp.\r\n * @public\r\n */\r\nexport type UnitNameKey = string;\r\n\r\n/**\r\n * Class that contains alternate Unit Labels. These labels are used when parsing strings to quantities.\r\n * One use case is to allow a \"^\", which is easily input, to be used to specify \"°\".\r\n * @internal\r\n */\r\nexport class AlternateUnitLabelsRegistry implements AlternateUnitLabelsProvider {\r\n private _alternateLabelRegistry = new Map<UnitNameKey, Set<string>>();\r\n\r\n public addAlternateLabels(key: UnitNameKey, ...labels: string[]) {\r\n [...labels].forEach((value) => this._alternateLabelRegistry.get(key)?.add(value));\r\n }\r\n\r\n constructor(defaultAlternates?: Map<UnitNameKey, Set<string>>) {\r\n if (defaultAlternates) {\r\n this._alternateLabelRegistry = defaultAlternates;\r\n }\r\n }\r\n\r\n public getAlternateUnitLabels(unit: UnitProps): string[] | undefined {\r\n const key: UnitNameKey = unit.name;\r\n const labels = this._alternateLabelRegistry.get(key);\r\n if (labels)\r\n return [...labels.values()];\r\n\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Function to return a QuantityTypeKey given either a QuantityType enum value or a string. This allows caching and\r\n * retrieving standard and custom quantity types.\r\n * @public\r\n */\r\nexport function getQuantityTypeKey(type: QuantityTypeArg): QuantityTypeKey {\r\n // For QuantityType enum values, build a string that shouldn't collide with anything a user may come up with\r\n if (typeof type === \"number\")\r\n return `QuantityTypeEnumValue-${type.toString()}`;\r\n return type;\r\n}\r\n\r\n/**\r\n * This interface supplies the definition of a `standard` quantity type that is registered with the QuantityFormatter.\r\n * A `standard` quantity type could be one of the nine delivered QuantityTypes or a CustomQuantityTypeDefinition.\r\n * @public\r\n */\r\nexport interface QuantityTypeDefinition {\r\n /** String used as a key to look up the quantity type. If defining a [[CustomQuantityTypeDefinition]] the QuantityTypeKey\r\n * should match the QuantityTypeArg. */\r\n readonly key: QuantityTypeKey;\r\n /** The type value which can be one of the standard QuantityType enum values or a unique string if defining a custom type. */\r\n readonly type: QuantityTypeArg;\r\n /** The unit that the magnitude of the quantity is stored ie. (Meter for Length and Radian for Angle). The persistence unit is\r\n * also used during formatting if the FormatProps does not define one or more composite units. */\r\n readonly persistenceUnit: UnitProps;\r\n /** Localized label to display in UI */\r\n label: string;\r\n /** Localized description that may be used to provide detailed description for the Quantity type. */\r\n description: string;\r\n /* Provide a default FormatProps for a unit system. */\r\n getDefaultFormatPropsBySystem: (requestedSystem: UnitSystemKey) => FormatProps;\r\n /** Async function to generate a [FormatterSpec]$(core-quantity) that will be called to format values.*/\r\n generateFormatterSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider) => Promise<FormatterSpec>;\r\n /** Async function to generate a [ParserSpec]$(core-quantity) that will be called to parse a string into a quantity value.*/\r\n generateParserSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider, alternateUnitLabelsProvider?: AlternateUnitLabelsProvider) => Promise<ParserSpec>;\r\n}\r\n\r\n/** CustomQuantityTypeDefinition interface is used to define a Custom quantity type that can be registered with the [[QuantityFormatter]].\r\n * A custom quantity formatter must be able to generate a FormatterSpec and ParserSpec that will be called to format and parse values.\r\n * Optionally it can provide specification of custom properties that it will use to define any formatting options. CustomQuantityTypeDefinitions\r\n * must be registered with the [[QuantityFormatter]] using the method `IModelApp.quantityFormatter.registerQuantityType`.\r\n * @public\r\n */\r\nexport interface CustomQuantityTypeDefinition extends QuantityTypeDefinition {\r\n /** Return true if the FormatProps have the necessary `custom` property definition */\r\n isCompatibleFormatProps: (formatProps: FormatProps) => boolean;\r\n /** An array of specifications that are used to generate a label and editor in the UI used to display and edit the FormatProps.\r\n * UI items defined as primary will be shown higher in the list of UI components. */\r\n primaryPropEditorSpecs?: CustomFormatPropEditorSpec[];\r\n /** An array of specifications that are used to generate a label and editor in the UI used to display and edit the FormatProps.\r\n * UI items defined as secondary will be shown below other UI components that edit FormatProps. */\r\n secondaryPropEditorSpecs?: CustomFormatPropEditorSpec[];\r\n}\r\n\r\n/** CustomQuantityTypeDefinition type guard.\r\n * @public\r\n*/\r\nexport function isCustomQuantityTypeDefinition(item: QuantityTypeDefinition): item is CustomQuantityTypeDefinition {\r\n return !!(item as CustomQuantityTypeDefinition).isCompatibleFormatProps;\r\n}\r\n\r\n/** private class to hold standard quantity definitions as defined by QuantityType enum and implement QuantityTypeDefinition interface */\r\nclass StandardQuantityTypeDefinition implements QuantityTypeDefinition {\r\n private _label: string | undefined;\r\n private _description: string | undefined;\r\n private _key: string;\r\n\r\n constructor(public type: QuantityType, public persistenceUnit: UnitProps, private _labelKey: string, private _descriptionKey: string) {\r\n this._key = getQuantityTypeKey(type);\r\n }\r\n\r\n public get key(): string { return this._key; }\r\n\r\n public get label(): string {\r\n if (!this._label) {\r\n this._label = IModelApp.localization.getLocalizedString(this._labelKey);\r\n }\r\n return this._label ?? \"\";\r\n }\r\n\r\n public get description(): string {\r\n if (!this._description) {\r\n this._description = IModelApp.localization.getLocalizedString(this._descriptionKey);\r\n }\r\n return this._description ?? this.label;\r\n }\r\n\r\n /** Get a default format to show quantity in persistence unit with precision or 6 decimal places. */\r\n public getDefaultFormatPropsBySystem(requestedSystem: UnitSystemKey): FormatProps {\r\n // Fallback same as Format \"DefaultRealU\" in Formats ecschema\r\n const fallbackProps: FormatProps = {\r\n formatTraits: [\"keepSingleZero\", \"keepDecimalPoint\", \"showUnitLabel\"],\r\n precision: 6,\r\n type: \"Decimal\",\r\n uomSeparator: \" \",\r\n decimalSeparator: \".\",\r\n };\r\n\r\n const defaultUnitSystemData = DEFAULT_FORMATKEY_BY_UNIT_SYSTEM.find((value) => value.system === requestedSystem);\r\n if (defaultUnitSystemData) {\r\n const defaultFormatEntry = defaultUnitSystemData.entries.find((value) => value.type === this.key);\r\n if (defaultFormatEntry) {\r\n const defaultFormatPropsEntry = DEFAULT_FORMATPROPS.find((props) => props.key === defaultFormatEntry.formatKey);\r\n if (defaultFormatPropsEntry)\r\n return defaultFormatPropsEntry.format;\r\n }\r\n }\r\n\r\n return fallbackProps;\r\n }\r\n\r\n public async generateFormatterSpec(formatProps: FormatProps, unitsProvider: UnitsProvider): Promise<FormatterSpec> {\r\n const format = await Format.createFromJSON(this.key, unitsProvider, formatProps);\r\n return FormatterSpec.create(format.name, format, unitsProvider, this.persistenceUnit);\r\n }\r\n\r\n public async generateParserSpec(formatProps: FormatProps, unitsProvider: UnitsProvider, alternateUnitLabelsProvider?: AlternateUnitLabelsProvider) {\r\n const format = await Format.createFromJSON(this.key, unitsProvider, formatProps);\r\n return ParserSpec.create(format, unitsProvider, this.persistenceUnit, alternateUnitLabelsProvider);\r\n }\r\n}\r\n\r\n/** Override format entries can define formats for any of the different unit systems.\r\n * @public\r\n */\r\nexport interface OverrideFormatEntry {\r\n /** Override format for \"imperial\" unit system */\r\n imperial?: FormatProps;\r\n /** Override format for \"metric\" unit system */\r\n metric?: FormatProps;\r\n /** Override format for \"usCustomary\" unit system */\r\n usCustomary?: FormatProps;\r\n /** Override format for \"usSurvey\" unit system */\r\n usSurvey?: FormatProps;\r\n}\r\n\r\n/** Interface that defines the functions required to be implemented to provide custom formatting and parsing of a custom quantity type.\r\n * @public\r\n */\r\nexport interface FormatterParserSpecsProvider {\r\n /** Custom quantity id */\r\n quantityType: QuantityTypeArg;\r\n /** Async function to return FormatterSpec for a custom quantity type */\r\n createFormatterSpec: (unitSystem: UnitSystemKey) => Promise<FormatterSpec>;\r\n /** Async function to return ParserSpec for a custom quantity type */\r\n createParserSpec: (unitSystem: UnitSystemKey) => Promise<ParserSpec>;\r\n}\r\n\r\n/** Arguments sent to FormattingUnitSystemChanged event listeners.\r\n * @public\r\n */\r\nexport interface FormattingUnitSystemChangedArgs {\r\n /** string that defines unit system activated. */\r\n readonly system: UnitSystemKey;\r\n}\r\n\r\n/** Arguments sent to QuantityFormatsChanged event listeners.\r\n * @public\r\n */\r\nexport interface QuantityFormatsChangedArgs {\r\n /** string that represents the QuantityType that has been overriden or the overrides cleared. */\r\n readonly quantityType: string;\r\n}\r\n\r\n/** Arguments sent to [[UnitFormattingSettingsProvider]] when overrides are changed.\r\n * @public\r\n */\r\nexport interface QuantityFormatOverridesChangedArgs {\r\n /** string that represents the QuantityType that has been overriden or the overrides cleared. */\r\n readonly typeKey: QuantityTypeKey;\r\n /** overrideEntry will be undefined when clearing overrides */\r\n readonly overrideEntry?: OverrideFormatEntry;\r\n /** used only when change applies to a single unit system */\r\n readonly unitSystem?: UnitSystemKey;\r\n}\r\n\r\n/**\r\n * The UnitFormattingSettingsProvider interface is used to store and retrieve override FormatProps and Presentation Unit System\r\n * for use by the QuantityFormatter. If no UnitFormattingSettingsProvider is supplied to the QuantityFormatter then any overrides\r\n * set are lost when the session is closed. The `ui-test-app` has and example implementation that uses browser local storage via the\r\n * class [[LocalUnitFormatProvider]] [here](https://github.com/iTwin/itwinjs-core/blob/d341e030d4c1427effd80ea54b3d57fec8ad1bc1/test-apps/ui-test-app/src/frontend/index.tsx#L315).\r\n * @public\r\n */\r\nexport interface UnitFormattingSettingsProvider {\r\n /** serializes JSON object containing format overrides for a specific quantity type. */\r\n store(quantityTypeKey: QuantityTypeKey, overrideProps: OverrideFormatEntry): Promise<boolean>;\r\n /** retrieves serialized JSON object containing format overrides for a specific quantity type. */\r\n retrieve(quantityTypeKey: QuantityTypeKey): Promise<OverrideFormatEntry | undefined>;\r\n /** removes the override formats for a specific quantity type. */\r\n remove(quantityTypeKey: QuantityTypeKey): Promise<boolean>;\r\n /** retrieves the active unit system typically based on the \"active\" iModelConnection */\r\n retrieveUnitSystem(defaultKey: UnitSystemKey): Promise<UnitSystemKey>;\r\n /** store the active unit system typically for the \"active\" iModelConnection */\r\n storeUnitSystemKey(unitSystemKey: UnitSystemKey): Promise<boolean>;\r\n /** Function to load overrides for a specific IModelConnection. Typically this is not called often since typical\r\n * implementations monitor for IModelConnection changes and call this method internally. */\r\n loadOverrides(imodel: IModelConnection | undefined): Promise<void>;\r\n /** function called to save changes to Presentation Unit System */\r\n storeUnitSystemSetting(args: FormattingUnitSystemChangedArgs): Promise<void>;\r\n /** function called to save format overrides */\r\n storeFormatOverrides(args: QuantityFormatOverridesChangedArgs): Promise<void>;\r\n /** property that is set by the implementation to inform the BaseUnitFormattingSettingsProvider if the provider\r\n * should trigger reloading of the overrides when the \"active\" imodel changes. */\r\n readonly maintainOverridesPerIModel: boolean;\r\n}\r\n\r\n/** Class that supports formatting quantity values into strings and parsing strings into quantity values. This class also maintains\r\n * the \"active\" unit system and caches FormatterSpecs and ParserSpecs for the \"active\" unit system to allow synchronous access to\r\n * parsing and formatting values. The support unit systems are defined by [[UnitSystemKey]] and is kept in synch with the unit systems\r\n * provided by the Presentation Manager on the backend. The QuantityFormatter contains a registry of quantity type definitions. These definitions implement\r\n * the [[QuantityTypeDefinition]] interface, which among other things, provide default [FormatProps]$(core-quantity), and provide methods\r\n * to generate both a [FormatterSpec]$(core-quantity) and a [ParserSpec]$(core-quantity). There are built-in quantity types that are\r\n * identified by the [[QuantityType]] enum. [[CustomQuantityTypeDefinition]] can be registered to extend the available quantity types available\r\n * by frontend tools. The QuantityFormatter also allows the default formats to be overriden.\r\n *\r\n * @public\r\n */\r\nexport class QuantityFormatter implements UnitsProvider {\r\n private _unitsProvider: UnitsProvider = new BasicUnitsProvider();\r\n private _alternateUnitLabelsRegistry = new AlternateUnitLabelsRegistry(getDefaultAlternateUnitLabels());\r\n /** Registry containing available quantity type definitions. */\r\n protected _quantityTypeRegistry: Map<QuantityTypeKey, QuantityTypeDefinition> = new Map<QuantityTypeKey, QuantityTypeDefinition>();\r\n /** Active UnitSystem key - must be one of \"imperial\", \"metric\", \"usCustomary\", or \"usSurvey\". */\r\n protected _activeUnitSystem: UnitSystemKey = \"imperial\";\r\n /** Map of FormatSpecs for all available QuantityTypes and the active Unit System */\r\n protected _activeFormatSpecsByType = new Map<QuantityTypeKey, FormatterSpec>();\r\n /** Map of ParserSpecs for all available QuantityTypes and the active Unit System */\r\n protected _activeParserSpecsByType = new Map<QuantityTypeKey, ParserSpec>();\r\n /** Map of FormatSpecs that have been overriden from the default. */\r\n protected _overrideFormatPropsByUnitSystem = new Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>();\r\n /** Optional object that gets called to store and retrieve format overrides. */\r\n protected _unitFormattingSettingsProvider: UnitFormattingSettingsProvider | undefined;\r\n\r\n /** Set the settings provider and if not iModel specific initialize setting for user. */\r\n public async setUnitFormattingSettingsProvider(provider: UnitFormattingSettingsProvider) {\r\n this._unitFormattingSettingsProvider = provider;\r\n if (!provider.maintainOverridesPerIModel)\r\n await provider.loadOverrides(undefined);\r\n }\r\n\r\n /** Called after the active unit system is changed.\r\n * The system will report the UnitSystemKey/name of the the system that was activated.\r\n */\r\n public readonly onActiveFormattingUnitSystemChanged = new BeUiEvent<FormattingUnitSystemChangedArgs>();\r\n\r\n /** Called when the format of a QuantityType is overriden or the override is cleared. The string returned will\r\n * be a QuantityTypeKey generated by method `getQuantityTypeKey`.\r\n */\r\n public readonly onQuantityFormatsChanged = new BeUiEvent<QuantityFormatsChangedArgs>();\r\n\r\n /** Fired when the active UnitsProvider is updated. This will allow cached Formatter and Parser specs to be updated if necessary. */\r\n public readonly onUnitsProviderChanged = new BeUiEvent<void>();\r\n\r\n /**\r\n * constructor\r\n * @param showMetricOrUnitSystem - Pass in `true` to show Metric formatted quantity values. Defaults to Imperial. To explicitly\r\n * set it to a specific unit system pass a UnitSystemKey.\r\n */\r\n constructor(showMetricOrUnitSystem?: boolean | UnitSystemKey) {\r\n if (undefined !== showMetricOrUnitSystem) {\r\n if (typeof showMetricOrUnitSystem === \"boolean\")\r\n this._activeUnitSystem = showMetricOrUnitSystem ? \"metric\" : \"imperial\";\r\n else\r\n this._activeUnitSystem = showMetricOrUnitSystem;\r\n }\r\n }\r\n\r\n private getOverrideFormatPropsByQuantityType(quantityTypeKey: QuantityTypeKey, unitSystem?: UnitSystemKey): FormatProps | undefined {\r\n const requestedUnitSystem = unitSystem ?? this.activeUnitSystem;\r\n const overrideMap = this._overrideFormatPropsByUnitSystem.get(requestedUnitSystem);\r\n if (!overrideMap)\r\n return undefined;\r\n\r\n return overrideMap.get(quantityTypeKey);\r\n }\r\n\r\n /** Method used to register all QuantityTypes defined in QuantityType enum. */\r\n protected async initializeQuantityTypesRegistry() {\r\n // QuantityType.Length\r\n const lengthUnit = await this.findUnitByName(\"Units.M\");\r\n const lengthDefinition = new StandardQuantityTypeDefinition(QuantityType.Length, lengthUnit,\r\n \"iModelJs:QuantityType.Length.label\", \"iModelJs:QuantityType.Length.description\");\r\n this._quantityTypeRegistry.set(lengthDefinition.key, lengthDefinition);\r\n\r\n // QuantityType.LengthEngineering\r\n const lengthEngineeringDefinition = new StandardQuantityTypeDefinition(QuantityType.LengthEngineering, lengthUnit,\r\n \"iModelJs:QuantityType.LengthEngineering.label\", \"iModelJs:QuantityType.LengthEngineering.description\");\r\n this._quantityTypeRegistry.set(lengthEngineeringDefinition.key, lengthEngineeringDefinition);\r\n\r\n // QuantityType.Coordinate\r\n const coordinateDefinition = new StandardQuantityTypeDefinition(QuantityType.Coordinate, lengthUnit,\r\n \"iModelJs:QuantityType.Coordinate.label\", \"iModelJs:QuantityType.Coordinate.description\");\r\n this._quantityTypeRegistry.set(coordinateDefinition.key, coordinateDefinition);\r\n\r\n // QuantityType.Stationing\r\n const stationingDefinition = new StandardQuantityTypeDefinition(QuantityType.Stationing, lengthUnit,\r\n \"iModelJs:QuantityType.Stationing.label\", \"iModelJs:QuantityType.Stationing.description\");\r\n this._quantityTypeRegistry.set(stationingDefinition.key, stationingDefinition);\r\n\r\n // QuantityType.LengthSurvey\r\n const lengthSurveyDefinition = new StandardQuantityTypeDefinition(QuantityType.LengthSurvey, lengthUnit,\r\n \"iModelJs:QuantityType.LengthSurvey.label\", \"iModelJs:QuantityType.LengthSurvey.description\");\r\n this._quantityTypeRegistry.set(lengthSurveyDefinition.key, lengthSurveyDefinition);\r\n\r\n // QuantityType.Angle\r\n const radUnit = await this.findUnitByName(\"Units.RAD\");\r\n const angleDefinition = new StandardQuantityTypeDefinition(QuantityType.Angle, radUnit,\r\n \"iModelJs:QuantityType.Angle.label\", \"iModelJs:QuantityType.Angle.description\");\r\n this._quantityTypeRegistry.set(angleDefinition.key, angleDefinition);\r\n\r\n // QuantityType.LatLong\r\n const latLongDefinition = new StandardQuantityTypeDefinition(QuantityType.LatLong, radUnit,\r\n \"iModelJs:QuantityType.LatLong.label\", \"iModelJs:QuantityType.LatLong.description\");\r\n this._quantityTypeRegistry.set(latLongDefinition.key, latLongDefinition);\r\n\r\n // QuantityType.Area\r\n const sqMetersUnit = await this.findUnitByName(\"Units.SQ_M\");\r\n const areaDefinition = new StandardQuantityTypeDefinition(QuantityType.Area, sqMetersUnit,\r\n \"iModelJs:QuantityType.Area.label\", \"iModelJs:QuantityType.Area.description\");\r\n this._quantityTypeRegistry.set(areaDefinition.key, areaDefinition);\r\n\r\n // QuantityType.Volume\r\n const cubicMetersUnit = await this.findUnitByName(\"Units.CUB_M\");\r\n const volumeDefinition = new StandardQuantityTypeDefinition(QuantityType.Volume, cubicMetersUnit,\r\n \"iModelJs:QuantityType.Volume.label\", \"iModelJs:QuantityType.Volume.description\");\r\n this._quantityTypeRegistry.set(volumeDefinition.key, volumeDefinition);\r\n }\r\n\r\n /** Asynchronous call to load Formatting and ParsingSpecs for a unit system. This method ends up caching FormatterSpecs and ParserSpecs\r\n * so they can be quickly accessed.\r\n * @internal public for unit test usage\r\n */\r\n protected async loadFormatAndParsingMapsForSystem(systemType?: UnitSystemKey): Promise<void> {\r\n const systemKey = (undefined !== systemType) ? systemType : this._activeUnitSystem;\r\n const formatPropsByType = new Map<QuantityTypeDefinition, FormatProps>();\r\n\r\n // load cache for every registered QuantityType\r\n [...this.quantityTypesRegistry.keys()].forEach((key) => {\r\n const entry = this.quantityTypesRegistry.get(key)!;\r\n formatPropsByType.set(entry, this.getFormatPropsByQuantityTypeEntryAndSystem(entry, systemKey));\r\n });\r\n\r\n for (const [entry, formatProps] of formatPropsByType) {\r\n await this.loadFormatAndParserSpec(entry, formatProps);\r\n }\r\n }\r\n\r\n private getFormatPropsByQuantityTypeEntryAndSystem(quantityEntry: QuantityTypeDefinition, requestedSystem: UnitSystemKey, ignoreOverrides?: boolean): FormatProps {\r\n if (!ignoreOverrides) {\r\n const overrideProps = this.getOverrideFormatPropsByQuantityType(quantityEntry.key, requestedSystem);\r\n if (overrideProps)\r\n return overrideProps;\r\n }\r\n\r\n return quantityEntry.getDefaultFormatPropsBySystem(requestedSystem);\r\n }\r\n\r\n private async loadFormatAndParserSpec(quantityTypeDefinition: QuantityTypeDefinition, formatProps: FormatProps) {\r\n const formatterSpec = await quantityTypeDefinition.generateFormatterSpec(formatProps, this.unitsProvider);\r\n const parserSpec = await quantityTypeDefinition.generateParserSpec(formatProps, this.unitsProvider, this.alternateUnitLabelsProvider);\r\n this._activeFormatSpecsByType.set(quantityTypeDefinition.key, formatterSpec);\r\n this._activeParserSpecsByType.set(quantityTypeDefinition.key, parserSpec);\r\n }\r\n\r\n // repopulate formatSpec and parserSpec entries using only default format\r\n private async loadDefaultFormatAndParserSpecForQuantity(typeKey: QuantityTypeKey) {\r\n const quantityTypeDefinition = this.quantityTypesRegistry.get(typeKey);\r\n if (!quantityTypeDefinition)\r\n throw new Error(`Unable to locate QuantityType by key ${typeKey}`);\r\n\r\n const defaultFormat = quantityTypeDefinition.getDefaultFormatPropsBySystem(this.activeUnitSystem);\r\n await this.loadFormatAndParserSpec(quantityTypeDefinition, defaultFormat);\r\n }\r\n\r\n private async setOverrideFormatsByQuantityTypeKey(typeKey: QuantityTypeKey, overrideEntry: OverrideFormatEntry) {\r\n // extract overrides and insert into appropriate override map entry\r\n Object.keys(overrideEntry).forEach((systemKey) => {\r\n const unitSystemKey = systemKey as UnitSystemKey;\r\n const props = overrideEntry[unitSystemKey];\r\n if (props) {\r\n if (this._overrideFormatPropsByUnitSystem.has(unitSystemKey)) {\r\n this._overrideFormatPropsByUnitSystem.get(unitSystemKey)!.set(typeKey, props);\r\n } else {\r\n const newMap = new Map<string, FormatProps>();\r\n newMap.set(typeKey, props);\r\n this._overrideFormatPropsByUnitSystem.set(unitSystemKey, newMap);\r\n }\r\n }\r\n });\r\n\r\n await this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey, overrideEntry });\r\n\r\n const formatProps = this.getOverrideFormatPropsByQuantityType(typeKey, this.activeUnitSystem);\r\n if (formatProps) {\r\n const typeEntry = this.quantityTypesRegistry.get(typeKey);\r\n if (typeEntry) {\r\n await this.loadFormatAndParserSpec(typeEntry, formatProps);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: typeKey });\r\n }\r\n }\r\n }\r\n\r\n /** Method called to clear override and restore defaults formatter and parser spec */\r\n private async clearOverrideFormatsByQuantityTypeKey(type: QuantityTypeKey) {\r\n const unitSystem = this.activeUnitSystem;\r\n if (this.getOverrideFormatPropsByQuantityType(type, unitSystem)) {\r\n const overrideMap = this._overrideFormatPropsByUnitSystem.get(unitSystem);\r\n if (overrideMap && overrideMap.has(type)) {\r\n overrideMap.delete(type);\r\n await this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey: type, unitSystem });\r\n\r\n await this.loadDefaultFormatAndParserSpecForQuantity(type);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: type });\r\n }\r\n }\r\n }\r\n\r\n /** This method is called during IModelApp initialization to load the standard quantity types into the registry and to initialize the cache.\r\n * @internal\r\n */\r\n public async onInitialized() {\r\n await this.initializeQuantityTypesRegistry();\r\n\r\n // initialize default format and parsing specs\r\n await this.loadFormatAndParsingMapsForSystem();\r\n }\r\n\r\n /** Return a map that serves as a registry of all standard and custom quantity types. */\r\n public get quantityTypesRegistry() {\r\n return this._quantityTypeRegistry;\r\n }\r\n\r\n /** Return the class the contain map of all alternate labels for units. These alternate labels are used when parsing strings in quantity values. */\r\n public get alternateUnitLabelsProvider(): AlternateUnitLabelsProvider {\r\n return this._alternateUnitLabelsRegistry;\r\n }\r\n\r\n /**\r\n * Add one or more alternate labels for a unit - these labels are used during string parsing.\r\n * @param key UnitNameKey which comes from `UnitProps.name`\r\n * @param labels one or more unit labels\r\n */\r\n public addAlternateLabels(key: UnitNameKey, ...labels: string[]) {\r\n this._alternateUnitLabelsRegistry.addAlternateLabels(key, ...labels);\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\r\n /** Get/Set the active UnitsProvider class. */\r\n public get unitsProvider() {\r\n return this._unitsProvider;\r\n }\r\n\r\n public set unitsProvider(unitsProvider: UnitsProvider) {\r\n this.setUnitsProvider(unitsProvider); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** async method to set a units provider and reload caches */\r\n public async setUnitsProvider(unitsProvider: UnitsProvider) {\r\n this._unitsProvider = unitsProvider;\r\n\r\n try {\r\n // force all cached data to be reinitialized\r\n await IModelApp.quantityFormatter.onInitialized();\r\n } catch(err) {\r\n Logger.logWarning(`${FrontendLoggerCategory.Package}.quantityFormatter`, BentleyError.getErrorMessage(err), BentleyError.getErrorMetadata(err));\r\n Logger.logWarning(`${FrontendLoggerCategory.Package}.quantityFormatter`, \"An exception occurred initializing the iModelApp.quantityFormatter with the given UnitsProvider. Defaulting back to the internal units provider.\");\r\n // If there is a problem initializing with the given provider, default back to the internal provider\r\n await IModelApp.quantityFormatter.resetToUseInternalUnitsProvider();\r\n return;\r\n }\r\n\r\n // force default tool to start so any tool that may be using cached data will not be using bad data.\r\n if (IModelApp.toolAdmin)\r\n await IModelApp.toolAdmin.startDefaultTool();\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\r\n /** Async call typically used after IModel is closed to reset UnitsProvider to default one that does not require an Units schema. */\r\n public async resetToUseInternalUnitsProvider() {\r\n if (this._unitsProvider instanceof BasicUnitsProvider)\r\n return;\r\n\r\n await this.setUnitsProvider(new BasicUnitsProvider());\r\n }\r\n\r\n /** Async call to register a CustomQuantityType and load the FormatSpec and ParserSpec for the new type. */\r\n public async registerQuantityType(entry: CustomQuantityTypeDefinition, replace?: boolean) {\r\n if (!replace && this._quantityTypeRegistry.has(entry.key))\r\n return false;\r\n\r\n this._quantityTypeRegistry.set(entry.key, entry);\r\n // load any overrides so any saved overrides for the type being registered are applied\r\n if (this._unitFormattingSettingsProvider)\r\n await this._unitFormattingSettingsProvider.loadOverrides(undefined);\r\n\r\n if (entry.getDefaultFormatPropsBySystem) {\r\n const formatProps = entry.getDefaultFormatPropsBySystem(this.activeUnitSystem);\r\n await this.loadFormatAndParserSpec(entry, formatProps);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Reinitialize caches. Typically called by active UnitFormattingSettingsProvider.\r\n * startDefaultTool - set to true to start the Default to instead of leaving any active tool pointing to cached unit data that is no longer valid\r\n * @public\r\n */\r\n public async reinitializeFormatAndParsingsMaps(overrideFormatPropsByUnitSystem: Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>,\r\n unitSystemKey?: UnitSystemKey, fireUnitSystemChanged?: boolean, startDefaultTool?: boolean): Promise<void> {\r\n this._overrideFormatPropsByUnitSystem.clear();\r\n if (overrideFormatPropsByUnitSystem.size) {\r\n this._overrideFormatPropsByUnitSystem = overrideFormatPropsByUnitSystem;\r\n }\r\n\r\n unitSystemKey && (this._activeUnitSystem = unitSystemKey);\r\n await this.loadFormatAndParsingMapsForSystem(this._activeUnitSystem);\r\n fireUnitSystemChanged && this.onActiveFormattingUnitSystemChanged.emit({ system: this._activeUnitSystem });\r\n IModelApp.toolAdmin && startDefaultTool && await IModelApp.toolAdmin.startDefaultTool();\r\n }\r\n\r\n /** Set the Active unit system to one of the supported types. This will asynchronously load the formatter and parser specs for the activated system. */\r\n public async setActiveUnitSystem(isImperialOrUnitSystem: UnitSystemKey | boolean, restartActiveTool?: boolean): Promise<void> {\r\n let systemType: UnitSystemKey;\r\n if (typeof isImperialOrUnitSystem === \"boolean\")\r\n systemType = isImperialOrUnitSystem ? \"imperial\" : \"metric\";\r\n else\r\n systemType = isImperialOrUnitSystem;\r\n\r\n if (this._activeUnitSystem === systemType)\r\n return;\r\n\r\n this._activeUnitSystem = systemType;\r\n await this.loadFormatAndParsingMapsForSystem(systemType);\r\n // allow settings provider to store the change\r\n await this._unitFormattingSettingsProvider?.storeUnitSystemSetting({ system: systemType });\r\n // fire current event\r\n this.onActiveFormattingUnitSystemChanged.emit({ system: systemType });\r\n if (IModelApp.toolAdmin && restartActiveTool)\r\n return IModelApp.toolAdmin.startDefaultTool();\r\n }\r\n\r\n /** Retrieve the active [[UnitSystemKey]] which is used to determine what formats are to be used to display quantities */\r\n public get activeUnitSystem(): UnitSystemKey { return this._activeUnitSystem; }\r\n\r\n /** Clear any formatting override for specified quantity type, but only for the \"active\" Unit System. */\r\n public async clearOverrideFormats(type: QuantityTypeArg) {\r\n await this.clearOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Set formatting override for specified quantity type, but only for the \"active\" Unit System. */\r\n public async setOverrideFormats(type: QuantityTypeArg, overrideEntry: OverrideFormatEntry) {\r\n await this.setOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type), overrideEntry);\r\n }\r\n\r\n /** Set Override Format for a quantity type, but only in the \"active\" Unit System. */\r\n public async setOverrideFormat(type: QuantityTypeArg, overrideFormat: FormatProps) {\r\n const typeKey = this.getQuantityTypeKey(type);\r\n let overrideEntry: OverrideFormatEntry = {};\r\n if (this.activeUnitSystem === \"imperial\")\r\n overrideEntry = { imperial: overrideFormat };\r\n else if (this.activeUnitSystem === \"metric\")\r\n overrideEntry = { metric: overrideFormat };\r\n else if (this.activeUnitSystem === \"usCustomary\")\r\n overrideEntry = { usCustomary: overrideFormat };\r\n else\r\n overrideEntry = { usSurvey: overrideFormat };\r\n\r\n await this.setOverrideFormatsByQuantityTypeKey(typeKey, overrideEntry);\r\n }\r\n\r\n /** Clear formatting override for all quantity types, but only for the \"active\" Unit System. */\r\n public async clearAllOverrideFormats() {\r\n if (0 === this._overrideFormatPropsByUnitSystem.size)\r\n return;\r\n\r\n if (this._overrideFormatPropsByUnitSystem.has(this.activeUnitSystem)) {\r\n const overrides = this._overrideFormatPropsByUnitSystem.get(this.activeUnitSystem);\r\n const typesRemoved: string[] = [];\r\n if (overrides && overrides.size) {\r\n const promises = new Array<Promise<void> | undefined>();\r\n overrides.forEach((_props, typeKey) => {\r\n typesRemoved.push(typeKey);\r\n promises.push(this._unitFormattingSettingsProvider?.storeFormatOverrides({ typeKey, unitSystem: this.activeUnitSystem }));\r\n });\r\n await Promise.all(promises);\r\n }\r\n\r\n if (typesRemoved.length) {\r\n const promises = new Array<Promise<void>>();\r\n typesRemoved.forEach((typeRemoved) => promises.push(this.loadDefaultFormatAndParserSpecForQuantity(typeRemoved)));\r\n await Promise.all(promises);\r\n // trigger a message to let callers know the format has changed.\r\n this.onQuantityFormatsChanged.emit({ quantityType: typesRemoved.join(\"|\") });\r\n }\r\n }\r\n }\r\n\r\n /** Converts a QuantityTypeArg into a QuantityTypeKey/string value that can be used to lookup custom and standard quantity types. */\r\n public getQuantityTypeKey(type: QuantityTypeArg): string {\r\n return getQuantityTypeKey(type);\r\n }\r\n\r\n /** Return [[QuantityTypeDefinition]] if type has been registered. Standard QuantityTypes are automatically registered. */\r\n public getQuantityDefinition(type: QuantityTypeArg) {\r\n return this.quantityTypesRegistry.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Synchronous call to get a FormatterSpec of a QuantityType. If the FormatterSpec is not yet cached an undefined object is returned. The\r\n * cache is populated by the async call loadFormatAndParsingMapsForSystem.\r\n */\r\n public findFormatterSpecByQuantityType(type: QuantityTypeArg, _unused?: boolean): FormatterSpec | undefined {\r\n return this._activeFormatSpecsByType.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType. This formatter spec can be used to synchronously format quantities. */\r\n public async generateFormatterSpecByType(type: QuantityTypeArg, formatProps: FormatProps) {\r\n const quantityTypeDefinition = this.quantityTypesRegistry.get(this.getQuantityTypeKey(type));\r\n if (quantityTypeDefinition)\r\n return quantityTypeDefinition.generateFormatterSpec(formatProps, this.unitsProvider);\r\n\r\n throw new Error(`Unable to generate FormatSpec for QuantityType ${type}`);\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType and a Unit System. This formatter spec can be used to synchronously format quantities.\r\n * @param type One of the built-in quantity types supported.\r\n * @param system Requested unit system key. Note it is more efficient to use setActiveUnitSystem to set up formatters for all\r\n * quantity types of a unit system.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getFormatterSpecByQuantityTypeAndSystem(type: QuantityTypeArg, system?: UnitSystemKey): Promise<FormatterSpec | undefined> {\r\n const quantityKey = this.getQuantityTypeKey(type);\r\n const requestedSystem = system ?? this.activeUnitSystem;\r\n\r\n if (requestedSystem === this.activeUnitSystem) {\r\n const formatterSpec = this._activeFormatSpecsByType.get(quantityKey);\r\n if (formatterSpec)\r\n return formatterSpec;\r\n }\r\n\r\n const entry = this.quantityTypesRegistry.get(quantityKey);\r\n if (!entry)\r\n throw new Error(`Unable to find registered quantity type with key ${quantityKey}`);\r\n return entry.generateFormatterSpec(this.getFormatPropsByQuantityTypeEntryAndSystem(entry, requestedSystem), this.unitsProvider);\r\n }\r\n\r\n /** Asynchronous Call to get a FormatterSpec for a QuantityType.\r\n * @param type One of the built-in quantity types supported.\r\n * @param isImperial Argument to specify use of imperial or metric unit system. If left undefined the active unit system is used.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getFormatterSpecByQuantityType(type: QuantityTypeArg, isImperial?: boolean): Promise<FormatterSpec | undefined> {\r\n let requestedSystem = this.activeUnitSystem;\r\n if (undefined !== isImperial)\r\n requestedSystem = isImperial ? \"imperial\" : \"metric\";\r\n return this.getFormatterSpecByQuantityTypeAndSystem(type, requestedSystem);\r\n }\r\n\r\n /** Synchronous call to get a ParserSpec for a QuantityType. If the ParserSpec is not yet cached an undefined object is returned. The\r\n * cache is populated when the active units system is set.\r\n */\r\n public findParserSpecByQuantityType(type: QuantityTypeArg): ParserSpec | undefined {\r\n return this._activeParserSpecsByType.get(this.getQuantityTypeKey(type));\r\n }\r\n\r\n /** Asynchronous Call to get a ParserSpec for a QuantityType. If the UnitSystemKey is not specified the active Unit System is used. **/\r\n public async getParserSpecByQuantityTypeAndSystem(type: QuantityTypeArg, system?: UnitSystemKey): Promise<ParserSpec | undefined> {\r\n const quantityKey = this.getQuantityTypeKey(type);\r\n const requestedSystem = system ?? this.activeUnitSystem;\r\n\r\n if (requestedSystem === this.activeUnitSystem) {\r\n const parserSpec = this._activeParserSpecsByType.get(quantityKey);\r\n if (parserSpec)\r\n return parserSpec;\r\n }\r\n\r\n const entry = this.quantityTypesRegistry.get(quantityKey);\r\n if (!entry)\r\n throw new Error(`Unable to find registered quantity type with key ${quantityKey}`);\r\n return entry.generateParserSpec(this.getFormatPropsByQuantityTypeEntryAndSystem(entry, requestedSystem), this.unitsProvider);\r\n }\r\n\r\n /** Asynchronous Call to get a ParserSpec for a QuantityType.\r\n * @param type One of the built-in quantity types supported.\r\n * @param isImperial Argument to specify use of imperial or metric unit system. If left undefined the active unit system is used.\r\n * @return A FormatterSpec Promise.\r\n */\r\n public async getParserSpecByQuantityType(type: QuantityTypeArg, isImperial?: boolean): Promise<ParserSpec | undefined> {\r\n let requestedSystem = this.activeUnitSystem;\r\n if (undefined !== isImperial)\r\n requestedSystem = isImperial ? \"imperial\" : \"metric\";\r\n return this.getParserSpecByQuantityTypeAndSystem(type, requestedSystem);\r\n }\r\n\r\n /** Generates a formatted string for a quantity given its format spec.\r\n * @param magnitude The magnitude of the quantity.\r\n * @param formatSpec The format specification. See methods getFormatterSpecByQuantityType and findFormatterSpecByQuantityType.\r\n * @return the formatted string.\r\n */\r\n public formatQuantity(magnitude: number, formatSpec: FormatterSpec | undefined): string {\r\n /** Format a quantity value. Default FormatterSpec implementation uses Formatter.formatQuantity. */\r\n if (formatSpec)\r\n return formatSpec.applyFormatting(magnitude);\r\n return magnitude.toString();\r\n }\r\n\r\n /** Parse input string into quantity given the ParserSpec\r\n * @param inString The magnitude of the quantity.\r\n * @param parserSpec The parse specification the defines the expected format of the string and the conversion to the output unit.\r\n * @return QuantityParseResult object containing either the parsed value or an error value if unsuccessful.\r\n */\r\n public parseToQuantityValue(inString: string, parserSpec: ParserSpec | undefined): QuantityParseResult {\r\n if (parserSpec)\r\n return parserSpec.parseToQuantityValue(inString);\r\n return { ok: false, error: ParseError.InvalidParserSpec };\r\n }\r\n\r\n /**\r\n * Get a UnitSystemKey from a string that may have been entered via a key-in. Supports different variation of\r\n * unit system names that have been used in the past.\r\n */\r\n public getUnitSystemFromString(inputSystem: string, fallback?: UnitSystemKey): UnitSystemKey {\r\n switch (inputSystem.toLowerCase()) {\r\n case \"metric\":\r\n case \"si\":\r\n return \"metric\";\r\n case \"imperial\":\r\n case \"british-imperial\":\r\n return \"imperial\";\r\n case \"uscustomary\":\r\n case \"us-customary\":\r\n case \"us\":\r\n return \"usCustomary\";\r\n case \"ussurvey\":\r\n case \"us-survey\":\r\n case \"survey\":\r\n return \"usSurvey\";\r\n default:\r\n if (undefined !== fallback)\r\n return fallback;\r\n break;\r\n }\r\n return \"imperial\";\r\n }\r\n\r\n /** Return true if the QuantityType is using an override format. */\r\n public hasActiveOverride(type: QuantityTypeArg, checkOnlyActiveUnitSystem?: boolean): boolean {\r\n const quantityTypeKey = this.getQuantityTypeKey(type);\r\n\r\n if (checkOnlyActiveUnitSystem) {\r\n const overrides = this._overrideFormatPropsByUnitSystem.get(this.activeUnitSystem);\r\n if (overrides && overrides.has(quantityTypeKey))\r\n return true;\r\n return false;\r\n }\r\n\r\n for (const [_key, overrideMap] of this._overrideFormatPropsByUnitSystem) {\r\n if (overrideMap.has(quantityTypeKey))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Get the cached FormatProps give a quantity type. If ignoreOverrides is false then if the format has been overridden\r\n * the overridden format is returned, else the standard format is returned.\r\n */\r\n public getFormatPropsByQuantityType(quantityType: QuantityTypeArg, requestedSystem?: UnitSystemKey, ignoreOverrides?: boolean) {\r\n const quantityEntry = this.quantityTypesRegistry.get(this.getQuantityTypeKey(quantityType));\r\n if (quantityEntry)\r\n return this.getFormatPropsByQuantityTypeEntryAndSystem(quantityEntry, requestedSystem ?? this.activeUnitSystem, ignoreOverrides);\r\n return undefined;\r\n }\r\n\r\n // keep following to maintain existing API of implementing UnitsProvider\r\n /** Find [UnitProp] for a specific unit label. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnit(unitLabel, schemaName, phenomenon, unitSystem);\r\n }\r\n\r\n /** Returns all defined units for the specified Unit Family/Phenomenon. */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n return this._unitsProvider.getUnitsByFamily(phenomenon);\r\n }\r\n\r\n /** Find [UnitProp] for a specific unit name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnitByName(unitName);\r\n }\r\n\r\n /** Returns data needed to convert from one Unit to another in the same Unit Family/Phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n return this._unitsProvider.getConversion(fromUnit, toUnit);\r\n }\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Default Data\r\n// ========================================================================================================================================\r\nconst DEFAULT_FORMATKEY_BY_UNIT_SYSTEM = [\r\n {\r\n system: \"metric\", // PresentationUnitSystem.Metric,\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]meter4\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]degree2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]mSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]mCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]meter2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]m-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]meter4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]meter4\" },\r\n ],\r\n },\r\n {\r\n system: \"imperial\", // PresentationUnitSystem.BritishImperial,\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]fi8\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]fSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]fCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]feet2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4-labeled\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]feet4\" },\r\n ],\r\n },\r\n {\r\n system: \"usCustomary\", // PresentationUnitSystem.UsCustomary\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]fi8\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]fSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]fCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]feet2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]feet4\" },\r\n ],\r\n },\r\n {\r\n system: \"usSurvey\", // PresentationUnitSystem.UsSurvey\r\n entries: [\r\n { type: getQuantityTypeKey(QuantityType.Length), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.Angle), formatKey: \"[units:angle]dms2\" },\r\n { type: getQuantityTypeKey(QuantityType.Area), formatKey: \"[units:area]usSurveyFtSquared4\" },\r\n { type: getQuantityTypeKey(QuantityType.Volume), formatKey: \"[units:volume]usSurveyFtCubed4\" },\r\n { type: getQuantityTypeKey(QuantityType.LatLong), formatKey: \"[units:angle]dms\" },\r\n { type: getQuantityTypeKey(QuantityType.Coordinate), formatKey: \"[units:length]f-survey-2\" },\r\n { type: getQuantityTypeKey(QuantityType.Stationing), formatKey: \"[units:length]f-survey-sta2\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthSurvey), formatKey: \"[units:length]f-survey-4\" },\r\n { type: getQuantityTypeKey(QuantityType.LengthEngineering), formatKey: \"[units:length]f-survey-4\" },\r\n ],\r\n },\r\n];\r\n\r\n/** Interface used to define structure of default format definitions. */\r\ninterface UniqueFormatsProps {\r\n readonly key: string;\r\n readonly description?: string;\r\n readonly format: FormatProps;\r\n}\r\n\r\n/** List of default format definitions used by the Standard QuantityTypes. */\r\nconst DEFAULT_FORMATPROPS: UniqueFormatsProps[] = [\r\n {\r\n key: \"[units:length]meter4\",\r\n description: \"meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]meter2\",\r\n description: \"meters (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]feet4\",\r\n description: \"feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]feet2\",\r\n description: \"feet (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]fi8\",\r\n description: \"feet-inch 1/8 (labeled)\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"-\",\r\n units: [{ label: \"'\", name: \"Units.FT\" }, { label: \"\\\"\", name: \"Units.IN\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 8,\r\n type: \"Fractional\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-sta2\",\r\n description: \"stationing feet-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.FT\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 2,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-sta2\",\r\n description: \"stationing feet-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 2,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]m-sta2\",\r\n description: \"stationing meters-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m\", name: \"Units.M\" }],\r\n },\r\n formatTraits: [\"trailZeroes\", \"keepSingleZero\"],\r\n stationOffsetSize: 3,\r\n precision: 2,\r\n type: \"Station\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-2\",\r\n description: \"survey feet (labeled)-2 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:length]f-survey-4-labeled\",\r\n description: \"survey feet (labeled)-4 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft (US Survey)\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n\r\n {\r\n key: \"[units:length]f-survey-4\",\r\n description: \"survey feet (labeled)-4 decimal places \",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft\", name: \"Units.US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]degree2\",\r\n description: \"degrees (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]dms\",\r\n description: \"degrees minutes seconds (labeled) 0 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }, { label: \"'\", name: \"Units.ARC_MINUTE\" }, { label: \"\\\"\", name: \"Units.ARC_SECOND\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:angle]dms2\",\r\n description: \"degrees minutes seconds (labeled) 2 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"°\", name: \"Units.ARC_DEG\" }, { label: \"'\", name: \"Units.ARC_MINUTE\" }, { label: \"\\\"\", name: \"Units.ARC_SECOND\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 2,\r\n type: \"Decimal\",\r\n uomSeparator: \"\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]mSquared4\",\r\n description: \"square meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m²\", name: \"Units.SQ_M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]fSquared4\",\r\n description: \"square feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft²\", name: \"Units.SQ_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:area]usSurveyFtSquared4\",\r\n description: \"square survey feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft²\", name: \"Units.SQ_US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]mCubed4\",\r\n description: \"cubic meters (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"m³\", name: \"Units.CUB_M\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]fCubed4\",\r\n description: \"cubic feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft³\", name: \"Units.CUB_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n {\r\n key: \"[units:volume]usSurveyFtCubed4\",\r\n description: \"cubic survey feet (labeled) 4 decimal places\",\r\n format: {\r\n composite: {\r\n includeZero: true,\r\n spacer: \"\",\r\n units: [{ label: \"ft³\", name: \"Units.CUB_US_SURVEY_FT\" }],\r\n },\r\n formatTraits: [\"keepSingleZero\", \"showUnitLabel\"],\r\n precision: 4,\r\n type: \"Decimal\",\r\n },\r\n },\r\n];\r\n"]}
@@ -0,0 +1,24 @@
1
+ /** @packageDocumentation
2
+ * @module Rendering
3
+ */
4
+ import { Id64String } from "@itwin/core-bentley";
5
+ import { IModelConnection } from "../IModelConnection";
6
+ import { MaterialParams } from "../common/render/MaterialParams";
7
+ /** Specifies the provenance of a [RenderMaterial]($common) created for a persistent material element.
8
+ * @see [[CreateRenderMaterialArgs.source]].
9
+ * @internal
10
+ */
11
+ export interface RenderMaterialSource {
12
+ iModel: IModelConnection;
13
+ id: Id64String;
14
+ }
15
+ /** Arguments supplied to [[RenderSystem.createRenderMaterial]].
16
+ * @public
17
+ */
18
+ export interface CreateRenderMaterialArgs extends MaterialParams {
19
+ /** If supplied, the material will be cached on the iModel by its element Id for subsequent reuse.
20
+ * @internal
21
+ */
22
+ source?: RenderMaterialSource;
23
+ }
24
+ //# sourceMappingURL=CreateRenderMaterialArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateRenderMaterialArgs.d.ts","sourceRoot":"","sources":["../../../src/render/CreateRenderMaterialArgs.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,EAAE,EAAE,UAAU,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D;;OAEG;IACH,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Rendering
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=CreateRenderMaterialArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateRenderMaterialArgs.js","sourceRoot":"","sources":["../../../src/render/CreateRenderMaterialArgs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 Rendering\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { MaterialParams } from \"../common/render/MaterialParams\";\r\n\r\n/** Specifies the provenance of a [RenderMaterial]($common) created for a persistent material element.\r\n * @see [[CreateRenderMaterialArgs.source]].\r\n * @internal\r\n */\r\nexport interface RenderMaterialSource {\r\n iModel: IModelConnection;\r\n id: Id64String;\r\n}\r\n\r\n/** Arguments supplied to [[RenderSystem.createRenderMaterial]].\r\n * @public\r\n */\r\nexport interface CreateRenderMaterialArgs extends MaterialParams {\r\n /** If supplied, the material will be cached on the iModel by its element Id for subsequent reuse.\r\n * @internal\r\n */\r\n source?: RenderMaterialSource;\r\n}\r\n"]}
@@ -1,14 +1,9 @@
1
1
  /** @packageDocumentation
2
2
  * @module Rendering
3
3
  */
4
- import { Gradient, ImageBuffer, ImageSource, RenderTexture, TextureTransparency } from "@itwin/core-common";
4
+ import { ImageSource, RenderTexture, TextureTransparency } from "@itwin/core-common";
5
5
  import { IModelConnection } from "../IModelConnection";
6
- /** A key that uniquely identifies a [RenderTexture]($common) in the context of an [[IModelConnection]], used for caching.
7
- * @see [[TextureCacheOwnership]].
8
- * @public
9
- * @extensions
10
- */
11
- export type TextureCacheKey = string | Gradient.Symb;
6
+ import { TextureCacheKey, TextureImage } from "../common/render/TextureParams";
12
7
  /** Specifies that a [RenderTexture]($common) should be kept in memory until the corresponding [[IModelConnection]] is closed, at
13
8
  * which point it will be disposed.
14
9
  * @see [[TextureOwnership]]
@@ -19,7 +14,7 @@ export interface TextureCacheOwnership {
19
14
  /** The iModel on which the texture will be cached. */
20
15
  iModel: IModelConnection;
21
16
  /** The key uniquely identifying the texture amongst all textures cached on the iModel. */
22
- key: string | Gradient.Symb;
17
+ key: TextureCacheKey;
23
18
  }
24
19
  /** Describes the ownership of a [RenderTexture]($common), which controls when the texture is disposed of.
25
20
  * - [[TextureCacheOwnership]] indicates that the texture will be disposed of when the [[IModelConnection]] is closed, and that attempting
@@ -32,25 +27,6 @@ export interface TextureCacheOwnership {
32
27
  * @extensions
33
28
  */
34
29
  export type TextureOwnership = TextureCacheOwnership | "external";
35
- /** An object from which a [RenderTexture]($common) can be created.
36
- * @see [[TextureImage.source]]
37
- * @public
38
- * @extensions
39
- */
40
- export type TextureImageSource = HTMLImageElement | ImageBuffer | ImageBitmap;
41
- /** Describes the image from which to create a [RenderTexture]($common).
42
- * @see [[CreateTextureArgs.image]]
43
- * @public
44
- * @extensions
45
- */
46
- export interface TextureImage {
47
- /** The object that supplies the texture image. */
48
- source: TextureImageSource;
49
- /** Describes the transparency of the image. If this information can be supplied, it can improve performance.
50
- * If this information is not available at the call site, omit it - it defaults to "mixed" if it cannot be inferred from the source.
51
- */
52
- transparency?: TextureTransparency;
53
- }
54
30
  /** Arguments supplied to [[RenderSystem.createTexture]] to create a [RenderTexture]($common).
55
31
  * @public
56
32
  * @extensions
@@ -91,4 +67,4 @@ export interface CreateTextureFromSourceArgs {
91
67
  key: string;
92
68
  } | "external";
93
69
  }
94
- //# sourceMappingURL=RenderTexture.d.ts.map
70
+ //# sourceMappingURL=CreateTextureArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTextureArgs.d.ts","sourceRoot":"","sources":["../../../src/render/CreateTextureArgs.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,MAAM,EAAE,gBAAgB,CAAC;IACzB,0FAA0F;IAC1F,GAAG,EAAE,eAAe,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,UAAU,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC;IAC1B,kDAAkD;IAClD,KAAK,EAAE,YAAY,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,oFAAoF;IACpF,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,qBAAqB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC;CAClE"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Rendering
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=CreateTextureArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTextureArgs.js","sourceRoot":"","sources":["../../../src/render/CreateTextureArgs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 Rendering\r\n */\r\n\r\nimport { ImageSource, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { TextureCacheKey, TextureImage } from \"../common/render/TextureParams\";\r\n\r\n/** Specifies that a [RenderTexture]($common) should be kept in memory until the corresponding [[IModelConnection]] is closed, at\r\n * which point it will be disposed.\r\n * @see [[TextureOwnership]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TextureCacheOwnership {\r\n /** The iModel on which the texture will be cached. */\r\n iModel: IModelConnection;\r\n /** The key uniquely identifying the texture amongst all textures cached on the iModel. */\r\n key: TextureCacheKey;\r\n}\r\n\r\n/** Describes the ownership of a [RenderTexture]($common), which controls when the texture is disposed of.\r\n * - [[TextureCacheOwnership]] indicates that the texture will be disposed of when the [[IModelConnection]] is closed, and that attempting\r\n * to create or look up a texture with the same `key` as an existing cached texture will always return the cached texture instead of creating\r\n * a new one.\r\n * - \"external\" indicates that the lifetime of the texture will be controlled externally, e.g. by a [[Decorator]], in which case the owner of the\r\n * texture is responsible for calling its `dispose` method when it is no longer needed.\r\n * @see [[CreateTextureArgs.ownership]]\r\n * @public\r\n * @extensions\r\n */\r\nexport type TextureOwnership = TextureCacheOwnership | \"external\";\r\n\r\n/** Arguments supplied to [[RenderSystem.createTexture]] to create a [RenderTexture]($common).\r\n * @public\r\n * @extensions\r\n */\r\nexport interface CreateTextureArgs {\r\n /** The type of texture to create. Default: [RenderTexture.Type.Normal]($common). */\r\n type?: RenderTexture.Type;\r\n /** The image from which to create the texture. */\r\n image: TextureImage;\r\n /** The ownership of the texture. If `undefined`, the texture's lifetime will be controlled by the first [[RenderGraphic]] with which it\r\n * becomes associated, such that disposing of the graphic will also dispose of the texture.\r\n * Applications typically create textures for use with [[Decorator]]s, which recreate their graphics quite frequently.\r\n * Ideally, the decorator will take ownership of the texture by specifying \"external\" and disposing of the texture when it is no longer needed,\r\n * rather than recreating the texture every time it creates its decoration graphics.\r\n */\r\n ownership?: TextureOwnership;\r\n}\r\n\r\n/** Arguments supplied to [[RenderSystem.createTextureFromSource]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface CreateTextureFromSourceArgs {\r\n /** The type of texture to create. Default: [RenderTexture.Type.Normal]($common). */\r\n type?: RenderTexture.Type;\r\n /** The image from which to create the texture. */\r\n source: ImageSource;\r\n /** Describes the transparency of the image. If this information can be supplied, it can improve performance.\r\n * If not supplied, PNGs will default to [TextureTransparency.Mixed]($common) and JPEGs (which do not support transparency) to [TextureTransparency.Opaque]($common).\r\n */\r\n transparency?: TextureTransparency;\r\n /** The ownership of the texture. If `undefined`, the texture's lifetime will be controlled by the first [[RenderGraphic]] with which it\r\n * becomes associated, such that disposing of the graphic will also dispose of the texture.\r\n * Applications typically create textures for use with [[Decorator]]s, which recreate their graphics quite frequently.\r\n * Ideally, the decorator will take ownership of the texture by specifying \"external\" and disposing of the texture when it is no longer needed,\r\n * rather than recreating the texture every time it creates its decoration graphics.\r\n */\r\n ownership?: TextureCacheOwnership & { key: string } | \"external\";\r\n}\r\n"]}
@@ -11,6 +11,7 @@ import { RenderMemory } from "./RenderMemory";
11
11
  import { RenderPlanarClassifier } from "./RenderPlanarClassifier";
12
12
  import { RenderTextureDrape } from "./RenderSystem";
13
13
  import { Range3d } from "@itwin/core-geometry";
14
+ import { AnimationNodeId } from "../common/render/AnimationNodeId";
14
15
  /** Carries information in a GraphicBranchOptions about a GraphicBranch produced by drawing one view into the context of another.
15
16
  * @internal
16
17
  */
@@ -21,13 +22,6 @@ export interface GraphicBranchFrustum {
21
22
  y: number;
22
23
  };
23
24
  }
24
- /** Special values of [[GraphicBranch.animationNodeId]].
25
- * All other values refer to an [ElementTimeline.batchId]($common) that applies a transform to the graphics in the branch.
26
- * @internal
27
- */
28
- export declare enum AnimationNodeId {
29
- Untransformed = 4294967295
30
- }
31
25
  /**
32
26
  * A node in a scene graph. The branch itself is not renderable. Instead it contains a list of RenderGraphics,
33
27
  * and a transform, symbology overrides, and clip volume which are to be applied when rendering them.